Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit939449d

Browse files
committed
Relocate partition pruning structs to a saner place.
These struct definitions were originally dropped into primnodes.h,which is a poor choice since that's mainly intended for primitiveexpression node types; these are not in that category. What theyare is auxiliary info in Plan trees, so move them to plannodes.h.For consistency, also relocate some related code that was apparentlyplaced with the aid of a dartboard.There's no interesting code changes in this commit, just reshuffling.David Rowley and Tom LaneDiscussion:https://postgr.es/m/CAFj8pRBjrufA3ocDm8o4LPGNye9Y+pm1b9kCwode4X04CULG3g@mail.gmail.com
1 parent73b7f48 commit939449d

File tree

8 files changed

+294
-293
lines changed

8 files changed

+294
-293
lines changed

‎src/backend/executor/execPartition.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1434,7 +1434,7 @@ ExecSetupPartitionPruneState(PlanState *planstate, List *partitionpruneinfo)
14341434
i=0;
14351435
foreach(lc,partitionpruneinfo)
14361436
{
1437-
PartitionPruneInfo*pinfo= (PartitionPruneInfo*)lfirst(lc);
1437+
PartitionPruneInfo*pinfo=castNode(PartitionPruneInfo,lfirst(lc));
14381438
PartitionPruningData*pprune=&prunedata[i];
14391439
PartitionPruneContext*context=&pprune->context;
14401440
PartitionDescpartdesc;

‎src/backend/nodes/copyfuncs.c

Lines changed: 62 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -242,9 +242,9 @@ _copyAppend(const Append *from)
242242
/*
243243
* copy remainder of node
244244
*/
245-
COPY_NODE_FIELD(partitioned_rels);
246245
COPY_NODE_FIELD(appendplans);
247246
COPY_SCALAR_FIELD(first_partial_plan);
247+
COPY_NODE_FIELD(partitioned_rels);
248248
COPY_NODE_FIELD(part_prune_infos);
249249

250250
returnnewnode;
@@ -1176,6 +1176,58 @@ _copyPlanRowMark(const PlanRowMark *from)
11761176
returnnewnode;
11771177
}
11781178

1179+
staticPartitionPruneInfo*
1180+
_copyPartitionPruneInfo(constPartitionPruneInfo*from)
1181+
{
1182+
PartitionPruneInfo*newnode=makeNode(PartitionPruneInfo);
1183+
1184+
COPY_SCALAR_FIELD(reloid);
1185+
COPY_NODE_FIELD(pruning_steps);
1186+
COPY_BITMAPSET_FIELD(present_parts);
1187+
COPY_SCALAR_FIELD(nparts);
1188+
COPY_SCALAR_FIELD(nexprs);
1189+
COPY_POINTER_FIELD(subnode_map,from->nparts*sizeof(int));
1190+
COPY_POINTER_FIELD(subpart_map,from->nparts*sizeof(int));
1191+
COPY_POINTER_FIELD(hasexecparam,from->nexprs*sizeof(bool));
1192+
COPY_SCALAR_FIELD(do_initial_prune);
1193+
COPY_SCALAR_FIELD(do_exec_prune);
1194+
COPY_BITMAPSET_FIELD(execparamids);
1195+
1196+
returnnewnode;
1197+
}
1198+
1199+
/*
1200+
* _copyPartitionPruneStepOp
1201+
*/
1202+
staticPartitionPruneStepOp*
1203+
_copyPartitionPruneStepOp(constPartitionPruneStepOp*from)
1204+
{
1205+
PartitionPruneStepOp*newnode=makeNode(PartitionPruneStepOp);
1206+
1207+
COPY_SCALAR_FIELD(step.step_id);
1208+
COPY_SCALAR_FIELD(opstrategy);
1209+
COPY_NODE_FIELD(exprs);
1210+
COPY_NODE_FIELD(cmpfns);
1211+
COPY_BITMAPSET_FIELD(nullkeys);
1212+
1213+
returnnewnode;
1214+
}
1215+
1216+
/*
1217+
* _copyPartitionPruneStepCombine
1218+
*/
1219+
staticPartitionPruneStepCombine*
1220+
_copyPartitionPruneStepCombine(constPartitionPruneStepCombine*from)
1221+
{
1222+
PartitionPruneStepCombine*newnode=makeNode(PartitionPruneStepCombine);
1223+
1224+
COPY_SCALAR_FIELD(step.step_id);
1225+
COPY_SCALAR_FIELD(combineOp);
1226+
COPY_NODE_FIELD(source_stepids);
1227+
1228+
returnnewnode;
1229+
}
1230+
11791231
/*
11801232
* _copyPlanInvalItem
11811233
*/
@@ -2134,58 +2186,6 @@ _copyOnConflictExpr(const OnConflictExpr *from)
21342186
returnnewnode;
21352187
}
21362188

