/* ---------------------------------------------------------------- * caql_update_current() * during beginscan/endscan iteration, update current tuple, * and update catalog indexes if necessary * NOTE: a separate call to CatalogUpdateIndexes after this will * cause an error * ---------------------------------------------------------------- */ void caql_update_current(cqContext *pCtx, HeapTuple tup) { Relation rel; rel = pCtx->cq_heap_rel; Assert(RelationIsValid(rel)); Insist(HeapTupleIsValid(pCtx->cq_lasttup)); simple_heap_update(rel, &(pCtx->cq_lasttup)->t_self, tup); /* keep the catalog indexes up to date (if has any) */ caql_UpdateIndexes(pCtx, rel, tup); }
/* ---------------------------------------------------------------- * caql_insert() * during beginscan/endscan iteration, insert a tuple * NOTE: a separate call to CatalogUpdateIndexes after this will * cause an error * ---------------------------------------------------------------- */ Oid caql_insert(cqContext *pCtx, HeapTuple tup) { Relation rel; Oid result; rel = pCtx->cq_heap_rel; Assert(RelationIsValid(rel)); result = simple_heap_insert(rel, tup); /* keep the catalog indexes up to date (if has any) */ caql_UpdateIndexes(pCtx, rel, tup); return (result); }
/* ---------------------------------------------------------------- * caql_update_current() * during beginscan/endscan iteration, update current tuple, * and update catalog indexes if necessary * NOTE: a separate call to CatalogUpdateIndexes after this will * cause an error * ---------------------------------------------------------------- */ void caql_update_current(cqContext *pCtx, HeapTuple tup) { Relation rel; rel = pCtx->cq_heap_rel; Assert(RelationIsValid(rel)); Insist(HeapTupleIsValid(pCtx->cq_lasttup)); disable_catalog_check(pCtx, pCtx->cq_lasttup); { caql_iud_switch(pCtx, 2, pCtx->cq_lasttup, tup, true /* dontWait */); simple_heap_update(rel, &(pCtx->cq_lasttup)->t_self, tup); /* keep the catalog indexes up to date (if has any) */ caql_UpdateIndexes(pCtx, rel, tup); } }
/* ---------------------------------------------------------------- * caql_insert() * during beginscan/endscan iteration, insert a tuple * NOTE: a separate call to CatalogUpdateIndexes after this will * cause an error * ---------------------------------------------------------------- */ Oid caql_insert(cqContext *pCtx, HeapTuple tup) { Relation rel; Oid result; rel = pCtx->cq_heap_rel; Assert(RelationIsValid(rel)); disable_catalog_check(pCtx, tup); { caql_iud_switch(pCtx, 1, NULL, tup, true /* dontWait */); result = simple_heap_insert(rel, tup); /* keep the catalog indexes up to date (if has any) */ caql_UpdateIndexes(pCtx, rel, tup); } return (result); }