mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Make functions static where possible, enclose unused functions in #ifdef NOT_USED.
This commit is contained in:
		@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.18 1996/12/09 01:22:17 bryanh Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.19 1997/08/19 21:28:49 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *    The old interface functions have been converted to macros
 | 
			
		||||
@@ -39,6 +39,8 @@
 | 
			
		||||
#define register
 | 
			
		||||
#endif /* !NO_ASSERT_CHECKING && sparc && sunos4 */
 | 
			
		||||
 | 
			
		||||
static char *heap_getsysattr(HeapTuple tup, Buffer b, int attnum);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *			misc support routines
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
@@ -335,7 +337,7 @@ heap_sysattrbyval(AttrNumber attno)
 | 
			
		||||
 *	heap_getsysattr
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
char *
 | 
			
		||||
static char *
 | 
			
		||||
heap_getsysattr(HeapTuple tup, Buffer b, int attnum)
 | 
			
		||||
{
 | 
			
		||||
    switch (attnum) {
 | 
			
		||||
@@ -740,6 +742,7 @@ heap_copytuple(HeapTuple tuple)
 | 
			
		||||
    return(newTuple);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	heap_deformtuple
 | 
			
		||||
 *
 | 
			
		||||
@@ -772,6 +775,7 @@ heap_deformtuple(HeapTuple tuple,
 | 
			
		||||
	    nulls[i] = ' ';
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	heap_formtuple 
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.14 1997/06/12 15:41:52 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.15 1997/08/19 21:28:50 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -27,6 +27,8 @@
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static Size IndexInfoFindDataOffset(unsigned short t_info);
 | 
			
		||||
static char *fastgetiattr(IndexTuple tup, int attnum,
 | 
			
		||||
	TupleDesc att, bool *isnull);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *		  index_ tuple interface routines
 | 
			
		||||
@@ -125,7 +127,7 @@ index_formtuple(TupleDesc tupleDescriptor,
 | 
			
		||||
 *	the same attribute descriptor will go much quicker. -cim 5/4/91
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
char *
 | 
			
		||||
static char *
 | 
			
		||||
fastgetiattr(IndexTuple tup,
 | 
			
		||||
	     int attnum,
 | 
			
		||||
	     TupleDesc tupleDesc,
 | 
			
		||||
 
 | 
			
		||||
@@ -57,7 +57,9 @@ static OffsetNumber gistchoose(Relation r, Page p, IndexTuple it,
 | 
			
		||||
static int gistnospace(Page p, IndexTuple it);
 | 
			
		||||
void gistdelete(Relation r, ItemPointer tid);
 | 
			
		||||
static IndexTuple gist_tuple_replacekey(Relation r, GISTENTRY entry, IndexTuple t);
 | 
			
		||||
 | 
			
		||||
static void gistcentryinit(GISTSTATE *giststate, GISTENTRY *e, char *pr,
 | 
			
		||||
			   Relation r, Page pg, OffsetNumber o, int b, bool l) ;
 | 
			
		||||
static char *int_range_out(INTRANGE *r);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** routine to build an index.  Basically calls insert over and over
 | 
			
		||||
@@ -1172,7 +1174,7 @@ gistdentryinit(GISTSTATE *giststate, GISTENTRY *e, char *pr, Relation r,
 | 
			
		||||
/*
 | 
			
		||||
** initialize a GiST entry with a compressed version of pred
 | 
			
		||||
*/
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
gistcentryinit(GISTSTATE *giststate, GISTENTRY *e, char *pr, Relation r, 
 | 
			
		||||
	       Page pg, OffsetNumber o, int b, bool l) 
 | 
			
		||||
{ 
 | 
			
		||||
@@ -1244,7 +1246,8 @@ _gistdump(Relation r)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char *text_range_out(TXTRANGE *r)
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static char *text_range_out(TXTRANGE *r)
 | 
			
		||||
{
 | 
			
		||||
    char	*result;
 | 
			
		||||
    char        *lower, *upper;
 | 
			
		||||
@@ -1266,8 +1269,9 @@ char *text_range_out(TXTRANGE *r)
 | 
			
		||||
    pfree(upper);
 | 
			
		||||
    return(result);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
char *
 | 
			
		||||
static char *
 | 
			
		||||
int_range_out(INTRANGE *r)
 | 
			
		||||
{
 | 
			
		||||
    char	*result;
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,9 @@ static RetrieveIndexResult gistscancache(IndexScanDesc s, ScanDirection dir);
 | 
			
		||||
static RetrieveIndexResult gistfirst(IndexScanDesc s, ScanDirection dir);
 | 
			
		||||
static RetrieveIndexResult gistnext(IndexScanDesc s, ScanDirection dir);
 | 
			
		||||
static ItemPointer gistheapptr(Relation r, ItemPointer itemp);
 | 
			
		||||
static bool gistindex_keytest(IndexTuple tuple, TupleDesc tupdesc,
 | 
			
		||||
		  int scanKeySize, ScanKey key, GISTSTATE *giststate,
 | 
			
		||||
		  Relation r, Page p, OffsetNumber offset);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
RetrieveIndexResult
 | 
			
		||||
@@ -217,7 +220,7 @@ gistnext(IndexScanDesc s, ScanDirection dir)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Similar to index_keytest, but decompresses the key in the IndexTuple */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
gistindex_keytest(IndexTuple tuple,
 | 
			
		||||
		  TupleDesc tupdesc,
 | 
			
		||||
		  int scanKeySize,
 | 
			
		||||
 
 | 
			
		||||
@@ -102,6 +102,7 @@ RelationGetGISTStrategy(Relation r,
 | 
			
		||||
    return (RelationGetStrategy(r, attnum, &GISTEvaluationData, proc));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool
 | 
			
		||||
RelationInvokeGISTStrategy(Relation r,
 | 
			
		||||
			 AttrNumber attnum,
 | 
			
		||||
@@ -112,4 +113,4 @@ RelationInvokeGISTStrategy(Relation r,
 | 
			
		||||
    return (RelationInvokeStrategy(r, &GISTEvaluationData, attnum, s,
 | 
			
		||||
				   left, right));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/hash/Attic/hashstrat.c,v 1.7 1996/11/05 09:40:24 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/hash/Attic/hashstrat.c,v 1.8 1997/08/19 21:29:07 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -33,6 +33,7 @@ static StrategyNumber	HTNegateCommute[1] = {
 | 
			
		||||
    InvalidStrategy
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static StrategyEvaluationData	HTEvaluationData = {
 | 
			
		||||
    /* XXX static for simplicity */
 | 
			
		||||
 | 
			
		||||
@@ -42,13 +43,15 @@ static StrategyEvaluationData	HTEvaluationData = {
 | 
			
		||||
    (StrategyTransformMap)HTNegateCommute,
 | 
			
		||||
    {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *	RelationGetHashStrategy
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
StrategyNumber
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static StrategyNumber
 | 
			
		||||
_hash_getstrat(Relation rel,
 | 
			
		||||
	       AttrNumber attno,
 | 
			
		||||
	       RegProcedure proc)
 | 
			
		||||
@@ -61,8 +64,10 @@ _hash_getstrat(Relation rel,
 | 
			
		||||
 | 
			
		||||
    return (strat);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static bool
 | 
			
		||||
_hash_invokestrat(Relation rel,
 | 
			
		||||
		  AttrNumber attno,
 | 
			
		||||
		  StrategyNumber strat,
 | 
			
		||||
@@ -72,28 +77,4 @@ _hash_invokestrat(Relation rel,
 | 
			
		||||
    return (RelationInvokeStrategy(rel, &HTEvaluationData, attno, strat, 
 | 
			
		||||
				   left, right));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.13 1997/08/12 22:51:40 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.14 1997/08/19 21:29:17 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * INTERFACE ROUTINES
 | 
			
		||||
@@ -461,6 +461,7 @@ doinsert(Relation relation, HeapTuple tup)
 | 
			
		||||
 *	HeapScanIsValid is now a macro in relscan.h -cim 4/27/91
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	SetHeapAccessMethodImmediateInvalidation
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -470,6 +471,7 @@ SetHeapAccessMethodImmediateInvalidation(bool on)
 | 
			
		||||
{
 | 
			
		||||
    ImmediateInvalidation = on;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *                   heap access method interface
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/heap/Attic/stats.c,v 1.10 1997/08/12 22:51:44 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/heap/Attic/stats.c,v 1.11 1997/08/19 21:29:21 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *    initam should be moved someplace else.
 | 
			
		||||
@@ -28,13 +28,15 @@
 | 
			
		||||
# include <string.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void InitHeapAccessStatistics(void);
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *      InitHeapAccessStatistics
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
HeapAccessStatistics heap_access_stats = (HeapAccessStatistics) NULL;
 | 
			
		||||
     
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
InitHeapAccessStatistics()    
 | 
			
		||||
{
 | 
			
		||||
    MemoryContext    oldContext;
 | 
			
		||||
@@ -121,6 +123,7 @@ InitHeapAccessStatistics()
 | 
			
		||||
    heap_access_stats = stats;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *      ResetHeapAccessStatistics
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -171,7 +174,9 @@ ResetHeapAccessStatistics()
 | 
			
		||||
    time(&stats->local_reset_timestamp);
 | 
			
		||||
    time(&stats->last_request_timestamp);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *      GetHeapAccessStatistics
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -206,7 +211,9 @@ HeapAccessStatistics GetHeapAccessStatistics()
 | 
			
		||||
    
 | 
			
		||||
    return stats;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *      PrintHeapAccessStatistics
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -302,7 +309,9 @@ PrintHeapAccessStatistics(HeapAccessStatistics stats)
 | 
			
		||||
    
 | 
			
		||||
    printf("\n");
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *      PrintAndFreeHeapAccessStatistics
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -314,6 +323,7 @@ PrintAndFreeHeapAccessStatistics(HeapAccessStatistics stats)
 | 
			
		||||
    if (stats != NULL)
 | 
			
		||||
	pfree(stats);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *		    access method initialization
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/index/genam.c,v 1.6 1996/11/05 10:02:02 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/index/genam.c,v 1.7 1997/08/19 21:29:26 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *    many of the old access method routines have been turned into
 | 
			
		||||
@@ -127,6 +127,7 @@ RelationGetIndexScan(Relation relation,
 | 
			
		||||
    return (scan);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *  IndexScanRestart -- Restart an index scan.
 | 
			
		||||
 *
 | 
			
		||||
@@ -166,7 +167,9 @@ IndexScanRestart(IndexScanDesc scan,
 | 
			
		||||
		key,
 | 
			
		||||
		scan->numberOfKeys * sizeof(ScanKeyData));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *  IndexScanEnd -- End and index scan.
 | 
			
		||||
 *
 | 
			
		||||
@@ -188,6 +191,7 @@ IndexScanEnd(IndexScanDesc scan)
 | 
			
		||||
    
 | 
			
		||||
    pfree(scan);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *  IndexScanMarkPosition -- Mark current position in a scan.
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/index/indexam.c,v 1.11 1997/08/12 22:51:48 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/index/indexam.c,v 1.12 1997/08/19 21:29:30 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * INTERFACE ROUTINES
 | 
			
		||||
 *	index_open 	- open an index relation by relationId
 | 
			
		||||
@@ -271,6 +271,7 @@ index_endscan(IndexScanDesc scan)
 | 
			
		||||
    RelationUnsetRIntentLock(scan->relation);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	index_markpos  - mark a scan position
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -285,7 +286,9 @@ index_markpos(IndexScanDesc scan)
 | 
			
		||||
    
 | 
			
		||||
    fmgr(procedure, scan);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	index_restrpos  - restore a scan position
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -300,6 +303,7 @@ index_restrpos(IndexScanDesc scan)
 | 
			
		||||
    
 | 
			
		||||
    fmgr(procedure, scan);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	index_getnext - get the next tuple from a scan
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/index/Attic/istrat.c,v 1.7 1996/11/05 10:02:06 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/index/Attic/istrat.c,v 1.8 1997/08/19 21:29:32 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -26,6 +26,16 @@
 | 
			
		||||
#include <access/istrat.h>
 | 
			
		||||
#include <fmgr.h>
 | 
			
		||||
 | 
			
		||||
static bool StrategyEvaluationIsValid(StrategyEvaluation evaluation);
 | 
			
		||||
static bool StrategyExpressionIsValid(StrategyExpression expression,
 | 
			
		||||
				      StrategyNumber maxStrategy);
 | 
			
		||||
static ScanKey StrategyMapGetScanKeyEntry(StrategyMap map,
 | 
			
		||||
					  StrategyNumber strategyNumber);
 | 
			
		||||
static bool StrategyOperatorIsValid(StrategyOperator operator,
 | 
			
		||||
				    StrategyNumber maxStrategy);
 | 
			
		||||
static bool StrategyTermIsValid(StrategyTerm term,
 | 
			
		||||
				StrategyNumber maxStrategy);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *	           misc strategy support routines
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
@@ -50,7 +60,7 @@
 | 
			
		||||
 *	Assumes that the index strategy number is valid.
 | 
			
		||||
 *	Bounds checking should be done outside this routine.
 | 
			
		||||
 */
 | 
			
		||||
ScanKey
 | 
			
		||||
static ScanKey
 | 
			
		||||
StrategyMapGetScanKeyEntry(StrategyMap map,
 | 
			
		||||
			   StrategyNumber strategyNumber)
 | 
			
		||||
{
 | 
			
		||||
@@ -103,7 +113,7 @@ AttributeNumberGetIndexStrategySize(AttrNumber maxAttributeNumber,
 | 
			
		||||
 *	StrategyOperatorIsValid
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
StrategyOperatorIsValid(StrategyOperator operator,
 | 
			
		||||
			StrategyNumber maxStrategy)
 | 
			
		||||
{
 | 
			
		||||
@@ -117,7 +127,7 @@ StrategyOperatorIsValid(StrategyOperator operator,
 | 
			
		||||
 *	StrategyTermIsValid
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
StrategyTermIsValid(StrategyTerm term,
 | 
			
		||||
		    StrategyNumber maxStrategy)
 | 
			
		||||
{
 | 
			
		||||
@@ -141,7 +151,7 @@ StrategyTermIsValid(StrategyTerm term,
 | 
			
		||||
 *	StrategyExpressionIsValid
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
StrategyExpressionIsValid(StrategyExpression expression,
 | 
			
		||||
			  StrategyNumber maxStrategy)
 | 
			
		||||
{
 | 
			
		||||
@@ -165,7 +175,7 @@ StrategyExpressionIsValid(StrategyExpression expression,
 | 
			
		||||
 *	StrategyEvaluationIsValid
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
StrategyEvaluationIsValid(StrategyEvaluation evaluation)
 | 
			
		||||
{
 | 
			
		||||
    Index	index;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtpage.c,v 1.8 1997/05/30 18:35:33 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtpage.c,v 1.9 1997/08/19 21:29:36 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *  NOTES
 | 
			
		||||
 *     Postgres btree pages look like ordinary relation pages.  The opaque
 | 
			
		||||
@@ -36,6 +36,9 @@
 | 
			
		||||
# include <string.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void _bt_setpagelock(Relation rel, BlockNumber blkno, int access);
 | 
			
		||||
static void _bt_unsetpagelock(Relation rel, BlockNumber blkno, int access);
 | 
			
		||||
 | 
			
		||||
#define BTREE_METAPAGE	0
 | 
			
		||||
#define BTREE_MAGIC	0x053162
 | 
			
		||||
 | 
			
		||||
@@ -118,6 +121,7 @@ _bt_metapinit(Relation rel)
 | 
			
		||||
	RelationUnsetLockForWrite(rel);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/*
 | 
			
		||||
 *  _bt_checkmeta() -- Verify that the metadata stored in a btree are
 | 
			
		||||
 *		       reasonable.
 | 
			
		||||
@@ -157,6 +161,7 @@ _bt_checkmeta(Relation rel)
 | 
			
		||||
    
 | 
			
		||||
    _bt_relbuf(rel, metabuf, BT_READ);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *  _bt_getroot() -- Get the root page of the btree.
 | 
			
		||||
@@ -537,7 +542,7 @@ _bt_getstackbuf(Relation rel, BTStack stack, int access)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
_bt_setpagelock(Relation rel, BlockNumber blkno, int access)
 | 
			
		||||
{
 | 
			
		||||
    ItemPointerData iptr;
 | 
			
		||||
@@ -552,7 +557,7 @@ _bt_setpagelock(Relation rel, BlockNumber blkno, int access)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
_bt_unsetpagelock(Relation rel, BlockNumber blkno, int access)
 | 
			
		||||
{
 | 
			
		||||
    ItemPointerData iptr;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.22 1997/08/12 22:51:50 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.23 1997/08/19 21:29:42 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -34,7 +34,7 @@ _bt_searchr(Relation rel, int keysz, ScanKey scankey,
 | 
			
		||||
static OffsetNumber 
 | 
			
		||||
_bt_firsteq(Relation rel, TupleDesc itupdesc, Page page, 
 | 
			
		||||
            Size keysz, ScanKey scankey, OffsetNumber offnum);
 | 
			
		||||
int 
 | 
			
		||||
static int 
 | 
			
		||||
_bt_compare(Relation rel, TupleDesc itupdesc, Page page, 
 | 
			
		||||
            int keysz, ScanKey scankey, OffsetNumber offnum);
 | 
			
		||||
static bool 
 | 
			
		||||
@@ -556,7 +556,7 @@ _bt_firsteq(Relation rel,
 | 
			
		||||
 *	but not "any time a new min key is inserted" (see _bt_insertonpg). 
 | 
			
		||||
 *		- vadim 12/05/96
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
_bt_compare(Relation rel,
 | 
			
		||||
	    TupleDesc itupdesc,
 | 
			
		||||
	    Page page,
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Id: nbtsort.c,v 1.18 1997/08/12 22:51:52 momjian Exp $
 | 
			
		||||
 *    $Id: nbtsort.c,v 1.19 1997/08/19 21:29:46 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *
 | 
			
		||||
@@ -68,6 +68,11 @@
 | 
			
		||||
extern int ShowExecutorStats;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static BTItem _bt_buildadd(Relation index, void *pstate, BTItem bti, int flags);
 | 
			
		||||
static BTItem _bt_minitem(Page opage, BlockNumber oblkno, int atend);
 | 
			
		||||
static void *_bt_pagestate(Relation index, int flags, int level, bool doupper);
 | 
			
		||||
static void _bt_uppershutdown(Relation index, BTPageState *state);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * turn on debugging output.
 | 
			
		||||
 *
 | 
			
		||||
@@ -806,7 +811,7 @@ _bt_slideleft(Relation index, Buffer buf, Page page)
 | 
			
		||||
 * allocate and initialize a new BTPageState.  the returned structure
 | 
			
		||||
 * is suitable for immediate use by _bt_buildadd.
 | 
			
		||||
 */
 | 
			
		||||
void *
 | 
			
		||||
static void *
 | 
			
		||||
_bt_pagestate(Relation index, int flags, int level, bool doupper)
 | 
			
		||||
{
 | 
			
		||||
    BTPageState *state = (BTPageState *) palloc(sizeof(BTPageState));
 | 
			
		||||
@@ -829,7 +834,7 @@ _bt_pagestate(Relation index, int flags, int level, bool doupper)
 | 
			
		||||
 * the page to which the item used to point, e.g., a heap page if
 | 
			
		||||
 * 'opage' is a leaf page).
 | 
			
		||||
 */
 | 
			
		||||
BTItem
 | 
			
		||||
static BTItem
 | 
			
		||||
_bt_minitem(Page opage, BlockNumber oblkno, int atend)
 | 
			
		||||
{
 | 
			
		||||
    OffsetNumber off;
 | 
			
		||||
@@ -883,7 +888,7 @@ _bt_minitem(Page opage, BlockNumber oblkno, int atend)
 | 
			
		||||
 *
 | 
			
		||||
 * if all keys are unique, 'first' will always be the same as 'last'.
 | 
			
		||||
 */
 | 
			
		||||
BTItem
 | 
			
		||||
static BTItem
 | 
			
		||||
_bt_buildadd(Relation index, void *pstate, BTItem bti, int flags)
 | 
			
		||||
{
 | 
			
		||||
    BTPageState *state = (BTPageState *) pstate;
 | 
			
		||||
@@ -1055,7 +1060,7 @@ _bt_buildadd(Relation index, void *pstate, BTItem bti, int flags)
 | 
			
		||||
    return(last_bti);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
_bt_uppershutdown(Relation index, BTPageState *state)
 | 
			
		||||
{
 | 
			
		||||
    BTPageState *s;
 | 
			
		||||
@@ -1311,6 +1316,7 @@ _bt_merge(Relation index, BTSpool *btspool)
 | 
			
		||||
 * which case we can just build the upper levels as we create the
 | 
			
		||||
 * sorted bottom level).  it is only used for index recycling.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
_bt_upperbuild(Relation index)
 | 
			
		||||
{
 | 
			
		||||
@@ -1370,6 +1376,7 @@ _bt_upperbuild(Relation index)
 | 
			
		||||
	
 | 
			
		||||
    _bt_uppershutdown(index, state);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * given a spool loading by successive calls to _bt_spool, create an
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtutils.c,v 1.10 1997/04/16 01:48:29 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtutils.c,v 1.11 1997/08/19 21:29:47 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -303,6 +303,7 @@ _bt_formitem(IndexTuple itup)
 | 
			
		||||
    return (btitem);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool
 | 
			
		||||
_bt_checkqual(IndexScanDesc scan, IndexTuple itup)
 | 
			
		||||
{
 | 
			
		||||
@@ -315,7 +316,9 @@ _bt_checkqual(IndexScanDesc scan, IndexTuple itup)
 | 
			
		||||
    else
 | 
			
		||||
	return (true);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool
 | 
			
		||||
_bt_checkforkeys(IndexScanDesc scan, IndexTuple itup, Size keysz)
 | 
			
		||||
{
 | 
			
		||||
@@ -328,6 +331,7 @@ _bt_checkforkeys(IndexScanDesc scan, IndexTuple itup, Size keysz)
 | 
			
		||||
    else
 | 
			
		||||
	return (true);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
_bt_checkkeys (IndexScanDesc scan, IndexTuple tuple, Size *keysok)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtstrat.c,v 1.5 1996/11/05 10:54:20 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtstrat.c,v 1.6 1997/08/19 21:29:52 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -18,6 +18,9 @@
 | 
			
		||||
#include <access/rtree.h>
 | 
			
		||||
#include <access/istrat.h>
 | 
			
		||||
 | 
			
		||||
static StrategyNumber RelationGetRTStrategy(Relation r,
 | 
			
		||||
			AttrNumber attnum, RegProcedure proc);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *  Note:  negate, commute, and negatecommute all assume that operators are
 | 
			
		||||
 *	   ordered as follows in the strategy map:
 | 
			
		||||
@@ -200,7 +203,7 @@ static StrategyNumber RTOperMap[RTNStrategies] = {
 | 
			
		||||
    RTOverlapStrategyNumber
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
StrategyNumber
 | 
			
		||||
static StrategyNumber
 | 
			
		||||
RelationGetRTStrategy(Relation r,
 | 
			
		||||
		      AttrNumber attnum,
 | 
			
		||||
		      RegProcedure proc)
 | 
			
		||||
@@ -208,6 +211,7 @@ RelationGetRTStrategy(Relation r,
 | 
			
		||||
    return (RelationGetStrategy(r, attnum, &RTEvaluationData, proc));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool
 | 
			
		||||
RelationInvokeRTStrategy(Relation r,
 | 
			
		||||
			 AttrNumber attnum,
 | 
			
		||||
@@ -218,6 +222,7 @@ RelationInvokeRTStrategy(Relation r,
 | 
			
		||||
    return (RelationInvokeStrategy(r, &RTEvaluationData, attnum, s,
 | 
			
		||||
				   left, right));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
RegProcedure
 | 
			
		||||
RTMapOperator(Relation r,
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.8 1996/11/27 15:15:54 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.9 1997/08/19 21:29:59 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *    This file contains the high level access-method interface to the
 | 
			
		||||
@@ -26,6 +26,12 @@
 | 
			
		||||
#include <storage/spin.h>
 | 
			
		||||
#include <commands/vacuum.h>
 | 
			
		||||
 | 
			
		||||
static int RecoveryCheckingEnabled(void);
 | 
			
		||||
static void TransRecover(Relation logRelation);
 | 
			
		||||
static bool TransactionLogTest(TransactionId transactionId, XidStatus status);
 | 
			
		||||
static void TransactionLogUpdate(TransactionId transactionId,
 | 
			
		||||
				 XidStatus status);
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *    global variables holding pointers to relations used
 | 
			
		||||
 *    by the transaction system.  These are initialized by
 | 
			
		||||
@@ -95,17 +101,19 @@ extern bool	BuildingBtree;
 | 
			
		||||
 *	recovery checking accessors
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
RecoveryCheckingEnabled(void)
 | 
			
		||||
{    
 | 
			
		||||
    return RecoveryCheckingEnableState;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static void
 | 
			
		||||
SetRecoveryCheckingEnabled(bool state)
 | 
			
		||||
{    
 | 
			
		||||
    RecoveryCheckingEnableState = (state == true);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *	postgres log/time access method interface
 | 
			
		||||
@@ -124,7 +132,7 @@ SetRecoveryCheckingEnabled(bool state)
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
bool	/* true/false: does transaction id have specified status? */
 | 
			
		||||
static bool	/* true/false: does transaction id have specified status? */
 | 
			
		||||
TransactionLogTest(TransactionId transactionId,	/* transaction id to test */
 | 
			
		||||
		   XidStatus status)		/* transaction status */
 | 
			
		||||
{
 | 
			
		||||
@@ -186,7 +194,7 @@ TransactionLogTest(TransactionId transactionId,	/* transaction id to test */
 | 
			
		||||
 *	TransactionLogUpdate
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
TransactionLogUpdate(TransactionId transactionId, /* trans id to update */
 | 
			
		||||
		     XidStatus status) /* new trans status */
 | 
			
		||||
{
 | 
			
		||||
@@ -371,7 +379,7 @@ TransactionIdGetCommitTime(TransactionId transactionId) /* transaction id to tes
 | 
			
		||||
 *      passed a flag on the command line.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
TransRecover(Relation logRelation)
 | 
			
		||||
{
 | 
			
		||||
#if 0    
 | 
			
		||||
@@ -664,6 +672,7 @@ TransactionIdAbort(TransactionId transactionId)
 | 
			
		||||
    TransactionLogUpdate(transactionId, XID_ABORT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
TransactionIdSetInProgress(TransactionId transactionId)
 | 
			
		||||
{
 | 
			
		||||
@@ -672,3 +681,4 @@ TransactionIdSetInProgress(TransactionId transactionId)
 | 
			
		||||
    
 | 
			
		||||
    TransactionLogUpdate(transactionId, XID_INPROGRESS);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/transam/Attic/transsup.c,v 1.8 1997/08/12 22:51:57 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/transam/Attic/transsup.c,v 1.9 1997/08/19 21:30:12 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *    This file contains support functions for the high
 | 
			
		||||
@@ -23,6 +23,15 @@
 | 
			
		||||
#include <access/xact.h>
 | 
			
		||||
#include <storage/lmgr.h>
 | 
			
		||||
 | 
			
		||||
static AbsoluteTime TransBlockGetCommitTime(Block tblock,
 | 
			
		||||
	TransactionId transactionId);
 | 
			
		||||
static XidStatus TransBlockGetXidStatus(Block tblock,
 | 
			
		||||
					TransactionId transactionId);
 | 
			
		||||
static void TransBlockSetCommitTime(Block tblock,
 | 
			
		||||
	TransactionId transactionId, AbsoluteTime commitTime);
 | 
			
		||||
static void TransBlockSetXidStatus(Block tblock,
 | 
			
		||||
	TransactionId transactionId, XidStatus xstatus);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *		      general support routines
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
@@ -93,7 +102,8 @@ TransComputeBlockNumber(Relation relation, /* relation to test */
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
XidStatus
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static XidStatus
 | 
			
		||||
TransBlockGetLastTransactionIdStatus(Block tblock,
 | 
			
		||||
				     TransactionId baseXid,
 | 
			
		||||
				     TransactionId *returnXidP)
 | 
			
		||||
@@ -159,6 +169,7 @@ TransBlockGetLastTransactionIdStatus(Block tblock,
 | 
			
		||||
     */
 | 
			
		||||
    return xstatus;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* --------------------------------
 | 
			
		||||
 *	TransBlockGetXidStatus
 | 
			
		||||
@@ -167,7 +178,7 @@ TransBlockGetLastTransactionIdStatus(Block tblock,
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
XidStatus
 | 
			
		||||
static XidStatus
 | 
			
		||||
TransBlockGetXidStatus(Block tblock,
 | 
			
		||||
		       TransactionId transactionId)
 | 
			
		||||
{
 | 
			
		||||
@@ -218,7 +229,7 @@ TransBlockGetXidStatus(Block tblock,
 | 
			
		||||
 *	This sets the status of the desired transaction
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
TransBlockSetXidStatus(Block tblock,
 | 
			
		||||
		       TransactionId transactionId, 
 | 
			
		||||
		       XidStatus xstatus)
 | 
			
		||||
@@ -279,7 +290,7 @@ TransBlockSetXidStatus(Block tblock,
 | 
			
		||||
 *	specified transaction id in the trans block.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
AbsoluteTime
 | 
			
		||||
static AbsoluteTime
 | 
			
		||||
TransBlockGetCommitTime(Block tblock,
 | 
			
		||||
			TransactionId transactionId)
 | 
			
		||||
{
 | 
			
		||||
@@ -320,7 +331,7 @@ TransBlockGetCommitTime(Block tblock,
 | 
			
		||||
 *	This sets the commit time of the specified transaction
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
TransBlockSetCommitTime(Block tblock,
 | 
			
		||||
			TransactionId transactionId,
 | 
			
		||||
			AbsoluteTime commitTime)
 | 
			
		||||
@@ -590,6 +601,7 @@ TransBlockNumberSetCommitTime(Relation relation,
 | 
			
		||||
 *	TransGetLastRecordedTransaction
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
TransGetLastRecordedTransaction(Relation relation,
 | 
			
		||||
				TransactionId xid, /* return: transaction id */
 | 
			
		||||
@@ -651,3 +663,4 @@ TransGetLastRecordedTransaction(Relation relation,
 | 
			
		||||
     */
 | 
			
		||||
    RelationUnsetLockForRead(relation);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.8 1997/08/12 22:51:58 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.9 1997/08/19 21:30:16 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -20,6 +20,13 @@
 | 
			
		||||
#include <access/heapam.h>
 | 
			
		||||
#include <catalog/catname.h>
 | 
			
		||||
 | 
			
		||||
static void GetNewObjectIdBlock(Oid *oid_return, int oid_block_size);
 | 
			
		||||
static void VariableRelationGetNextOid(Oid *oid_return);
 | 
			
		||||
static void VariableRelationGetNextXid(TransactionId *xidP);
 | 
			
		||||
static void VariableRelationPutLastXid(TransactionId xid);
 | 
			
		||||
static void VariableRelationPutNextOid(Oid *oidP);
 | 
			
		||||
static void VariableRelationGetLastXid(TransactionId *xidP);
 | 
			
		||||
 | 
			
		||||
/* ---------------------
 | 
			
		||||
 *	spin lock for oid generation
 | 
			
		||||
 * ---------------------
 | 
			
		||||
@@ -35,7 +42,7 @@ int OidGenLockId;
 | 
			
		||||
 *	VariableRelationGetNextXid
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
VariableRelationGetNextXid(TransactionId *xidP)
 | 
			
		||||
{
 | 
			
		||||
    Buffer buf;
 | 
			
		||||
@@ -77,7 +84,7 @@ VariableRelationGetNextXid(TransactionId *xidP)
 | 
			
		||||
 *	VariableRelationGetLastXid
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
VariableRelationGetLastXid(TransactionId *xidP)
 | 
			
		||||
{
 | 
			
		||||
    Buffer buf;
 | 
			
		||||
@@ -166,7 +173,7 @@ VariableRelationPutNextXid(TransactionId xid)
 | 
			
		||||
 *	VariableRelationPutLastXid
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
VariableRelationPutLastXid(TransactionId xid)
 | 
			
		||||
{
 | 
			
		||||
    Buffer buf;
 | 
			
		||||
@@ -209,7 +216,7 @@ VariableRelationPutLastXid(TransactionId xid)
 | 
			
		||||
 *	VariableRelationGetNextOid
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
VariableRelationGetNextOid(Oid *oid_return)
 | 
			
		||||
{
 | 
			
		||||
    Buffer buf;
 | 
			
		||||
@@ -277,7 +284,7 @@ VariableRelationGetNextOid(Oid *oid_return)
 | 
			
		||||
 *	VariableRelationPutNextOid
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
VariableRelationPutNextOid(Oid *oidP)
 | 
			
		||||
{
 | 
			
		||||
    Buffer buf;
 | 
			
		||||
@@ -484,7 +491,7 @@ UpdateLastCommittedXid(TransactionId xid)
 | 
			
		||||
 *	id assignments should use this 
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
GetNewObjectIdBlock(Oid *oid_return, /* place to return the new object id */
 | 
			
		||||
		    int oid_block_size)	/* number of oids desired */
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.11 1997/08/12 22:52:01 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.12 1997/08/19 21:30:19 momjian Exp $
 | 
			
		||||
 *	
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *	Transaction aborts can now occur two ways:
 | 
			
		||||
@@ -151,6 +151,21 @@
 | 
			
		||||
#include <commands/async.h>
 | 
			
		||||
#include <commands/sequence.h>
 | 
			
		||||
 | 
			
		||||
static void AbortTransaction(void);
 | 
			
		||||
static void AtAbort_Cache(void);
 | 
			
		||||
static void AtAbort_Locks(void);
 | 
			
		||||
static void AtAbort_Memory(void);
 | 
			
		||||
static void AtCommit_Cache(void);
 | 
			
		||||
static void AtCommit_Locks(void);
 | 
			
		||||
static void AtCommit_Memory(void);
 | 
			
		||||
static void AtStart_Cache(void);
 | 
			
		||||
static void AtStart_Locks(void);
 | 
			
		||||
static void AtStart_Memory(void);
 | 
			
		||||
static void CommitTransaction(void);
 | 
			
		||||
static void RecordTransactionAbort(void);
 | 
			
		||||
static void RecordTransactionCommit(void);
 | 
			
		||||
static void StartTransaction(void);
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	global variables holding the current transaction state.
 | 
			
		||||
 *
 | 
			
		||||
@@ -232,11 +247,13 @@ TransactionFlushEnabled(void)
 | 
			
		||||
    return TransactionFlushState;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
SetTransactionFlushEnabled(bool state)
 | 
			
		||||
{    
 | 
			
		||||
    TransactionFlushState = (state == true);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* --------------------------------
 | 
			
		||||
 *	IsTransactionState
 | 
			
		||||
@@ -420,12 +437,13 @@ CommandIdIsCurrentCommandId(CommandId cid)
 | 
			
		||||
 *	ClearCommandIdCounterOverflowFlag
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
ClearCommandIdCounterOverflowFlag()
 | 
			
		||||
{
 | 
			
		||||
    CommandIdCounterOverflowFlag = false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* --------------------------------
 | 
			
		||||
 *	CommandCounterIncrement
 | 
			
		||||
@@ -464,7 +482,7 @@ InitializeTransactionSystem()
 | 
			
		||||
 *	AtStart_Cache
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AtStart_Cache()    
 | 
			
		||||
{
 | 
			
		||||
    DiscardInvalid();
 | 
			
		||||
@@ -474,7 +492,7 @@ AtStart_Cache()
 | 
			
		||||
 *	AtStart_Locks
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AtStart_Locks()    
 | 
			
		||||
{
 | 
			
		||||
    /*
 | 
			
		||||
@@ -489,7 +507,7 @@ AtStart_Locks()
 | 
			
		||||
 *	AtStart_Memory
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AtStart_Memory()    
 | 
			
		||||
{
 | 
			
		||||
    Portal	     portal;
 | 
			
		||||
@@ -526,7 +544,7 @@ AtStart_Memory()
 | 
			
		||||
 *	      -cim 3/18/90
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
RecordTransactionCommit()    
 | 
			
		||||
{
 | 
			
		||||
    TransactionId xid;
 | 
			
		||||
@@ -569,7 +587,7 @@ RecordTransactionCommit()
 | 
			
		||||
 *	AtCommit_Cache
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AtCommit_Cache()
 | 
			
		||||
{
 | 
			
		||||
    /* ----------------
 | 
			
		||||
@@ -586,7 +604,7 @@ AtCommit_Cache()
 | 
			
		||||
 *	AtCommit_Locks
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AtCommit_Locks()  
 | 
			
		||||
{
 | 
			
		||||
    /* ----------------
 | 
			
		||||
@@ -602,7 +620,7 @@ AtCommit_Locks()
 | 
			
		||||
 *	AtCommit_Memory
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AtCommit_Memory()  
 | 
			
		||||
{
 | 
			
		||||
    /* ----------------
 | 
			
		||||
@@ -624,7 +642,7 @@ AtCommit_Memory()
 | 
			
		||||
 *	RecordTransactionAbort
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
RecordTransactionAbort()    
 | 
			
		||||
{
 | 
			
		||||
    TransactionId xid;
 | 
			
		||||
@@ -655,7 +673,7 @@ RecordTransactionAbort()
 | 
			
		||||
 *	AtAbort_Cache
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AtAbort_Cache()    
 | 
			
		||||
{
 | 
			
		||||
    RegisterInvalid(false);
 | 
			
		||||
@@ -665,7 +683,7 @@ AtAbort_Cache()
 | 
			
		||||
 *	AtAbort_Locks
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AtAbort_Locks()    
 | 
			
		||||
{
 | 
			
		||||
    /* ----------------
 | 
			
		||||
@@ -682,7 +700,7 @@ AtAbort_Locks()
 | 
			
		||||
 *	AtAbort_Memory
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AtAbort_Memory()    
 | 
			
		||||
{
 | 
			
		||||
    /* ----------------
 | 
			
		||||
@@ -704,7 +722,7 @@ AtAbort_Memory()
 | 
			
		||||
 *
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
StartTransaction()
 | 
			
		||||
{
 | 
			
		||||
    TransactionState s = CurrentTransactionState;
 | 
			
		||||
@@ -788,7 +806,7 @@ CurrentXactInProgress()
 | 
			
		||||
 *
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
CommitTransaction()
 | 
			
		||||
{
 | 
			
		||||
    TransactionState s = CurrentTransactionState;
 | 
			
		||||
@@ -847,7 +865,7 @@ CommitTransaction()
 | 
			
		||||
 *
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AbortTransaction()
 | 
			
		||||
{
 | 
			
		||||
    TransactionState s = CurrentTransactionState;
 | 
			
		||||
@@ -1245,7 +1263,8 @@ EndTransactionBlock(void)
 | 
			
		||||
 *	AbortTransactionBlock
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static void
 | 
			
		||||
AbortTransactionBlock(void)
 | 
			
		||||
{
 | 
			
		||||
    TransactionState s = CurrentTransactionState;
 | 
			
		||||
@@ -1288,6 +1307,7 @@ AbortTransactionBlock(void)
 | 
			
		||||
    AbortTransaction();
 | 
			
		||||
    s->blockState = TBLOCK_ENDABORT;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* --------------------------------
 | 
			
		||||
 *	UserAbortTransactionBlock
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/transam/Attic/xid.c,v 1.6 1997/08/12 22:52:02 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/access/transam/Attic/xid.c,v 1.7 1997/08/19 21:30:20 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * OLD COMMENTS
 | 
			
		||||
 * XXX WARNING
 | 
			
		||||
@@ -132,6 +132,7 @@ xideq(TransactionId xid1, TransactionId xid2)
 | 
			
		||||
 *	TransactionIdIncrement
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
TransactionIdIncrement(TransactionId *transactionId)
 | 
			
		||||
{
 | 
			
		||||
@@ -141,6 +142,7 @@ TransactionIdIncrement(TransactionId *transactionId)
 | 
			
		||||
	elog(FATAL, "TransactionIdIncrement: exhausted XID's");
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *	TransactionIdAdd
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 * Copyright (c) 1994, Regents of the University of California
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.20 1997/08/18 20:51:44 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.21 1997/08/19 21:30:24 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -103,7 +103,14 @@
 | 
			
		||||
#define ALLOC(t, c)     (t *)calloc((unsigned)(c), sizeof(t))
 | 
			
		||||
#define FIRST_TYPE_OID 16       /* OID of the first type */
 | 
			
		||||
 | 
			
		||||
 extern int Int_yyparse (void);
 | 
			
		||||
extern int Int_yyparse (void);
 | 
			
		||||
static hashnode *AddStr(char *str, int strlength, int mderef);
 | 
			
		||||
static AttributeTupleForm AllocateAttribute(void);
 | 
			
		||||
static bool BootstrapAlreadySeen(Oid id);
 | 
			
		||||
static int CompHash (char *str, int len);
 | 
			
		||||
static hashnode *FindStr (char *str, int length, hashnode *mderef);
 | 
			
		||||
static int gettype(char *type);
 | 
			
		||||
static void cleanup(void);
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *      global variables
 | 
			
		||||
@@ -701,7 +708,7 @@ InsertOneNull(int i)
 | 
			
		||||
 | 
			
		||||
#define MORE_THAN_THE_NUMBER_OF_CATALOGS 256
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
BootstrapAlreadySeen(Oid id)
 | 
			
		||||
{
 | 
			
		||||
    static Oid seenArray[MORE_THAN_THE_NUMBER_OF_CATALOGS];
 | 
			
		||||
@@ -728,7 +735,7 @@ BootstrapAlreadySeen(Oid id)
 | 
			
		||||
 *      cleanup
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
cleanup()
 | 
			
		||||
{
 | 
			
		||||
    static      int     beenhere = 0;
 | 
			
		||||
@@ -750,7 +757,7 @@ cleanup()
 | 
			
		||||
 *      gettype
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
gettype(char *type)
 | 
			
		||||
{
 | 
			
		||||
    int         i;
 | 
			
		||||
@@ -806,7 +813,7 @@ gettype(char *type)
 | 
			
		||||
 *      AllocateAttribute
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
AttributeTupleForm  /* XXX */
 | 
			
		||||
static AttributeTupleForm  /* XXX */
 | 
			
		||||
AllocateAttribute()
 | 
			
		||||
{
 | 
			
		||||
    AttributeTupleForm attribute =
 | 
			
		||||
@@ -898,7 +905,7 @@ LexIDStr(int ident_num)
 | 
			
		||||
 *      are mod'ing by a prime number.
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
CompHash(char *str, int len)
 | 
			
		||||
{
 | 
			
		||||
    register int result;
 | 
			
		||||
@@ -917,7 +924,7 @@ CompHash(char *str, int len)
 | 
			
		||||
 *      or NULL if the string is not in the table.
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
hashnode *
 | 
			
		||||
static hashnode *
 | 
			
		||||
FindStr(char *str, int length, hashnode *mderef)
 | 
			
		||||
{
 | 
			
		||||
    hashnode    *node;
 | 
			
		||||
@@ -947,7 +954,7 @@ FindStr(char *str, int length, hashnode *mderef)
 | 
			
		||||
 *      has assigned to this string.
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
hashnode *
 | 
			
		||||
static hashnode *
 | 
			
		||||
AddStr(char *str, int strlength, int mderef)
 | 
			
		||||
{
 | 
			
		||||
    hashnode    *temp, *trail, *newnode;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.16 1997/08/19 04:42:54 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.17 1997/08/19 21:30:30 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * INTERFACE ROUTINES
 | 
			
		||||
 *	heap_creatr()		- Create an uncataloged heap relation
 | 
			
		||||
@@ -53,6 +53,19 @@
 | 
			
		||||
# include <string.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void AddPgRelationTuple(Relation pg_class_desc,
 | 
			
		||||
	Relation new_rel_desc, Oid new_rel_oid, int arch, unsigned natts);
 | 
			
		||||
static void AddToTempRelList(Relation r);
 | 
			
		||||
static void DeletePgAttributeTuples(Relation rdesc);
 | 
			
		||||
static void DeletePgRelationTuple(Relation rdesc);
 | 
			
		||||
static void DeletePgTypeTuple(Relation rdesc);
 | 
			
		||||
static int RelationAlreadyExists(Relation pg_class_desc, char relname[]);
 | 
			
		||||
static void RelationRemoveIndexes(Relation relation);
 | 
			
		||||
static void RelationRemoveInheritance(Relation relation);
 | 
			
		||||
static void RemoveFromTempRelList(Relation r);
 | 
			
		||||
static void addNewRelationType(char *typeName, Oid new_rel_oid);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *		XXX UGLY HARD CODED BADNESS FOLLOWS XXX
 | 
			
		||||
 *
 | 
			
		||||
@@ -447,7 +460,7 @@ CheckAttributeNames(TupleDesc tupdesc)
 | 
			
		||||
 *	has to open pg_class and pass an open descriptor.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
RelationAlreadyExists(Relation pg_class_desc, char relname[])
 | 
			
		||||
{
 | 
			
		||||
    ScanKeyData	        key;
 | 
			
		||||
@@ -610,7 +623,7 @@ AddNewAttributeTuples(Oid new_rel_oid,
 | 
			
		||||
 *	adding a tuple to pg_class.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AddPgRelationTuple(Relation pg_class_desc,
 | 
			
		||||
		   Relation new_rel_desc,
 | 
			
		||||
		   Oid new_rel_oid,
 | 
			
		||||
@@ -689,7 +702,7 @@ AddPgRelationTuple(Relation pg_class_desc,
 | 
			
		||||
 *	define a complex type corresponding to the new relation
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
addNewRelationType(char *typeName, Oid new_rel_oid)
 | 
			
		||||
{
 | 
			
		||||
    Oid 		new_type_oid;
 | 
			
		||||
@@ -854,7 +867,7 @@ heap_create(char relname[],
 | 
			
		||||
 *	lots of work.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
RelationRemoveInheritance(Relation relation)
 | 
			
		||||
{
 | 
			
		||||
    Relation		catalogRelation;
 | 
			
		||||
@@ -953,7 +966,7 @@ RelationRemoveInheritance(Relation relation)
 | 
			
		||||
 *	
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
RelationRemoveIndexes(Relation relation)
 | 
			
		||||
{
 | 
			
		||||
    Relation		indexRelation;
 | 
			
		||||
@@ -991,7 +1004,7 @@ RelationRemoveIndexes(Relation relation)
 | 
			
		||||
 *
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
DeletePgRelationTuple(Relation rdesc)
 | 
			
		||||
{
 | 
			
		||||
    Relation		pg_class_desc;
 | 
			
		||||
@@ -1048,7 +1061,7 @@ DeletePgRelationTuple(Relation rdesc)
 | 
			
		||||
 *
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
DeletePgAttributeTuples(Relation rdesc)
 | 
			
		||||
{
 | 
			
		||||
    Relation		pg_attribute_desc;
 | 
			
		||||
@@ -1117,7 +1130,7 @@ DeletePgAttributeTuples(Relation rdesc)
 | 
			
		||||
 *	special.  presently we disallow the destroy.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
DeletePgTypeTuple(Relation rdesc)
 | 
			
		||||
{
 | 
			
		||||
    Relation		pg_type_desc;
 | 
			
		||||
@@ -1386,7 +1399,7 @@ InitTempRelList(void)
 | 
			
		||||
      we don't really remove it, just mark it as NULL
 | 
			
		||||
      and DestroyTempRels will look for NULLs
 | 
			
		||||
*/
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
RemoveFromTempRelList(Relation r)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
@@ -1407,7 +1420,7 @@ RemoveFromTempRelList(Relation r)
 | 
			
		||||
 | 
			
		||||
   MODIFIES the global variable tempRels
 | 
			
		||||
*/
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AddToTempRelList(Relation r)
 | 
			
		||||
{
 | 
			
		||||
    if (!tempRels)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.6 1997/08/12 22:52:13 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.7 1997/08/19 21:30:38 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -30,6 +30,9 @@
 | 
			
		||||
# include <string.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static Oid TypeShellMakeWithOpenRelation(Relation pg_type_desc,
 | 
			
		||||
					 char *typeName);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 * 	TypeGetWithOpenRelation
 | 
			
		||||
 *
 | 
			
		||||
@@ -145,7 +148,7 @@ TypeGet(char* typeName,		/* name of type to be fetched */
 | 
			
		||||
 *
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
Oid
 | 
			
		||||
static Oid
 | 
			
		||||
TypeShellMakeWithOpenRelation(Relation pg_type_desc, char *typeName)
 | 
			
		||||
{
 | 
			
		||||
    register int 	i;
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
 *  
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/commands/_deadcode/Attic/version.c,v 1.4 1997/08/12 20:15:13 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/commands/_deadcode/Attic/version.c,v 1.5 1997/08/19 21:30:47 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *    At the point the version is defined, 2 physical relations are created
 | 
			
		||||
@@ -35,9 +35,9 @@
 | 
			
		||||
#define MAX_QUERY_LEN 1024
 | 
			
		||||
 | 
			
		||||
char rule_buf[MAX_QUERY_LEN];
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static char attr_list[MAX_QUERY_LEN];
 | 
			
		||||
 | 
			
		||||
static void setAttrList(char *bname);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * problem: the version system assumes that the rules it declares will
 | 
			
		||||
@@ -82,6 +82,7 @@ static void setAttrList(char *bname);
 | 
			
		||||
 * DO NOT COMMIT THE XACT, just increase the Cid counter!
 | 
			
		||||
 *							_sp.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static void
 | 
			
		||||
eval_as_new_xact(char *query)
 | 
			
		||||
{
 | 
			
		||||
@@ -92,10 +93,11 @@ eval_as_new_xact(char *query)
 | 
			
		||||
    CommandCounterIncrement();
 | 
			
		||||
    pg_eval(query, (char **) NULL, (Oid *) NULL, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
/*
 | 
			
		||||
 *  Define a version.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
DefineVersion(char *name, char *fromRelname, char *date)
 | 
			
		||||
{
 | 
			
		||||
@@ -130,11 +132,12 @@ DefineVersion(char *name, char *fromRelname, char *date)
 | 
			
		||||
    VersionReplace (name, saved_basename,saved_snapshot);
 | 
			
		||||
    VersionRetrieve (name, saved_basename, saved_snapshot);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *  Creates the deltas.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
VersionCreate(char *vname, char *bname)
 | 
			
		||||
{
 | 
			
		||||
@@ -161,6 +164,7 @@ VersionCreate(char *vname, char *bname)
 | 
			
		||||
    sprintf (query_buf, "CREATE TABLE %s_del (DOID oid)", vname);
 | 
			
		||||
    eval_as_new_xact (query_buf); 
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ -168,6 +172,7 @@ VersionCreate(char *vname, char *bname)
 | 
			
		||||
 * sets the global variable 'attr_list' with the list of attributes (names)
 | 
			
		||||
 * for that relation. 
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static void
 | 
			
		||||
setAttrList(char *bname)
 | 
			
		||||
{
 | 
			
		||||
@@ -203,13 +208,15 @@ setAttrList(char *bname)
 | 
			
		||||
    
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This routine defines the rule governing the append semantics of
 | 
			
		||||
 * versions.  All tuples appended to a version gets appended to the 
 | 
			
		||||
 * <vname>_added relation.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static void
 | 
			
		||||
VersionAppend(char *vname, char *bname)
 | 
			
		||||
{
 | 
			
		||||
    sprintf(rule_buf,
 | 
			
		||||
@@ -218,7 +225,7 @@ VersionAppend(char *vname, char *bname)
 | 
			
		||||
    
 | 
			
		||||
    eval_as_new_xact(rule_buf); 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This routine defines the rule governing the retrieval semantics of
 | 
			
		||||
@@ -228,6 +235,7 @@ VersionAppend(char *vname, char *bname)
 | 
			
		||||
 *      2. Retrieve all tuples in the base relation which are not in 
 | 
			
		||||
 *         the <vname>_del relation.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
VersionRetrieve(char *vname, char *bname, char *snapshot)
 | 
			
		||||
{
 | 
			
		||||
@@ -245,6 +253,7 @@ where _%s.oid !!= '%s_del.DOID'",
 | 
			
		||||
    /*  printf("%s\n",rule_buf); */
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This routine defines the rules that govern the delete semantics of 
 | 
			
		||||
@@ -257,6 +266,7 @@ where _%s.oid !!= '%s_del.DOID'",
 | 
			
		||||
 *        then we have to mark that tuple as being deleted by adding
 | 
			
		||||
 *        it to the <vname>_del relation.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
VersionDelete(char *vname, char *bname, char *snapshot)
 | 
			
		||||
{
 | 
			
		||||
@@ -280,6 +290,7 @@ bname,bname,snapshot,bname);
 | 
			
		||||
   eval_as_new_xact(rule_buf);
 | 
			
		||||
#endif /*  OLD_REWRITE */
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *  This routine defines the rules that govern the update semantics
 | 
			
		||||
@@ -293,6 +304,7 @@ bname,bname,snapshot,bname);
 | 
			
		||||
 *              adding the tuple to the <vname>_del relation. 
 | 
			
		||||
 *         2.2  A copy of the tuple is appended to the <vname>_added relation
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
VersionReplace(char *vname, char *bname, char *snapshot)
 | 
			
		||||
{
 | 
			
		||||
@@ -332,3 +344,4 @@ vname,attr_list,bname,bname,snapshot,vname,bname);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.16 1997/08/12 22:52:15 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.17 1997/08/19 21:30:42 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -93,6 +93,9 @@ static Dllist *pendingNotifies = NULL;
 | 
			
		||||
 | 
			
		||||
static int AsyncExistsPendingNotify(char *);
 | 
			
		||||
static void ClearPendingNotify(void);
 | 
			
		||||
static void Async_NotifyFrontEnd(void);
 | 
			
		||||
static void Async_Unlisten(char *relname, int pid);
 | 
			
		||||
static void Async_UnlistenOnExit(int code, char *relname);
 | 
			
		||||
     
 | 
			
		||||
/*
 | 
			
		||||
 *--------------------------------------------------------------
 | 
			
		||||
@@ -478,7 +481,7 @@ Async_Listen(char *relname, int pid)
 | 
			
		||||
 *
 | 
			
		||||
 *--------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
Async_Unlisten(char *relname, int pid)
 | 
			
		||||
{
 | 
			
		||||
    Relation lDesc;
 | 
			
		||||
@@ -498,7 +501,7 @@ Async_Unlisten(char *relname, int pid)
 | 
			
		||||
    heap_close(lDesc);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
Async_UnlistenOnExit(int code,	/* from exitpg */
 | 
			
		||||
		     char *relname)
 | 
			
		||||
{
 | 
			
		||||
@@ -529,7 +532,7 @@ Async_UnlistenOnExit(int code,	/* from exitpg */
 | 
			
		||||
 */
 | 
			
		||||
GlobalMemory notifyContext = NULL;
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
Async_NotifyFrontEnd()
 | 
			
		||||
{
 | 
			
		||||
    extern CommandDest whereToSendOutput;
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.12 1997/08/18 20:52:07 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.13 1997/08/19 21:30:45 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -49,6 +49,10 @@
 | 
			
		||||
#include <utils/acl.h>
 | 
			
		||||
#endif /* !NO_SECURITY */
 | 
			
		||||
 | 
			
		||||
static Relation copy_heap(Oid OIDOldHeap);
 | 
			
		||||
static void copy_index(Oid OIDOldIndex, Oid OIDNewHeap);
 | 
			
		||||
static void rebuildheap(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cluster
 | 
			
		||||
 *
 | 
			
		||||
@@ -178,7 +182,7 @@ cluster(char oldrelname[], char oldindexname[])
 | 
			
		||||
    StartTransactionCommand();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Relation
 | 
			
		||||
static Relation
 | 
			
		||||
copy_heap(Oid OIDOldHeap)
 | 
			
		||||
{
 | 
			
		||||
    char NewName[NAMEDATALEN];
 | 
			
		||||
@@ -219,7 +223,7 @@ copy_heap(Oid OIDOldHeap)
 | 
			
		||||
    return NewHeap;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
copy_index(Oid OIDOldIndex, Oid OIDNewHeap)
 | 
			
		||||
{
 | 
			
		||||
    Relation OldIndex, NewHeap;
 | 
			
		||||
@@ -309,7 +313,7 @@ copy_index(Oid OIDOldIndex, Oid OIDNewHeap)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
rebuildheap(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex)
 | 
			
		||||
{
 | 
			
		||||
    Relation              LocalNewHeap, LocalOldHeap, LocalOldIndex;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/execAmi.c,v 1.4 1996/11/08 00:45:54 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/execAmi.c,v 1.5 1997/08/19 21:30:51 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -43,6 +43,10 @@
 | 
			
		||||
#include "access/heapam.h"
 | 
			
		||||
#include "catalog/heap.h"
 | 
			
		||||
 | 
			
		||||
static Pointer ExecBeginScan(Relation relation, int nkeys, ScanKey skeys,
 | 
			
		||||
		      bool isindex, ScanDirection dir, TimeQual time_range);
 | 
			
		||||
static Relation ExecOpenR(Oid relationOid, bool isindex);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *   	ExecOpenScanR
 | 
			
		||||
 *
 | 
			
		||||
@@ -99,7 +103,7 @@ ExecOpenScanR(Oid relOid,
 | 
			
		||||
 *	returns a relation descriptor given an object id.
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
Relation
 | 
			
		||||
static Relation
 | 
			
		||||
ExecOpenR(Oid relationOid, bool isindex)
 | 
			
		||||
{
 | 
			
		||||
    Relation relation;
 | 
			
		||||
@@ -133,7 +137,7 @@ ExecOpenR(Oid relationOid, bool isindex)
 | 
			
		||||
 *		-cim 9/14/89
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
Pointer
 | 
			
		||||
static Pointer
 | 
			
		||||
ExecBeginScan(Relation relation,
 | 
			
		||||
	      int nkeys,
 | 
			
		||||
	      ScanKey skeys,
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/Attic/execFlatten.c,v 1.1.1.1 1996/07/09 06:21:24 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/Attic/execFlatten.c,v 1.2 1997/08/19 21:30:56 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -32,6 +32,11 @@
 | 
			
		||||
#include "executor/executor.h"
 | 
			
		||||
#include "executor/execFlatten.h"
 | 
			
		||||
 | 
			
		||||
#ifdef SETS_FIXED
 | 
			
		||||
static bool FjoinBumpOuterNodes(TargetEntry *tlist, ExprContext *econtext,
 | 
			
		||||
	DatumPtr results, char *nulls);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
Datum
 | 
			
		||||
ExecEvalIter(Iter *iterNode,
 | 
			
		||||
	     ExprContext *econtext,
 | 
			
		||||
@@ -168,13 +173,13 @@ ExecEvalFjoin(TargetEntry *tlist,
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
#ifdef SETS_FIXED
 | 
			
		||||
static bool
 | 
			
		||||
FjoinBumpOuterNodes(TargetEntry *tlist,
 | 
			
		||||
		    ExprContext *econtext,
 | 
			
		||||
		    DatumPtr results,
 | 
			
		||||
		    char *nulls)
 | 
			
		||||
{
 | 
			
		||||
#ifdef SETS_FIXED
 | 
			
		||||
    bool   funcIsDone = true;
 | 
			
		||||
    Fjoin  *fjNode    = tlist->fjoin;
 | 
			
		||||
    char *alwaysDone = fjNode->fj_alwaysDone;
 | 
			
		||||
@@ -231,6 +236,5 @@ FjoinBumpOuterNodes(TargetEntry *tlist,
 | 
			
		||||
	    trailers = lnext(trailers);
 | 
			
		||||
	}
 | 
			
		||||
    return false;
 | 
			
		||||
#endif
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.16 1997/08/19 04:43:45 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.17 1997/08/19 21:31:00 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -80,12 +80,14 @@ static int queryLimit = ALL_TUPLES;
 | 
			
		||||
#undef ALL_TUPLES
 | 
			
		||||
#define ALL_TUPLES queryLimit
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
int
 | 
			
		||||
ExecutorLimit(int limit)
 | 
			
		||||
{
 | 
			
		||||
    return queryLimit = limit;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *   	ExecutorStart
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.11 1997/04/22 03:32:35 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.12 1997/08/19 21:31:03 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -72,6 +72,19 @@ int 	execConstLen;
 | 
			
		||||
static Datum ExecEvalAggreg(Aggreg *agg, ExprContext *econtext, bool *isNull);
 | 
			
		||||
static Datum ExecEvalArrayRef(ArrayRef *arrayRef, ExprContext *econtext,
 | 
			
		||||
			      bool *isNull, bool *isDone);
 | 
			
		||||
static Datum ExecEvalAnd(Expr *andExpr, ExprContext *econtext, bool *isNull);
 | 
			
		||||
static Datum ExecEvalFunc(Expr *funcClause, ExprContext *econtext,
 | 
			
		||||
			  bool *isNull, bool *isDone);
 | 
			
		||||
static void ExecEvalFuncArgs(FunctionCachePtr fcache, ExprContext *econtext,
 | 
			
		||||
		      List *argList, Datum argV[], bool *argIsDone);
 | 
			
		||||
static Datum ExecEvalNot(Expr *notclause, ExprContext *econtext, bool *isNull);
 | 
			
		||||
static Datum ExecEvalOper(Expr *opClause, ExprContext *econtext,
 | 
			
		||||
			  bool *isNull);
 | 
			
		||||
static Datum ExecEvalOr(Expr *orExpr, ExprContext *econtext, bool *isNull);
 | 
			
		||||
static Datum ExecEvalVar(Var *variable, ExprContext *econtext, bool *isNull);
 | 
			
		||||
static Datum ExecMakeFunctionResult(Node *node, List *arguments,
 | 
			
		||||
		ExprContext *econtext, bool *isNull, bool *isDone);
 | 
			
		||||
static bool ExecQualClause(Node *clause, ExprContext *econtext);
 | 
			
		||||
 | 
			
		||||
/* --------------------------------
 | 
			
		||||
 *    ExecEvalArrayRef
 | 
			
		||||
@@ -201,7 +214,7 @@ ExecEvalAggreg(Aggreg *agg, ExprContext *econtext, bool *isNull)
 | 
			
		||||
 *      We have an Assert to make sure this entry condition is met.
 | 
			
		||||
 * 
 | 
			
		||||
 * ---------------------------------------------------------------- */
 | 
			
		||||
Datum
 | 
			
		||||
static Datum
 | 
			
		||||
ExecEvalVar(Var *variable, ExprContext *econtext, bool *isNull)
 | 
			
		||||
{
 | 
			
		||||
    Datum	    	result;
 | 
			
		||||
@@ -460,7 +473,8 @@ ExecEvalParam(Param *expression, ExprContext *econtext, bool *isNull)
 | 
			
		||||
 *	to use this.  Ex: overpaid(EMP) might call GetAttributeByNum().
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
char *
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static char *
 | 
			
		||||
GetAttributeByNum(TupleTableSlot  *slot,
 | 
			
		||||
		  AttrNumber attrno,
 | 
			
		||||
		  bool *isNull)
 | 
			
		||||
@@ -492,8 +506,10 @@ GetAttributeByNum(TupleTableSlot  *slot,
 | 
			
		||||
	return (char *) NULL;
 | 
			
		||||
    return (char *) retval;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* XXX char16 name for catalogs */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
char *
 | 
			
		||||
att_by_num(TupleTableSlot *slot,
 | 
			
		||||
	   AttrNumber attrno,
 | 
			
		||||
@@ -501,6 +517,7 @@ att_by_num(TupleTableSlot *slot,
 | 
			
		||||
{
 | 
			
		||||
    return(GetAttributeByNum(slot, attrno, isNull));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
char *
 | 
			
		||||
GetAttributeByName(TupleTableSlot *slot, char *attname, bool *isNull)
 | 
			
		||||
@@ -552,13 +569,15 @@ GetAttributeByName(TupleTableSlot *slot, char *attname, bool *isNull)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* XXX char16 name for catalogs */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
char *
 | 
			
		||||
att_by_name(TupleTableSlot *slot, char *attname, bool *isNull)
 | 
			
		||||
{
 | 
			
		||||
    return(GetAttributeByName(slot, attname, isNull));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
ExecEvalFuncArgs(FunctionCachePtr fcache,
 | 
			
		||||
		 ExprContext *econtext,
 | 
			
		||||
		 List *argList,
 | 
			
		||||
@@ -603,7 +622,7 @@ ExecEvalFuncArgs(FunctionCachePtr fcache,
 | 
			
		||||
 *	ExecMakeFunctionResult
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
Datum
 | 
			
		||||
static Datum
 | 
			
		||||
ExecMakeFunctionResult(Node *node,
 | 
			
		||||
		       List *arguments,
 | 
			
		||||
		       ExprContext *econtext,
 | 
			
		||||
@@ -785,7 +804,7 @@ ExecMakeFunctionResult(Node *node,
 | 
			
		||||
 *	ExecEvalOper
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
Datum
 | 
			
		||||
static Datum
 | 
			
		||||
ExecEvalOper(Expr *opClause, ExprContext *econtext, bool *isNull)
 | 
			
		||||
{
 | 
			
		||||
    Oper	*op; 
 | 
			
		||||
@@ -829,7 +848,7 @@ ExecEvalOper(Expr *opClause, ExprContext *econtext, bool *isNull)
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
Datum
 | 
			
		||||
static Datum
 | 
			
		||||
ExecEvalFunc(Expr *funcClause,
 | 
			
		||||
	     ExprContext *econtext,
 | 
			
		||||
	     bool *isNull,
 | 
			
		||||
@@ -883,7 +902,7 @@ ExecEvalFunc(Expr *funcClause,
 | 
			
		||||
 *	need to know this, mind you...
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
Datum
 | 
			
		||||
static Datum
 | 
			
		||||
ExecEvalNot(Expr *notclause, ExprContext *econtext, bool *isNull)
 | 
			
		||||
{
 | 
			
		||||
    Datum expr_value;
 | 
			
		||||
@@ -922,7 +941,7 @@ ExecEvalNot(Expr *notclause, ExprContext *econtext, bool *isNull)
 | 
			
		||||
 *	ExecEvalOr
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
Datum
 | 
			
		||||
static Datum
 | 
			
		||||
ExecEvalOr(Expr *orExpr, ExprContext *econtext, bool *isNull)
 | 
			
		||||
{
 | 
			
		||||
    List   *clauses;
 | 
			
		||||
@@ -985,7 +1004,7 @@ ExecEvalOr(Expr *orExpr, ExprContext *econtext, bool *isNull)
 | 
			
		||||
 *	ExecEvalAnd
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
Datum
 | 
			
		||||
static Datum
 | 
			
		||||
ExecEvalAnd(Expr *andExpr, ExprContext *econtext, bool *isNull)
 | 
			
		||||
{
 | 
			
		||||
    List   *clauses;
 | 
			
		||||
@@ -1168,7 +1187,7 @@ ExecEvalExpr(Node *expression,
 | 
			
		||||
 *	rest of the qualification)
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
ExecQualClause(Node *clause, ExprContext *econtext)
 | 
			
		||||
{
 | 
			
		||||
    Datum   expr_value;
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.5 1996/12/11 00:26:38 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.6 1997/08/19 21:31:05 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -131,6 +131,9 @@
 | 
			
		||||
#include "parser/catalog_utils.h"
 | 
			
		||||
#include "catalog/pg_type.h"
 | 
			
		||||
 | 
			
		||||
static TupleTableSlot *NodeGetResultTupleSlot(Plan *node);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *		  tuple table create/delete functions
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
@@ -428,11 +431,13 @@ ExecClearTuple(TupleTableSlot* slot)	/* slot in which to store tuple */
 | 
			
		||||
 *	merge joins that you need to diddle the slot policy.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool				/* return: slot policy */
 | 
			
		||||
ExecSlotPolicy(TupleTableSlot* slot)	/* slot to inspect */
 | 
			
		||||
{
 | 
			
		||||
    return slot->ttc_shouldFree;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* --------------------------------
 | 
			
		||||
 *	ExecSetSlotPolicy
 | 
			
		||||
@@ -500,6 +505,7 @@ ExecSetSlotDescriptorIsNew(TupleTableSlot *slot,/* slot to change */
 | 
			
		||||
 *	with the slot's tuple, and set the "isNew" flag at the same time.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
TupleDesc			/* return: old slot tuple descriptor */
 | 
			
		||||
ExecSetNewSlotDescriptor(TupleTableSlot *slot,	/* slot to change */
 | 
			
		||||
			 TupleDesc tupdesc) /* tuple descriptor */
 | 
			
		||||
@@ -510,6 +516,7 @@ ExecSetNewSlotDescriptor(TupleTableSlot *slot,	/* slot to change */
 | 
			
		||||
    
 | 
			
		||||
    return old_tupdesc;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* --------------------------------
 | 
			
		||||
 *	ExecSlotBuffer
 | 
			
		||||
@@ -532,6 +539,7 @@ ExecSetNewSlotDescriptor(TupleTableSlot *slot,	/* slot to change */
 | 
			
		||||
 *	also use ExecIncrSlotBufferRefcnt().
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
Buffer				/* return: old slot buffer */
 | 
			
		||||
ExecSetSlotBuffer(TupleTableSlot *slot,	/* slot to change */
 | 
			
		||||
		  Buffer  b)		/* tuple descriptor */
 | 
			
		||||
@@ -541,6 +549,7 @@ ExecSetSlotBuffer(TupleTableSlot *slot,	/* slot to change */
 | 
			
		||||
    
 | 
			
		||||
    return oldb;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* --------------------------------
 | 
			
		||||
 *	ExecIncrSlotBufferRefcnt
 | 
			
		||||
@@ -602,6 +611,7 @@ TupIsNull(TupleTableSlot* slot)		/* slot to check */
 | 
			
		||||
 *	now storing a new type of tuple in this slot
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool				/* return: descriptor "is new" */
 | 
			
		||||
ExecSlotDescriptorIsNew(TupleTableSlot *slot)	/* slot to inspect */
 | 
			
		||||
{
 | 
			
		||||
@@ -609,6 +619,7 @@ ExecSlotDescriptorIsNew(TupleTableSlot *slot)	/* slot to inspect */
 | 
			
		||||
    return isNew; */
 | 
			
		||||
  return slot->ttc_descIsNew;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *		convenience initialization routines 
 | 
			
		||||
@@ -686,6 +697,7 @@ ExecInitOuterTupleSlot(EState *estate, HashJoinState *hashstate)
 | 
			
		||||
 *	ExecInitHashTupleSlot
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
ExecInitHashTupleSlot(EState *estate, HashJoinState *hashstate)
 | 
			
		||||
{
 | 
			
		||||
@@ -693,8 +705,9 @@ ExecInitHashTupleSlot(EState *estate, HashJoinState *hashstate)
 | 
			
		||||
    INIT_SLOT_ALLOC;
 | 
			
		||||
    hashstate->hj_HashTupleSlot = slot;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
TupleTableSlot *
 | 
			
		||||
static TupleTableSlot *
 | 
			
		||||
NodeGetResultTupleSlot(Plan *node)
 | 
			
		||||
{
 | 
			
		||||
    TupleTableSlot *slot;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.10 1997/08/18 20:52:27 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.11 1997/08/19 21:31:06 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -58,6 +58,9 @@
 | 
			
		||||
#include "catalog/pg_type.h"
 | 
			
		||||
#include "parser/parsetree.h"
 | 
			
		||||
 | 
			
		||||
static void ExecGetIndexKeyInfo(IndexTupleForm indexTuple, int *numAttsOutP,
 | 
			
		||||
		 AttrNumber **attsOutP, FuncIndexInfoPtr fInfoP);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *      global counters for number of tuples processed, retrieved,
 | 
			
		||||
 *      appended, replaced, deleted.
 | 
			
		||||
@@ -82,6 +85,7 @@ extern int NIndexTupleProcessed;  /* have to be defined in the access
 | 
			
		||||
 *	ResetTupleCount
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
ResetTupleCount(void)
 | 
			
		||||
{
 | 
			
		||||
@@ -92,11 +96,13 @@ ResetTupleCount(void)
 | 
			
		||||
    NTupleReplaced = 0;
 | 
			
		||||
    NIndexTupleProcessed = 0;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *	PrintTupleCount
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
DisplayTupleCount(FILE *statfp)
 | 
			
		||||
{
 | 
			
		||||
@@ -127,6 +133,7 @@ DisplayTupleCount(FILE *statfp)
 | 
			
		||||
		(NTupleReplaced == 1) ? "" : "s");
 | 
			
		||||
    fprintf(statfp, "\n");
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *		 miscellanious init node support functions
 | 
			
		||||
@@ -287,6 +294,7 @@ ExecGetResultType(CommonState *commonstate)
 | 
			
		||||
 *	ExecFreeResultType
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
ExecFreeResultType(CommonState *commonstate)
 | 
			
		||||
{
 | 
			
		||||
@@ -299,7 +307,7 @@ ExecFreeResultType(CommonState *commonstate)
 | 
			
		||||
/*    ExecFreeTypeInfo(tupType); */
 | 
			
		||||
    pfree(tupType);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	ExecAssignProjectionInfo
 | 
			
		||||
@@ -382,6 +390,7 @@ ExecGetScanType(CommonScanState *csstate)
 | 
			
		||||
 *	ExecFreeScanType
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
ExecFreeScanType(CommonScanState *csstate)
 | 
			
		||||
{
 | 
			
		||||
@@ -394,6 +403,7 @@ ExecFreeScanType(CommonScanState *csstate)
 | 
			
		||||
/*    ExecFreeTypeInfo(tupType); */
 | 
			
		||||
    pfree(tupType);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	ExecAssignScanType
 | 
			
		||||
@@ -581,7 +591,7 @@ QueryDescGetTypeInfo(QueryDesc *queryDesc)
 | 
			
		||||
 *	parameters.
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
ExecGetIndexKeyInfo(IndexTupleForm indexTuple,
 | 
			
		||||
		    int *numAttsOutP,
 | 
			
		||||
		    AttrNumber **attsOutP,
 | 
			
		||||
@@ -938,6 +948,7 @@ ExecCloseIndices(RelationInfo *resultRelationInfo)
 | 
			
		||||
 *	set of routines..
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
IndexTuple
 | 
			
		||||
ExecFormIndexTuple(HeapTuple heapTuple,
 | 
			
		||||
		   Relation heapRelation,
 | 
			
		||||
@@ -1011,6 +1022,7 @@ ExecFormIndexTuple(HeapTuple heapTuple,
 | 
			
		||||
 | 
			
		||||
    return indexTuple;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *	ExecInsertIndexTuples
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/nodeAppend.c,v 1.4 1996/11/06 06:47:39 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/nodeAppend.c,v 1.5 1997/08/19 21:31:07 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -64,6 +64,8 @@
 | 
			
		||||
#include "utils/mcxt.h"
 | 
			
		||||
#include "parser/parsetree.h"		/* for rt_store() macro */
 | 
			
		||||
 | 
			
		||||
static bool exec_append_initialize_next(Append *node);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *      exec-append-initialize-next
 | 
			
		||||
 *    
 | 
			
		||||
@@ -73,7 +75,7 @@
 | 
			
		||||
 *      Returns t iff there is a "next" scan to process.
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
exec_append_initialize_next(Append *node)
 | 
			
		||||
{
 | 
			
		||||
    EState         *estate;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/nodeHash.c,v 1.9 1997/07/28 00:53:58 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/nodeHash.c,v 1.10 1997/08/19 21:31:08 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -47,6 +47,11 @@ static int HashTBSize;
 | 
			
		||||
 | 
			
		||||
static void mk_hj_temp(char *tempname);
 | 
			
		||||
static int hashFunc(char *key, int len);
 | 
			
		||||
static int ExecHashPartition(Hash *node);
 | 
			
		||||
static RelativeAddr hashTableAlloc(int size, HashJoinTable hashtable);
 | 
			
		||||
static void ExecHashOverflowInsert(HashJoinTable hashtable,
 | 
			
		||||
		       HashBucket bucket,
 | 
			
		||||
		       HeapTuple heapTuple);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *   	ExecHash
 | 
			
		||||
@@ -258,7 +263,7 @@ ExecEndHash(Hash *node)
 | 
			
		||||
    ExecEndNode(outerPlan, (Plan*)node);
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
RelativeAddr
 | 
			
		||||
static RelativeAddr
 | 
			
		||||
hashTableAlloc(int size, HashJoinTable hashtable)
 | 
			
		||||
{
 | 
			
		||||
    RelativeAddr p;
 | 
			
		||||
@@ -577,7 +582,7 @@ ExecHashGetBucket(HashJoinTable hashtable,
 | 
			
		||||
 *	insert into the overflow area of a hash bucket
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
ExecHashOverflowInsert(HashJoinTable hashtable,
 | 
			
		||||
		       HashBucket bucket,
 | 
			
		||||
		       HeapTuple heapTuple)
 | 
			
		||||
@@ -790,7 +795,7 @@ hashFunc(char *key, int len)
 | 
			
		||||
 *	determine the number of batches needed for a hashjoin
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
ExecHashPartition(Hash *node)
 | 
			
		||||
{
 | 
			
		||||
    Plan	*outerNode;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.4 1997/07/28 00:54:06 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.5 1997/08/19 21:31:09 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -39,6 +39,13 @@ static TupleTableSlot *
 | 
			
		||||
ExecHashJoinGetSavedTuple(HashJoinState *hjstate, char *buffer,
 | 
			
		||||
	File file, TupleTableSlot *tupleSlot, int *block, char **position);
 | 
			
		||||
 | 
			
		||||
static int ExecHashJoinGetBatch(int bucketno, HashJoinTable hashtable,
 | 
			
		||||
				int nbatch);
 | 
			
		||||
 | 
			
		||||
static int ExecHashJoinNewBatch(HashJoinState *hjstate);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *   	ExecHashJoin
 | 
			
		||||
 *
 | 
			
		||||
@@ -624,7 +631,7 @@ ExecHashJoinGetSavedTuple(HashJoinState *hjstate,
 | 
			
		||||
 *   	switch to a new hashjoin batch
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
ExecHashJoinNewBatch(HashJoinState *hjstate)
 | 
			
		||||
{
 | 
			
		||||
    File 		*innerBatches;
 | 
			
		||||
@@ -742,7 +749,7 @@ ExecHashJoinNewBatch(HashJoinState *hjstate)
 | 
			
		||||
 * batch         0           1       2     ...
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
ExecHashJoinGetBatch(int bucketno, HashJoinTable hashtable, int nbatch)
 | 
			
		||||
{
 | 
			
		||||
    int b;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.7 1997/08/12 22:52:38 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.8 1997/08/19 21:31:10 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -84,6 +84,8 @@
 | 
			
		||||
#include "utils/lsyscache.h"
 | 
			
		||||
#include "utils/psort.h"
 | 
			
		||||
 | 
			
		||||
static bool MergeCompare(List *eqQual, List *compareQual, ExprContext *econtext);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *	MarkInnerTuple and RestoreInnerTuple macros
 | 
			
		||||
 *
 | 
			
		||||
@@ -251,7 +253,7 @@ MJFormISortopO(List *qualList, Oid sortOp)
 | 
			
		||||
 *   	if (key1i > key2i) is true and (key1j = key2j) for 0 < j < i.
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
MergeCompare(List *eqQual, List *compareQual, ExprContext *econtext)
 | 
			
		||||
{
 | 
			
		||||
    List   *clause;
 | 
			
		||||
@@ -319,6 +321,7 @@ MergeCompare(List *eqQual, List *compareQual, ExprContext *econtext)
 | 
			
		||||
 *	when EXEC_MERGEJOINDEBUG is defined
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef EXEC_MERGEJOINDEBUG
 | 
			
		||||
void
 | 
			
		||||
ExecMergeTupleDumpInner(ExprContext *econtext)
 | 
			
		||||
{
 | 
			
		||||
@@ -332,7 +335,7 @@ ExecMergeTupleDumpInner(ExprContext *econtext)
 | 
			
		||||
	debugtup(innerSlot->val,
 | 
			
		||||
		 innerSlot->ttc_tupleDescriptor);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
ExecMergeTupleDumpOuter(ExprContext *econtext)
 | 
			
		||||
{
 | 
			
		||||
@@ -346,7 +349,7 @@ ExecMergeTupleDumpOuter(ExprContext *econtext)
 | 
			
		||||
	debugtup(outerSlot->val,
 | 
			
		||||
		 outerSlot->ttc_tupleDescriptor);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
ExecMergeTupleDumpMarked(ExprContext *econtext,
 | 
			
		||||
			 MergeJoinState *mergestate)
 | 
			
		||||
@@ -362,7 +365,7 @@ ExecMergeTupleDumpMarked(ExprContext *econtext,
 | 
			
		||||
	debugtup(markedSlot->val,
 | 
			
		||||
		 markedSlot->ttc_tupleDescriptor);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
ExecMergeTupleDump(ExprContext *econtext, MergeJoinState *mergestate)
 | 
			
		||||
{
 | 
			
		||||
@@ -374,6 +377,7 @@ ExecMergeTupleDump(ExprContext *econtext, MergeJoinState *mergestate)
 | 
			
		||||
    
 | 
			
		||||
    printf("******** \n");
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
static void
 | 
			
		||||
CleanUpSort(Plan *plan) {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/nodeSeqscan.c,v 1.3 1996/11/08 05:56:16 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/executor/nodeSeqscan.c,v 1.4 1997/08/19 21:31:12 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -30,6 +30,11 @@
 | 
			
		||||
#include "access/heapam.h"
 | 
			
		||||
#include "parser/parsetree.h"
 | 
			
		||||
 | 
			
		||||
static Oid InitScanRelation(SeqScan *node, EState *estate,
 | 
			
		||||
			    CommonScanState *scanstate, Plan *outerPlan);
 | 
			
		||||
 | 
			
		||||
static TupleTableSlot *SeqNext(SeqScan *node);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *   			Scan Support
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
@@ -40,7 +45,7 @@
 | 
			
		||||
 *	This is a workhorse for ExecSeqScan
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
TupleTableSlot *
 | 
			
		||||
static TupleTableSlot *
 | 
			
		||||
SeqNext(SeqScan *node)
 | 
			
		||||
{
 | 
			
		||||
    HeapTuple	 	tuple;
 | 
			
		||||
@@ -139,7 +144,7 @@ S1_printf("ExecSeqScan: returned tuple slot: %d\n", slot);
 | 
			
		||||
 *	subplans of scans.
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
Oid
 | 
			
		||||
static Oid
 | 
			
		||||
InitScanRelation(SeqScan *node, EState *estate,
 | 
			
		||||
		 CommonScanState *scanstate, Plan *outerPlan)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/lib/dllist.c,v 1.4 1996/11/10 03:00:20 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/lib/dllist.c,v 1.5 1997/08/19 21:31:16 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -67,6 +67,7 @@ DLGetHead(Dllist* l)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* get the value stored in the first element */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void*
 | 
			
		||||
DLGetHeadVal(Dllist* l)
 | 
			
		||||
{
 | 
			
		||||
@@ -74,6 +75,7 @@ DLGetHeadVal(Dllist* l)
 | 
			
		||||
  
 | 
			
		||||
  return (e ? e->dle_val : 0);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
Dlelem* 
 | 
			
		||||
DLGetTail(Dllist* l)
 | 
			
		||||
@@ -82,6 +84,7 @@ DLGetTail(Dllist* l)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* get the value stored in the first element */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void*
 | 
			
		||||
DLGetTailVal(Dllist* l)
 | 
			
		||||
{
 | 
			
		||||
@@ -89,7 +92,7 @@ DLGetTailVal(Dllist* l)
 | 
			
		||||
  
 | 
			
		||||
  return (e ? e->dle_val : 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
Dlelem* 
 | 
			
		||||
DLGetPred(Dlelem* e) /* get predecessor */
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/lib/Attic/lispsort.c,v 1.3 1996/11/06 08:27:14 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/lib/Attic/lispsort.c,v 1.4 1997/08/19 21:31:18 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -22,6 +22,7 @@
 | 
			
		||||
#include <lib/lispsort.h>
 | 
			
		||||
#include <lib/qsort.h>
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/*
 | 
			
		||||
** lisp_qsort: Takes a lisp list as input, copies it into an array of lisp 
 | 
			
		||||
**             nodes which it sorts via qsort() with the comparison function
 | 
			
		||||
@@ -57,3 +58,4 @@ List *lisp_qsort(List *the_list,    /* the list to be sorted */
 | 
			
		||||
    
 | 
			
		||||
    return(output);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.13 1997/08/12 22:52:45 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.14 1997/08/19 21:31:23 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -72,6 +72,8 @@
 | 
			
		||||
#include <libpq/hba.h>
 | 
			
		||||
#include <libpq/password.h>
 | 
			
		||||
 | 
			
		||||
static int be_getauthsvc(MsgType msgtype);
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------------
 | 
			
		||||
 * common definitions for generic fe/be routines
 | 
			
		||||
 *----------------------------------------------------------------
 | 
			
		||||
@@ -586,7 +588,7 @@ be_setauthsvc(char *name)
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
be_getauthsvc(MsgType msgtype)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-pqexec.c,v 1.3 1997/08/12 20:15:19 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-pqexec.c,v 1.4 1997/08/19 21:31:31 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -37,6 +37,8 @@
 | 
			
		||||
# include <string.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static char *strmake(char *str, int len);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *			PQ interface routines
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
@@ -215,7 +217,7 @@ pqtest_PQexec(char *q)
 | 
			
		||||
 *	utilities for pqtest_PQfn()
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
char *
 | 
			
		||||
static char *
 | 
			
		||||
strmake(char *str, int len)
 | 
			
		||||
{
 | 
			
		||||
    char *newstr;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.5 1997/01/10 20:17:43 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.6 1997/08/19 21:31:36 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -26,6 +26,8 @@
 | 
			
		||||
#include "utils/elog.h"
 | 
			
		||||
#include "storage/itemptr.h"
 | 
			
		||||
 | 
			
		||||
static bool equali(List *a, List *b);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *  Stuff from primnodes.h
 | 
			
		||||
 */
 | 
			
		||||
@@ -703,7 +705,8 @@ equal(void *a, void *b)
 | 
			
		||||
 *
 | 
			
		||||
 * XXX temp hack. needs something like T_IntList
 | 
			
		||||
 */
 | 
			
		||||
bool equali(List *a, List *b)
 | 
			
		||||
static bool
 | 
			
		||||
equali(List *a, List *b)
 | 
			
		||||
{     
 | 
			
		||||
    List *la = (List*)a;
 | 
			
		||||
    List *lb = (List*)b;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/nodes/list.c,v 1.3 1997/03/12 20:59:27 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/nodes/list.c,v 1.4 1997/08/19 21:31:39 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *    XXX a few of the following functions are duplicated to handle
 | 
			
		||||
@@ -408,6 +408,7 @@ LispRemove(void *elem, List *list)
 | 
			
		||||
    return(list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
List *
 | 
			
		||||
intLispRemove(int elem, List *list)
 | 
			
		||||
{
 | 
			
		||||
@@ -429,6 +430,7 @@ intLispRemove(int elem, List *list)
 | 
			
		||||
    }
 | 
			
		||||
    return(list);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
List *
 | 
			
		||||
set_difference(List *list1, List *list2)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/nodes/nodeFuncs.c,v 1.2 1996/10/31 10:42:56 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/nodes/nodeFuncs.c,v 1.3 1997/08/19 21:31:41 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -23,6 +23,8 @@
 | 
			
		||||
#include "nodes/nodeFuncs.h"
 | 
			
		||||
#include "utils/lsyscache.h"
 | 
			
		||||
 | 
			
		||||
static bool var_is_inner(Var *var);
 | 
			
		||||
 | 
			
		||||
/*    
 | 
			
		||||
 * single_node -
 | 
			
		||||
 *    Returns t if node corresponds to a single-noded expression
 | 
			
		||||
@@ -61,7 +63,7 @@ var_is_outer (Var *var)
 | 
			
		||||
    return((bool)(var->varno == OUTER));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
var_is_inner (Var *var)
 | 
			
		||||
{
 | 
			
		||||
    return ( (bool) (var->varno == INNER));
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.5 1997/08/12 20:15:27 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.6 1997/08/19 21:31:43 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * HISTORY
 | 
			
		||||
 *    AUTHOR		DATE		MAJOR EVENT
 | 
			
		||||
@@ -32,6 +32,9 @@
 | 
			
		||||
#include "nodes/nodes.h"
 | 
			
		||||
#include "nodes/plannodes.h"
 | 
			
		||||
#include "optimizer/clauses.h"
 | 
			
		||||
 | 
			
		||||
static char *plannode_type (Plan* p);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * print--
 | 
			
		||||
 *    print contents of Node to stdout
 | 
			
		||||
@@ -258,7 +261,7 @@ print_slot(TupleTableSlot *slot)
 | 
			
		||||
    debugtup(slot->val, slot->ttc_tupleDescriptor);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char* 
 | 
			
		||||
static char * 
 | 
			
		||||
plannode_type (Plan* p)
 | 
			
		||||
{
 | 
			
		||||
    switch(nodeTag(p)) {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.15 1997/04/24 15:49:30 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.16 1997/08/19 21:31:48 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -41,6 +41,7 @@ extern int NBuffers;
 | 
			
		||||
 | 
			
		||||
static int compute_attribute_width(TargetEntry *tlistentry);
 | 
			
		||||
static double base_log(double x, double b);
 | 
			
		||||
static int compute_targetlist_width(List *targetlist);
 | 
			
		||||
 | 
			
		||||
int _disable_cost_ = 30000000;
 | 
			
		||||
 
 | 
			
		||||
@@ -209,6 +210,7 @@ cost_sort(List *keys, int tuples, int width, bool noread)
 | 
			
		||||
 * Returns a flonum.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
Cost
 | 
			
		||||
cost_result(int tuples, int width)
 | 
			
		||||
{
 | 
			
		||||
@@ -218,6 +220,7 @@ cost_result(int tuples, int width)
 | 
			
		||||
    Assert(temp >= 0);
 | 
			
		||||
    return(temp);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*    
 | 
			
		||||
 * cost_nestloop--
 | 
			
		||||
@@ -386,7 +389,7 @@ compute_rel_width(Rel *rel)
 | 
			
		||||
 *    
 | 
			
		||||
 * Returns the width of the tuple as a fixnum.
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
compute_targetlist_width(List *targetlist)
 | 
			
		||||
{
 | 
			
		||||
    List *temp_tl;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.6 1997/01/22 06:30:57 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.7 1997/08/19 21:31:54 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * HISTORY
 | 
			
		||||
 *    AUTHOR		DATE		MAJOR EVENT
 | 
			
		||||
@@ -34,6 +34,8 @@
 | 
			
		||||
#include "optimizer/internal.h"
 | 
			
		||||
#include "optimizer/var.h"
 | 
			
		||||
 | 
			
		||||
static bool agg_clause(Node *clause);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Expr *
 | 
			
		||||
make_clause(int type, Node *oper, List *args)
 | 
			
		||||
@@ -134,7 +136,7 @@ get_rightop(Expr *clause)
 | 
			
		||||
 *    	AGG clause functions
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
agg_clause(Node *clause)
 | 
			
		||||
{
 | 
			
		||||
    return
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/keys.c,v 1.1.1.1 1996/07/09 06:21:38 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/keys.c,v 1.2 1997/08/19 21:32:03 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -23,6 +23,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static Expr *matching2_tlvar(int var, List *tlist, bool (*test)());
 | 
			
		||||
static bool equal_indexkey_var(int index_key, Var *var);
 | 
			
		||||
 | 
			
		||||
/*    
 | 
			
		||||
 * 1. index key
 | 
			
		||||
@@ -69,7 +70,7 @@ match_indexkey_operand(int indexkey, Var *operand, Rel *rel)
 | 
			
		||||
 *    fields of var node 'var'.
 | 
			
		||||
 *    
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
equal_indexkey_var(int index_key, Var *var)
 | 
			
		||||
{
 | 
			
		||||
    if (index_key == var->varattno)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/ordering.c,v 1.2 1996/10/31 10:59:41 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/ordering.c,v 1.3 1997/08/19 21:32:06 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -18,6 +18,7 @@
 | 
			
		||||
#include "optimizer/internal.h"
 | 
			
		||||
#include "optimizer/ordering.h"
 | 
			
		||||
 | 
			
		||||
static bool equal_sortops_order(Oid *ordering1, Oid *ordering2);
 | 
			
		||||
 | 
			
		||||
/*    
 | 
			
		||||
 * equal-path-path-ordering--
 | 
			
		||||
@@ -102,7 +103,7 @@ equal_merge_merge_ordering(MergeOrder *merge_ordering1,
 | 
			
		||||
 * equal_sort_ops_order -
 | 
			
		||||
 *    Returns true iff the sort operators are in the same order.
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
equal_sortops_order(Oid *ordering1, Oid *ordering2)
 | 
			
		||||
{
 | 
			
		||||
    int i = 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.2 1997/04/05 06:39:58 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.3 1997/08/19 21:32:08 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -532,10 +532,10 @@ get_expr(TargetEntry *tle)
 | 
			
		||||
 *    append the group attribute to the target list if it's not already
 | 
			
		||||
 *    in there.
 | 
			
		||||
 */
 | 
			
		||||
#if 0
 | 
			
		||||
void
 | 
			
		||||
AddGroupAttrToTlist(List *tlist, List *grpCl)
 | 
			
		||||
{
 | 
			
		||||
#if 0
 | 
			
		||||
    List *gl;
 | 
			
		||||
    int last_resdomno = length(tlist) + 1;
 | 
			
		||||
    
 | 
			
		||||
@@ -557,8 +557,8 @@ AddGroupAttrToTlist(List *tlist, List *grpCl)
 | 
			
		||||
	    tlist = lappend(tlist, MakeTLE(r, (Node*)var));
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* was ExecTargetListLength() in execQual.c, 
 | 
			
		||||
   moved here to reduce dependencies on the executor module */
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.33 1997/08/18 20:53:00 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.34 1997/08/19 21:32:11 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -87,6 +87,7 @@ static void make_arguments(int nargs, List *fargs, Oid *input_typeids,
 | 
			
		||||
static void AddAggToParseState(ParseState *pstate, Aggreg *aggreg);
 | 
			
		||||
static void finalizeAggregates(ParseState *pstate, Query *qry);
 | 
			
		||||
static void parseCheckAggregates(ParseState *pstate, Query *qry);
 | 
			
		||||
static ParseState* makeParseState(void);
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 *
 | 
			
		||||
@@ -99,7 +100,7 @@ static void parseCheckAggregates(ParseState *pstate, Query *qry);
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
ParseState* 
 | 
			
		||||
static ParseState* 
 | 
			
		||||
makeParseState(void)
 | 
			
		||||
{
 | 
			
		||||
    ParseState *pstate;
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/parser/Attic/catalog_utils.c,v 1.20 1997/08/12 20:15:32 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/parser/Attic/catalog_utils.c,v 1.21 1997/08/19 21:32:12 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -109,6 +109,9 @@ typedef struct _CandidateList {
 | 
			
		||||
static Oid **argtype_inherit(int nargs, Oid *oid_array);
 | 
			
		||||
static Oid **genxprod(InhPaths *arginh, int nargs);
 | 
			
		||||
static int findsupers(Oid relid, Oid **supervec);
 | 
			
		||||
static bool check_typeid(Oid id);
 | 
			
		||||
static char *instr1(TypeTupleForm tp, char *string, int typlen);
 | 
			
		||||
static void op_error(char *op, Oid arg1, Oid arg2);
 | 
			
		||||
 | 
			
		||||
/* check to see if a type id is valid,
 | 
			
		||||
 * returns true if it is. By using this call before calling 
 | 
			
		||||
@@ -116,7 +119,7 @@ static int findsupers(Oid relid, Oid **supervec);
 | 
			
		||||
 * can be produced because the caller typically has more context of
 | 
			
		||||
 *  what's going on                 - jolly
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
check_typeid(Oid id)
 | 
			
		||||
{
 | 
			
		||||
    return (SearchSysCacheTuple(TYPOID, 
 | 
			
		||||
@@ -784,6 +787,7 @@ getAttrName(Relation rd, int attrno)
 | 
			
		||||
 | 
			
		||||
/* Given a typename and value, returns the ascii form of the value */
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
char *
 | 
			
		||||
outstr(char *typename,	/* Name of type of value */
 | 
			
		||||
       char *value)	/* Could be of any type */
 | 
			
		||||
@@ -795,6 +799,7 @@ outstr(char *typename,	/* Name of type of value */
 | 
			
		||||
    op = tp->typoutput;
 | 
			
		||||
    return((char *) fmgr(op, value));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Given a Type and a string, return the internal form of that string */
 | 
			
		||||
char *
 | 
			
		||||
@@ -805,7 +810,7 @@ instr2(Type tp, char *string, int typlen)
 | 
			
		||||
 | 
			
		||||
/* Given a type structure and a string, returns the internal form of
 | 
			
		||||
   that string */
 | 
			
		||||
char *
 | 
			
		||||
static char *
 | 
			
		||||
instr1(TypeTupleForm tp, char *string, int typlen)
 | 
			
		||||
{
 | 
			
		||||
    Oid op;
 | 
			
		||||
@@ -1422,6 +1427,7 @@ get_typelem(Oid type_id)
 | 
			
		||||
    return (type->typelem);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
char
 | 
			
		||||
FindDelimiter(char *typename)
 | 
			
		||||
{
 | 
			
		||||
@@ -1440,12 +1446,13 @@ FindDelimiter(char *typename)
 | 
			
		||||
    delim = type->typdelim;
 | 
			
		||||
    return (delim);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Give a somewhat useful error message when the operator for two types
 | 
			
		||||
 * is not found.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
op_error(char *op, Oid arg1, Oid arg2)
 | 
			
		||||
{
 | 
			
		||||
    Type tp1 = NULL, tp2 = NULL;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/parser/Attic/dbcommands.c,v 1.5 1997/08/18 20:53:03 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/parser/Attic/dbcommands.c,v 1.6 1997/08/19 21:32:14 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -38,6 +38,7 @@
 | 
			
		||||
static void check_permissions(char *command, char *dbname,
 | 
			
		||||
			      Oid *dbIdP, Oid *userIdP);
 | 
			
		||||
static HeapTuple get_pg_dbtup(char *command, char *dbname, Relation dbrel);
 | 
			
		||||
static void stop_vacuum(char *dbname);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
createdb(char *dbname)
 | 
			
		||||
@@ -241,7 +242,7 @@ check_permissions(char *command,
 | 
			
		||||
 *  stop_vacuum() -- stop the vacuum daemon on the database, if one is
 | 
			
		||||
 *		     running.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
stop_vacuum(char *dbname)
 | 
			
		||||
{
 | 
			
		||||
    char filename[256];
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/parser/Attic/parse_query.c,v 1.16 1997/05/31 07:10:25 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/parser/Attic/parse_query.c,v 1.17 1997/08/19 21:32:16 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -38,6 +38,9 @@
 | 
			
		||||
#include "nodes/parsenodes.h"
 | 
			
		||||
#include "nodes/makefuncs.h"
 | 
			
		||||
 | 
			
		||||
static void checkTargetTypes(ParseState *pstate, char *target_colname,
 | 
			
		||||
					char *refname, char *colname);
 | 
			
		||||
 | 
			
		||||
Oid *param_type_info;
 | 
			
		||||
int pfunc_num_args;
 | 
			
		||||
 | 
			
		||||
@@ -755,7 +758,7 @@ handleTargetColname(ParseState *pstate, char **resname,
 | 
			
		||||
 * checkTargetTypes -
 | 
			
		||||
 *    checks value and target column types
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
checkTargetTypes(ParseState *pstate, char *target_colname,
 | 
			
		||||
					char *refname, char *colname)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.51 1997/08/12 22:53:31 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.52 1997/08/19 21:32:27 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *
 | 
			
		||||
@@ -163,8 +163,8 @@ static void CleanupProc(int pid, int exitstatus);
 | 
			
		||||
static int DoExec(StartupInfo *packet, int portFd);
 | 
			
		||||
static void ExitPostmaster(int status);
 | 
			
		||||
static void usage(const char *);
 | 
			
		||||
int ServerLoop(void);
 | 
			
		||||
int BackendStartup(StartupInfo *packet, Port *port, int *pidPtr);
 | 
			
		||||
static int ServerLoop(void);
 | 
			
		||||
static int BackendStartup(StartupInfo *packet, Port *port, int *pidPtr);
 | 
			
		||||
static void send_error_reply(Port *port, const char *errormsg);
 | 
			
		||||
 | 
			
		||||
extern char *optarg;
 | 
			
		||||
@@ -432,7 +432,7 @@ usage(const char *progname)
 | 
			
		||||
    exit(1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
ServerLoop(void)
 | 
			
		||||
{
 | 
			
		||||
    int         serverFd = ServerSock;
 | 
			
		||||
@@ -943,7 +943,7 @@ CleanupProc(int pid,
 | 
			
		||||
 *      otherwise.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
BackendStartup(StartupInfo *packet, /* client's startup packet */
 | 
			
		||||
               Port *port,
 | 
			
		||||
               int *pidPtr)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/buffer/buf_table.c,v 1.3 1996/11/03 04:56:59 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/buffer/buf_table.c,v 1.4 1997/08/19 21:32:34 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -153,6 +153,7 @@ BufTableInsert(BufferDesc *buf)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* prints out collision stats for the buf table */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
DBG_LookupListCheck(int nlookup)
 | 
			
		||||
{
 | 
			
		||||
@@ -160,3 +161,4 @@ DBG_LookupListCheck(int nlookup)
 | 
			
		||||
    
 | 
			
		||||
    hash_stats("Shared",SharedBufHash);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.18 1997/08/18 20:53:08 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.19 1997/08/19 21:32:39 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -30,12 +30,6 @@
 | 
			
		||||
 *
 | 
			
		||||
 * WriteBuffer() -- WriteNoReleaseBuffer() + ReleaseBuffer() 
 | 
			
		||||
 *
 | 
			
		||||
 * DirtyBufferCopy() -- For a given dbid/relid/blockno, if the buffer is
 | 
			
		||||
 *			in the cache and is dirty, mark it clean and copy
 | 
			
		||||
 *			it to the requested location.  This is a logical
 | 
			
		||||
 *			write, and has been installed to support the cache
 | 
			
		||||
 *			management code for write-once storage managers.
 | 
			
		||||
 *
 | 
			
		||||
 * FlushBuffer() -- as above but never delayed write.
 | 
			
		||||
 *
 | 
			
		||||
 * BufferSync() -- flush all dirty buffers in the buffer pool.
 | 
			
		||||
@@ -169,6 +163,7 @@ ReadBuffer(Relation reln, BlockNumber blockNum)
 | 
			
		||||
 *
 | 
			
		||||
 * XXX caller must have already acquired BufMgrLock
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static bool
 | 
			
		||||
is_userbuffer(Buffer buffer)
 | 
			
		||||
{
 | 
			
		||||
@@ -178,7 +173,9 @@ is_userbuffer(Buffer buffer)
 | 
			
		||||
	return false;
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
Buffer
 | 
			
		||||
ReadBuffer_Debug(char *file,
 | 
			
		||||
		 int line,
 | 
			
		||||
@@ -198,6 +195,7 @@ refcount = %ld, file: %s, line: %d\n",
 | 
			
		||||
    }
 | 
			
		||||
    return buffer;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * ReadBufferWithBufferLock -- does the work of 
 | 
			
		||||
@@ -669,6 +667,7 @@ WriteBuffer(Buffer buffer)
 | 
			
		||||
    return(TRUE);
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
WriteBuffer_Debug(char *file, int line, Buffer buffer)
 | 
			
		||||
{
 | 
			
		||||
@@ -682,8 +681,15 @@ refcount = %ld, file: %s, line: %d\n",
 | 
			
		||||
		PrivateRefCount[buffer - 1], file, line);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * DirtyBufferCopy() -- For a given dbid/relid/blockno, if the buffer is
 | 
			
		||||
 *			in the cache and is dirty, mark it clean and copy
 | 
			
		||||
 *			it to the requested location.  This is a logical
 | 
			
		||||
 *			write, and has been installed to support the cache
 | 
			
		||||
 *			management code for write-once storage managers.
 | 
			
		||||
 *
 | 
			
		||||
 *  DirtyBufferCopy() -- Copy a given dirty buffer to the requested
 | 
			
		||||
 *			 destination.
 | 
			
		||||
 *
 | 
			
		||||
@@ -695,6 +701,7 @@ refcount = %ld, file: %s, line: %d\n",
 | 
			
		||||
 *
 | 
			
		||||
 *  NOTE: used by sony jukebox code in postgres 4.2   - ay 2/95
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
DirtyBufferCopy(Oid dbid, Oid relid, BlockNumber blkno, char *dest)
 | 
			
		||||
{
 | 
			
		||||
@@ -722,6 +729,7 @@ DirtyBufferCopy(Oid dbid, Oid relid, BlockNumber blkno, char *dest)
 | 
			
		||||
    
 | 
			
		||||
    SpinRelease(BufMgrLock);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * FlushBuffer -- like WriteBuffer, but force the page to disk.
 | 
			
		||||
@@ -1462,6 +1470,7 @@ blockNum=%d, flags=0x%x, refcount=%d %d)\n",
 | 
			
		||||
 * pool and start measuring some performance with a clean empty buffer
 | 
			
		||||
 * pool.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
BufferPoolBlowaway()
 | 
			
		||||
{
 | 
			
		||||
@@ -1476,6 +1485,7 @@ BufferPoolBlowaway()
 | 
			
		||||
        BufTableDelete(&BufferDescriptors[i-1]);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#undef IncrBufferRefCount
 | 
			
		||||
#undef ReleaseBuffer
 | 
			
		||||
@@ -1535,6 +1545,7 @@ ReleaseBuffer(Buffer buffer)
 | 
			
		||||
    return(STATUS_OK);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
IncrBufferRefCount_Debug(char *file, int line, Buffer buffer)
 | 
			
		||||
{
 | 
			
		||||
@@ -1548,7 +1559,9 @@ refcount = %ld, file: %s, line: %d\n",
 | 
			
		||||
		PrivateRefCount[buffer - 1], file, line);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
ReleaseBuffer_Debug(char *file, int line, Buffer buffer)
 | 
			
		||||
{
 | 
			
		||||
@@ -1562,7 +1575,9 @@ refcount = %ld, file: %s, line: %d\n",
 | 
			
		||||
		PrivateRefCount[buffer - 1], file, line);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
int
 | 
			
		||||
ReleaseAndReadBuffer_Debug(char *file,
 | 
			
		||||
			   int line,
 | 
			
		||||
@@ -1594,6 +1609,7 @@ refcount = %ld, file: %s, line: %d\n",
 | 
			
		||||
    }
 | 
			
		||||
    return b;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BMTRACE
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/buffer/freelist.c,v 1.3 1996/11/10 03:02:16 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/buffer/freelist.c,v 1.4 1997/08/19 21:32:44 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -109,6 +109,7 @@ PinBuffer(BufferDesc *buf)
 | 
			
		||||
    PrivateRefCount[b]++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
PinBuffer_Debug(char *file, int line, BufferDesc *buf)
 | 
			
		||||
{
 | 
			
		||||
@@ -122,6 +123,7 @@ refcount = %ld, file: %s, line: %d\n",
 | 
			
		||||
		PrivateRefCount[buffer - 1], file, line);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#undef UnpinBuffer
 | 
			
		||||
 | 
			
		||||
@@ -148,6 +150,7 @@ UnpinBuffer(BufferDesc *buf)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
UnpinBuffer_Debug(char *file, int line, BufferDesc *buf)
 | 
			
		||||
{
 | 
			
		||||
@@ -161,6 +164,7 @@ refcount = %ld, file: %s, line: %d\n",
 | 
			
		||||
		PrivateRefCount[buffer - 1], file, line);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * GetFreeBuffer() -- get the 'next' buffer from the freelist.
 | 
			
		||||
@@ -222,6 +226,7 @@ InitFreeList(bool init)
 | 
			
		||||
/*
 | 
			
		||||
 * print out the free list and check for breaks.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
DBG_FreeListCheck(int nfree)
 | 
			
		||||
{
 | 
			
		||||
@@ -256,6 +261,7 @@ DBG_FreeListCheck(int nfree)
 | 
			
		||||
	
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
/*
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 * Copyright (c) 1994, Regents of the University of California
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Id: fd.c,v 1.21 1997/08/18 02:14:50 momjian Exp $
 | 
			
		||||
 *    $Id: fd.c,v 1.22 1997/08/19 21:32:48 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES:
 | 
			
		||||
 *
 | 
			
		||||
@@ -503,6 +503,7 @@ FileAccess(File file)
 | 
			
		||||
/*
 | 
			
		||||
 *  Called when we get a shared invalidation message on some relation.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
FileInvalidate(File file)
 | 
			
		||||
{
 | 
			
		||||
@@ -511,6 +512,7 @@ FileInvalidate(File file)
 | 
			
		||||
        LruDelete(file);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* VARARGS2 */
 | 
			
		||||
static File
 | 
			
		||||
@@ -735,6 +737,7 @@ FileSeek(File file, long offset, int whence)
 | 
			
		||||
/*
 | 
			
		||||
 * XXX not actually used but here for completeness
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
long
 | 
			
		||||
FileTell(File file)
 | 
			
		||||
{
 | 
			
		||||
@@ -742,6 +745,7 @@ FileTell(File file)
 | 
			
		||||
                 file, VfdCache[file].fileName));
 | 
			
		||||
    return VfdCache[file].seekPos;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
FileTruncate(File file, int offset)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.10 1997/01/08 08:32:01 bryanh Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.11 1997/08/19 21:32:54 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *
 | 
			
		||||
@@ -49,6 +49,8 @@ int UsePrivateMemory = 1;
 | 
			
		||||
int UsePrivateMemory = 0;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void IpcMemoryDetach(int status, char *shmaddr);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *			exit() handling stuff
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
@@ -312,6 +314,7 @@ IpcSemaphoreCreate(IpcSemaphoreKey semKey,
 | 
			
		||||
/*									    */
 | 
			
		||||
/*	note: the xxx_return variables are only used for debugging.	    */
 | 
			
		||||
/****************************************************************************/
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static int IpcSemaphoreSet_return;
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
@@ -330,6 +333,7 @@ IpcSemaphoreSet(int semId, int semno, int value)
 | 
			
		||||
	IpcConfigTip();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/****************************************************************************/
 | 
			
		||||
/*   IpcSemaphoreKill(key)	- removes a semaphore			    */
 | 
			
		||||
@@ -513,7 +517,7 @@ IpcMemoryIdGet(IpcMemoryKey memKey, uint32 size)
 | 
			
		||||
/*					from a backend address space	    */
 | 
			
		||||
/*  (only called by backends running under the postmaster)		    */
 | 
			
		||||
/****************************************************************************/
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
IpcMemoryDetach(int status, char *shmaddr)
 | 
			
		||||
{
 | 
			
		||||
    if (shmdt(shmaddr) < 0) {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/ipc/Attic/s_lock.c,v 1.17 1997/08/17 02:39:54 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/ipc/Attic/s_lock.c,v 1.18 1997/08/19 21:33:01 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -45,9 +45,9 @@
 | 
			
		||||
#if defined(HAS_TEST_AND_SET)
 | 
			
		||||
 | 
			
		||||
# if defined(__alpha__) && defined(linux)
 | 
			
		||||
extern long int tas(slock_t *lock);
 | 
			
		||||
static long int tas(slock_t *lock);
 | 
			
		||||
# else
 | 
			
		||||
extern int tas(slock_t *lock);
 | 
			
		||||
static int tas(slock_t *lock);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined (nextstep)
 | 
			
		||||
@@ -383,7 +383,7 @@ S_INIT_LOCK(unsigned char *addr)
 | 
			
		||||
 | 
			
		||||
#if defined(NEED_I386_TAS_ASM)
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
tas(slock_t *m)
 | 
			
		||||
{
 | 
			
		||||
    slock_t res;
 | 
			
		||||
@@ -415,7 +415,7 @@ S_INIT_LOCK(slock_t *lock)
 | 
			
		||||
 | 
			
		||||
#if defined(__alpha__) && defined(linux)
 | 
			
		||||
 | 
			
		||||
long int
 | 
			
		||||
static long int
 | 
			
		||||
tas(slock_t *m)
 | 
			
		||||
{
 | 
			
		||||
    slock_t res;
 | 
			
		||||
@@ -459,7 +459,7 @@ S_INIT_LOCK(slock_t *lock)
 | 
			
		||||
 | 
			
		||||
#if defined(linux) && defined(sparc)
 | 
			
		||||
 
 | 
			
		||||
int 
 | 
			
		||||
static int 
 | 
			
		||||
tas(slock_t *m)
 | 
			
		||||
{
 | 
			
		||||
  slock_t res;
 | 
			
		||||
@@ -492,7 +492,7 @@ S_INIT_LOCK(slock_t *lock)
 | 
			
		||||
 | 
			
		||||
#if defined(NEED_NS32K_TAS_ASM)
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
tas(slock_t *m)
 | 
			
		||||
{
 | 
			
		||||
    slock_t res = 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmqueue.c,v 1.2 1996/11/03 05:06:58 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmqueue.c,v 1.3 1997/08/19 21:33:06 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *
 | 
			
		||||
@@ -49,12 +49,14 @@ SHMQueueInit(SHM_QUEUE *queue)
 | 
			
		||||
 * SHMQueueIsDetached -- TRUE if element is not currently
 | 
			
		||||
 *	in a queue.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool
 | 
			
		||||
SHMQueueIsDetached(SHM_QUEUE *queue)
 | 
			
		||||
{
 | 
			
		||||
    Assert(SHM_PTR_VALID(queue));
 | 
			
		||||
    return ((queue)->prev == INVALID_OFFSET);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SHMQueueElemInit -- clear an element's links
 | 
			
		||||
@@ -146,6 +148,7 @@ dumpQ(SHM_QUEUE *q, char *s)
 | 
			
		||||
 * SHMQueueInsertHD -- put elem in queue between the queue head
 | 
			
		||||
 *	and its "prev" element.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
SHMQueueInsertHD(SHM_QUEUE *queue, SHM_QUEUE *elem)
 | 
			
		||||
{
 | 
			
		||||
@@ -168,6 +171,7 @@ SHMQueueInsertHD(SHM_QUEUE *queue, SHM_QUEUE *elem)
 | 
			
		||||
    dumpQ(queue, "in SHMQueueInsertHD: end");
 | 
			
		||||
#endif /* SHMQUEUE_DEBUG_HD */
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
SHMQueueInsertTL(SHM_QUEUE *queue, SHM_QUEUE *elem)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/ipc/Attic/spin.c,v 1.4 1997/01/14 01:53:11 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/ipc/Attic/spin.c,v 1.5 1997/08/19 21:33:08 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -48,13 +48,6 @@ CreateSpinlocks(IPCKey key)
 | 
			
		||||
    return(TRUE); 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
AttachSpinLocks(IPCKey key)
 | 
			
		||||
{
 | 
			
		||||
    /* the spin lock shared memory must have been attached by now */
 | 
			
		||||
    return(TRUE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
InitSpinLocks(int init, IPCKey key)
 | 
			
		||||
{
 | 
			
		||||
@@ -100,16 +93,26 @@ SpinRelease(SPINLOCK lock)
 | 
			
		||||
    ExclusiveUnlock(lock);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
#else /* HAS_TEST_AND_SET */
 | 
			
		||||
/* Spinlocks are implemented using SysV semaphores */
 | 
			
		||||
 | 
			
		||||
static bool AttachSpinLocks(IPCKey key);
 | 
			
		||||
static bool SpinIsLocked(SPINLOCK lock);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static bool
 | 
			
		||||
AttachSpinLocks(IPCKey key)
 | 
			
		||||
{
 | 
			
		||||
    /* the spin lock shared memory must have been attached by now */
 | 
			
		||||
    return(TRUE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool
 | 
			
		||||
SpinIsLocked(SPINLOCK lock)
 | 
			
		||||
{
 | 
			
		||||
    return(!LockIsFree(lock));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#else /* HAS_TEST_AND_SET */
 | 
			
		||||
/* Spinlocks are implemented using SysV semaphores */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SpinAcquire -- try to grab a spinlock
 | 
			
		||||
 *
 | 
			
		||||
@@ -135,7 +138,7 @@ SpinRelease(SPINLOCK lock)
 | 
			
		||||
    IpcSemaphoreUnlock(SpinLockId, lock, IpcExclusiveLock);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
SpinIsLocked(SPINLOCK lock)
 | 
			
		||||
{
 | 
			
		||||
    int semval;
 | 
			
		||||
@@ -176,7 +179,7 @@ CreateSpinlocks(IPCKey key)
 | 
			
		||||
/*
 | 
			
		||||
 * Attach to existing spinlock set
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
AttachSpinLocks(IPCKey key)
 | 
			
		||||
{
 | 
			
		||||
    IpcSemaphoreId id;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.12 1997/08/12 22:54:04 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.13 1997/08/19 21:33:10 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -296,6 +296,7 @@ inv_destroy(Oid lobjId)
 | 
			
		||||
 *	updated so frequently, and postgres only appends tuples at the
 | 
			
		||||
 *	end of relations.  Once clustering works, we should fix this.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
int
 | 
			
		||||
inv_stat(LargeObjectDesc *obj_desc, struct pgstat *stbuf)
 | 
			
		||||
{
 | 
			
		||||
@@ -325,6 +326,7 @@ inv_stat(LargeObjectDesc *obj_desc, struct pgstat *stbuf)
 | 
			
		||||
 | 
			
		||||
    return (0);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
inv_seek(LargeObjectDesc *obj_desc, int offset, int whence)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.4 1997/01/10 20:18:47 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.5 1997/08/19 21:33:15 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -48,6 +48,8 @@
 | 
			
		||||
#include "storage/bufmgr.h"
 | 
			
		||||
#include "access/transam.h"	/* for AmiTransactionId */
 | 
			
		||||
 | 
			
		||||
static void LRelIdAssign(LRelId *lRelId, Oid dbId, Oid relId);
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -134,12 +136,13 @@ RelationGetLRelId(Relation relation)
 | 
			
		||||
 *	 after it is created.
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
Oid
 | 
			
		||||
LRelIdGetDatabaseId(LRelId lRelId)
 | 
			
		||||
{
 | 
			
		||||
    return (lRelId.dbId);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * LRelIdGetRelationId --
 | 
			
		||||
@@ -155,23 +158,27 @@ LRelIdGetRelationId(LRelId lRelId)
 | 
			
		||||
 * DatabaseIdIsMyDatabaseId --
 | 
			
		||||
 *	True iff database object identifier is valid in my present database.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool
 | 
			
		||||
DatabaseIdIsMyDatabaseId(Oid databaseId)
 | 
			
		||||
{
 | 
			
		||||
    return (bool)
 | 
			
		||||
	(!OidIsValid(databaseId) || databaseId == MyDatabaseId);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * LRelIdContainsMyDatabaseId --
 | 
			
		||||
 *	True iff "lock" relation identifier is valid in my present database.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool
 | 
			
		||||
LRelIdContainsMyDatabaseId(LRelId lRelId)
 | 
			
		||||
{
 | 
			
		||||
    return (bool)
 | 
			
		||||
	(!OidIsValid(lRelId.dbId) || lRelId.dbId == MyDatabaseId);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * RelationInitLockInfo --
 | 
			
		||||
@@ -285,6 +292,7 @@ elog(DEBUG, "DiscardLockInfo: NULL relation->lockInfo")
 | 
			
		||||
 * RelationDiscardLockInfo --
 | 
			
		||||
 *	Discards the lock information in a relation descriptor.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
RelationDiscardLockInfo(Relation relation)
 | 
			
		||||
{
 | 
			
		||||
@@ -296,6 +304,7 @@ RelationDiscardLockInfo(Relation relation)
 | 
			
		||||
    pfree(relation->lockInfo);
 | 
			
		||||
    relation->lockInfo = NULL;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * RelationSetLockForDescriptorOpen --
 | 
			
		||||
@@ -537,6 +546,7 @@ elog(DEBUG, "RelationSetLockForTupleRead(%s[%d,%d], 0x%x) called", \
 | 
			
		||||
 * RelationSetLockForTupleRead --
 | 
			
		||||
 *	Sets tuple level read lock.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
RelationSetLockForTupleRead(Relation relation, ItemPointer itemPointer)
 | 
			
		||||
{
 | 
			
		||||
@@ -625,6 +635,7 @@ RelationSetLockForTupleRead(Relation relation, ItemPointer itemPointer)
 | 
			
		||||
     */
 | 
			
		||||
    MultiLockTuple(linfo, itemPointer, READ_LOCK);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	RelationSetLockForReadPage
 | 
			
		||||
@@ -890,6 +901,7 @@ RelationUnsetWIntentLock(Relation relation)
 | 
			
		||||
 * a WORM disk jukebox.  Sometimes need exclusive access to extend a 
 | 
			
		||||
 * file by a block.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
RelationSetLockForExtend(Relation relation)
 | 
			
		||||
{
 | 
			
		||||
@@ -906,7 +918,9 @@ RelationSetLockForExtend(Relation relation)
 | 
			
		||||
    
 | 
			
		||||
    MultiLockReln((LockInfo) relation->lockInfo, EXTEND_LOCK);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
RelationUnsetLockForExtend(Relation relation)
 | 
			
		||||
{
 | 
			
		||||
@@ -923,11 +937,12 @@ RelationUnsetLockForExtend(Relation relation)
 | 
			
		||||
    
 | 
			
		||||
    MultiReleaseReln((LockInfo) relation->lockInfo, EXTEND_LOCK);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* 
 | 
			
		||||
 * Create an LRelid --- Why not just pass in a pointer to the storage?
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
LRelIdAssign(LRelId *lRelId, Oid dbId, Oid relId)
 | 
			
		||||
{   
 | 
			
		||||
    lRelId->dbId = dbId;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.10 1997/08/12 22:54:07 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.11 1997/08/19 21:33:19 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *    Outside modules can create a lock table and acquire/release
 | 
			
		||||
@@ -48,6 +48,9 @@
 | 
			
		||||
#include "access/xact.h"
 | 
			
		||||
#include "access/transam.h"
 | 
			
		||||
 | 
			
		||||
static int WaitOnLock(LOCKTAB *ltable, LockTableId tableId, LOCK *lock,
 | 
			
		||||
		      LOCKT lockt);
 | 
			
		||||
 | 
			
		||||
/*#define LOCK_MGR_DEBUG*/
 | 
			
		||||
 | 
			
		||||
#ifndef LOCK_MGR_DEBUG
 | 
			
		||||
@@ -369,6 +372,7 @@ LockTabInit(char *tabName,
 | 
			
		||||
 *	client to use different tableIds when acquiring/releasing
 | 
			
		||||
 *	short term and long term locks.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
LockTableId
 | 
			
		||||
LockTabRename(LockTableId tableId)
 | 
			
		||||
{
 | 
			
		||||
@@ -390,6 +394,7 @@ LockTabRename(LockTableId tableId)
 | 
			
		||||
    AllTables[newTableId] = AllTables[tableId];
 | 
			
		||||
    return(newTableId);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * LockAcquire -- Check for lock conflicts, sleep if conflict found,
 | 
			
		||||
@@ -753,7 +758,7 @@ LockResolveConflicts(LOCKTAB *ltable,
 | 
			
		||||
    return(STATUS_FOUND);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
WaitOnLock(LOCKTAB *ltable, LockTableId tableId, LOCK *lock, LOCKT lockt)
 | 
			
		||||
{
 | 
			
		||||
    PROC_QUEUE *waitQueue = &(lock->waitProcs);
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/lmgr/Attic/multi.c,v 1.3 1997/08/12 22:54:09 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/lmgr/Attic/multi.c,v 1.4 1997/08/19 21:33:25 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES:
 | 
			
		||||
 *   (1) The lock.c module assumes that the caller here is doing
 | 
			
		||||
@@ -29,6 +29,10 @@
 | 
			
		||||
#include "utils/rel.h"
 | 
			
		||||
#include "miscadmin.h"		/* MyDatabaseId */
 | 
			
		||||
 | 
			
		||||
static bool MultiAcquire(LockTableId tableId, LOCKTAG *tag, LOCKT lockt,
 | 
			
		||||
			 LOCK_LEVEL level);
 | 
			
		||||
static bool MultiRelease(LockTableId tableId, LOCKTAG *tag, LOCKT lockt,
 | 
			
		||||
			 LOCK_LEVEL level);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * INTENT indicates to higher level that a lower level lock has been
 | 
			
		||||
@@ -186,7 +190,7 @@ MultiLockPage(LockInfo linfo, ItemPointer tidPtr, LOCKT lockt)
 | 
			
		||||
 * Returns: TRUE if lock is set, FALSE if not
 | 
			
		||||
 * Side Effects:
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
MultiAcquire(LockTableId tableId,
 | 
			
		||||
	     LOCKTAG *tag,
 | 
			
		||||
	     LOCKT lockt,
 | 
			
		||||
@@ -288,6 +292,7 @@ MultiAcquire(LockTableId tableId,
 | 
			
		||||
 * Release a page in the multi-level lock table
 | 
			
		||||
 * ------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool
 | 
			
		||||
MultiReleasePage(LockInfo linfo, ItemPointer tidPtr, LOCKT	lockt)
 | 
			
		||||
{
 | 
			
		||||
@@ -307,6 +312,7 @@ MultiReleasePage(LockInfo linfo, ItemPointer tidPtr, LOCKT	lockt)
 | 
			
		||||
    
 | 
			
		||||
    return (MultiRelease(MultiTableId, &tag, lockt, PAGE_LEVEL));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ------------------
 | 
			
		||||
 * Release a relation in the multi-level lock table
 | 
			
		||||
@@ -335,7 +341,7 @@ MultiReleaseReln(LockInfo linfo, LOCKT lockt)
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: TRUE if successful, FALSE otherwise.
 | 
			
		||||
 */
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
MultiRelease(LockTableId tableId,
 | 
			
		||||
	     LOCKTAG *tag,
 | 
			
		||||
	     LOCKT	lockt,
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.17 1997/02/14 04:16:56 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.18 1997/08/19 21:33:29 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -46,7 +46,7 @@
 | 
			
		||||
 *      This is so that we can support more backends. (system-wide semaphore
 | 
			
		||||
 *      sets run out pretty fast.)                -ay 4/95
 | 
			
		||||
 *
 | 
			
		||||
 * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.17 1997/02/14 04:16:56 momjian Exp $
 | 
			
		||||
 * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.18 1997/08/19 21:33:29 momjian Exp $
 | 
			
		||||
 */
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
@@ -76,6 +76,9 @@
 | 
			
		||||
#include "storage/spin.h"
 | 
			
		||||
#include "storage/proc.h"
 | 
			
		||||
 | 
			
		||||
static void HandleDeadLock(int sig);
 | 
			
		||||
static PROC *ProcWakeup(PROC *proc, int errType);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * timeout (in seconds) for resolving possible deadlock
 | 
			
		||||
 */
 | 
			
		||||
@@ -401,6 +404,7 @@ ProcKill(int exitStatus, int pid)
 | 
			
		||||
 * Returns: a pointer to the queue or NULL
 | 
			
		||||
 * Side Effects: Initializes the queue if we allocated one
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
PROC_QUEUE *
 | 
			
		||||
ProcQueueAlloc(char *name)
 | 
			
		||||
{
 | 
			
		||||
@@ -418,6 +422,7 @@ ProcQueueAlloc(char *name)
 | 
			
		||||
	}
 | 
			
		||||
    return(queue);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * ProcQueueInit -- initialize a shared memory process queue
 | 
			
		||||
@@ -536,7 +541,7 @@ ProcSleep(PROC_QUEUE *queue,
 | 
			
		||||
 *   remove the process from the wait queue and set its links invalid.
 | 
			
		||||
 *   RETURN: the next process in the wait queue.
 | 
			
		||||
 */
 | 
			
		||||
PROC *
 | 
			
		||||
static PROC *
 | 
			
		||||
ProcWakeup(PROC *proc, int errType)
 | 
			
		||||
{
 | 
			
		||||
    PROC *retProc;
 | 
			
		||||
@@ -563,11 +568,13 @@ ProcWakeup(PROC *proc, int errType)
 | 
			
		||||
/*
 | 
			
		||||
 * ProcGetId --
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
int
 | 
			
		||||
ProcGetId()
 | 
			
		||||
{
 | 
			
		||||
    return( MyProc->procId );
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * ProcLockWakeup -- routine for waking up processes when a lock is
 | 
			
		||||
@@ -631,7 +638,7 @@ ProcAddLock(SHM_QUEUE *elem)
 | 
			
		||||
 * up my semaphore.
 | 
			
		||||
 * --------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
HandleDeadLock(int sig)
 | 
			
		||||
{
 | 
			
		||||
    LOCK *lock;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/page/bufpage.c,v 1.6 1997/03/12 21:07:11 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/page/bufpage.c,v 1.7 1997/08/19 21:33:33 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -26,6 +26,9 @@
 | 
			
		||||
 | 
			
		||||
#include "lib/qsort.h"
 | 
			
		||||
 | 
			
		||||
static void PageIndexTupleDeleteAdjustLinePointers(PageHeader phdr,
 | 
			
		||||
				       char *location, Size size);
 | 
			
		||||
 | 
			
		||||
static bool PageManagerShuffle = true;	/* default is shuffle mode */
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
@@ -506,7 +509,7 @@ PageIndexTupleDelete(Page page, OffsetNumber offnum)
 | 
			
		||||
 *
 | 
			
		||||
 *	This routine should never be called on an empty page.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
PageIndexTupleDeleteAdjustLinePointers(PageHeader phdr,
 | 
			
		||||
				       char *location,
 | 
			
		||||
				       Size size)
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.7 1997/08/18 20:53:18 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.8 1997/08/19 21:33:38 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -23,6 +23,8 @@
 | 
			
		||||
#include "utils/rel.h"
 | 
			
		||||
#include "utils/palloc.h"
 | 
			
		||||
 | 
			
		||||
static void smgrshutdown(int dummy);
 | 
			
		||||
 | 
			
		||||
typedef struct f_smgr {
 | 
			
		||||
    int		(*smgr_init)();		/* may be NULL */
 | 
			
		||||
    int		(*smgr_shutdown)();	/* may be NULL */
 | 
			
		||||
@@ -100,7 +102,7 @@ smgrinit()
 | 
			
		||||
    return (SM_SUCCESS);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
smgrshutdown(int dummy)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
@@ -373,6 +375,7 @@ smgrcommit()
 | 
			
		||||
    return (SM_SUCCESS);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
int
 | 
			
		||||
smgrabort()
 | 
			
		||||
{
 | 
			
		||||
@@ -387,6 +390,7 @@ smgrabort()
 | 
			
		||||
 | 
			
		||||
    return (SM_SUCCESS);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
smgriswo(int16 smgrno)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/tcop/Attic/aclchk.c,v 1.12 1997/08/18 20:53:29 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/tcop/Attic/aclchk.c,v 1.13 1997/08/19 21:33:54 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *    See acl.h.
 | 
			
		||||
@@ -36,6 +36,8 @@
 | 
			
		||||
#include "parser/catalog_utils.h"
 | 
			
		||||
#include "fmgr.h"
 | 
			
		||||
 | 
			
		||||
static int32 aclcheck(Acl *acl, AclId id, AclIdType idtype, AclMode mode);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Enable use of user relations in place of real system catalogs.
 | 
			
		||||
 */
 | 
			
		||||
@@ -257,7 +259,7 @@ in_group(AclId uid, AclId gid)
 | 
			
		||||
 * Returns 1 if the 'id' of type 'idtype' has ACL entries in 'acl' to satisfy
 | 
			
		||||
 * any one of the requirements of 'mode'.  Returns 0 otherwise.
 | 
			
		||||
 */
 | 
			
		||||
int32
 | 
			
		||||
static int32
 | 
			
		||||
aclcheck(Acl *acl, AclId id, AclIdType idtype, AclMode mode)
 | 
			
		||||
{
 | 
			
		||||
    register unsigned i;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/tcop/dest.c,v 1.6 1997/08/12 22:54:19 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/tcop/dest.c,v 1.7 1997/08/19 21:34:02 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -43,6 +43,9 @@
 | 
			
		||||
 | 
			
		||||
#include "commands/async.h"
 | 
			
		||||
 | 
			
		||||
static Oid GetAppendOid(void);
 | 
			
		||||
static void ResetAppendOid(void);
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	output functions
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -317,7 +320,7 @@ BeginCommand(char *pname,
 | 
			
		||||
 | 
			
		||||
static Oid AppendOid;
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
ResetAppendOid(void)
 | 
			
		||||
{
 | 
			
		||||
    AppendOid = InvalidOid;
 | 
			
		||||
@@ -346,7 +349,7 @@ UpdateAppendOid(Oid newoid)
 | 
			
		||||
	AppendOid = MULTI_TUPLE_APPEND;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Oid
 | 
			
		||||
static Oid
 | 
			
		||||
GetAppendOid(void)
 | 
			
		||||
{
 | 
			
		||||
    if (AppendOid == MULTI_TUPLE_APPEND)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.41 1997/08/14 16:11:15 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.42 1997/08/19 21:34:04 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *    this is the "main" module of the postgres backend and
 | 
			
		||||
@@ -90,6 +90,8 @@
 | 
			
		||||
#include "libpq/pqsignal.h"
 | 
			
		||||
#include "rewrite/rewriteHandler.h" /* for QueryRewrite() */
 | 
			
		||||
 | 
			
		||||
static void quickdie(SIGNAL_ARGS);
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *      global variables
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -720,7 +722,7 @@ handle_warn(SIGNAL_ARGS)
 | 
			
		||||
    siglongjmp(Warn_restart, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
quickdie(SIGNAL_ARGS)
 | 
			
		||||
{
 | 
			
		||||
    elog(NOTICE, "I have been signalled by the postmaster.");
 | 
			
		||||
@@ -1275,7 +1277,7 @@ PostgresMain(int argc, char *argv[])
 | 
			
		||||
     */
 | 
			
		||||
    if (IsUnderPostmaster == false) {
 | 
			
		||||
        puts("\nPOSTGRES backend interactive interface");
 | 
			
		||||
        puts("$Revision: 1.41 $ $Date: 1997/08/14 16:11:15 $");
 | 
			
		||||
        puts("$Revision: 1.42 $ $Date: 1997/08/19 21:34:04 $");
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /* ----------------
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/tcop/pquery.c,v 1.5 1996/11/10 03:02:54 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/tcop/pquery.c,v 1.6 1997/08/19 21:34:07 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -39,6 +39,8 @@
 | 
			
		||||
#include "commands/command.h"
 | 
			
		||||
 | 
			
		||||
static char* CreateOperationTag(int operationType);
 | 
			
		||||
static void ProcessQueryDesc(QueryDesc *queryDesc);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *	CreateQueryDesc
 | 
			
		||||
@@ -199,7 +201,7 @@ ProcessPortal(char* portalName,
 | 
			
		||||
 *	Read the comments for ProcessQuery() below...
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
ProcessQueryDesc(QueryDesc *queryDesc)
 | 
			
		||||
{
 | 
			
		||||
    Query 	*parseTree;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.12 1997/08/12 20:15:54 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.13 1997/08/19 21:34:10 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -24,6 +24,7 @@
 | 
			
		||||
static char *getid(char *s, char *n);
 | 
			
		||||
static int32 aclitemeq(AclItem *a1, AclItem *a2);
 | 
			
		||||
static int32 aclitemgt(AclItem *a1, AclItem *a2);
 | 
			
		||||
static char *aclparse(char *s, AclItem *aip, unsigned *modechg);
 | 
			
		||||
 | 
			
		||||
#define	ACL_IDTYPE_GID_KEYWORD	"group"
 | 
			
		||||
#define	ACL_IDTYPE_UID_KEYWORD	"user"
 | 
			
		||||
@@ -81,7 +82,7 @@ getid(char *s, char *n)
 | 
			
		||||
 *	  UID/GID, id type identifier and mode type values.
 | 
			
		||||
 *	- loads 'modechg' with the mode change flag.
 | 
			
		||||
 */
 | 
			
		||||
char *
 | 
			
		||||
static char *
 | 
			
		||||
aclparse(char *s, AclItem *aip, unsigned *modechg)
 | 
			
		||||
{
 | 
			
		||||
    HeapTuple htp;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.14 1997/08/18 02:14:54 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.15 1997/08/19 21:34:18 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -68,7 +68,9 @@ static void _LOArrayRange(int st[], int endp[], int bsize, int srcfd,
 | 
			
		||||
static void _ReadArray (int st[], int endp[], int bsize, int srcfd, int destfd,
 | 
			
		||||
		       ArrayType *array, int isDestLO, bool *isNull);
 | 
			
		||||
static ArrayCastAndSet(char *src, bool typbyval, int typlen, char *dest);
 | 
			
		||||
 | 
			
		||||
static SanityCheckInput(int ndim, int n, int dim[], int lb[], int indx[]);
 | 
			
		||||
static int array_read(char *destptr, int eltsize, int nitems, char *srcptr);
 | 
			
		||||
static char *array_seek(char *ptr, int eltsize, int nitems);
 | 
			
		||||
 | 
			
		||||
/*---------------------------------------------------------------------
 | 
			
		||||
 * array_in : 
 | 
			
		||||
@@ -1189,7 +1191,7 @@ _AdvanceBy1word(char *str, char **word)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
SanityCheckInput(int ndim, int n, int dim[], int lb[], int indx[])
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
@@ -1261,7 +1263,7 @@ _ArrayClipCount(int stI[], int endpI[], ArrayType *array)
 | 
			
		||||
    return count;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char *
 | 
			
		||||
static char *
 | 
			
		||||
array_seek(char *ptr, int eltsize, int nitems)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
@@ -1273,7 +1275,7 @@ array_seek(char *ptr, int eltsize, int nitems)
 | 
			
		||||
    return(ptr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
array_read(char *destptr, int eltsize, int nitems, char *srcptr)
 | 
			
		||||
{
 | 
			
		||||
    int i, inc, tmp;
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/chunk.c,v 1.5 1997/03/02 01:34:37 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/chunk.c,v 1.6 1997/08/19 21:34:27 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -57,6 +57,8 @@ static void read_chunk(int chunk_no[], int C[], char a_chunk[], int srcfd,
 | 
			
		||||
static int write_chunk(struct varlena * a_chunk, int ofile);
 | 
			
		||||
static int seek_and_read(int pos, int size, char buff[], int fp, int from);
 | 
			
		||||
#endif
 | 
			
		||||
static int GetChunkSize(FILE *fd, int ndim, int dim[MAXDIM], int baseSize, 
 | 
			
		||||
			int d[MAXDIM]);
 | 
			
		||||
 | 
			
		||||
/*------------------------------------------------------------------------
 | 
			
		||||
 * _ChunkArray ---
 | 
			
		||||
@@ -119,7 +121,7 @@ int cfd = 0;
 | 
			
		||||
 *      returns the dimensions of the chunk in "d"
 | 
			
		||||
 *-----------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
GetChunkSize(FILE *fd, 
 | 
			
		||||
	     int ndim,
 | 
			
		||||
	     int dim[MAXDIM], 
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.12 1997/08/12 22:54:26 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.13 1997/08/19 21:34:30 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *   This code is actually (almost) unused.
 | 
			
		||||
@@ -92,7 +92,7 @@ static	int	sec_tab[] = {
 | 
			
		||||
 * Function prototypes -- internal to this file only
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
void reltime2tm(int32 time, struct tm *tm);
 | 
			
		||||
static void reltime2tm(int32 time, struct tm *tm);
 | 
			
		||||
 | 
			
		||||
#if FALSE
 | 
			
		||||
static int correct_unit(char unit[], int *unptr);
 | 
			
		||||
@@ -178,7 +178,7 @@ char *reltimeout(int32 time)
 | 
			
		||||
#define TMODULO(t,q,u) {q = (t / u); \
 | 
			
		||||
			if (q != 0) t -= (q * u);}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
reltime2tm(int32 time, struct tm *tm)
 | 
			
		||||
{
 | 
			
		||||
    TMODULO(time, tm->tm_year, 31536000);
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.10 1997/07/01 00:22:40 thomas Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.11 1997/08/19 21:34:32 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -25,6 +25,9 @@
 | 
			
		||||
#include "utils/datetime.h"
 | 
			
		||||
#include "access/xact.h"
 | 
			
		||||
 | 
			
		||||
static int date2tm(DateADT dateVal, int *tzp, struct tm *tm, double *fsec, char **tzn);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static int	day_tab[2][12] = {
 | 
			
		||||
	{31,28,31,30,31,30,31,31,30,31,30,31},
 | 
			
		||||
	{31,29,31,30,31,30,31,31,30,31,30,31}  };
 | 
			
		||||
@@ -140,8 +143,6 @@ date_out(DateADT date)
 | 
			
		||||
    return(result);
 | 
			
		||||
} /* date_out() */
 | 
			
		||||
 | 
			
		||||
int date2tm(DateADT dateVal, int *tzp, struct tm *tm, double *fsec, char **tzn);
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
date_eq(DateADT dateVal1, DateADT dateVal2)
 | 
			
		||||
{
 | 
			
		||||
@@ -330,7 +331,7 @@ abstime_date(AbsoluteTime abstime)
 | 
			
		||||
 *  that everything is GMT. So, convert to GMT, rotate to local time,
 | 
			
		||||
 *  and then convert again to try to get the time zones correct.
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
date2tm(DateADT dateVal, int *tzp, struct tm *tm, double *fsec, char **tzn)
 | 
			
		||||
{
 | 
			
		||||
    struct tm *tx;
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/datum.c,v 1.4 1996/12/14 07:56:05 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/datum.c,v 1.5 1997/08/19 21:34:33 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -131,6 +131,7 @@ datumCopy(Datum value, Oid type, bool byVal, Size len)
 | 
			
		||||
 * ONLY datums created by "datumCopy" can be freed!
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
datumFree(Datum value, Oid type, bool byVal, Size len)
 | 
			
		||||
{
 | 
			
		||||
@@ -148,6 +149,7 @@ datumFree(Datum value, Oid type, bool byVal, Size len)
 | 
			
		||||
	pfree(s);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------------------------
 | 
			
		||||
 * datumIsEqual
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.31 1997/07/29 16:09:38 thomas Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.32 1997/08/19 21:34:34 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -31,6 +31,24 @@
 | 
			
		||||
#endif
 | 
			
		||||
#include "utils/builtins.h"
 | 
			
		||||
 | 
			
		||||
static int DecodeDate(char *str, int fmask, int *tmask, struct tm *tm);
 | 
			
		||||
static int DecodeNumber( int flen, char *field,
 | 
			
		||||
	int fmask, int *tmask, struct tm *tm, double *fsec);
 | 
			
		||||
static int DecodeNumberField( int len, char *str,
 | 
			
		||||
	int fmask, int *tmask, struct tm *tm, double *fsec);
 | 
			
		||||
static int DecodeSpecial(int field, char *lowtoken, int *val);
 | 
			
		||||
static int DecodeTime(char *str, int fmask, int *tmask,
 | 
			
		||||
	struct tm *tm, double *fsec);
 | 
			
		||||
static int DecodeTimezone( char *str, int *tzp);
 | 
			
		||||
static int DecodeUnits(int field, char *lowtoken, int *val);
 | 
			
		||||
static int EncodeSpecialDateTime(DateTime dt, char *str);
 | 
			
		||||
static datetkn *datebsearch(char *key, datetkn *base, unsigned int nel);
 | 
			
		||||
static DateTime dt2local( DateTime dt, int timezone);
 | 
			
		||||
static void dt2time(DateTime dt, int *hour, int *min, double *sec);
 | 
			
		||||
static int j2day( int jd);
 | 
			
		||||
static int timespan2tm(TimeSpan span, struct tm *tm, float8 *fsec);
 | 
			
		||||
static int tm2timespan(struct tm *tm, double fsec, TimeSpan *span);
 | 
			
		||||
 | 
			
		||||
#define USE_DATE_CACHE 1
 | 
			
		||||
#define ROUND_ALL 0
 | 
			
		||||
 | 
			
		||||
@@ -50,7 +68,7 @@ char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday",
 | 
			
		||||
#define TMODULO(t,q,u) {q = ((t < 0)? ceil(t / u): floor(t / u)); \
 | 
			
		||||
			if (q != 0) t -= rint(q * u);}
 | 
			
		||||
 | 
			
		||||
void GetEpochTime( struct tm *tm);
 | 
			
		||||
static void GetEpochTime( struct tm *tm);
 | 
			
		||||
 | 
			
		||||
#define UTIME_MINYEAR (1901)
 | 
			
		||||
#define UTIME_MINMONTH (12)
 | 
			
		||||
@@ -265,6 +283,7 @@ datetime_finite(DateTime *datetime)
 | 
			
		||||
} /* datetime_finite() */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool
 | 
			
		||||
timespan_finite(TimeSpan *timespan)
 | 
			
		||||
{
 | 
			
		||||
@@ -273,13 +292,13 @@ timespan_finite(TimeSpan *timespan)
 | 
			
		||||
 | 
			
		||||
    return(! TIMESPAN_NOT_FINITE(*timespan));
 | 
			
		||||
} /* timespan_finite() */
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------
 | 
			
		||||
 *  Relational operators for datetime.
 | 
			
		||||
 *---------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
GetEpochTime( struct tm *tm)
 | 
			
		||||
{
 | 
			
		||||
    struct tm *t0;
 | 
			
		||||
@@ -1115,6 +1134,7 @@ timespan_text(TimeSpan *timespan)
 | 
			
		||||
 * Text type may not be null terminated, so copy to temporary string
 | 
			
		||||
 *  then call the standard input routine.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
TimeSpan *
 | 
			
		||||
text_timespan(text *str)
 | 
			
		||||
{
 | 
			
		||||
@@ -1134,7 +1154,7 @@ text_timespan(text *str)
 | 
			
		||||
 | 
			
		||||
    return(result);
 | 
			
		||||
} /* text_timespan() */
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* datetime_trunc()
 | 
			
		||||
 * Extract specified field from datetime.
 | 
			
		||||
@@ -2005,7 +2025,7 @@ j2date( int jd, int *year, int *month, int *day)
 | 
			
		||||
    return;
 | 
			
		||||
} /* j2date() */
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
j2day( int date)
 | 
			
		||||
{
 | 
			
		||||
    int day;
 | 
			
		||||
@@ -2188,7 +2208,7 @@ printf( "tm2datetime- time is %f %02d:%02d:%02d %f\n", time, tm->tm_hour, tm->tm
 | 
			
		||||
/* timespan2tm()
 | 
			
		||||
 * Convert a timespan data type to a tm structure.
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
timespan2tm(TimeSpan span, struct tm *tm, float8 *fsec)
 | 
			
		||||
{
 | 
			
		||||
    double time;
 | 
			
		||||
@@ -2222,7 +2242,7 @@ printf( "timespan2tm- %d %f = %04d-%02d-%02d %02d:%02d:%02d %.2f\n", span.month,
 | 
			
		||||
    return 0;
 | 
			
		||||
} /* timespan2tm() */
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
tm2timespan( struct tm *tm, double fsec, TimeSpan *span)
 | 
			
		||||
{
 | 
			
		||||
    span->month = ((tm->tm_year*12)+tm->tm_mon);
 | 
			
		||||
@@ -2238,7 +2258,7 @@ printf( "tm2timespan- %d %f = %04d-%02d-%02d %02d:%02d:%02d %.2f\n", span->month
 | 
			
		||||
} /* tm2timespan() */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DateTime
 | 
			
		||||
static DateTime
 | 
			
		||||
dt2local(DateTime dt, int tz)
 | 
			
		||||
{
 | 
			
		||||
    dt -= tz;
 | 
			
		||||
@@ -2252,7 +2272,7 @@ time2t(const int hour, const int min, const double sec)
 | 
			
		||||
    return((((hour*60)+min)*60)+sec);
 | 
			
		||||
} /* time2t() */
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
dt2time(DateTime jd, int *hour, int *min, double *sec)
 | 
			
		||||
{
 | 
			
		||||
    double time;
 | 
			
		||||
@@ -2748,7 +2768,7 @@ printf( " %02d:%02d:%02d (%f)\n", tm->tm_hour, tm->tm_min, tm->tm_sec, *fsec);
 | 
			
		||||
 * Decode date string which includes delimiters.
 | 
			
		||||
 * Insist on a complete set of fields.
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
DecodeDate(char *str, int fmask, int *tmask, struct tm *tm)
 | 
			
		||||
{
 | 
			
		||||
    double fsec;
 | 
			
		||||
@@ -2835,7 +2855,7 @@ printf( "DecodeDate- illegal field %s value is %d\n", field[i], val);
 | 
			
		||||
 * Only check the lower limit on hours, since this same code
 | 
			
		||||
 *  can be used to represent time spans.
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
DecodeTime(char *str, int fmask, int *tmask, struct tm *tm, double *fsec)
 | 
			
		||||
{
 | 
			
		||||
    char *cp;
 | 
			
		||||
@@ -2879,7 +2899,7 @@ DecodeTime(char *str, int fmask, int *tmask, struct tm *tm, double *fsec)
 | 
			
		||||
/* DecodeNumber()
 | 
			
		||||
 * Interpret numeric field as a date value in context.
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
DecodeNumber( int flen, char *str, int fmask, int *tmask, struct tm *tm, double *fsec)
 | 
			
		||||
{
 | 
			
		||||
    int val;
 | 
			
		||||
@@ -2985,7 +3005,7 @@ printf( "DecodeNumber- (2) match %d (%s) as year\n", val, str);
 | 
			
		||||
/* DecodeNumberField()
 | 
			
		||||
 * Interpret numeric string as a concatenated date field.
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
DecodeNumberField( int len, char *str, int fmask, int *tmask, struct tm *tm, double *fsec)
 | 
			
		||||
{
 | 
			
		||||
    char *cp;
 | 
			
		||||
@@ -3058,7 +3078,8 @@ printf( "DecodeNumberField- %s is time field fmask=%08x tmask=%08x\n", str, fmas
 | 
			
		||||
/* DecodeTimezone()
 | 
			
		||||
 * Interpret string as a numeric timezone.
 | 
			
		||||
 */
 | 
			
		||||
int DecodeTimezone( char *str, int *tzp)
 | 
			
		||||
static int
 | 
			
		||||
DecodeTimezone( char *str, int *tzp)
 | 
			
		||||
{
 | 
			
		||||
    int tz;
 | 
			
		||||
    int hr, min;
 | 
			
		||||
@@ -3095,7 +3116,7 @@ int DecodeTimezone( char *str, int *tzp)
 | 
			
		||||
 * Implement a cache lookup since it is likely that dates
 | 
			
		||||
 *  will be related in format.
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
DecodeSpecial(int field, char *lowtoken, int *val)
 | 
			
		||||
{
 | 
			
		||||
    int type;
 | 
			
		||||
@@ -3351,7 +3372,7 @@ printf( " %02d:%02d:%02d\n", tm->tm_hour, tm->tm_min, tm->tm_sec);
 | 
			
		||||
 * Decode text string using lookup table.
 | 
			
		||||
 * This routine supports time interval decoding.
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
DecodeUnits(int field, char *lowtoken, int *val)
 | 
			
		||||
{
 | 
			
		||||
    int type;
 | 
			
		||||
@@ -3388,7 +3409,7 @@ DecodeUnits(int field, char *lowtoken, int *val)
 | 
			
		||||
 * Binary search -- from Knuth (6.2.1) Algorithm B.  Special case like this
 | 
			
		||||
 * is WAY faster than the generic bsearch().
 | 
			
		||||
 */
 | 
			
		||||
datetkn *
 | 
			
		||||
static datetkn *
 | 
			
		||||
datebsearch(char *key, datetkn *base, unsigned int nel)
 | 
			
		||||
{
 | 
			
		||||
    register datetkn *last = base + nel - 1, *position;
 | 
			
		||||
@@ -3414,7 +3435,8 @@ datebsearch(char *key, datetkn *base, unsigned int nel)
 | 
			
		||||
/* EncodeSpecialDateTime()
 | 
			
		||||
 * Convert reserved datetime data type to string.
 | 
			
		||||
 */
 | 
			
		||||
int EncodeSpecialDateTime(DateTime dt, char *str)
 | 
			
		||||
static int
 | 
			
		||||
EncodeSpecialDateTime(DateTime dt, char *str)
 | 
			
		||||
{
 | 
			
		||||
    if (DATETIME_IS_RESERVED(dt)) {
 | 
			
		||||
	if (DATETIME_IS_INVALID(dt)) {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.14 1997/08/12 22:54:29 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.15 1997/08/19 21:34:39 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -28,8 +28,39 @@
 | 
			
		||||
#define PI 3.1415926536
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int point_inside( Point *p, int npts, Point plist[]);
 | 
			
		||||
int lseg_crossing( double x, double y, double px, double py);
 | 
			
		||||
static int point_inside( Point *p, int npts, Point plist[]);
 | 
			
		||||
static int lseg_crossing( double x, double y, double px, double py);
 | 
			
		||||
static BOX *box_construct(double x1, double x2, double y1, double y2);
 | 
			
		||||
static BOX *box_copy(BOX *box);
 | 
			
		||||
static BOX *box_fill(BOX *result, double x1, double x2, double y1, double y2);
 | 
			
		||||
static double box_ht(BOX *box);
 | 
			
		||||
static double box_wd(BOX *box);
 | 
			
		||||
static double circle_ar(CIRCLE *circle);
 | 
			
		||||
static CIRCLE *circle_copy(CIRCLE *circle);
 | 
			
		||||
static LINE *line_construct_pm(Point *pt, double m);
 | 
			
		||||
static bool line_horizontal(LINE *line);
 | 
			
		||||
static Point *line_interpt(LINE *l1, LINE *l2);
 | 
			
		||||
static bool line_intersect(LINE *l1, LINE *l2);
 | 
			
		||||
static bool line_parallel(LINE *l1, LINE *l2);
 | 
			
		||||
static bool line_vertical(LINE *line);
 | 
			
		||||
static double lseg_dt(LSEG *l1, LSEG *l2);
 | 
			
		||||
static void make_bound_box(POLYGON *poly);
 | 
			
		||||
static PATH *path_copy(PATH *path);
 | 
			
		||||
static bool plist_same(int npts, Point p1[], Point p2[]);
 | 
			
		||||
static Point *point_construct(double x, double y);
 | 
			
		||||
static Point *point_copy(Point *pt);
 | 
			
		||||
static int single_decode(char *str, float8 *x, char **ss);
 | 
			
		||||
static int single_encode(float8 x, char *str);
 | 
			
		||||
static int pair_decode(char *str, float8 *x, float8 *y, char **s);
 | 
			
		||||
static int pair_encode(float8 x, float8 y, char *str);
 | 
			
		||||
static int pair_count(char *s, char delim);
 | 
			
		||||
static int path_decode(int opentype, int npts, char *str, int *isopen, char **ss, Point *p);
 | 
			
		||||
static char *path_encode( bool closed, int npts, Point *pt);
 | 
			
		||||
static void statlseg_construct(LSEG *lseg, Point *pt1, Point *pt2);
 | 
			
		||||
static double box_ar(BOX *box);
 | 
			
		||||
static Point *interpt_sl(LSEG *lseg, LINE *line);
 | 
			
		||||
static LINE *line_construct_pp(Point *pt1, Point *pt2);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Delimiters for input and output strings.
 | 
			
		||||
@@ -77,16 +108,7 @@ static int digits8 = P_MAXDIG;
 | 
			
		||||
 *  and restore that order for text output - tgl 97/01/16
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
int single_decode(char *str, float8 *x, char **ss);
 | 
			
		||||
int single_encode(float8 x, char *str);
 | 
			
		||||
int pair_decode(char *str, float8 *x, float8 *y, char **s);
 | 
			
		||||
int pair_encode(float8 x, float8 y, char *str);
 | 
			
		||||
int pair_count(char *s, char delim);
 | 
			
		||||
int path_decode(int opentype, int npts, char *str, int *isopen, char **ss, Point *p);
 | 
			
		||||
 | 
			
		||||
char *path_encode( bool closed, int npts, Point *pt);
 | 
			
		||||
 | 
			
		||||
int single_decode(char *str, float8 *x, char **s)
 | 
			
		||||
static int single_decode(char *str, float8 *x, char **s)
 | 
			
		||||
{
 | 
			
		||||
    char *cp;
 | 
			
		||||
 | 
			
		||||
@@ -106,13 +128,13 @@ fprintf( stderr, "single_decode- (%x) try decoding %s to %g\n", (cp-str), str, *
 | 
			
		||||
    return(TRUE);
 | 
			
		||||
} /* single_decode() */
 | 
			
		||||
 | 
			
		||||
int single_encode(float8 x, char *str)
 | 
			
		||||
static int single_encode(float8 x, char *str)
 | 
			
		||||
{
 | 
			
		||||
    sprintf(str, "%.*g", digits8, x);
 | 
			
		||||
    return(TRUE);
 | 
			
		||||
} /* single_encode() */
 | 
			
		||||
 | 
			
		||||
int pair_decode(char *str, float8 *x, float8 *y, char **s)
 | 
			
		||||
static int pair_decode(char *str, float8 *x, float8 *y, char **s)
 | 
			
		||||
{
 | 
			
		||||
    int has_delim;
 | 
			
		||||
    char *cp;
 | 
			
		||||
@@ -142,13 +164,13 @@ int pair_decode(char *str, float8 *x, float8 *y, char **s)
 | 
			
		||||
    return(TRUE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int pair_encode(float8 x, float8 y, char *str)
 | 
			
		||||
static int pair_encode(float8 x, float8 y, char *str)
 | 
			
		||||
{
 | 
			
		||||
    sprintf(str, "%.*g,%.*g", digits8, x, digits8, y);
 | 
			
		||||
    return(TRUE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int path_decode(int opentype, int npts, char *str, int *isopen, char **ss, Point *p)
 | 
			
		||||
static int path_decode(int opentype, int npts, char *str, int *isopen, char **ss, Point *p)
 | 
			
		||||
{
 | 
			
		||||
    int depth = 0;
 | 
			
		||||
    char *s, *cp;
 | 
			
		||||
@@ -200,7 +222,7 @@ int path_decode(int opentype, int npts, char *str, int *isopen, char **ss, Point
 | 
			
		||||
    return(TRUE);
 | 
			
		||||
} /* path_decode() */
 | 
			
		||||
 | 
			
		||||
char *path_encode( bool closed, int npts, Point *pt)
 | 
			
		||||
static char *path_encode( bool closed, int npts, Point *pt)
 | 
			
		||||
{
 | 
			
		||||
    char *result = PALLOC(npts*(P_MAXLEN+3)+2);
 | 
			
		||||
 | 
			
		||||
@@ -251,7 +273,7 @@ char *path_encode( bool closed, int npts, Point *pt)
 | 
			
		||||
 * '(1,3,2,4)'
 | 
			
		||||
 * require an odd number of delim characters in the string
 | 
			
		||||
 *-------------------------------------------------------------*/
 | 
			
		||||
int pair_count(char *s, char delim)
 | 
			
		||||
static int pair_count(char *s, char delim)
 | 
			
		||||
{
 | 
			
		||||
    int ndelim = 0;
 | 
			
		||||
 | 
			
		||||
@@ -321,7 +343,7 @@ char *box_out(BOX *box)
 | 
			
		||||
 | 
			
		||||
/*	box_construct	-	fill in a new box.
 | 
			
		||||
 */
 | 
			
		||||
BOX *box_construct(double x1, double x2, double y1, double y2)
 | 
			
		||||
static BOX *box_construct(double x1, double x2, double y1, double y2)
 | 
			
		||||
{
 | 
			
		||||
    BOX	*result = PALLOCTYPE(BOX);
 | 
			
		||||
 | 
			
		||||
@@ -331,7 +353,7 @@ BOX *box_construct(double x1, double x2, double y1, double y2)
 | 
			
		||||
 | 
			
		||||
/*	box_fill	-	fill in a static box
 | 
			
		||||
 */
 | 
			
		||||
BOX *box_fill(BOX *result, double x1, double x2, double y1, double y2)
 | 
			
		||||
static BOX *box_fill(BOX *result, double x1, double x2, double y1, double y2)
 | 
			
		||||
{
 | 
			
		||||
    if (x1 > x2) {
 | 
			
		||||
	result->high.x = x1;
 | 
			
		||||
@@ -354,7 +376,7 @@ BOX *box_fill(BOX *result, double x1, double x2, double y1, double y2)
 | 
			
		||||
 | 
			
		||||
/*	box_copy	-	copy a box
 | 
			
		||||
 */
 | 
			
		||||
BOX *box_copy(BOX *box)
 | 
			
		||||
static BOX *box_copy(BOX *box)
 | 
			
		||||
{
 | 
			
		||||
    BOX	*result = PALLOCTYPE(BOX);
 | 
			
		||||
 | 
			
		||||
@@ -563,7 +585,7 @@ Point *box_center(BOX *box)
 | 
			
		||||
 | 
			
		||||
/*	box_ar	-	returns the area of the box.
 | 
			
		||||
 */
 | 
			
		||||
double box_ar(BOX *box)
 | 
			
		||||
static double box_ar(BOX *box)
 | 
			
		||||
{
 | 
			
		||||
    return( box_wd(box) * box_ht(box) );
 | 
			
		||||
}
 | 
			
		||||
@@ -572,7 +594,7 @@ double box_ar(BOX *box)
 | 
			
		||||
/*	box_wd	-	returns the width (length) of the box 
 | 
			
		||||
 *				  (horizontal magnitude).
 | 
			
		||||
 */
 | 
			
		||||
double box_wd(BOX *box)
 | 
			
		||||
static double box_wd(BOX *box)
 | 
			
		||||
{
 | 
			
		||||
    return( box->high.x - box->low.x );
 | 
			
		||||
}
 | 
			
		||||
@@ -581,7 +603,7 @@ double box_wd(BOX *box)
 | 
			
		||||
/*	box_ht	-	returns the height of the box 
 | 
			
		||||
 *				  (vertical magnitude).
 | 
			
		||||
 */
 | 
			
		||||
double box_ht(BOX *box)
 | 
			
		||||
static double box_ht(BOX *box)
 | 
			
		||||
{
 | 
			
		||||
    return( box->high.y - box->low.y );
 | 
			
		||||
}
 | 
			
		||||
@@ -590,7 +612,8 @@ double box_ht(BOX *box)
 | 
			
		||||
/*	box_dt	-	returns the distance between the
 | 
			
		||||
 *			  center points of two boxes.
 | 
			
		||||
 */
 | 
			
		||||
double box_dt(BOX *box1, BOX *box2)
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
static double box_dt(BOX *box1, BOX *box2)
 | 
			
		||||
{
 | 
			
		||||
    double	result;
 | 
			
		||||
    Point	*a, *b;
 | 
			
		||||
@@ -603,6 +626,7 @@ double box_dt(BOX *box1, BOX *box2)
 | 
			
		||||
    PFREE(b);
 | 
			
		||||
    return(result);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------
 | 
			
		||||
 *  Funky operations.
 | 
			
		||||
@@ -661,7 +685,7 @@ LSEG *box_diagonal(BOX *box)
 | 
			
		||||
 *	Internal form:	Ax+By+C=0
 | 
			
		||||
 *---------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
LINE *				/* point-slope */
 | 
			
		||||
static LINE *				/* point-slope */
 | 
			
		||||
line_construct_pm(Point *pt, double m)
 | 
			
		||||
{
 | 
			
		||||
    LINE *result = PALLOCTYPE(LINE);
 | 
			
		||||
@@ -677,7 +701,7 @@ line_construct_pm(Point *pt, double m)
 | 
			
		||||
} /* line_construct_pm() */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LINE *				/* two points */
 | 
			
		||||
static LINE *				/* two points */
 | 
			
		||||
line_construct_pp(Point *pt1, Point *pt2)
 | 
			
		||||
{
 | 
			
		||||
    LINE *result = PALLOCTYPE(LINE);
 | 
			
		||||
@@ -724,12 +748,12 @@ printf( "line_construct_pp- line is neither vertical nor horizontal (diffs x=%.*
 | 
			
		||||
 *  Relative position routines.
 | 
			
		||||
 *---------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
bool line_intersect(LINE *l1, LINE *l2)
 | 
			
		||||
static bool line_intersect(LINE *l1, LINE *l2)
 | 
			
		||||
{
 | 
			
		||||
    return( ! line_parallel(l1, l2) );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool line_parallel(LINE *l1, LINE *l2)
 | 
			
		||||
static bool line_parallel(LINE *l1, LINE *l2)
 | 
			
		||||
{
 | 
			
		||||
#if FALSE
 | 
			
		||||
    return( FPeq(l1->m, l2->m) );
 | 
			
		||||
@@ -741,6 +765,7 @@ bool line_parallel(LINE *l1, LINE *l2)
 | 
			
		||||
    return(FPeq(l2->A, l1->A*(l2->B / l1->B)));
 | 
			
		||||
} /* line_parallel() */
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool line_perp(LINE *l1, LINE *l2)
 | 
			
		||||
{
 | 
			
		||||
#if FALSE
 | 
			
		||||
@@ -757,8 +782,9 @@ bool line_perp(LINE *l1, LINE *l2)
 | 
			
		||||
 | 
			
		||||
    return( FPeq(((l1->A * l2->B) / (l1->B * l2->A)), -1.0) );
 | 
			
		||||
} /* line_perp() */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
bool line_vertical(LINE *line)
 | 
			
		||||
static bool line_vertical(LINE *line)
 | 
			
		||||
{
 | 
			
		||||
#if FALSE
 | 
			
		||||
    return( FPeq(line->A, -1.0) && FPzero(line->B) );
 | 
			
		||||
@@ -766,7 +792,7 @@ bool line_vertical(LINE *line)
 | 
			
		||||
    return( FPzero(line->B) );
 | 
			
		||||
} /* line_vertical() */
 | 
			
		||||
 | 
			
		||||
bool line_horizontal(LINE *line)
 | 
			
		||||
static bool line_horizontal(LINE *line)
 | 
			
		||||
{
 | 
			
		||||
#if FALSE
 | 
			
		||||
    return( FPzero(line->m) );
 | 
			
		||||
@@ -774,7 +800,7 @@ bool line_horizontal(LINE *line)
 | 
			
		||||
    return( FPzero(line->A) );
 | 
			
		||||
} /* line_horizontal() */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
bool line_eq(LINE *l1, LINE *l2)
 | 
			
		||||
{
 | 
			
		||||
    double k;
 | 
			
		||||
@@ -792,7 +818,7 @@ bool line_eq(LINE *l1, LINE *l2)
 | 
			
		||||
	    FPeq(l1->B, k * l2->B) &&
 | 
			
		||||
	    FPeq(l1->C, k * l2->C) );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------
 | 
			
		||||
 *  Line arithmetic routines.
 | 
			
		||||
@@ -821,7 +847,7 @@ line_distance(LINE *l1, LINE *l2)
 | 
			
		||||
/* line_interpt()
 | 
			
		||||
 * Point where two lines l1, l2 intersect (if any)
 | 
			
		||||
 */
 | 
			
		||||
Point *
 | 
			
		||||
static Point *
 | 
			
		||||
line_interpt(LINE *l1, LINE *l2)
 | 
			
		||||
{
 | 
			
		||||
    Point	*result;
 | 
			
		||||
@@ -985,8 +1011,6 @@ bool path_n_ge(PATH *p1, PATH *p2)
 | 
			
		||||
 * Conversion operators.
 | 
			
		||||
 *---------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
PATH *path_copy(PATH *path);
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
path_isclosed( PATH *path)
 | 
			
		||||
{
 | 
			
		||||
@@ -1155,7 +1179,7 @@ double *path_length(PATH *path)
 | 
			
		||||
} /* path_length() */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
double path_ln(PATH *path)
 | 
			
		||||
{
 | 
			
		||||
    double result;
 | 
			
		||||
@@ -1167,6 +1191,7 @@ double path_ln(PATH *path)
 | 
			
		||||
 | 
			
		||||
    return(result);
 | 
			
		||||
} /* path_ln() */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/***********************************************************************
 | 
			
		||||
 **
 | 
			
		||||
@@ -1213,7 +1238,7 @@ point_out(Point *pt)
 | 
			
		||||
} /* point_out() */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Point *point_construct(double x, double y)
 | 
			
		||||
static Point *point_construct(double x, double y)
 | 
			
		||||
{
 | 
			
		||||
    Point *result = PALLOCTYPE(Point);
 | 
			
		||||
 | 
			
		||||
@@ -1223,7 +1248,7 @@ Point *point_construct(double x, double y)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Point *point_copy(Point *pt)
 | 
			
		||||
static Point *point_copy(Point *pt)
 | 
			
		||||
{
 | 
			
		||||
    Point *result;
 | 
			
		||||
 | 
			
		||||
@@ -1392,7 +1417,7 @@ LSEG *lseg_construct(Point *pt1, Point *pt2)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* like lseg_construct, but assume space already allocated */
 | 
			
		||||
void statlseg_construct(LSEG *lseg, Point *pt1, Point *pt2)
 | 
			
		||||
static void statlseg_construct(LSEG *lseg, Point *pt1, Point *pt2)
 | 
			
		||||
{
 | 
			
		||||
    lseg->p[0].x = pt1->x;
 | 
			
		||||
    lseg->p[0].y = pt1->y;
 | 
			
		||||
@@ -1489,7 +1514,7 @@ double *lseg_distance(LSEG *l1, LSEG *l2)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* distance between l1, l2 */
 | 
			
		||||
double
 | 
			
		||||
static double
 | 
			
		||||
lseg_dt(LSEG *l1, LSEG *l2)
 | 
			
		||||
{
 | 
			
		||||
    double	*d, result;
 | 
			
		||||
@@ -1833,7 +1858,7 @@ printf( "dist_cpoly- segment %d distance is %f\n", (i+1), *d);
 | 
			
		||||
 *		  lines and boxes, since there are typically two.
 | 
			
		||||
 *-------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
Point *interpt_sl(LSEG *lseg, LINE *line)
 | 
			
		||||
static Point *interpt_sl(LSEG *lseg, LINE *line)
 | 
			
		||||
{
 | 
			
		||||
    LINE	*tmp;
 | 
			
		||||
    Point	*p;
 | 
			
		||||
@@ -2194,7 +2219,7 @@ bool inter_lb(LINE *line, BOX *box)
 | 
			
		||||
/*---------------------------------------------------------------------
 | 
			
		||||
 * Make the smallest bounding box for the given polygon.
 | 
			
		||||
 *---------------------------------------------------------------------*/
 | 
			
		||||
void make_bound_box(POLYGON *poly)
 | 
			
		||||
static void make_bound_box(POLYGON *poly)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
    double x1,y1,x2,y2;
 | 
			
		||||
@@ -3286,9 +3311,7 @@ bool circle_ge(CIRCLE	*circle1, CIRCLE *circle2)
 | 
			
		||||
 *			actual value.
 | 
			
		||||
 *---------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
CIRCLE *circle_copy(CIRCLE *circle);
 | 
			
		||||
 | 
			
		||||
CIRCLE *
 | 
			
		||||
static CIRCLE *
 | 
			
		||||
circle_copy(CIRCLE *circle)
 | 
			
		||||
{
 | 
			
		||||
    CIRCLE *result;
 | 
			
		||||
@@ -3494,7 +3517,7 @@ Point *circle_center(CIRCLE *circle)
 | 
			
		||||
 | 
			
		||||
/*	circle_ar	-	returns the area of the circle.
 | 
			
		||||
 */
 | 
			
		||||
double circle_ar(CIRCLE *circle)
 | 
			
		||||
static double circle_ar(CIRCLE *circle)
 | 
			
		||||
{
 | 
			
		||||
    return(PI*(circle->radius*circle->radius));
 | 
			
		||||
}
 | 
			
		||||
@@ -3503,6 +3526,7 @@ double circle_ar(CIRCLE *circle)
 | 
			
		||||
/*	circle_dt	-	returns the distance between the
 | 
			
		||||
 *			  center points of two circlees.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
double circle_dt(CIRCLE *circle1, CIRCLE *circle2)
 | 
			
		||||
{
 | 
			
		||||
    double	result;
 | 
			
		||||
@@ -3511,7 +3535,7 @@ double circle_dt(CIRCLE *circle1, CIRCLE *circle2)
 | 
			
		||||
 | 
			
		||||
    return(result);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------
 | 
			
		||||
 *  Conversion operators.
 | 
			
		||||
@@ -3657,7 +3681,7 @@ CIRCLE *poly_circle(POLYGON *poly)
 | 
			
		||||
 | 
			
		||||
#define HIT_IT INT_MAX
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
point_inside( Point *p, int npts, Point plist[])
 | 
			
		||||
{
 | 
			
		||||
    double x0, y0;
 | 
			
		||||
@@ -3716,7 +3740,7 @@ point_inside( Point *p, int npts, Point plist[])
 | 
			
		||||
 * It returns HIT_IT if the segment contains (0,0)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
lseg_crossing( double x, double y, double px, double py)
 | 
			
		||||
{
 | 
			
		||||
    double z;
 | 
			
		||||
@@ -3756,7 +3780,7 @@ lseg_crossing( double x, double y, double px, double py)
 | 
			
		||||
} /* lseg_crossing() */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
static bool
 | 
			
		||||
plist_same(int npts, Point p1[], Point p2[])
 | 
			
		||||
{
 | 
			
		||||
    int i, ii, j;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_selfuncs.c,v 1.2 1997/03/14 23:20:20 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_selfuncs.c,v 1.3 1997/08/19 21:34:40 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *	XXX These are totally bogus.
 | 
			
		||||
 *
 | 
			
		||||
@@ -65,6 +65,7 @@ areajoinsel(Oid opid,
 | 
			
		||||
 *		below) a given box?
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
float64
 | 
			
		||||
leftsel(Oid opid,
 | 
			
		||||
	Oid relid,
 | 
			
		||||
@@ -78,7 +79,9 @@ leftsel(Oid opid,
 | 
			
		||||
    *result = 1.0 / 6.0;
 | 
			
		||||
    return(result);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
float64
 | 
			
		||||
leftjoinsel(Oid opid,
 | 
			
		||||
	    Oid relid,
 | 
			
		||||
@@ -92,10 +95,12 @@ leftjoinsel(Oid opid,
 | 
			
		||||
    *result = 1.0 / 6.0;
 | 
			
		||||
    return(result);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *  contsel -- How likely is a box to contain (be contained by) a given box?
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
float64
 | 
			
		||||
contsel(Oid opid,
 | 
			
		||||
	Oid relid,
 | 
			
		||||
@@ -109,7 +114,9 @@ contsel(Oid opid,
 | 
			
		||||
    *result = 1.0 / 10.0;
 | 
			
		||||
    return(result);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
float64
 | 
			
		||||
contjoinsel(Oid opid,
 | 
			
		||||
	    Oid relid,
 | 
			
		||||
@@ -123,3 +130,4 @@ contjoinsel(Oid opid,
 | 
			
		||||
    *result = 1.0 / 10.0;
 | 
			
		||||
    return(result);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -22,6 +22,8 @@
 | 
			
		||||
#include "utils/palloc.h"
 | 
			
		||||
#include "utils/builtins.h"	/* where the function declarations go */
 | 
			
		||||
 | 
			
		||||
static int like(char *text, char *p);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *  interface routines called by the function manager
 | 
			
		||||
 */
 | 
			
		||||
@@ -139,7 +141,7 @@ bool textnlike(struct varlena *s, struct varlena *p)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*  $Revision: 1.5 $
 | 
			
		||||
/*  $Revision: 1.6 $
 | 
			
		||||
**  "like.c" A first attempt at a LIKE operator for Postgres95.
 | 
			
		||||
**
 | 
			
		||||
**  Originally written by Rich $alz, mirror!rs, Wed Nov 26 19:03:17 EST 1986.
 | 
			
		||||
@@ -214,7 +216,7 @@ DoMatch(register char *text, register char *p)
 | 
			
		||||
/*
 | 
			
		||||
**  User-level routine.  Returns TRUE or FALSE.
 | 
			
		||||
*/
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
like(char *text, char *p)
 | 
			
		||||
{
 | 
			
		||||
    if (p[0] == '%' && p[1] == '\0')
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.30 1997/08/12 22:54:32 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.31 1997/08/19 21:34:42 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -30,6 +30,7 @@
 | 
			
		||||
#include "utils/builtins.h"
 | 
			
		||||
#include "access/xact.h"
 | 
			
		||||
 | 
			
		||||
static AbsoluteTime tm2abstime(struct tm *tm, int tz);
 | 
			
		||||
 | 
			
		||||
#define MIN_DAYNUM -24856			/* December 13, 1901 */
 | 
			
		||||
#define MAX_DAYNUM 24854			/* January 18, 2038 */
 | 
			
		||||
@@ -170,7 +171,7 @@ printf( "datetime2tm- (localtime) %d.%02d.%02d %02d:%02d:%02d %s dst=%d\n",
 | 
			
		||||
 * Convert a tm structure to abstime.
 | 
			
		||||
 * Note that tm has full year (not 1900-based) and 1-based month.
 | 
			
		||||
 */
 | 
			
		||||
AbsoluteTime
 | 
			
		||||
static AbsoluteTime
 | 
			
		||||
tm2abstime( struct tm *tm, int tz)
 | 
			
		||||
{
 | 
			
		||||
    int day, sec;
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.5 1997/08/18 20:53:41 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.6 1997/08/19 21:34:45 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -130,10 +130,12 @@ int namecpy(Name n1, Name n2)
 | 
			
		||||
    return(0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
int namecat(Name n1, Name n2)
 | 
			
		||||
{
 | 
			
		||||
    return(namestrcat(n1, n2->data)); /* n2 can't be any longer than n1 */
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int namecmp(Name n1, Name n2)
 | 
			
		||||
{
 | 
			
		||||
@@ -149,6 +151,7 @@ namestrcpy(Name name, char *str)
 | 
			
		||||
    return(0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
int namestrcat(Name name, char *str)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
@@ -165,6 +168,7 @@ int namestrcat(Name name, char *str)
 | 
			
		||||
    }
 | 
			
		||||
    return(0);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int 
 | 
			
		||||
namestrcmp(Name name, char *str)
 | 
			
		||||
@@ -182,6 +186,7 @@ namestrcmp(Name name, char *str)
 | 
			
		||||
 *   PRIVATE ROUTINES                                                        *
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
uint32 
 | 
			
		||||
NameComputeLength(Name name)
 | 
			
		||||
{
 | 
			
		||||
@@ -195,3 +200,4 @@ NameComputeLength(Name name)
 | 
			
		||||
    }
 | 
			
		||||
    return (uint32)length;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/not_in.c,v 1.2 1996/11/06 06:49:53 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/not_in.c,v 1.3 1997/08/19 21:34:48 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -29,6 +29,8 @@
 | 
			
		||||
#include "access/relscan.h"
 | 
			
		||||
#include "utils/builtins.h"	/* where function decls go */
 | 
			
		||||
 | 
			
		||||
static int my_varattno(Relation rd, char *a);
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *	
 | 
			
		||||
 * ----------------------------------------------------------------
 | 
			
		||||
@@ -107,7 +109,7 @@ bool oidnotin(Oid the_oid, char *compare)
 | 
			
		||||
 * If varattno (in parser/catalog_utils.h) ever is added to
 | 
			
		||||
 * cinterface.a, this routine should go away
 | 
			
		||||
 */
 | 
			
		||||
int my_varattno(Relation rd, char *a)
 | 
			
		||||
static int my_varattno(Relation rd, char *a)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.12 1997/08/12 22:54:34 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.13 1997/08/19 21:34:51 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -134,6 +134,7 @@ ltoa(int32 l, char *a)
 | 
			
		||||
 **	stars ("*****") and returns zero.  Normal return is the width
 | 
			
		||||
 **	of the output field (sometimes shorter than 'width').
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
int
 | 
			
		||||
ftoa(double value, char *ascii, int width, int prec1, char format)
 | 
			
		||||
{
 | 
			
		||||
@@ -286,6 +287,7 @@ ftoa(double value, char *ascii, int width, int prec1, char format)
 | 
			
		||||
    return (avail);
 | 
			
		||||
#endif /* !BSD44_derived */
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 **   atof1	- ASCII TO FLOATING CONVERSION
 | 
			
		||||
@@ -315,6 +317,7 @@ ftoa(double value, char *ascii, int width, int prec1, char format)
 | 
			
		||||
 **	Side Effects:
 | 
			
		||||
 **		clobbers *val.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
int
 | 
			
		||||
atof1(char *str, double *val)
 | 
			
		||||
{
 | 
			
		||||
@@ -404,3 +407,4 @@ atof1(char *str, double *val)
 | 
			
		||||
    *val = v;
 | 
			
		||||
    return (0);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.17 1997/07/29 16:12:07 thomas Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.18 1997/08/19 21:34:54 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -81,6 +81,7 @@ byteain(char *inputText)
 | 
			
		||||
 * BUGS:  Extremely unportable as things shoved can be string
 | 
			
		||||
 * representations of structs, etc.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
struct varlena *
 | 
			
		||||
shove_bytes(unsigned char *stuff, int len)
 | 
			
		||||
{
 | 
			
		||||
@@ -93,7 +94,7 @@ shove_bytes(unsigned char *stuff, int len)
 | 
			
		||||
	    len - sizeof(int32)); 
 | 
			
		||||
    return(result);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ -202,7 +203,7 @@ textout(struct varlena *vlena)
 | 
			
		||||
 *    returns the actual length of a text* (which may be less than
 | 
			
		||||
 *    the VARSIZE of the text*)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
int textlen (text* t)
 | 
			
		||||
{
 | 
			
		||||
    int i = 0;
 | 
			
		||||
@@ -212,6 +213,7 @@ int textlen (text* t)
 | 
			
		||||
        i++;
 | 
			
		||||
    return i;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * textcat -
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								src/backend/utils/cache/catcache.c
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								src/backend/utils/cache/catcache.c
									
									
									
									
										vendored
									
									
								
							@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.6 1996/12/04 03:06:09 bryanh Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.7 1997/08/19 21:34:58 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * Notes:
 | 
			
		||||
 *	XXX This needs to use exception.h to handle recovery when
 | 
			
		||||
@@ -34,6 +34,14 @@
 | 
			
		||||
#include "catalog/pg_type.h"	/* for OID of int28 type */
 | 
			
		||||
#include "lib/dllist.h"
 | 
			
		||||
 | 
			
		||||
static void CatCacheRemoveCTup(CatCache *cache, Dlelem *e);  
 | 
			
		||||
static Index CatalogCacheComputeHashIndex(struct catcache *cacheInP);
 | 
			
		||||
static Index CatalogCacheComputeTupleHashIndex(struct catcache *cacheInOutP,
 | 
			
		||||
				       Relation relation, HeapTuple tuple);
 | 
			
		||||
static void CatalogCacheInitializeCache(struct catcache *cache, 
 | 
			
		||||
					Relation relation);
 | 
			
		||||
static long comphash(long l, char *v);
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	variables, macros and other stuff
 | 
			
		||||
 *
 | 
			
		||||
@@ -106,7 +114,7 @@ static long   eqproc[] = {
 | 
			
		||||
#define CatalogCacheInitializeCache_DEBUG2
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
CatalogCacheInitializeCache(struct catcache *cache,
 | 
			
		||||
			    Relation relation)
 | 
			
		||||
{
 | 
			
		||||
@@ -249,12 +257,14 @@ CatalogCacheInitializeCache(struct catcache *cache,
 | 
			
		||||
 * 	XXX temporary function
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
CatalogCacheSetId(CatCache *cacheInOutP, int id)
 | 
			
		||||
{
 | 
			
		||||
    Assert(id == InvalidCatalogCacheId || id >= 0);
 | 
			
		||||
    cacheInOutP->id = id;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 * comphash --
 | 
			
		||||
@@ -266,7 +276,7 @@ CatalogCacheSetId(CatCache *cacheInOutP, int id)
 | 
			
		||||
 * v is the attribute value ("Datum")
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
long
 | 
			
		||||
static long
 | 
			
		||||
comphash(long l, register char *v)
 | 
			
		||||
{
 | 
			
		||||
    long  i;
 | 
			
		||||
@@ -305,7 +315,7 @@ comphash(long l, register char *v)
 | 
			
		||||
 *	CatalogCacheComputeHashIndex
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
Index
 | 
			
		||||
static Index
 | 
			
		||||
CatalogCacheComputeHashIndex(struct catcache *cacheInP)
 | 
			
		||||
{
 | 
			
		||||
    Index	hashIndex;
 | 
			
		||||
@@ -346,7 +356,7 @@ CatalogCacheComputeHashIndex(struct catcache *cacheInP)
 | 
			
		||||
 *	CatalogCacheComputeTupleHashIndex
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
Index
 | 
			
		||||
static Index
 | 
			
		||||
CatalogCacheComputeTupleHashIndex(struct catcache	*cacheInOutP,
 | 
			
		||||
				  Relation relation,
 | 
			
		||||
				  HeapTuple tuple)
 | 
			
		||||
@@ -410,7 +420,7 @@ CatalogCacheComputeTupleHashIndex(struct catcache	*cacheInOutP,
 | 
			
		||||
 *	CatCacheRemoveCTup
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
CatCacheRemoveCTup(CatCache *cache, Dlelem *elt)
 | 
			
		||||
{
 | 
			
		||||
    CatCTup *ct;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								src/backend/utils/cache/inval.c
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								src/backend/utils/cache/inval.c
									
									
									
									
										vendored
									
									
								
							@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.3 1996/11/08 05:59:55 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.4 1997/08/19 21:35:06 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * Note - this code is real crufty...
 | 
			
		||||
 *
 | 
			
		||||
@@ -31,6 +31,13 @@
 | 
			
		||||
#include "catalog/catname.h"	/* XXX to support hacks below */
 | 
			
		||||
#include "utils/syscache.h"	/* XXX to support the hacks below */
 | 
			
		||||
 | 
			
		||||
static InvalidationEntry InvalidationEntryAllocate(uint16 size);
 | 
			
		||||
static void LocalInvalidInvalidate(LocalInvalid invalid, void (*function)());
 | 
			
		||||
static LocalInvalid LocalInvalidRegister(LocalInvalid invalid,
 | 
			
		||||
					 InvalidationEntry entry);
 | 
			
		||||
static void getmyrelids(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	private invalidation structures
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -83,7 +90,7 @@ Oid MyAMOPRelationId = 	InvalidOid;
 | 
			
		||||
 *		Allocates an invalidation entry.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
InvalidationEntry
 | 
			
		||||
static InvalidationEntry
 | 
			
		||||
InvalidationEntryAllocate(uint16 size)
 | 
			
		||||
{
 | 
			
		||||
    InvalidationEntryData	*entryDataP;
 | 
			
		||||
@@ -98,7 +105,7 @@ InvalidationEntryAllocate(uint16 size)
 | 
			
		||||
 *	   Returns a new local cache invalidation state containing a new entry.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
LocalInvalid
 | 
			
		||||
static LocalInvalid
 | 
			
		||||
LocalInvalidRegister(LocalInvalid invalid,
 | 
			
		||||
		     InvalidationEntry entry)
 | 
			
		||||
{
 | 
			
		||||
@@ -116,7 +123,7 @@ LocalInvalidRegister(LocalInvalid invalid,
 | 
			
		||||
 *		invalidation state.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
LocalInvalidInvalidate(LocalInvalid invalid, void (*function)())
 | 
			
		||||
{
 | 
			
		||||
    InvalidationEntryData	*entryDataP;
 | 
			
		||||
@@ -230,7 +237,7 @@ RelationIdRegisterLocalInvalid(Oid relationId, Oid objectId)
 | 
			
		||||
 *	getmyrelids
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
getmyrelids()
 | 
			
		||||
{
 | 
			
		||||
    HeapTuple	tuple;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								src/backend/utils/cache/lsyscache.c
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								src/backend/utils/cache/lsyscache.c
									
									
									
									
										vendored
									
									
								
							@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v 1.2 1996/10/31 05:55:32 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v 1.3 1997/08/19 21:35:11 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *    Eventually, the index information should go through here, too.
 | 
			
		||||
@@ -434,6 +434,7 @@ get_typbyval(Oid typid)
 | 
			
		||||
 *    	not.  Returns 1 if by value, 0 if by reference.
 | 
			
		||||
 *    
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
char
 | 
			
		||||
get_typalign(Oid typid)
 | 
			
		||||
{
 | 
			
		||||
@@ -446,6 +447,7 @@ get_typalign(Oid typid)
 | 
			
		||||
    else
 | 
			
		||||
	return ('i');
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*    
 | 
			
		||||
 * get_typdefault - 
 | 
			
		||||
@@ -469,6 +471,7 @@ get_typdefault(Oid typid)
 | 
			
		||||
 *	It returns the null char if the cache lookup fails...
 | 
			
		||||
 *    
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
char
 | 
			
		||||
get_typtype(Oid typid)
 | 
			
		||||
{
 | 
			
		||||
@@ -482,4 +485,4 @@ get_typtype(Oid typid)
 | 
			
		||||
	return('\0');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								src/backend/utils/cache/relcache.c
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								src/backend/utils/cache/relcache.c
									
									
									
									
										vendored
									
									
								
							@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.14 1997/08/19 04:44:21 vadim Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.15 1997/08/19 21:35:13 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -85,6 +85,12 @@
 | 
			
		||||
#include "catalog/index.h"
 | 
			
		||||
#include "fmgr.h"
 | 
			
		||||
 | 
			
		||||
static void RelationFlushRelation(Relation *relationPtr,
 | 
			
		||||
				  bool	onlyFlushReferenceCountZero);
 | 
			
		||||
static Relation RelationNameCacheGetRelation(char *relationName);
 | 
			
		||||
static void init_irels(void);
 | 
			
		||||
static void write_irels(void);
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	defines
 | 
			
		||||
 * ----------------
 | 
			
		||||
@@ -1075,7 +1081,7 @@ RelationIdCacheGetRelation(Oid relationId)
 | 
			
		||||
 *	RelationNameCacheGetRelation
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
Relation
 | 
			
		||||
static Relation
 | 
			
		||||
RelationNameCacheGetRelation(char *relationName)
 | 
			
		||||
{
 | 
			
		||||
    Relation	rd;
 | 
			
		||||
@@ -1185,6 +1191,7 @@ RelationNameGetRelation(char *relationName)
 | 
			
		||||
 *	old "getreldesc" interface.
 | 
			
		||||
 * ----------------
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
Relation
 | 
			
		||||
getreldesc(char *relationName)
 | 
			
		||||
{
 | 
			
		||||
@@ -1197,6 +1204,7 @@ getreldesc(char *relationName)
 | 
			
		||||
    
 | 
			
		||||
    return RelationNameGetRelation(relationName);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------------------------------------------------------
 | 
			
		||||
 *		cache invalidation support routines
 | 
			
		||||
@@ -1221,7 +1229,7 @@ RelationClose(Relation relation)
 | 
			
		||||
 *   anything anymore.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
RelationFlushRelation(Relation *relationPtr,
 | 
			
		||||
		      bool onlyFlushReferenceCountZero)
 | 
			
		||||
{
 | 
			
		||||
@@ -1606,7 +1614,7 @@ RelationInitialize(void)
 | 
			
		||||
/* pg_attnumind, pg_classnameind, pg_classoidind */
 | 
			
		||||
#define Num_indices_bootstrap	3
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
init_irels(void)
 | 
			
		||||
{
 | 
			
		||||
    Size len;
 | 
			
		||||
@@ -1746,7 +1754,7 @@ init_irels(void)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
write_irels(void)
 | 
			
		||||
{
 | 
			
		||||
    int len;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/exc.c,v 1.14 1997/08/12 22:54:46 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/exc.c,v 1.15 1997/08/19 21:35:17 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTE
 | 
			
		||||
 *    XXX this code needs improvement--check for state violations and
 | 
			
		||||
@@ -24,6 +24,11 @@
 | 
			
		||||
#include "utils/exc.h"
 | 
			
		||||
#include "storage/ipc.h"
 | 
			
		||||
 | 
			
		||||
static void ExcUnCaught(Exception *excP, ExcDetail detail, ExcData data,
 | 
			
		||||
			ExcMessage message);
 | 
			
		||||
static void ExcPrint(Exception *excP, ExcDetail detail, ExcData data,
 | 
			
		||||
		     ExcMessage message);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Global Variables
 | 
			
		||||
 */
 | 
			
		||||
@@ -86,7 +91,7 @@ EnableExceptionHandling(bool on)
 | 
			
		||||
    ExceptionHandlingEnabled = on;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
ExcPrint(Exception *excP,
 | 
			
		||||
	 ExcDetail detail,
 | 
			
		||||
	 ExcData data,
 | 
			
		||||
@@ -129,12 +134,15 @@ ExcPrint(Exception *excP,
 | 
			
		||||
    fflush(stderr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
ExcProc *
 | 
			
		||||
ExcGetUnCaught(void)
 | 
			
		||||
{
 | 
			
		||||
    return (ExcUnCaughtP);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
ExcProc *
 | 
			
		||||
ExcSetUnCaught(ExcProc *newP)
 | 
			
		||||
{
 | 
			
		||||
@@ -144,8 +152,9 @@ ExcSetUnCaught(ExcProc *newP)
 | 
			
		||||
    
 | 
			
		||||
    return (oldP);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
ExcUnCaught(Exception *excP,
 | 
			
		||||
	    ExcDetail detail,
 | 
			
		||||
	    ExcData data,
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.2 1996/11/08 06:00:14 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.3 1997/08/19 21:35:21 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -207,6 +207,7 @@ fmgr(Oid procedureId, ... )
 | 
			
		||||
 * 
 | 
			
		||||
 * func_ptr, func_id, n_arguments, args...
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
char *
 | 
			
		||||
fmgr_ptr(func_ptr user_fn, Oid func_id, ...)
 | 
			
		||||
{
 | 
			
		||||
@@ -230,6 +231,7 @@ fmgr_ptr(func_ptr user_fn, Oid func_id, ...)
 | 
			
		||||
    return(fmgr_c(user_fn, func_id, n_arguments, &values,
 | 
			
		||||
		  &isNull));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This routine is not well thought out.  When I get around to adding a
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/hash/hashfn.c,v 1.2 1996/11/03 06:54:16 scrappy Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/hash/hashfn.c,v 1.3 1997/08/19 21:35:33 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -125,6 +125,7 @@ tag_hash(int *key, int keysize)
 | 
			
		||||
 * instructions.  If this routine is heavily used enough, it's
 | 
			
		||||
 * worth the ugly coding
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
long
 | 
			
		||||
disk_hash(char *key)
 | 
			
		||||
{
 | 
			
		||||
@@ -154,5 +155,5 @@ disk_hash(char *key)
 | 
			
		||||
    }
 | 
			
		||||
    return(n);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.5 1997/04/27 19:20:37 thomas Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.6 1997/08/19 21:35:44 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -101,6 +101,7 @@ ExitPostgres(ExitStatus status)
 | 
			
		||||
 * Exceptions:
 | 
			
		||||
 *	none
 | 
			
		||||
 */
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
void
 | 
			
		||||
AbortPostgres()
 | 
			
		||||
{
 | 
			
		||||
@@ -115,6 +116,7 @@ AbortPostgres()
 | 
			
		||||
    else
 | 
			
		||||
	exitpg(FatalExitStatus);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ----------------
 | 
			
		||||
 *	StatusBackendExit
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.10 1997/08/12 22:54:54 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.11 1997/08/19 21:35:50 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTES
 | 
			
		||||
 *      InitPostgres() is the function called from PostgresMain
 | 
			
		||||
@@ -71,6 +71,11 @@
 | 
			
		||||
#include "port-protos.h"
 | 
			
		||||
#include "libpq/libpq-be.h"
 | 
			
		||||
 | 
			
		||||
static void InitCommunication(void);
 | 
			
		||||
static void InitMyDatabaseId(void);
 | 
			
		||||
static void InitStdio(void);
 | 
			
		||||
static void InitUserid(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static IPCKey           PostgresIpcKey;
 | 
			
		||||
 | 
			
		||||
@@ -108,7 +113,7 @@ static IPCKey           PostgresIpcKey;
 | 
			
		||||
 *      database directory but before we open any relations.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
InitMyDatabaseId()
 | 
			
		||||
{
 | 
			
		||||
    int         dbfd;
 | 
			
		||||
@@ -334,7 +339,7 @@ DoChdirAndInitDatabaseNameAndPath(char *name) {
 | 
			
		||||
 *      initializes crap associated with the user id.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
InitUserid()
 | 
			
		||||
{
 | 
			
		||||
    setuid(geteuid());
 | 
			
		||||
@@ -351,7 +356,7 @@ InitUserid()
 | 
			
		||||
 *      This does not set MyBackendId.  MyBackendTag is set, however.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
InitCommunication()
 | 
			
		||||
{
 | 
			
		||||
    char *postid;
 | 
			
		||||
@@ -460,7 +465,7 @@ InitCommunication()
 | 
			
		||||
 *      they all seem to do stuff associated with io.
 | 
			
		||||
 * --------------------------------
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
InitStdio()
 | 
			
		||||
{
 | 
			
		||||
    DebugFileOpen();
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/mmgr/aset.c,v 1.4 1996/11/10 03:03:45 momjian Exp $
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/backend/utils/mmgr/aset.c,v 1.5 1997/08/19 21:35:54 momjian Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * NOTE
 | 
			
		||||
 *    XXX This is a preliminary implementation which lacks fail-fast
 | 
			
		||||
@@ -25,6 +25,10 @@
 | 
			
		||||
# include <string.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void AllocPointerDump(AllocPointer pointer);
 | 
			
		||||
static int AllocSetIterate(AllocSet set,
 | 
			
		||||
			 void (*function)(AllocPointer pointer));
 | 
			
		||||
 | 
			
		||||
#undef AllocSetReset
 | 
			
		||||
#undef malloc
 | 
			
		||||
#undef free
 | 
			
		||||
@@ -273,7 +277,7 @@ AllocSetRealloc(AllocSet set, AllocPointer pointer, Size size)
 | 
			
		||||
 * Exceptions:
 | 
			
		||||
 *	BadArg if set is invalid.
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
static int
 | 
			
		||||
AllocSetIterate(AllocSet set,
 | 
			
		||||
		void (*function)(AllocPointer pointer))
 | 
			
		||||
{
 | 
			
		||||
@@ -295,6 +299,7 @@ AllocSetIterate(AllocSet set,
 | 
			
		||||
    return (count);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef NOT_USED
 | 
			
		||||
int
 | 
			
		||||
AllocSetCount(AllocSet set)
 | 
			
		||||
{
 | 
			
		||||
@@ -310,6 +315,7 @@ AllocSetCount(AllocSet set)
 | 
			
		||||
    }
 | 
			
		||||
    return count;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Private routines
 | 
			
		||||
@@ -367,7 +373,7 @@ AllocPointerGetNext(AllocPointer pointer)
 | 
			
		||||
 * XXX AllocPointerDump --
 | 
			
		||||
 *	Displays allocated pointer.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
static void
 | 
			
		||||
AllocPointerDump(AllocPointer pointer)
 | 
			
		||||
{
 | 
			
		||||
    printf("\t%-10ld@ %0#lx\n", ((long*)pointer)[-1], (long)pointer); /* XXX */
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user