mirror of
https://github.com/postgres/postgres.git
synced 2025-06-25 01:02:05 +03:00
Remove es_result_relation_info from EState.
Maintaining 'es_result_relation_info' correctly at all times has become cumbersome, especially with partitioning where each partition gets its own result relation info. Having to set and reset it across arbitrary operations has caused bugs in the past. This changes all the places that used 'es_result_relation_info', to receive the currently active ResultRelInfo via function parameters instead. Author: Amit Langote Discussion: https://www.postgresql.org/message-id/CA%2BHiwqGEmiib8FLiHMhKB%2BCH5dRgHSLc5N5wnvc4kym%2BZYpQEQ%40mail.gmail.com
This commit is contained in:
@ -576,10 +576,14 @@ extern TupleTableSlot *ExecGetReturningSlot(EState *estate, ResultRelInfo *relIn
|
||||
*/
|
||||
extern void ExecOpenIndices(ResultRelInfo *resultRelInfo, bool speculative);
|
||||
extern void ExecCloseIndices(ResultRelInfo *resultRelInfo);
|
||||
extern List *ExecInsertIndexTuples(TupleTableSlot *slot, EState *estate, bool noDupErr,
|
||||
extern List *ExecInsertIndexTuples(ResultRelInfo *resultRelInfo,
|
||||
TupleTableSlot *slot, EState *estate,
|
||||
bool noDupErr,
|
||||
bool *specConflict, List *arbiterIndexes);
|
||||
extern bool ExecCheckIndexConstraints(TupleTableSlot *slot, EState *estate,
|
||||
ItemPointer conflictTid, List *arbiterIndexes);
|
||||
extern bool ExecCheckIndexConstraints(ResultRelInfo *resultRelInfo,
|
||||
TupleTableSlot *slot,
|
||||
EState *estate, ItemPointer conflictTid,
|
||||
List *arbiterIndexes);
|
||||
extern void check_exclusion_constraint(Relation heap, Relation index,
|
||||
IndexInfo *indexInfo,
|
||||
ItemPointer tupleid,
|
||||
@ -596,10 +600,13 @@ extern bool RelationFindReplTupleByIndex(Relation rel, Oid idxoid,
|
||||
extern bool RelationFindReplTupleSeq(Relation rel, LockTupleMode lockmode,
|
||||
TupleTableSlot *searchslot, TupleTableSlot *outslot);
|
||||
|
||||
extern void ExecSimpleRelationInsert(EState *estate, TupleTableSlot *slot);
|
||||
extern void ExecSimpleRelationUpdate(EState *estate, EPQState *epqstate,
|
||||
extern void ExecSimpleRelationInsert(ResultRelInfo *resultRelInfo,
|
||||
EState *estate, TupleTableSlot *slot);
|
||||
extern void ExecSimpleRelationUpdate(ResultRelInfo *resultRelInfo,
|
||||
EState *estate, EPQState *epqstate,
|
||||
TupleTableSlot *searchslot, TupleTableSlot *slot);
|
||||
extern void ExecSimpleRelationDelete(EState *estate, EPQState *epqstate,
|
||||
extern void ExecSimpleRelationDelete(ResultRelInfo *resultRelInfo,
|
||||
EState *estate, EPQState *epqstate,
|
||||
TupleTableSlot *searchslot);
|
||||
extern void CheckCmdReplicaIdentity(Relation rel, CmdType cmd);
|
||||
|
||||
|
Reference in New Issue
Block a user