8000 Add support of pg11 · postgrespro/pg_pathman@7e76912 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7e76912

Browse files
committed
Add support of pg11
1 parent 4666195 commit 7e76912

File tree

3 files changed

+29
-24
lines changed

3 files changed

+29
-24
lines changed

src/include/compat/pg_compat.h

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -802,17 +802,6 @@ extern AttrNumber *convert_tuples_by_name_map(TupleDesc indesc,
802802
MakeTupleTableSlot()
803803
#endif
804804

805-
/*
806-
* ExecInitExtraTupleSlot()
807-
*/
808-
#if PG_VERSION_NUM >= 110000
809-
#define ExecInitExtraTupleSlotCompat(estate) \
810-
ExecInitExtraTupleSlot((estate), NULL)
811-
#else
812-
#define ExecInitExtraTupleSlotCompat(estate) \
813-
ExecInitExtraTupleSlot(estate)
814-
#endif
815-
816805
/*
817806
* BackgroundWorkerInitializeConnectionByOid()
818807
*/
@@ -877,7 +866,6 @@ extern AttrNumber *convert_tuples_by_name_map(TupleDesc indesc,
877866
find_childrel_appendrelinfo((root), (rel))
878867
#endif
879868

880-
881869
/*
882870
* HeapTupleGetXmin()
883871
* Vanilla PostgreSQL has HeaptTupleHeaderGetXmin, but for 64-bit xid
@@ -895,6 +883,19 @@ extern AttrNumber *convert_tuples_by_name_map(TupleDesc indesc,
895883
* Common code
896884
* -------------
897885
*/
886+
static inline TupleTableSlot *
887+
ExecInitExtraTupleSlotCompat(EState *s, TupleDesc t)
888+
{
889+
#if PG_VERSION_NUM >= 110000
890+
return ExecInitExtraTupleSlot(s,t);
891+
#else
892+
TupleTableSlot *res = ExecInitExtraTupleSlot(s);
893+
if (t)
894+
ExecSetSlotDescriptor(res, t);
895+
896+
return res;
897+
#endif
898+
}
898899

899900
/* See ExecEvalParamExtern() */
900901
static inline ParamExternData *

src/partition_router.c

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -171,15 +171,12 @@ prepare_modify_table_for_partition_router(PlanState *state, void *context)
171171
if (!changed_method)
172172
{
173173
/* HACK: replace ModifyTable's execution method */
174-
#if PG_VERSION_NUM >= 110000
175174
if (!mt_method)
176175
mt_method = state->ExecProcNodeReal;
177176

177+
#if PG_VERSION_NUM >= 110000
178178
ExecSetExecProcNode(state, router_run_modify_table);
179179
#elif PG_VERSION_NUM >= 100000
180-
if (!mt_method)
181-
mt_method = state->ExecProcNode;
182-
183180
state->ExecProcNode = router_run_modify_table;
184181
#else
185182
#error "doesn't supported yet"
@@ -316,7 +313,7 @@ router_run_modify_table(PlanState *state)
316313
mt_state = (ModifyTableState *) state;
317314

318315
/* Get initial signal */
319-
mt_plans_old = MTHackField(mt_state, mt_nplans);
316+
mt_plans_old = mt_state->mt_nplans;
320317

321318
restart:
322319
/* Fetch next tuple */
@@ -359,21 +356,29 @@ router_set_slot(PartitionRouterState *state,
359356
MTHackField(mt_state, mt_nplans) = -mt_state->mt_whichplan;
360357
MTHackField(mt_state, operation) = operation;
361358

362-
/* HACK: disable AFTER STATEMENT triggers */
363-
MTDisableStmtTriggers(mt_state, state);
364-
365359
if (!TupIsNull(slot))
366360
{
367361
/* We should've cached junk filter already */
368362
Assert(state->junkfilter);
369363

364+
/* HACK: disable AFTER STATEMENT triggers */
365+
MTDisableStmtTriggers(mt_state, state);
366+
367+
370368
/* HACK: conditionally disable junk filter in result relation */
371369
state->current_rri->ri_junkFilter = (operation == CMD_UPDATE) ?
372370
state->junkfilter :
373371
NULL;
374372

375373
/* Don't forget to set saved_slot! */
376-
state->yielded_slot = slot;
374+
state->yielded_slot = ExecInitExtraTupleSlotCompat(mt_state->ps.state,
375+
slot->tts_tupleDescriptor);
376+
ExecCopySlot(state->yielded_slot, slot);
377+
}
378+
else
379+
{
380+
/* HACK: enable AFTER STATEMENT triggers */
381+
MTEnableStmtTriggers(mt_state, state);
377382
}
378383

379384
/* Yield */

src/utility_stmt_hooking.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -514,10 +514,9 @@ PathmanCopyFrom(CopyState cstate, Relation parent_rel,
514514
RPS_RRI_CB(finish_rri_for_copy, NULL));
515515

516516
/* Set up a tuple slot too */
517-
myslot = ExecInitExtraTupleSlotCompat(estate);
518-
ExecSetSlotDescriptor(myslot, tupDesc);
517+
myslot = ExecInitExtraTupleSlotCompat(estate, NULL);
519518
/* Triggers might need a slot as well */
520-
estate->es_trig_tuple_slot = ExecInitExtraTupleSlotCompat(estate);
519+
estate->es_trig_tuple_slot = ExecInitExtraTupleSlotCompat(estate, tupDesc);
521520

522521
/* Prepare to catch AFTER triggers. */
523522
AfterTriggerBeginQuery();

0 commit comments

Comments
 (0)
28FC
0