2137-
/*
2138-
* _copyPartitionPruneStepOp
2139-
*/
2140-
staticPartitionPruneStepOp*
2141-
_copyPartitionPruneStepOp(constPartitionPruneStepOp*from)
2142-
{
2143-
PartitionPruneStepOp*newnode=makeNode(PartitionPruneStepOp);
2144-
2145-
COPY_SCALAR_FIELD(step.step_id);
2146-
COPY_SCALAR_FIELD(opstrategy);
2147-
COPY_NODE_FIELD(exprs);
2148-
COPY_NODE_FIELD(cmpfns);
2149-
COPY_BITMAPSET_FIELD(nullkeys);
2150-
2151-
returnnewnode;
2152-
}
2153-
2154-
/*
2155-
* _copyPartitionPruneStepCombine
2156-
*/
2157-
staticPartitionPruneStepCombine*
2158-
_copyPartitionPruneStepCombine(constPartitionPruneStepCombine*from)
2159-
{
2160-
PartitionPruneStepCombine*newnode=makeNode(PartitionPruneStepCombine);
2161-
2162-
COPY_SCALAR_FIELD(step.step_id);
2163-
COPY_SCALAR_FIELD(combineOp);
2164-
COPY_NODE_FIELD(source_stepids);
2165-
2166-
returnnewnode;
2167-
}
2168-
2169-
staticPartitionPruneInfo*
2170-
_copyPartitionPruneInfo(constPartitionPruneInfo*from)
2171-
{
2172-
PartitionPruneInfo*newnode=makeNode(PartitionPruneInfo);
2173-
2174-
COPY_SCALAR_FIELD(reloid);
2175-
COPY_NODE_FIELD(pruning_steps);
2176-
COPY_BITMAPSET_FIELD(present_parts);
2177-
COPY_SCALAR_FIELD(nparts);
2178-
COPY_SCALAR_FIELD(nexprs);
2179-
COPY_POINTER_FIELD(subnode_map,from->nparts*sizeof(int));
2180-
COPY_POINTER_FIELD(subpart_map,from->nparts*sizeof(int));
2181-
COPY_POINTER_FIELD(hasexecparam,from->nexprs*sizeof(bool));
2182-
COPY_SCALAR_FIELD(do_initial_prune);
2183-
COPY_SCALAR_FIELD(do_exec_prune);
2184-
COPY_BITMAPSET_FIELD(execparamids);
2185-
2186-
returnnewnode;
2187-
}
2188-
21892189
/* ****************************************************************
21902190
*relation.h copy functions
21912191
*
@@ -4904,6 +4904,15 @@ copyObjectImpl(const void *from)
49044904
caseT_PlanRowMark:
49054905
retval=_copyPlanRowMark(from);
49064906
break;
4907+
caseT_PartitionPruneInfo:
4908+
retval=_copyPartitionPruneInfo(from);
4909+
break;
4910+
caseT_PartitionPruneStepOp:
4911+
retval=_copyPartitionPruneStepOp(from);
4912+
break;
4913+
caseT_PartitionPruneStepCombine:
4914+
retval=_copyPartitionPruneStepCombine(from);
4915+
break;
49074916
caseT_PlanInvalItem:
49084917
retval=_copyPlanInvalItem(from);
49094918
break;
@@ -5064,12 +5073,6 @@ copyObjectImpl(const void *from)
50645073
caseT_OnConflictExpr:
50655074
retval=_copyOnConflictExpr(from);
50665075
break;
5067-
caseT_PartitionPruneStepOp:
5068-
retval=_copyPartitionPruneStepOp(from);
5069-
break;
5070-
caseT_PartitionPruneStepCombine:
5071-
retval=_copyPartitionPruneStepCombine(from);
5072-
break;
50735076

50745077
/*
50755078
* RELATION NODES
@@ -5092,9 +5095,6 @@ copyObjectImpl(const void *from)
50925095
caseT_PlaceHolderInfo:
50935096
retval=_copyPlaceHolderInfo(from);
50945097
break;
5095-
caseT_PartitionPruneInfo:
5096-
retval=_copyPartitionPruneInfo(from);
5097-
break;
50985098

50995099
/*
51005100
* VALUE NODES

‎src/backend/nodes/outfuncs.c

Lines changed: 62 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -399,9 +399,9 @@ _outAppend(StringInfo str, const Append *node)
399399

400400
_outPlanInfo(str, (constPlan*)node);
401401

402-
WRITE_NODE_FIELD(partitioned_rels);
403402
WRITE_NODE_FIELD(appendplans);
404403
WRITE_INT_FIELD(first_partial_plan);
404+
WRITE_NODE_FIELD(partitioned_rels);
405405
WRITE_NODE_FIELD(part_prune_infos);
406406
}
407407

@@ -1010,6 +1010,58 @@ _outPlanRowMark(StringInfo str, const PlanRowMark *node)
10101010
WRITE_BOOL_FIELD(isParent);
10111011
}
10121012

1013+
staticvoid
1014+
_outPartitionPruneInfo(StringInfostr,constPartitionPruneInfo*node)
1015+
{
1016+
inti;
1017+
1018+
WRITE_NODE_TYPE("PARTITIONPRUNEINFO");
1019+
1020+
WRITE_OID_FIELD(reloid);
1021+
WRITE_NODE_FIELD(pruning_steps);
1022+
WRITE_BITMAPSET_FIELD(present_parts);
1023+
WRITE_INT_FIELD(nparts);
1024+
WRITE_INT_FIELD(nexprs);
1025+
1026+
appendStringInfoString(str," :subnode_map");
1027+
for (i=0;i<node->nparts;i++)
1028+
appendStringInfo(str," %d",node->subnode_map[i]);
1029+
1030+
appendStringInfoString(str," :subpart_map");
1031+
for (i=0;i<node->nparts;i++)
1032+
appendStringInfo(str," %d",node->subpart_map[i]);
1033+
1034+
appendStringInfoString(str," :hasexecparam");
1035+
for (i=0;i<node->nexprs;i++)
1036+
appendStringInfo(str," %s",booltostr(node->hasexecparam[i]));
1037+
1038+
WRITE_BOOL_FIELD(do_initial_prune);
1039+
WRITE_BOOL_FIELD(do_exec_prune);
1040+
WRITE_BITMAPSET_FIELD(execparamids);
1041+
}
1042+
1043+
staticvoid
1044+
_outPartitionPruneStepOp(StringInfostr,constPartitionPruneStepOp*node)
1045+
{
1046+
WRITE_NODE_TYPE("PARTITIONPRUNESTEPOP");
1047+
1048+
WRITE_INT_FIELD(step.step_id);
1049+
WRITE_INT_FIELD(opstrategy);
1050+
WRITE_NODE_FIELD(exprs);
1051+
WRITE_NODE_FIELD(cmpfns);
1052+
WRITE_BITMAPSET_FIELD(nullkeys);
1053+
}
1054+
1055+
staticvoid
1056+
_outPartitionPruneStepCombine(StringInfostr,constPartitionPruneStepCombine*node)
1057+
{
1058+
WRITE_NODE_TYPE("PARTITIONPRUNESTEPCOMBINE");
1059+
1060+
WRITE_INT_FIELD(step.step_id);
1061+
WRITE_ENUM_FIELD(combineOp,PartitionPruneCombineOp);
1062+
WRITE_NODE_FIELD(source_stepids);
1063+
}
1064+
10131065
staticvoid
10141066
_outPlanInvalItem(StringInfostr,constPlanInvalItem*node)
10151067
{
@@ -1694,28 +1746,6 @@ _outFromExpr(StringInfo str, const FromExpr *node)
16941746
WRITE_NODE_FIELD(quals);
16951747
}
16961748

1697-
staticvoid
1698-
_outPartitionPruneStepOp(StringInfostr,constPartitionPruneStepOp*node)
1699-
{
1700-
WRITE_NODE_TYPE("PARTITIONPRUNESTEPOP");
1701-
1702-
WRITE_INT_FIELD(step.step_id);
1703-
WRITE_INT_FIELD(opstrategy);
1704-
WRITE_NODE_FIELD(exprs);
1705-
WRITE_NODE_FIELD(cmpfns);
1706-
WRITE_BITMAPSET_FIELD(nullkeys);
1707-
}
1708-
1709-
staticvoid
1710-
_outPartitionPruneStepCombine(StringInfostr,constPartitionPruneStepCombine*node)
1711-
{
1712-
WRITE_NODE_TYPE("PARTITIONPRUNESTEPCOMBINE");
1713-
1714-
WRITE_INT_FIELD(step.step_id);
1715-
WRITE_ENUM_FIELD(combineOp,PartitionPruneCombineOp);
1716-
WRITE_NODE_FIELD(source_stepids);
1717-
}
1718-
17191749
staticvoid
17201750
_outOnConflictExpr(StringInfostr,constOnConflictExpr*node)
17211751
{
@@ -1731,36 +1761,6 @@ _outOnConflictExpr(StringInfo str, const OnConflictExpr *node)
17311761
WRITE_NODE_FIELD(exclRelTlist);
17321762
}
17331763

1734-
staticvoid
1735-
_outPartitionPruneInfo(StringInfostr,constPartitionPruneInfo*node)
1736-
{
1737-
inti;
1738-
1739-
WRITE_NODE_TYPE("PARTITIONPRUNEINFO");
1740-
1741-
WRITE_OID_FIELD(reloid);
1742-
WRITE_NODE_FIELD(pruning_steps);
1743-
WRITE_BITMAPSET_FIELD(present_parts);
1744-
WRITE_INT_FIELD(nparts);
1745-
WRITE_INT_FIELD(nexprs);
1746-
1747-
appendStringInfoString(str," :subnode_map");
1748-
for (i=0;i<node->nparts;i++)
1749-
appendStringInfo(str," %d",node->subnode_map[i]);
1750-
1751-
appendStringInfoString(str," :subpart_map");
1752-
for (i=0;i<node->nparts;i++)
1753-
appendStringInfo(str," %d",node->subpart_map[i]);
1754-
1755-
appendStringInfoString(str," :hasexecparam");
1756-
for (i=0;i<node->nexprs;i++)
1757-
appendStringInfo(str," %s",booltostr(node->hasexecparam[i]));
1758-
1759-
WRITE_BOOL_FIELD(do_initial_prune);
1760-
WRITE_BOOL_FIELD(do_exec_prune);
1761-
WRITE_BITMAPSET_FIELD(execparamids);
1762-
}
1763-
17641764
/*****************************************************************************
17651765
*
17661766
*Stuff from relation.h.
@@ -3827,6 +3827,15 @@ outNode(StringInfo str, const void *obj)
38273827
caseT_PlanRowMark:
38283828
_outPlanRowMark(str,obj);
38293829
break;
3830+
caseT_PartitionPruneInfo:
3831+
_outPartitionPruneInfo(str,obj);
3832+
break;
3833+
caseT_PartitionPruneStepOp:
3834+
_outPartitionPruneStepOp(str,obj);
3835+
break;
3836+
caseT_PartitionPruneStepCombine:
3837+
_outPartitionPruneStepCombine(str,obj);
3838+
break;
38303839
caseT_PlanInvalItem:
38313840
_outPlanInvalItem(str,obj);
38323841
break;
@@ -3983,15 +3992,6 @@ outNode(StringInfo str, const void *obj)
39833992
caseT_OnConflictExpr:
39843993
_outOnConflictExpr(str,obj);
39853994
break;
3986-
caseT_PartitionPruneStepOp:
3987-
_outPartitionPruneStepOp(str,obj);
3988-
break;
3989-
caseT_PartitionPruneStepCombine:
3990-
_outPartitionPruneStepCombine(str,obj);
3991-
break;
3992-
caseT_PartitionPruneInfo:
3993-
_outPartitionPruneInfo(str,obj);
3994-
break;
39953995
caseT_Path:
39963996
_outPath(str,obj);
39973997
break;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp