From b66569e41fdecab3903fd8af6cbc8bb12ae653cd Mon Sep 17 00:00:00 2001
From: "Marc G. Fournier" <scrappy@hub.org>
Date: Wed, 12 Mar 1997 21:00:17 +0000
Subject: [PATCH] From: Dan McGuirk <mcguirk@indirect.com> Subject: [HACKERS]
 linux/alpha patches

These patches lay the groundwork for a Linux/Alpha port.  The port doesn't
actually work unless you tweak the linker to put all the pointers in the
first 32 bits of the address space, but it's at least a start.  It
implements the test-and-set instruction in Alpha assembly, and also fixes
a lot of pointer-to-integer conversions, which is probably good anyway.
---
 src/backend/access/common/indexvalid.c | 10 +++----
 src/backend/access/gist/gistget.c      |  8 +++---
 src/backend/bootstrap/bootstrap.c      |  4 +--
 src/backend/executor/nodeIndexscan.c   |  4 +--
 src/backend/nodes/list.c               | 40 +++++++++++++++++++++-----
 src/backend/optimizer/path/indxpath.c  |  8 +++---
 6 files changed, 50 insertions(+), 24 deletions(-)

diff --git a/src/backend/access/common/indexvalid.c b/src/backend/access/common/indexvalid.c
index ae40807b845..df72a69de47 100644
--- a/src/backend/access/common/indexvalid.c
+++ b/src/backend/access/common/indexvalid.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/access/common/Attic/indexvalid.c,v 1.12 1996/11/10 02:56:51 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/access/common/Attic/indexvalid.c,v 1.13 1997/03/12 20:56:32 scrappy Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -62,13 +62,13 @@ index_keytest(IndexTuple tuple,
 	}
 
 	if (key[0].sk_flags & SK_COMMUTE) {
-	    test = (int) (*(key[0].sk_func))
+	    test = (*(key[0].sk_func))
 		(DatumGetPointer(key[0].sk_argument),
-		 datum);
+		 datum) ? 1 : 0;
 	} else {
-	    test = (int) (*(key[0].sk_func))
+	    test = (*(key[0].sk_func))
 		(datum,
-		 DatumGetPointer(key[0].sk_argument));
+		 DatumGetPointer(key[0].sk_argument)) ? 1 : 0;
 	}
 	
 	if (!test == !(key[0].sk_flags & SK_NEGATE)) {
diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c
index afd34be1444..1b424f9d28f 100644
--- a/src/backend/access/gist/gistget.c
+++ b/src/backend/access/gist/gistget.c
@@ -250,14 +250,14 @@ gistindex_keytest(IndexTuple tuple,
 	}
 	
 	if (key[0].sk_flags & SK_COMMUTE) {
-	    test = (int) (*(key[0].sk_func))
+	    test = (*(key[0].sk_func))
 		(DatumGetPointer(key[0].sk_argument),
-		 &de, key[0].sk_procedure);
+		 &de, key[0].sk_procedure) ? 1 : 0;
 	} else {
-	    test = (int) (*(key[0].sk_func))
+	    test = (*(key[0].sk_func))
 		(&de,
 		 DatumGetPointer(key[0].sk_argument),
-		 key[0].sk_procedure);
+		 key[0].sk_procedure) ? 1 : 0;
 	}
 	
 	if (!test == !(key[0].sk_flags & SK_NEGATE)) {
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 2c4f8104958..36da3f6b47f 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -7,7 +7,7 @@
  * Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.15 1997/01/24 22:42:30 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.16 1997/03/12 20:57:33 scrappy Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -485,7 +485,7 @@ boot_openrel(char *relname)
     
     if (!Quiet)
         printf("Amopen: relation %s. attrsize %d\n", relname,
-               ATTRIBUTE_TUPLE_SIZE);
+               (int)ATTRIBUTE_TUPLE_SIZE);
     
     reldesc = heap_openr(relname);
     Assert(reldesc);
diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c
index 0055cf9f1d5..bc0c4c3d288 100644
--- a/src/backend/executor/nodeIndexscan.c
+++ b/src/backend/executor/nodeIndexscan.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.6 1997/01/22 05:26:50 vadim Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.7 1997/03/12 20:58:26 scrappy Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -905,7 +905,7 @@ ExecInitIndexScan(IndexScan *node, EState *estate, Plan *parent)
     for (i=0; i < numIndices; i++) {
 	Oid 	indexOid;
 	
-	indexOid =  (Oid)nth(i, indxid);
+	indexOid =  (Oid)nthi(i, indxid);
 	
 	if (indexOid != 0) {
 	    ExecOpenScanR(indexOid, 		  /* relation */
diff --git a/src/backend/nodes/list.c b/src/backend/nodes/list.c
index 67cd52d0911..da4cfb40d7f 100644
--- a/src/backend/nodes/list.c
+++ b/src/backend/nodes/list.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/nodes/list.c,v 1.2 1996/12/20 20:31:31 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/nodes/list.c,v 1.3 1997/03/12 20:59:27 scrappy Exp $
  *
  * NOTES
  *    XXX a few of the following functions are duplicated to handle
@@ -65,12 +65,27 @@ lcons(void *obj, List *list)
     return l;
 }
 
+List *
+lconsi(int datum, List *list)
+{
+    List *l = makeNode(List);
+    lfirsti(l) = datum;
+    lnext(l) = list;
+    return l;
+}
+
 List *
 lappend(List *list, void *obj)
 {
     return nconc(list, lcons(obj, NIL));
 }
 
+List *
+lappendi(List *list, int datum)
+{
+    return nconc(list, lconsi(datum, NIL));
+}
+
 Value *
 makeInteger(long i)
 {
@@ -110,6 +125,17 @@ nth(int n, List *l)
     return lfirst(l);
 }
 
+int
+nthi(int n, List *l)
+{
+    /* XXX assume list is long enough */
+    while(n > 0) {
+	l = lnext(l);
+	n--;
+    }
+    return lfirsti(l);
+}
+
 /* this is here solely for rt_store. Get rid of me some day! */
 void
 set_nth(List *l, int n, void *elem)
@@ -244,7 +270,7 @@ same(List *foo, List *bar)
 	return (foo==NULL);
     if (length(foo) == length(bar)) {
 	foreach (temp,foo) {
-	    if (!intMember((int)lfirst(temp),bar))
+	    if (!intMember(lfirsti(temp),bar))
 		return(false);
 	}
 	return(true);
@@ -297,7 +323,7 @@ LispUnioni(List *foo, List *bar)
     foreach (i,foo) {
 	foreach (j,bar) {
 	    if (lfirsti(i) != lfirsti(j)) {
-		retval = lappendi(retval,lfirst(i));
+		retval = lappendi(retval,lfirsti(i));
 		break;
 	    }
 	}
@@ -329,7 +355,7 @@ intMember(int foo, List *bar)
 {
     List *i;
     foreach (i,bar)
-	if (foo == (int)lfirst(i))
+	if (foo == lfirsti(i))
 	    return(true);
     return(false);
 }
@@ -388,13 +414,13 @@ intLispRemove(int elem, List *list)
     List *temp = NIL;
     List *prev = NIL;
     
-    if (elem == (int)lfirst(list))
+    if (elem == lfirsti(list))
 	return lnext(list);
 
     temp = lnext(list);
     prev = list;
     while(temp!=NIL) {
-	if (elem == (int)lfirst(temp)) {
+	if (elem == lfirsti(temp)) {
 	    lnext(prev) = lnext(temp);
 	    break;
 	}
@@ -431,7 +457,7 @@ set_differencei(List *list1, List *list2)
     
     foreach (temp1, list1) {
 	if (!intMember(lfirsti(temp1), list2))
-	    result = lappendi(result, lfirst(temp1));
+	    result = lappendi(result, lfirsti(temp1));
     }
     return(result);
 }
diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c
index ce6a3f715e4..5a86749a66f 100644
--- a/src/backend/optimizer/path/indxpath.c
+++ b/src/backend/optimizer/path/indxpath.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.5 1997/01/22 06:25:42 vadim Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.6 1997/03/12 21:00:17 scrappy Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1045,7 +1045,7 @@ index_innerjoin(Query *root, Rel *rel, List *clausegroup_list, Rel *index)
 	index_selectivity(lfirsti(index->relids),
 			  index->classlist,
 			  get_opnos(clausegroup),
-			  getrelid((int)lfirst(rel->relids),
+			  getrelid(lfirsti(rel->relids),
 				   root->rtable),
 			  attnos,
 			  values,
@@ -1061,7 +1061,7 @@ index_innerjoin(Query *root, Rel *rel, List *clausegroup_list, Rel *index)
 	pathnode->path.joinid = ((CInfo*)lfirst(clausegroup))->cinfojoinid;
 
 	pathnode->path.path_cost =
-	    cost_index((Oid)lfirst(index->relids),
+	    cost_index((Oid)lfirsti(index->relids),
 		       (int)temp_pages,
 		       temp_selec,
 		       rel->pages,
@@ -1150,7 +1150,7 @@ add_index_paths(List *indexpaths, List *new_indexpaths)
 static bool
 function_index_operand(Expr *funcOpnd, Rel *rel, Rel *index)
 {
-    Oid heapRelid	= (Oid)lfirst(rel->relids);
+    Oid heapRelid	= (Oid)lfirsti(rel->relids);
     Func *function;
     List *funcargs;
     int *indexKeys	= index->indexkeys;
-- 
GitLab