diff options
author | Bruce Momjian <bruce@momjian.us> | 1998-08-19 02:04:17 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1998-08-19 02:04:17 +0000 |
commit | 7971539020a344dce3a8b3b9b93ff4f10e2f823a (patch) | |
tree | 8dca0af0d3ac8d431bff8c0dec793fe9733a1ee9 /src/backend/executor | |
parent | 31de2c9461dff3284ad61084c73eba093fa3f68e (diff) | |
download | postgresql-7971539020a344dce3a8b3b9b93ff4f10e2f823a.tar.gz postgresql-7971539020a344dce3a8b3b9b93ff4f10e2f823a.zip |
heap_fetch requires buffer pointer, must be released; heap_getnext
no longer returns buffer pointer, can be gotten from scan;
descriptor; bootstrap can create multi-key indexes;
pg_procname index now is multi-key index; oidint2, oidint4, oidname
are gone (must be removed from regression tests); use System Cache
rather than sequential scan in many places; heap_modifytuple no
longer takes buffer parameter; remove unused buffer parameter in
a few other functions; oid8 is not index-able; remove some use of
single-character variable names; cleanup Buffer variables usage
and scan descriptor looping; cleaned up allocation and freeing of
tuples; 18k lines of diff;
Diffstat (limited to 'src/backend/executor')
-rw-r--r-- | src/backend/executor/execMain.c | 15 | ||||
-rw-r--r-- | src/backend/executor/execUtils.c | 11 | ||||
-rw-r--r-- | src/backend/executor/nodeIndexscan.c | 9 | ||||
-rw-r--r-- | src/backend/executor/nodeMaterial.c | 22 | ||||
-rw-r--r-- | src/backend/executor/nodeSeqscan.c | 34 | ||||
-rw-r--r-- | src/backend/executor/nodeTee.c | 18 | ||||
-rw-r--r-- | src/backend/executor/spi.c | 2 |
7 files changed, 45 insertions, 66 deletions
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 41bb1dc5d41..41943446a7e 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -26,7 +26,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.52 1998/08/06 05:12:33 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.53 1998/08/19 02:01:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -283,7 +283,7 @@ ExecCheckPerms(CmdType operation, { int i = 1; Oid relid; - HeapTuple htp; + HeapTuple htup; List *lp; List *qvars, *tvars; @@ -314,14 +314,14 @@ ExecCheckPerms(CmdType operation, } relid = rte->relid; - htp = SearchSysCacheTuple(RELOID, + htup = SearchSysCacheTuple(RELOID, ObjectIdGetDatum(relid), 0, 0, 0); - if (!HeapTupleIsValid(htp)) + if (!HeapTupleIsValid(htup)) elog(ERROR, "ExecCheckPerms: bogus RT relid: %d", relid); StrNCpy(rname.data, - ((Form_pg_class) GETSTRUCT(htp))->relname.data, + ((Form_pg_class) GETSTRUCT(htup))->relname.data, NAMEDATALEN); if (i == resultRelation) { /* this is the result relation */ @@ -1290,9 +1290,10 @@ ExecAttrDefault(Relation rel, HeapTuple tuple) if (repl == NULL) return (tuple); - newtuple = heap_modifytuple(tuple, InvalidBuffer, rel, replValue, replNull, repl); + newtuple = heap_modifytuple(tuple, rel, replValue, replNull, repl); pfree(repl); + pfree(tuple); pfree(replNull); pfree(replValue); @@ -1323,7 +1324,7 @@ ExecRelCheck(Relation rel, HeapTuple tuple) slot->ttc_whichplan = -1; rte->relname = nameout(&(rel->rd_rel->relname)); rte->refname = rte->relname; - rte->relid = rel->rd_id; + rte->relid = RelationGetRelid(rel); rte->inh = false; rte->inFromCl = true; rtlist = lcons(rte, NIL); diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index 158f78ebcdb..489fc9096a8 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.34 1998/07/27 19:37:56 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.35 1998/08/19 02:02:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -760,10 +760,7 @@ ExecOpenIndices(Oid resultRelationOid, fiList = NIL; predList = NIL; - while (tuple = heap_getnext(indexSd, /* scan desc */ - false, /* scan backward flag */ - NULL), /* return: buffer */ - HeapTupleIsValid(tuple)) + while (HeapTupleIsValid(tuple = heap_getnext(indexSd, 0))) { /* ---------------- @@ -1020,8 +1017,6 @@ ExecFormIndexTuple(HeapTuple heapTuple, keyAttributeNumbers, /* array of att nums to extract */ heapTuple, /* tuple from base relation */ heapDescriptor, /* heap tuple's descriptor */ - InvalidBuffer, /* buffer associated with heap - * tuple */ datum, /* return: array of attributes */ nulls, /* return: array of char's */ fInfoP); /* functional index information */ @@ -1136,8 +1131,6 @@ ExecInsertIndexTuples(TupleTableSlot *slot, * extract */ heapTuple, /* tuple from base relation */ heapDescriptor, /* heap tuple's descriptor */ - InvalidBuffer, /* buffer associated with heap - * tuple */ datum, /* return: array of attributes */ nulls, /* return: array of char's */ fInfoP); /* functional index information */ diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c index 55cc9d926fa..cdc15c7e0c9 100644 --- a/src/backend/executor/nodeIndexscan.c +++ b/src/backend/executor/nodeIndexscan.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.23 1998/08/04 18:42:38 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.24 1998/08/19 02:02:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -123,7 +123,6 @@ IndexNext(IndexScan *node) { tuple = heap_fetch(heapRelation, snapshot, &result->heap_iptr, &buffer); - /* be tidy */ pfree(result); if (tuple != NULL) @@ -224,7 +223,7 @@ ExecIndexReScan(IndexScan *node, ExprContext *exprCtxt, Plan *parent) ScanDirection direction; IndexScanDescPtr scanDescs; ScanKey *scanKeys; - IndexScanDesc sdesc; + IndexScanDesc scan; ScanKey skey; int numIndices; int i; @@ -301,9 +300,9 @@ ExecIndexReScan(IndexScan *node, ExprContext *exprCtxt, Plan *parent) } } } - sdesc = scanDescs[i]; + scan = scanDescs[i]; skey = scanKeys[i]; - index_rescan(sdesc, direction, skey); + index_rescan(scan, direction, skey); } /* ---------------- * perhaps return something meaningful diff --git a/src/backend/executor/nodeMaterial.c b/src/backend/executor/nodeMaterial.c index e58bc39f5e4..3d5496c7e66 100644 --- a/src/backend/executor/nodeMaterial.c +++ b/src/backend/executor/nodeMaterial.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeMaterial.c,v 1.14 1998/07/27 19:37:57 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeMaterial.c,v 1.15 1998/08/19 02:02:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -59,7 +59,6 @@ ExecMaterial(Material *node) HeapScanDesc currentScanDesc; HeapTuple heapTuple; TupleTableSlot *slot; - Buffer buffer; /* ---------------- * get state info from node @@ -162,10 +161,7 @@ ExecMaterial(Material *node) */ currentScanDesc = matstate->csstate.css_currentScanDesc; - heapTuple = heap_getnext(currentScanDesc, /* scan desc */ - ScanDirectionIsBackward(dir), - /* bkwd flag */ - &buffer); /* return: buffer */ + heapTuple = heap_getnext(currentScanDesc, ScanDirectionIsBackward(dir)); /* ---------------- * put the tuple into the scan tuple slot and return the slot. @@ -177,7 +173,7 @@ ExecMaterial(Material *node) return ExecStoreTuple(heapTuple, /* tuple to store */ slot, /* slot to store in */ - buffer, /* buffer for this tuple */ + currentScanDesc->rs_cbuf, /* buffer for this tuple */ false); /* don't pfree this pointer */ } @@ -370,7 +366,7 @@ List /* nothing of interest */ ExecMaterialMarkPos(Material node) { MaterialState matstate; - HeapScanDesc sdesc; + HeapScanDesc scan; /* ---------------- * if we haven't materialized yet, just return NIL. @@ -386,8 +382,8 @@ ExecMaterialMarkPos(Material node) * they will never return positions for all I know -cim 10/16/89 * ---------------- */ - sdesc = get_css_currentScanDesc((CommonScanState) matstate); - heap_markpos(sdesc); + scan = get_css_currentScanDesc((CommonScanState) matstate); + heap_markpos(scan); return NIL; } @@ -400,7 +396,7 @@ void ExecMaterialRestrPos(Material node) { MaterialState matstate; - HeapScanDesc sdesc; + HeapScanDesc scan; /* ---------------- * if we haven't materialized yet, just return. @@ -414,8 +410,8 @@ ExecMaterialRestrPos(Material node) * restore the scan to the previously marked position * ---------------- */ - sdesc = get_css_currentScanDesc((CommonScanState) matstate); - heap_restrpos(sdesc); + scan = get_css_currentScanDesc((CommonScanState) matstate); + heap_restrpos(scan); } #endif diff --git a/src/backend/executor/nodeSeqscan.c b/src/backend/executor/nodeSeqscan.c index 1ff4f1f13eb..80bdef82937 100644 --- a/src/backend/executor/nodeSeqscan.c +++ b/src/backend/executor/nodeSeqscan.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeSeqscan.c,v 1.11 1998/07/27 19:37:57 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeSeqscan.c,v 1.12 1998/08/19 02:02:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -55,7 +55,6 @@ SeqNext(SeqScan *node) EState *estate; ScanDirection direction; TupleTableSlot *slot; - Buffer buffer; /* ---------------- * get information from the estate and scan state @@ -70,9 +69,7 @@ SeqNext(SeqScan *node) * get the next tuple from the access methods * ---------------- */ - tuple = heap_getnext(scandesc, /* scan desc */ - ScanDirectionIsBackward(direction), /* backward flag */ - &buffer); /* return: buffer */ + tuple = heap_getnext(scandesc, ScanDirectionIsBackward(direction)); /* ---------------- * save the tuple and the buffer returned to us by the access methods @@ -86,8 +83,7 @@ SeqNext(SeqScan *node) slot = ExecStoreTuple(tuple,/* tuple to store */ slot, /* slot to store in */ - buffer, /* buffer associated with this - * tuple */ + scandesc->rs_cbuf,/* buffer associated with this tuple */ false); /* don't pfree this pointer */ /* ---------------- @@ -364,8 +360,8 @@ ExecSeqReScan(SeqScan *node, ExprContext *exprCtxt, Plan *parent) CommonScanState *scanstate; EState *estate; Plan *outerPlan; - Relation rdesc; - HeapScanDesc sdesc; + Relation rel; + HeapScanDesc scan; ScanDirection direction; scanstate = node->scanstate; @@ -380,11 +376,11 @@ ExecSeqReScan(SeqScan *node, ExprContext *exprCtxt, Plan *parent) else { /* otherwise, we are scanning a relation */ - rdesc = scanstate->css_currentRelation; - sdesc = scanstate->css_currentScanDesc; + rel = scanstate->css_currentRelation; + scan = scanstate->css_currentScanDesc; direction = estate->es_direction; - sdesc = ExecReScanR(rdesc, sdesc, direction, 0, NULL); - scanstate->css_currentScanDesc = sdesc; + scan = ExecReScanR(rel, scan, direction, 0, NULL); + scanstate->css_currentScanDesc = scan; } } @@ -399,7 +395,7 @@ ExecSeqMarkPos(SeqScan *node) { CommonScanState *scanstate; Plan *outerPlan; - HeapScanDesc sdesc; + HeapScanDesc scan; scanstate = node->scanstate; @@ -421,8 +417,8 @@ ExecSeqMarkPos(SeqScan *node) * * ---------------- */ - sdesc = scanstate->css_currentScanDesc; - heap_markpos(sdesc); + scan = scanstate->css_currentScanDesc; + heap_markpos(scan); return; } @@ -438,7 +434,7 @@ ExecSeqRestrPos(SeqScan *node) { CommonScanState *scanstate; Plan *outerPlan; - HeapScanDesc sdesc; + HeapScanDesc scan; scanstate = node->scanstate; @@ -459,6 +455,6 @@ ExecSeqRestrPos(SeqScan *node) * position using the access methods.. * ---------------- */ - sdesc = scanstate->css_currentScanDesc; - heap_restrpos(sdesc); + scan = scanstate->css_currentScanDesc; + heap_restrpos(scan); } diff --git a/src/backend/executor/nodeTee.c b/src/backend/executor/nodeTee.c index c23c7d65d40..c7a0a99a277 100644 --- a/src/backend/executor/nodeTee.c +++ b/src/backend/executor/nodeTee.c @@ -15,7 +15,7 @@ * ExecEndTee * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/Attic/nodeTee.c,v 1.20 1998/08/06 05:12:36 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/Attic/nodeTee.c,v 1.21 1998/08/19 02:02:06 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -303,7 +303,6 @@ ExecTee(Tee *node, Plan *parent) HeapTuple heapTuple; Relation bufferRel; HeapScanDesc scanDesc; - Buffer buffer; estate = ((Plan *) node)->state; teeState = node->teestate; @@ -366,10 +365,7 @@ ExecTee(Tee *node, Plan *parent) HeapTuple throwAway; /* Buffer buffer; */ - throwAway = heap_getnext(scanDesc, - ScanDirectionIsBackward(dir), - /* &buffer */ - (Buffer *) NULL); + throwAway = heap_getnext(scanDesc,ScanDirectionIsBackward(dir)); } /* @@ -393,9 +389,7 @@ ExecTee(Tee *node, Plan *parent) scanDesc = (parent == node->leftParent) ? teeState->tee_leftScanDesc : teeState->tee_rightScanDesc; - heapTuple = heap_getnext(scanDesc, - ScanDirectionIsBackward(dir), - &buffer); + heapTuple = heap_getnext(scanDesc, ScanDirectionIsBackward(dir)); /* * Increase the pin count on the buffer page, because the tuple @@ -404,15 +398,15 @@ ExecTee(Tee *node, Plan *parent) * count on the next iteration. */ - if (buffer != InvalidBuffer) - IncrBufferRefCount(buffer); + if (scanDesc->rs_cbuf != InvalidBuffer) + IncrBufferRefCount(scanDesc->rs_cbuf); slot = teeState->cstate.cs_ResultTupleSlot; slot->ttc_tupleDescriptor = RelationGetTupleDescriptor(bufferRel); result = ExecStoreTuple(heapTuple, /* tuple to store */ slot, /* slot to store in */ - buffer, /* this tuple's buffer */ + scanDesc->rs_cbuf, /* this tuple's buffer */ false); /* don't free stuff from * heap_getnext */ diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c index 040baa7d42e..e2e87d88e06 100644 --- a/src/backend/executor/spi.c +++ b/src/backend/executor/spi.c @@ -466,7 +466,7 @@ SPI_gettype(TupleDesc tupdesc, int fnumber) } typeTuple = SearchSysCacheTuple(TYPOID, - ObjectIdGetDatum(tupdesc->attrs[fnumber - 1]->atttypid), + ObjectIdGetDatum(tupdesc->attrs[fnumber - 1]->atttypid), 0, 0, 0); if (!HeapTupleIsValid(typeTuple)) |