• R/O
  • HTTP
  • SSH
  • HTTPS

pg_hint_plan: Commit

firtst release


Commit MetaInfo

Revision7ed93ce189ffc9f4cf73a6f21582b4760917c895 (tree)
Time2020-08-06 20:18:05
AuthorKyotaro Horiguchi <horikyota.ntt@gmai...>
CommiterKyotaro Horiguchi

Log Message

Support PostgreSQL 13.

- Follow change of some planner functions.

- Follow a change of the semantics of List.

- Take in changes in copied core code.

- Adjust regression tests.

Amost all of the differences are come from aliasing policy, and some
come from a new GUC parameter.

Change Summary

Incremental Difference

--- a/core.c
+++ b/core.c
@@ -38,6 +38,8 @@
3838 * restriction_is_constant_false()
3939 * update_child_rel_info()
4040 * build_child_join_sjinfo()
41+ * get_matching_part_pairs()
42+ * compute_partition_bounds()
4143 *
4244 *
4345 * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
@@ -137,7 +139,7 @@ set_append_rel_pathlist(PlannerInfo *root, RelOptInfo *rel,
137139 if (rel->part_scheme)
138140 rel->partitioned_child_rels =
139141 list_concat(rel->partitioned_child_rels,
140- list_copy(childrel->partitioned_child_rels));
142+ childrel->partitioned_child_rels);
141143
142144 /*
143145 * Child is live, so add it to the live_childrels list for use below.
@@ -239,7 +241,7 @@ standard_join_search(PlannerInfo *root, int levels_needed, List *initial_rels)
239241 * once we know the final targetlist (see grouping_planner).
240242 */
241243 if (lev < levels_needed)
242- generate_gather_paths(root, rel, false);
244+ generate_useful_gather_paths(root, rel, false);
243245
244246 /* Find and save the cheapest paths for this rel */
245247 set_cheapest(rel);
@@ -337,15 +339,23 @@ join_search_one_level(PlannerInfo *root, int level)
337339 * to each initial rel they don't already include but have a join
338340 * clause or restriction with.
339341 */
342+ List *other_rels_list;
340343 ListCell *other_rels;
341344
342345 if (level == 2) /* consider remaining initial rels */
343- other_rels = lnext(r);
346+ {
347+ other_rels_list = joinrels[level - 1];
348+ other_rels = lnext(other_rels_list, r);
349+ }
344350 else /* consider all initial rels */
345- other_rels = list_head(joinrels[1]);
351+ {
352+ other_rels_list = joinrels[1];
353+ other_rels = list_head(other_rels_list);
354+ }
346355
347356 make_rels_by_clause_joins(root,
348357 old_rel,
358+ other_rels_list,
349359 other_rels);
350360 }
351361 else
@@ -364,7 +374,7 @@ join_search_one_level(PlannerInfo *root, int level)
364374 */
365375 make_rels_by_clauseless_joins(root,
366376 old_rel,
367- list_head(joinrels[1]));
377+ joinrels[1]);
368378 }
369379 }
370380
@@ -390,6 +400,7 @@ join_search_one_level(PlannerInfo *root, int level)
390400 foreach(r, joinrels[k])
391401 {
392402 RelOptInfo *old_rel = (RelOptInfo *) lfirst(r);
403+ List *other_rels_list;
393404 ListCell *other_rels;
394405 ListCell *r2;
395406
@@ -403,11 +414,18 @@ join_search_one_level(PlannerInfo *root, int level)
403414 continue;
404415
405416 if (k == other_level)
406- other_rels = lnext(r); /* only consider remaining rels */
417+ {
418+ /* only consider remaining rels */
419+ other_rels_list = joinrels[k];
420+ other_rels = lnext(other_rels_list, r);
421+ }
407422 else
408- other_rels = list_head(joinrels[other_level]);
423+ {
424+ other_rels_list = joinrels[other_level];
425+ other_rels = list_head(other_rels_list);
426+ }
409427
410- for_each_cell(r2, other_rels)
428+ for_each_cell(r2, other_rels_list, other_rels)
411429 {
412430 RelOptInfo *new_rel = (RelOptInfo *) lfirst(r2);
413431
@@ -459,7 +477,7 @@ join_search_one_level(PlannerInfo *root, int level)
459477
460478 make_rels_by_clauseless_joins(root,
461479 old_rel,
462- list_head(joinrels[1]));
480+ joinrels[1]);
463481 }
464482
465483 /*----------
@@ -502,8 +520,9 @@ join_search_one_level(PlannerInfo *root, int level)
502520 * automatically ensures that each new joinrel is only added to the list once.
503521 *
504522 * 'old_rel' is the relation entry for the relation to be joined
505- * 'other_rels': the first cell in a linked list containing the other
523+ * 'other_rels_list': a list containing the other
506524 * rels to be considered for joining
525+ * 'other_rels': the first cell to be considered
507526 *
508527 * Currently, this is only used with initial rels in other_rels, but it
509528 * will work for joining to joinrels too.
@@ -511,11 +530,12 @@ join_search_one_level(PlannerInfo *root, int level)
511530 static void
512531 make_rels_by_clause_joins(PlannerInfo *root,
513532 RelOptInfo *old_rel,
533+ List *other_rels_list,
514534 ListCell *other_rels)
515535 {
516536 ListCell *l;
517537
518- for_each_cell(l, other_rels)
538+ for_each_cell(l, other_rels_list, other_rels)
519539 {
520540 RelOptInfo *other_rel = (RelOptInfo *) lfirst(l);
521541
@@ -537,8 +557,7 @@ make_rels_by_clause_joins(PlannerInfo *root,
537557 * The join rels are returned in root->join_rel_level[join_cur_level].
538558 *
539559 * 'old_rel' is the relation entry for the relation to be joined
540- * 'other_rels': the first cell of a linked list containing the
541- * other rels to be considered for joining
560+ * 'other_rels': a list containing the other rels to be considered for joining
542561 *
543562 * Currently, this is only used with initial rels in other_rels, but it would
544563 * work for joining to joinrels too.
@@ -546,11 +565,11 @@ make_rels_by_clause_joins(PlannerInfo *root,
546565 static void
547566 make_rels_by_clauseless_joins(PlannerInfo *root,
548567 RelOptInfo *old_rel,
549- ListCell *other_rels)
568+ List *other_rels)
550569 {
551570 ListCell *l;
552571
553- for_each_cell(l, other_rels)
572+ foreach(l, other_rels)
554573 {
555574 RelOptInfo *other_rel = (RelOptInfo *) lfirst(l);
556575
@@ -1025,6 +1044,196 @@ build_child_join_sjinfo(PlannerInfo *root, SpecialJoinInfo *parent_sjinfo,
10251044 }
10261045
10271046 /*
1047+ * get_matching_part_pairs
1048+ * Generate pairs of partitions to be joined from inputs
1049+ */
1050+static void
1051+get_matching_part_pairs(PlannerInfo *root, RelOptInfo *joinrel,
1052+ RelOptInfo *rel1, RelOptInfo *rel2,
1053+ List **parts1, List **parts2)
1054+{
1055+ bool rel1_is_simple = IS_SIMPLE_REL(rel1);
1056+ bool rel2_is_simple = IS_SIMPLE_REL(rel2);
1057+ int cnt_parts;
1058+
1059+ *parts1 = NIL;
1060+ *parts2 = NIL;
1061+
1062+ for (cnt_parts = 0; cnt_parts < joinrel->nparts; cnt_parts++)
1063+ {
1064+ RelOptInfo *child_joinrel = joinrel->part_rels[cnt_parts];
1065+ RelOptInfo *child_rel1;
1066+ RelOptInfo *child_rel2;
1067+ Relids child_relids1;
1068+ Relids child_relids2;
1069+
1070+ /*
1071+ * If this segment of the join is empty, it means that this segment
1072+ * was ignored when previously creating child-join paths for it in
1073+ * try_partitionwise_join() as it would not contribute to the join
1074+ * result, due to one or both inputs being empty; add NULL to each of
1075+ * the given lists so that this segment will be ignored again in that
1076+ * function.
1077+ */
1078+ if (!child_joinrel)
1079+ {
1080+ *parts1 = lappend(*parts1, NULL);
1081+ *parts2 = lappend(*parts2, NULL);
1082+ continue;
1083+ }
1084+
1085+ /*
1086+ * Get a relids set of partition(s) involved in this join segment that
1087+ * are from the rel1 side.
1088+ */
1089+ child_relids1 = bms_intersect(child_joinrel->relids,
1090+ rel1->all_partrels);
1091+ Assert(bms_num_members(child_relids1) == bms_num_members(rel1->relids));
1092+
1093+ /*
1094+ * Get a child rel for rel1 with the relids. Note that we should have
1095+ * the child rel even if rel1 is a join rel, because in that case the
1096+ * partitions specified in the relids would have matching/overlapping
1097+ * boundaries, so the specified partitions should be considered as
1098+ * ones to be joined when planning partitionwise joins of rel1,
1099+ * meaning that the child rel would have been built by the time we get
1100+ * here.
1101+ */
1102+ if (rel1_is_simple)
1103+ {
1104+ int varno = bms_singleton_member(child_relids1);
1105+
1106+ child_rel1 = find_base_rel(root, varno);
1107+ }
1108+ else
1109+ child_rel1 = find_join_rel(root, child_relids1);
1110+ Assert(child_rel1);
1111+
1112+ /*
1113+ * Get a relids set of partition(s) involved in this join segment that
1114+ * are from the rel2 side.
1115+ */
1116+ child_relids2 = bms_intersect(child_joinrel->relids,
1117+ rel2->all_partrels);
1118+ Assert(bms_num_members(child_relids2) == bms_num_members(rel2->relids));
1119+
1120+ /*
1121+ * Get a child rel for rel2 with the relids. See above comments.
1122+ */
1123+ if (rel2_is_simple)
1124+ {
1125+ int varno = bms_singleton_member(child_relids2);
1126+
1127+ child_rel2 = find_base_rel(root, varno);
1128+ }
1129+ else
1130+ child_rel2 = find_join_rel(root, child_relids2);
1131+ Assert(child_rel2);
1132+
1133+ /*
1134+ * The join of rel1 and rel2 is legal, so is the join of the child
1135+ * rels obtained above; add them to the given lists as a join pair
1136+ * producing this join segment.
1137+ */
1138+ *parts1 = lappend(*parts1, child_rel1);
1139+ *parts2 = lappend(*parts2, child_rel2);
1140+ }
1141+}
1142+
1143+
1144+/*
1145+ * compute_partition_bounds
1146+ * Compute the partition bounds for a join rel from those for inputs
1147+ */
1148+static void
1149+compute_partition_bounds(PlannerInfo *root, RelOptInfo *rel1,
1150+ RelOptInfo *rel2, RelOptInfo *joinrel,
1151+ SpecialJoinInfo *parent_sjinfo,
1152+ List **parts1, List **parts2)
1153+{
1154+ /*
1155+ * If we don't have the partition bounds for the join rel yet, try to
1156+ * compute those along with pairs of partitions to be joined.
1157+ */
1158+ if (joinrel->nparts == -1)
1159+ {
1160+ PartitionScheme part_scheme = joinrel->part_scheme;
1161+ PartitionBoundInfo boundinfo = NULL;
1162+ int nparts = 0;
1163+
1164+ Assert(joinrel->boundinfo == NULL);
1165+ Assert(joinrel->part_rels == NULL);
1166+
1167+ /*
1168+ * See if the partition bounds for inputs are exactly the same, in
1169+ * which case we don't need to work hard: the join rel have the same
1170+ * partition bounds as inputs, and the partitions with the same
1171+ * cardinal positions form the pairs.
1172+ *
1173+ * Note: even in cases where one or both inputs have merged bounds, it
1174+ * would be possible for both the bounds to be exactly the same, but
1175+ * it seems unlikely to be worth the cycles to check.
1176+ */
1177+ if (!rel1->partbounds_merged &&
1178+ !rel2->partbounds_merged &&
1179+ rel1->nparts == rel2->nparts &&
1180+ partition_bounds_equal(part_scheme->partnatts,
1181+ part_scheme->parttyplen,
1182+ part_scheme->parttypbyval,
1183+ rel1->boundinfo, rel2->boundinfo))
1184+ {
1185+ boundinfo = rel1->boundinfo;
1186+ nparts = rel1->nparts;
1187+ }
1188+ else
1189+ {
1190+ /* Try merging the partition bounds for inputs. */
1191+ boundinfo = partition_bounds_merge(part_scheme->partnatts,
1192+ part_scheme->partsupfunc,
1193+ part_scheme->partcollation,
1194+ rel1, rel2,
1195+ parent_sjinfo->jointype,
1196+ parts1, parts2);
1197+ if (boundinfo == NULL)
1198+ {
1199+ joinrel->nparts = 0;
1200+ return;
1201+ }
1202+ nparts = list_length(*parts1);
1203+ joinrel->partbounds_merged = true;
1204+ }
1205+
1206+ Assert(nparts > 0);
1207+ joinrel->boundinfo = boundinfo;
1208+ joinrel->nparts = nparts;
1209+ joinrel->part_rels =
1210+ (RelOptInfo **) palloc0(sizeof(RelOptInfo *) * nparts);
1211+ }
1212+ else
1213+ {
1214+ Assert(joinrel->nparts > 0);
1215+ Assert(joinrel->boundinfo);
1216+ Assert(joinrel->part_rels);
1217+
1218+ /*
1219+ * If the join rel's partbounds_merged flag is true, it means inputs
1220+ * are not guaranteed to have the same partition bounds, therefore we
1221+ * can't assume that the partitions at the same cardinal positions
1222+ * form the pairs; let get_matching_part_pairs() generate the pairs.
1223+ * Otherwise, nothing to do since we can assume that.
1224+ */
1225+ if (joinrel->partbounds_merged)
1226+ {
1227+ get_matching_part_pairs(root, joinrel, rel1, rel2,
1228+ parts1, parts2);
1229+ Assert(list_length(*parts1) == joinrel->nparts);
1230+ Assert(list_length(*parts2) == joinrel->nparts);
1231+ }
1232+ }
1233+}
1234+
1235+
1236+/*
10281237 * Assess whether join between given two partitioned relations can be broken
10291238 * down into joins between matching partitions; a technique called
10301239 * "partitionwise join"
@@ -1051,25 +1260,29 @@ try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2,
10511260 {
10521261 bool rel1_is_simple = IS_SIMPLE_REL(rel1);
10531262 bool rel2_is_simple = IS_SIMPLE_REL(rel2);
1054- int nparts;
1263+ List *parts1 = NIL;
1264+ List *parts2 = NIL;
1265+ ListCell *lcr1 = NULL;
1266+ ListCell *lcr2 = NULL;
10551267 int cnt_parts;
10561268
10571269 /* Guard against stack overflow due to overly deep partition hierarchy. */
10581270 check_stack_depth();
10591271
10601272 /* Nothing to do, if the join relation is not partitioned. */
1061- if (!IS_PARTITIONED_REL(joinrel))
1273+ if (joinrel->part_scheme == NULL || joinrel->nparts == 0)
10621274 return;
10631275
10641276 /* The join relation should have consider_partitionwise_join set. */
10651277 Assert(joinrel->consider_partitionwise_join);
10661278
10671279 /*
1068- * Since this join relation is partitioned, all the base relations
1069- * participating in this join must be partitioned and so are all the
1070- * intermediate join relations.
1280+ * We can not perform partitionwise join if either of the joining
1281+ * relations is not partitioned.
10711282 */
1072- Assert(IS_PARTITIONED_REL(rel1) && IS_PARTITIONED_REL(rel2));
1283+ if (!IS_PARTITIONED_REL(rel1) || !IS_PARTITIONED_REL(rel2))
1284+ return;
1285+
10731286 Assert(REL_HAS_ALL_PART_PROPS(rel1) && REL_HAS_ALL_PART_PROPS(rel2));
10741287
10751288 /* The joining relations should have consider_partitionwise_join set. */
@@ -1083,35 +1296,28 @@ try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2,
10831296 Assert(joinrel->part_scheme == rel1->part_scheme &&
10841297 joinrel->part_scheme == rel2->part_scheme);
10851298
1086- /*
1087- * Since we allow partitionwise join only when the partition bounds of the
1088- * joining relations exactly match, the partition bounds of the join
1089- * should match those of the joining relations.
1090- */
1091- Assert(partition_bounds_equal(joinrel->part_scheme->partnatts,
1092- joinrel->part_scheme->parttyplen,
1093- joinrel->part_scheme->parttypbyval,
1094- joinrel->boundinfo, rel1->boundinfo));
1095- Assert(partition_bounds_equal(joinrel->part_scheme->partnatts,
1096- joinrel->part_scheme->parttyplen,
1097- joinrel->part_scheme->parttypbyval,
1098- joinrel->boundinfo, rel2->boundinfo));
1299+ Assert(!(joinrel->partbounds_merged && (joinrel->nparts <= 0)));
1300+
1301+ compute_partition_bounds(root, rel1, rel2, joinrel, parent_sjinfo,
1302+ &parts1, &parts2);
10991303
1100- nparts = joinrel->nparts;
1304+ if (joinrel->partbounds_merged)
1305+ {
1306+ lcr1 = list_head(parts1);
1307+ lcr2 = list_head(parts2);
1308+ }
11011309
11021310 /*
11031311 * Create child-join relations for this partitioned join, if those don't
11041312 * exist. Add paths to child-joins for a pair of child relations
11051313 * corresponding to the given pair of parent relations.
11061314 */
1107- for (cnt_parts = 0; cnt_parts < nparts; cnt_parts++)
1315+ for (cnt_parts = 0; cnt_parts < joinrel->nparts; cnt_parts++)
11081316 {
1109- RelOptInfo *child_rel1 = rel1->part_rels[cnt_parts];
1110- RelOptInfo *child_rel2 = rel2->part_rels[cnt_parts];
1111- bool rel1_empty = (child_rel1 == NULL ||
1112- IS_DUMMY_REL(child_rel1));
1113- bool rel2_empty = (child_rel2 == NULL ||
1114- IS_DUMMY_REL(child_rel2));
1317+ RelOptInfo *child_rel1;
1318+ RelOptInfo *child_rel2;
1319+ bool rel1_empty;
1320+ bool rel2_empty;
11151321 SpecialJoinInfo *child_sjinfo;
11161322 List *child_restrictlist;
11171323 RelOptInfo *child_joinrel;
@@ -1119,6 +1325,22 @@ try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2,
11191325 AppendRelInfo **appinfos;
11201326 int nappinfos;
11211327
1328+ if (joinrel->partbounds_merged)
1329+ {
1330+ child_rel1 = lfirst_node(RelOptInfo, lcr1);
1331+ child_rel2 = lfirst_node(RelOptInfo, lcr2);
1332+ lcr1 = lnext(parts1, lcr1);
1333+ lcr2 = lnext(parts2, lcr2);
1334+ }
1335+ else
1336+ {
1337+ child_rel1 = rel1->part_rels[cnt_parts];
1338+ child_rel2 = rel2->part_rels[cnt_parts];
1339+ }
1340+
1341+ rel1_empty = (child_rel1 == NULL || IS_DUMMY_REL(child_rel1));
1342+ rel2_empty = (child_rel2 == NULL || IS_DUMMY_REL(child_rel2));
1343+
11221344 /*
11231345 * Check for cases where we can prove that this segment of the join
11241346 * returns no rows, due to one or both inputs being empty (including
@@ -1216,6 +1438,8 @@ try_partitionwise_join(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2,
12161438 child_sjinfo,
12171439 child_sjinfo->jointype);
12181440 joinrel->part_rels[cnt_parts] = child_joinrel;
1441+ joinrel->all_partrels = bms_add_members(joinrel->all_partrels,
1442+ child_joinrel->relids);
12191443 }
12201444
12211445 Assert(bms_equal(child_joinrel->relids, child_joinrelids));
--- a/expected/init.out
+++ b/expected/init.out
@@ -194,6 +194,7 @@ SELECT * FROM settings;
194194 enable_gathermerge | on | Query Tuning / Planner Method Configuration
195195 enable_hashagg | on | Query Tuning / Planner Method Configuration
196196 enable_hashjoin | on | Query Tuning / Planner Method Configuration
197+ enable_incremental_sort | on | Query Tuning / Planner Method Configuration
197198 enable_indexonlyscan | on | Query Tuning / Planner Method Configuration
198199 enable_indexscan | on | Query Tuning / Planner Method Configuration
199200 enable_material | on | Query Tuning / Planner Method Configuration
@@ -207,6 +208,6 @@ SELECT * FROM settings;
207208 enable_seqscan | on | Query Tuning / Planner Method Configuration
208209 enable_sort | on | Query Tuning / Planner Method Configuration
209210 enable_tidscan | on | Query Tuning / Planner Method Configuration
210-(46 rows)
211+(47 rows)
211212
212213 ANALYZE;
--- a/expected/pg_hint_plan.out
+++ b/expected/pg_hint_plan.out
@@ -3069,23 +3069,23 @@ EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid =
30693069 QUERY PLAN
30703070 -----------------------------------------------------------------------
30713071 Append
3072- -> Seq Scan on p1
3072+ -> Seq Scan on p1 p1_1
30733073 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3074- -> Seq Scan on p1_c1
3074+ -> Seq Scan on p1_c1 p1_2
30753075 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3076- -> Seq Scan on p1_c2
3076+ -> Seq Scan on p1_c2 p1_3
30773077 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3078- -> Seq Scan on p1_c3
3078+ -> Seq Scan on p1_c3 p1_4
30793079 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3080- -> Seq Scan on p1_c4
3080+ -> Seq Scan on p1_c4 p1_5
30813081 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3082- -> Seq Scan on p1_c1_c1
3082+ -> Seq Scan on p1_c1_c1 p1_6
30833083 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3084- -> Seq Scan on p1_c1_c2
3084+ -> Seq Scan on p1_c1_c2 p1_7
30853085 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3086- -> Seq Scan on p1_c3_c1
3086+ -> Seq Scan on p1_c3_c1 p1_8
30873087 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3088- -> Seq Scan on p1_c3_c2
3088+ -> Seq Scan on p1_c3_c2 p1_9
30893089 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
30903090 (19 rows)
30913091
@@ -3094,13 +3094,13 @@ EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid =
30943094 QUERY PLAN
30953095 -----------------------------------------------------------------------
30963096 Append
3097- -> Seq Scan on p1
3097+ -> Seq Scan on p1 p1_1
30983098 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3099- -> Seq Scan on p1_c1
3099+ -> Seq Scan on p1_c1 p1_2
31003100 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3101- -> Seq Scan on p1_c1_c1
3101+ -> Seq Scan on p1_c1_c1 p1_3
31023102 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3103- -> Seq Scan on p1_c1_c2
3103+ -> Seq Scan on p1_c1_c2 p1_4
31043104 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
31053105 (9 rows)
31063106
@@ -3117,23 +3117,23 @@ error hint:
31173117 QUERY PLAN
31183118 -----------------------------------------------------------------------
31193119 Append
3120- -> Seq Scan on p1
3120+ -> Seq Scan on p1 p1_1
31213121 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3122- -> Seq Scan on p1_c1
3122+ -> Seq Scan on p1_c1 p1_2
31233123 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3124- -> Seq Scan on p1_c2
3124+ -> Seq Scan on p1_c2 p1_3
31253125 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3126- -> Seq Scan on p1_c3
3126+ -> Seq Scan on p1_c3 p1_4
31273127 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3128- -> Seq Scan on p1_c4
3128+ -> Seq Scan on p1_c4 p1_5
31293129 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3130- -> Seq Scan on p1_c1_c1
3130+ -> Seq Scan on p1_c1_c1 p1_6
31313131 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3132- -> Seq Scan on p1_c1_c2
3132+ -> Seq Scan on p1_c1_c2 p1_7
31333133 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3134- -> Seq Scan on p1_c3_c1
3134+ -> Seq Scan on p1_c3_c1 p1_8
31353135 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3136- -> Seq Scan on p1_c3_c2
3136+ -> Seq Scan on p1_c3_c2 p1_9
31373137 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
31383138 (19 rows)
31393139
@@ -3146,34 +3146,34 @@ not used hint:
31463146 duplication hint:
31473147 error hint:
31483148
3149- QUERY PLAN
3150---------------------------------------------------
3149+ QUERY PLAN
3150+-------------------------------------------------------
31513151 Append
3152- -> Index Scan using p1_pkey on p1
3152+ -> Index Scan using p1_pkey on p1 p1_1
31533153 Index Cond: ((id >= 50) AND (id <= 51))
31543154 Filter: (ctid = '(1,1)'::tid)
3155- -> Index Scan using p1_c1_pkey on p1_c1
3155+ -> Index Scan using p1_c1_pkey on p1_c1 p1_2
31563156 Index Cond: ((id >= 50) AND (id <= 51))
31573157 Filter: (ctid = '(1,1)'::tid)
3158- -> Index Scan using p1_c2_pkey on p1_c2
3158+ -> Index Scan using p1_c2_pkey on p1_c2 p1_3
31593159 Index Cond: ((id >= 50) AND (id <= 51))
31603160 Filter: (ctid = '(1,1)'::tid)
3161- -> Index Scan using p1_c3_pkey on p1_c3
3161+ -> Index Scan using p1_c3_pkey on p1_c3 p1_4
31623162 Index Cond: ((id >= 50) AND (id <= 51))
31633163 Filter: (ctid = '(1,1)'::tid)
3164- -> Index Scan using p1_c4_pkey on p1_c4
3164+ -> Index Scan using p1_c4_pkey on p1_c4 p1_5
31653165 Index Cond: ((id >= 50) AND (id <= 51))
31663166 Filter: (ctid = '(1,1)'::tid)
3167- -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3167+ -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_6
31683168 Index Cond: ((id >= 50) AND (id <= 51))
31693169 Filter: (ctid = '(1,1)'::tid)
3170- -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3170+ -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_7
31713171 Index Cond: ((id >= 50) AND (id <= 51))
31723172 Filter: (ctid = '(1,1)'::tid)
3173- -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
3173+ -> Index Scan using p1_c3_c1_pkey on p1_c3_c1 p1_8
31743174 Index Cond: ((id >= 50) AND (id <= 51))
31753175 Filter: (ctid = '(1,1)'::tid)
3176- -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
3176+ -> Index Scan using p1_c3_c2_pkey on p1_c3_c2 p1_9
31773177 Index Cond: ((id >= 50) AND (id <= 51))
31783178 Filter: (ctid = '(1,1)'::tid)
31793179 (28 rows)
@@ -3190,47 +3190,47 @@ error hint:
31903190 QUERY PLAN
31913191 -------------------------------------------------------
31923192 Append
3193- -> Bitmap Heap Scan on p1
3193+ -> Bitmap Heap Scan on p1 p1_1
31943194 Recheck Cond: ((id >= 50) AND (id <= 51))
31953195 Filter: (ctid = '(1,1)'::tid)
31963196 -> Bitmap Index Scan on p1_pkey
31973197 Index Cond: ((id >= 50) AND (id <= 51))
3198- -> Bitmap Heap Scan on p1_c1
3198+ -> Bitmap Heap Scan on p1_c1 p1_2
31993199 Recheck Cond: ((id >= 50) AND (id <= 51))
32003200 Filter: (ctid = '(1,1)'::tid)
32013201 -> Bitmap Index Scan on p1_c1_pkey
32023202 Index Cond: ((id >= 50) AND (id <= 51))
3203- -> Bitmap Heap Scan on p1_c2
3203+ -> Bitmap Heap Scan on p1_c2 p1_3
32043204 Recheck Cond: ((id >= 50) AND (id <= 51))
32053205 Filter: (ctid = '(1,1)'::tid)
32063206 -> Bitmap Index Scan on p1_c2_pkey
32073207 Index Cond: ((id >= 50) AND (id <= 51))
3208- -> Bitmap Heap Scan on p1_c3
3208+ -> Bitmap Heap Scan on p1_c3 p1_4
32093209 Recheck Cond: ((id >= 50) AND (id <= 51))
32103210 Filter: (ctid = '(1,1)'::tid)
32113211 -> Bitmap Index Scan on p1_c3_pkey
32123212 Index Cond: ((id >= 50) AND (id <= 51))
3213- -> Bitmap Heap Scan on p1_c4
3213+ -> Bitmap Heap Scan on p1_c4 p1_5
32143214 Recheck Cond: ((id >= 50) AND (id <= 51))
32153215 Filter: (ctid = '(1,1)'::tid)
32163216 -> Bitmap Index Scan on p1_c4_pkey
32173217 Index Cond: ((id >= 50) AND (id <= 51))
3218- -> Bitmap Heap Scan on p1_c1_c1
3218+ -> Bitmap Heap Scan on p1_c1_c1 p1_6
32193219 Recheck Cond: ((id >= 50) AND (id <= 51))
32203220 Filter: (ctid = '(1,1)'::tid)
32213221 -> Bitmap Index Scan on p1_c1_c1_pkey
32223222 Index Cond: ((id >= 50) AND (id <= 51))
3223- -> Bitmap Heap Scan on p1_c1_c2
3223+ -> Bitmap Heap Scan on p1_c1_c2 p1_7
32243224 Recheck Cond: ((id >= 50) AND (id <= 51))
32253225 Filter: (ctid = '(1,1)'::tid)
32263226 -> Bitmap Index Scan on p1_c1_c2_pkey
32273227 Index Cond: ((id >= 50) AND (id <= 51))
3228- -> Bitmap Heap Scan on p1_c3_c1
3228+ -> Bitmap Heap Scan on p1_c3_c1 p1_8
32293229 Recheck Cond: ((id >= 50) AND (id <= 51))
32303230 Filter: (ctid = '(1,1)'::tid)
32313231 -> Bitmap Index Scan on p1_c3_c1_pkey
32323232 Index Cond: ((id >= 50) AND (id <= 51))
3233- -> Bitmap Heap Scan on p1_c3_c2
3233+ -> Bitmap Heap Scan on p1_c3_c2 p1_9
32343234 Recheck Cond: ((id >= 50) AND (id <= 51))
32353235 Filter: (ctid = '(1,1)'::tid)
32363236 -> Bitmap Index Scan on p1_c3_c2_pkey
@@ -3249,31 +3249,31 @@ error hint:
32493249 QUERY PLAN
32503250 ---------------------------------------------
32513251 Append
3252- -> Tid Scan on p1
3252+ -> Tid Scan on p1 p1_1
32533253 TID Cond: (ctid = '(1,1)'::tid)
32543254 Filter: ((id >= 50) AND (id <= 51))
3255- -> Tid Scan on p1_c1
3255+ -> Tid Scan on p1_c1 p1_2
32563256 TID Cond: (ctid = '(1,1)'::tid)
32573257 Filter: ((id >= 50) AND (id <= 51))
3258- -> Tid Scan on p1_c2
3258+ -> Tid Scan on p1_c2 p1_3
32593259 TID Cond: (ctid = '(1,1)'::tid)
32603260 Filter: ((id >= 50) AND (id <= 51))
3261- -> Tid Scan on p1_c3
3261+ -> Tid Scan on p1_c3 p1_4
32623262 TID Cond: (ctid = '(1,1)'::tid)
32633263 Filter: ((id >= 50) AND (id <= 51))
3264- -> Tid Scan on p1_c4
3264+ -> Tid Scan on p1_c4 p1_5
32653265 TID Cond: (ctid = '(1,1)'::tid)
32663266 Filter: ((id >= 50) AND (id <= 51))
3267- -> Tid Scan on p1_c1_c1
3267+ -> Tid Scan on p1_c1_c1 p1_6
32683268 TID Cond: (ctid = '(1,1)'::tid)
32693269 Filter: ((id >= 50) AND (id <= 51))
3270- -> Tid Scan on p1_c1_c2
3270+ -> Tid Scan on p1_c1_c2 p1_7
32713271 TID Cond: (ctid = '(1,1)'::tid)
32723272 Filter: ((id >= 50) AND (id <= 51))
3273- -> Tid Scan on p1_c3_c1
3273+ -> Tid Scan on p1_c3_c1 p1_8
32743274 TID Cond: (ctid = '(1,1)'::tid)
32753275 Filter: ((id >= 50) AND (id <= 51))
3276- -> Tid Scan on p1_c3_c2
3276+ -> Tid Scan on p1_c3_c2 p1_9
32773277 TID Cond: (ctid = '(1,1)'::tid)
32783278 Filter: ((id >= 50) AND (id <= 51))
32793279 (28 rows)
@@ -3291,13 +3291,13 @@ error hint:
32913291 QUERY PLAN
32923292 -----------------------------------------------------------------------
32933293 Append
3294- -> Seq Scan on p1
3294+ -> Seq Scan on p1 p1_1
32953295 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3296- -> Seq Scan on p1_c1
3296+ -> Seq Scan on p1_c1 p1_2
32973297 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3298- -> Seq Scan on p1_c1_c1
3298+ -> Seq Scan on p1_c1_c1 p1_3
32993299 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3300- -> Seq Scan on p1_c1_c2
3300+ -> Seq Scan on p1_c1_c2 p1_4
33013301 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
33023302 (9 rows)
33033303
@@ -3310,19 +3310,19 @@ not used hint:
33103310 duplication hint:
33113311 error hint:
33123312
3313- QUERY PLAN
3314---------------------------------------------------
3313+ QUERY PLAN
3314+-------------------------------------------------------
33153315 Append
3316- -> Index Scan using p1_pkey on p1
3316+ -> Index Scan using p1_pkey on p1 p1_1
33173317 Index Cond: ((id >= 50) AND (id <= 51))
33183318 Filter: (ctid = '(1,1)'::tid)
3319- -> Index Scan using p1_c1_pkey on p1_c1
3319+ -> Index Scan using p1_c1_pkey on p1_c1 p1_2
33203320 Index Cond: ((id >= 50) AND (id <= 51))
33213321 Filter: (ctid = '(1,1)'::tid)
3322- -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3322+ -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_3
33233323 Index Cond: ((id >= 50) AND (id <= 51))
33243324 Filter: (ctid = '(1,1)'::tid)
3325- -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3325+ -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_4
33263326 Index Cond: ((id >= 50) AND (id <= 51))
33273327 Filter: (ctid = '(1,1)'::tid)
33283328 (13 rows)
@@ -3339,22 +3339,22 @@ error hint:
33393339 QUERY PLAN
33403340 -------------------------------------------------------
33413341 Append
3342- -> Bitmap Heap Scan on p1
3342+ -> Bitmap Heap Scan on p1 p1_1
33433343 Recheck Cond: ((id >= 50) AND (id <= 51))
33443344 Filter: (ctid = '(1,1)'::tid)
33453345 -> Bitmap Index Scan on p1_pkey
33463346 Index Cond: ((id >= 50) AND (id <= 51))
3347- -> Bitmap Heap Scan on p1_c1
3347+ -> Bitmap Heap Scan on p1_c1 p1_2
33483348 Recheck Cond: ((id >= 50) AND (id <= 51))
33493349 Filter: (ctid = '(1,1)'::tid)
33503350 -> Bitmap Index Scan on p1_c1_pkey
33513351 Index Cond: ((id >= 50) AND (id <= 51))
3352- -> Bitmap Heap Scan on p1_c1_c1
3352+ -> Bitmap Heap Scan on p1_c1_c1 p1_3
33533353 Recheck Cond: ((id >= 50) AND (id <= 51))
33543354 Filter: (ctid = '(1,1)'::tid)
33553355 -> Bitmap Index Scan on p1_c1_c1_pkey
33563356 Index Cond: ((id >= 50) AND (id <= 51))
3357- -> Bitmap Heap Scan on p1_c1_c2
3357+ -> Bitmap Heap Scan on p1_c1_c2 p1_4
33583358 Recheck Cond: ((id >= 50) AND (id <= 51))
33593359 Filter: (ctid = '(1,1)'::tid)
33603360 -> Bitmap Index Scan on p1_c1_c2_pkey
@@ -3373,16 +3373,16 @@ error hint:
33733373 QUERY PLAN
33743374 ---------------------------------------------
33753375 Append
3376- -> Tid Scan on p1
3376+ -> Tid Scan on p1 p1_1
33773377 TID Cond: (ctid = '(1,1)'::tid)
33783378 Filter: ((id >= 50) AND (id <= 51))
3379- -> Tid Scan on p1_c1
3379+ -> Tid Scan on p1_c1 p1_2
33803380 TID Cond: (ctid = '(1,1)'::tid)
33813381 Filter: ((id >= 50) AND (id <= 51))
3382- -> Tid Scan on p1_c1_c1
3382+ -> Tid Scan on p1_c1_c1 p1_3
33833383 TID Cond: (ctid = '(1,1)'::tid)
33843384 Filter: ((id >= 50) AND (id <= 51))
3385- -> Tid Scan on p1_c1_c2
3385+ -> Tid Scan on p1_c1_c2 p1_4
33863386 TID Cond: (ctid = '(1,1)'::tid)
33873387 Filter: ((id >= 50) AND (id <= 51))
33883388 (13 rows)
@@ -3396,23 +3396,23 @@ EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND
33963396 -> Sort
33973397 Sort Key: p1.id
33983398 -> Append
3399- -> Seq Scan on p1
3399+ -> Seq Scan on p1 p1_1
34003400 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3401- -> Seq Scan on p1_c1
3401+ -> Seq Scan on p1_c1 p1_2
34023402 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3403- -> Seq Scan on p1_c2
3403+ -> Seq Scan on p1_c2 p1_3
34043404 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3405- -> Seq Scan on p1_c3
3405+ -> Seq Scan on p1_c3 p1_4
34063406 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3407- -> Seq Scan on p1_c4
3407+ -> Seq Scan on p1_c4 p1_5
34083408 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3409- -> Seq Scan on p1_c1_c1
3409+ -> Seq Scan on p1_c1_c1 p1_6
34103410 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3411- -> Seq Scan on p1_c1_c2
3411+ -> Seq Scan on p1_c1_c2 p1_7
34123412 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3413- -> Seq Scan on p1_c3_c1
3413+ -> Seq Scan on p1_c3_c1 p1_8
34143414 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3415- -> Seq Scan on p1_c3_c2
3415+ -> Seq Scan on p1_c3_c2 p1_9
34163416 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
34173417 -> Index Scan using t1_pkey on t1
34183418 Index Cond: (id < 10)
@@ -3427,13 +3427,13 @@ EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND
34273427 -> Sort
34283428 Sort Key: p1.id
34293429 -> Append
3430- -> Seq Scan on p1
3430+ -> Seq Scan on p1 p1_1
34313431 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3432- -> Seq Scan on p1_c1
3432+ -> Seq Scan on p1_c1 p1_2
34333433 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3434- -> Seq Scan on p1_c1_c1
3434+ -> Seq Scan on p1_c1_c1 p1_3
34353435 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3436- -> Seq Scan on p1_c1_c2
3436+ -> Seq Scan on p1_c1_c2 p1_4
34373437 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
34383438 -> Index Scan using t1_pkey on t1
34393439 Index Cond: (id < 10)
@@ -3456,23 +3456,23 @@ error hint:
34563456 -> Sort
34573457 Sort Key: p1.id
34583458 -> Append
3459- -> Seq Scan on p1
3459+ -> Seq Scan on p1 p1_1
34603460 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3461- -> Seq Scan on p1_c1
3461+ -> Seq Scan on p1_c1 p1_2
34623462 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3463- -> Seq Scan on p1_c2
3463+ -> Seq Scan on p1_c2 p1_3
34643464 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3465- -> Seq Scan on p1_c3
3465+ -> Seq Scan on p1_c3 p1_4
34663466 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3467- -> Seq Scan on p1_c4
3467+ -> Seq Scan on p1_c4 p1_5
34683468 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3469- -> Seq Scan on p1_c1_c1
3469+ -> Seq Scan on p1_c1_c1 p1_6
34703470 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3471- -> Seq Scan on p1_c1_c2
3471+ -> Seq Scan on p1_c1_c2 p1_7
34723472 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3473- -> Seq Scan on p1_c3_c1
3473+ -> Seq Scan on p1_c3_c1 p1_8
34743474 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3475- -> Seq Scan on p1_c3_c2
3475+ -> Seq Scan on p1_c3_c2 p1_9
34763476 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
34773477 -> Index Scan using t1_pkey on t1
34783478 Index Cond: (id < 10)
@@ -3487,37 +3487,37 @@ not used hint:
34873487 duplication hint:
34883488 error hint:
34893489
3490- QUERY PLAN
3491---------------------------------------------------------
3490+ QUERY PLAN
3491+-------------------------------------------------------------
34923492 Merge Join
34933493 Merge Cond: (p1.id = t1.id)
34943494 -> Merge Append
34953495 Sort Key: p1.id
3496- -> Index Scan using p1_pkey on p1
3496+ -> Index Scan using p1_pkey on p1 p1_1
34973497 Index Cond: ((id >= 50) AND (id <= 51))
34983498 Filter: (ctid = '(1,1)'::tid)
3499- -> Index Scan using p1_c1_pkey on p1_c1
3499+ -> Index Scan using p1_c1_pkey on p1_c1 p1_2
35003500 Index Cond: ((id >= 50) AND (id <= 51))
35013501 Filter: (ctid = '(1,1)'::tid)
3502- -> Index Scan using p1_c2_pkey on p1_c2
3502+ -> Index Scan using p1_c2_pkey on p1_c2 p1_3
35033503 Index Cond: ((id >= 50) AND (id <= 51))
35043504 Filter: (ctid = '(1,1)'::tid)
3505- -> Index Scan using p1_c3_pkey on p1_c3
3505+ -> Index Scan using p1_c3_pkey on p1_c3 p1_4
35063506 Index Cond: ((id >= 50) AND (id <= 51))
35073507 Filter: (ctid = '(1,1)'::tid)
3508- -> Index Scan using p1_c4_pkey on p1_c4
3508+ -> Index Scan using p1_c4_pkey on p1_c4 p1_5
35093509 Index Cond: ((id >= 50) AND (id <= 51))
35103510 Filter: (ctid = '(1,1)'::tid)
3511- -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3511+ -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_6
35123512 Index Cond: ((id >= 50) AND (id <= 51))
35133513 Filter: (ctid = '(1,1)'::tid)
3514- -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3514+ -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_7
35153515 Index Cond: ((id >= 50) AND (id <= 51))
35163516 Filter: (ctid = '(1,1)'::tid)
3517- -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
3517+ -> Index Scan using p1_c3_c1_pkey on p1_c3_c1 p1_8
35183518 Index Cond: ((id >= 50) AND (id <= 51))
35193519 Filter: (ctid = '(1,1)'::tid)
3520- -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
3520+ -> Index Scan using p1_c3_c2_pkey on p1_c3_c2 p1_9
35213521 Index Cond: ((id >= 50) AND (id <= 51))
35223522 Filter: (ctid = '(1,1)'::tid)
35233523 -> Index Scan using t1_pkey on t1
@@ -3540,47 +3540,47 @@ error hint:
35403540 -> Sort
35413541 Sort Key: p1.id
35423542 -> Append
3543- -> Bitmap Heap Scan on p1
3543+ -> Bitmap Heap Scan on p1 p1_1
35443544 Recheck Cond: ((id >= 50) AND (id <= 51))
35453545 Filter: (ctid = '(1,1)'::tid)
35463546 -> Bitmap Index Scan on p1_pkey
35473547 Index Cond: ((id >= 50) AND (id <= 51))
3548- -> Bitmap Heap Scan on p1_c1
3548+ -> Bitmap Heap Scan on p1_c1 p1_2
35493549 Recheck Cond: ((id >= 50) AND (id <= 51))
35503550 Filter: (ctid = '(1,1)'::tid)
35513551 -> Bitmap Index Scan on p1_c1_pkey
35523552 Index Cond: ((id >= 50) AND (id <= 51))
3553- -> Bitmap Heap Scan on p1_c2
3553+ -> Bitmap Heap Scan on p1_c2 p1_3
35543554 Recheck Cond: ((id >= 50) AND (id <= 51))
35553555 Filter: (ctid = '(1,1)'::tid)
35563556 -> Bitmap Index Scan on p1_c2_pkey
35573557 Index Cond: ((id >= 50) AND (id <= 51))
3558- -> Bitmap Heap Scan on p1_c3
3558+ -> Bitmap Heap Scan on p1_c3 p1_4
35593559 Recheck Cond: ((id >= 50) AND (id <= 51))
35603560 Filter: (ctid = '(1,1)'::tid)
35613561 -> Bitmap Index Scan on p1_c3_pkey
35623562 Index Cond: ((id >= 50) AND (id <= 51))
3563- -> Bitmap Heap Scan on p1_c4
3563+ -> Bitmap Heap Scan on p1_c4 p1_5
35643564 Recheck Cond: ((id >= 50) AND (id <= 51))
35653565 Filter: (ctid = '(1,1)'::tid)
35663566 -> Bitmap Index Scan on p1_c4_pkey
35673567 Index Cond: ((id >= 50) AND (id <= 51))
3568- -> Bitmap Heap Scan on p1_c1_c1
3568+ -> Bitmap Heap Scan on p1_c1_c1 p1_6
35693569 Recheck Cond: ((id >= 50) AND (id <= 51))
35703570 Filter: (ctid = '(1,1)'::tid)
35713571 -> Bitmap Index Scan on p1_c1_c1_pkey
35723572 Index Cond: ((id >= 50) AND (id <= 51))
3573- -> Bitmap Heap Scan on p1_c1_c2
3573+ -> Bitmap Heap Scan on p1_c1_c2 p1_7
35743574 Recheck Cond: ((id >= 50) AND (id <= 51))
35753575 Filter: (ctid = '(1,1)'::tid)
35763576 -> Bitmap Index Scan on p1_c1_c2_pkey
35773577 Index Cond: ((id >= 50) AND (id <= 51))
3578- -> Bitmap Heap Scan on p1_c3_c1
3578+ -> Bitmap Heap Scan on p1_c3_c1 p1_8
35793579 Recheck Cond: ((id >= 50) AND (id <= 51))
35803580 Filter: (ctid = '(1,1)'::tid)
35813581 -> Bitmap Index Scan on p1_c3_c1_pkey
35823582 Index Cond: ((id >= 50) AND (id <= 51))
3583- -> Bitmap Heap Scan on p1_c3_c2
3583+ -> Bitmap Heap Scan on p1_c3_c2 p1_9
35843584 Recheck Cond: ((id >= 50) AND (id <= 51))
35853585 Filter: (ctid = '(1,1)'::tid)
35863586 -> Bitmap Index Scan on p1_c3_c2_pkey
@@ -3605,31 +3605,31 @@ error hint:
36053605 -> Sort
36063606 Sort Key: p1.id
36073607 -> Append
3608- -> Tid Scan on p1
3608+ -> Tid Scan on p1 p1_1
36093609 TID Cond: (ctid = '(1,1)'::tid)
36103610 Filter: ((id >= 50) AND (id <= 51))
3611- -> Tid Scan on p1_c1
3611+ -> Tid Scan on p1_c1 p1_2
36123612 TID Cond: (ctid = '(1,1)'::tid)
36133613 Filter: ((id >= 50) AND (id <= 51))
3614- -> Tid Scan on p1_c2
3614+ -> Tid Scan on p1_c2 p1_3
36153615 TID Cond: (ctid = '(1,1)'::tid)
36163616 Filter: ((id >= 50) AND (id <= 51))
3617- -> Tid Scan on p1_c3
3617+ -> Tid Scan on p1_c3 p1_4
36183618 TID Cond: (ctid = '(1,1)'::tid)
36193619 Filter: ((id >= 50) AND (id <= 51))
3620- -> Tid Scan on p1_c4
3620+ -> Tid Scan on p1_c4 p1_5
36213621 TID Cond: (ctid = '(1,1)'::tid)
36223622 Filter: ((id >= 50) AND (id <= 51))
3623- -> Tid Scan on p1_c1_c1
3623+ -> Tid Scan on p1_c1_c1 p1_6
36243624 TID Cond: (ctid = '(1,1)'::tid)
36253625 Filter: ((id >= 50) AND (id <= 51))
3626- -> Tid Scan on p1_c1_c2
3626+ -> Tid Scan on p1_c1_c2 p1_7
36273627 TID Cond: (ctid = '(1,1)'::tid)
36283628 Filter: ((id >= 50) AND (id <= 51))
3629- -> Tid Scan on p1_c3_c1
3629+ -> Tid Scan on p1_c3_c1 p1_8
36303630 TID Cond: (ctid = '(1,1)'::tid)
36313631 Filter: ((id >= 50) AND (id <= 51))
3632- -> Tid Scan on p1_c3_c2
3632+ -> Tid Scan on p1_c3_c2 p1_9
36333633 TID Cond: (ctid = '(1,1)'::tid)
36343634 Filter: ((id >= 50) AND (id <= 51))
36353635 -> Index Scan using t1_pkey on t1
@@ -3650,23 +3650,23 @@ error hint:
36503650 Nested Loop
36513651 Join Filter: (p1.id = t1.id)
36523652 -> Append
3653- -> Seq Scan on p1
3653+ -> Seq Scan on p1 p1_1
36543654 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3655- -> Seq Scan on p1_c1
3655+ -> Seq Scan on p1_c1 p1_2
36563656 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3657- -> Seq Scan on p1_c2
3657+ -> Seq Scan on p1_c2 p1_3
36583658 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3659- -> Seq Scan on p1_c3
3659+ -> Seq Scan on p1_c3 p1_4
36603660 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3661- -> Seq Scan on p1_c4
3661+ -> Seq Scan on p1_c4 p1_5
36623662 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3663- -> Seq Scan on p1_c1_c1
3663+ -> Seq Scan on p1_c1_c1 p1_6
36643664 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3665- -> Seq Scan on p1_c1_c2
3665+ -> Seq Scan on p1_c1_c2 p1_7
36663666 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3667- -> Seq Scan on p1_c3_c1
3667+ -> Seq Scan on p1_c3_c1 p1_8
36683668 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3669- -> Seq Scan on p1_c3_c2
3669+ -> Seq Scan on p1_c3_c2 p1_9
36703670 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
36713671 -> Materialize
36723672 -> Index Scan using t1_pkey on t1
@@ -3689,23 +3689,23 @@ error hint:
36893689 -> Sort
36903690 Sort Key: p1.id
36913691 -> Append
3692- -> Seq Scan on p1
3692+ -> Seq Scan on p1 p1_1
36933693 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3694- -> Seq Scan on p1_c1
3694+ -> Seq Scan on p1_c1 p1_2
36953695 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3696- -> Seq Scan on p1_c2
3696+ -> Seq Scan on p1_c2 p1_3
36973697 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3698- -> Seq Scan on p1_c3
3698+ -> Seq Scan on p1_c3 p1_4
36993699 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3700- -> Seq Scan on p1_c4
3700+ -> Seq Scan on p1_c4 p1_5
37013701 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3702- -> Seq Scan on p1_c1_c1
3702+ -> Seq Scan on p1_c1_c1 p1_6
37033703 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3704- -> Seq Scan on p1_c1_c2
3704+ -> Seq Scan on p1_c1_c2 p1_7
37053705 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3706- -> Seq Scan on p1_c3_c1
3706+ -> Seq Scan on p1_c3_c1 p1_8
37073707 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3708- -> Seq Scan on p1_c3_c2
3708+ -> Seq Scan on p1_c3_c2 p1_9
37093709 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
37103710 -> Index Scan using t1_pkey on t1
37113711 Index Cond: (id < 10)
@@ -3725,23 +3725,23 @@ error hint:
37253725 Hash Join
37263726 Hash Cond: (p1.id = t1.id)
37273727 -> Append
3728- -> Seq Scan on p1
3728+ -> Seq Scan on p1 p1_1
37293729 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3730- -> Seq Scan on p1_c1
3730+ -> Seq Scan on p1_c1 p1_2
37313731 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3732- -> Seq Scan on p1_c2
3732+ -> Seq Scan on p1_c2 p1_3
37333733 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3734- -> Seq Scan on p1_c3
3734+ -> Seq Scan on p1_c3 p1_4
37353735 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3736- -> Seq Scan on p1_c4
3736+ -> Seq Scan on p1_c4 p1_5
37373737 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3738- -> Seq Scan on p1_c1_c1
3738+ -> Seq Scan on p1_c1_c1 p1_6
37393739 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3740- -> Seq Scan on p1_c1_c2
3740+ -> Seq Scan on p1_c1_c2 p1_7
37413741 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3742- -> Seq Scan on p1_c3_c1
3742+ -> Seq Scan on p1_c3_c1 p1_8
37433743 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3744- -> Seq Scan on p1_c3_c2
3744+ -> Seq Scan on p1_c3_c2 p1_9
37453745 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
37463746 -> Hash
37473747 -> Index Scan using t1_pkey on t1
@@ -3765,13 +3765,13 @@ error hint:
37653765 -> Sort
37663766 Sort Key: p1.id
37673767 -> Append
3768- -> Seq Scan on p1
3768+ -> Seq Scan on p1 p1_1
37693769 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3770- -> Seq Scan on p1_c1
3770+ -> Seq Scan on p1_c1 p1_2
37713771 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3772- -> Seq Scan on p1_c1_c1
3772+ -> Seq Scan on p1_c1_c1 p1_3
37733773 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3774- -> Seq Scan on p1_c1_c2
3774+ -> Seq Scan on p1_c1_c2 p1_4
37753775 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
37763776 -> Index Scan using t1_pkey on t1
37773777 Index Cond: (id < 10)
@@ -3786,22 +3786,22 @@ not used hint:
37863786 duplication hint:
37873787 error hint:
37883788
3789- QUERY PLAN
3790---------------------------------------------------------
3789+ QUERY PLAN
3790+-------------------------------------------------------------
37913791 Merge Join
37923792 Merge Cond: (p1.id = t1.id)
37933793 -> Merge Append
37943794 Sort Key: p1.id
3795- -> Index Scan using p1_pkey on p1
3795+ -> Index Scan using p1_pkey on p1 p1_1
37963796 Index Cond: ((id >= 50) AND (id <= 51))
37973797 Filter: (ctid = '(1,1)'::tid)
3798- -> Index Scan using p1_c1_pkey on p1_c1
3798+ -> Index Scan using p1_c1_pkey on p1_c1 p1_2
37993799 Index Cond: ((id >= 50) AND (id <= 51))
38003800 Filter: (ctid = '(1,1)'::tid)
3801- -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3801+ -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_3
38023802 Index Cond: ((id >= 50) AND (id <= 51))
38033803 Filter: (ctid = '(1,1)'::tid)
3804- -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3804+ -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_4
38053805 Index Cond: ((id >= 50) AND (id <= 51))
38063806 Filter: (ctid = '(1,1)'::tid)
38073807 -> Index Scan using t1_pkey on t1
@@ -3824,22 +3824,22 @@ error hint:
38243824 -> Sort
38253825 Sort Key: p1.id
38263826 -> Append
3827- -> Bitmap Heap Scan on p1
3827+ -> Bitmap Heap Scan on p1 p1_1
38283828 Recheck Cond: ((id >= 50) AND (id <= 51))
38293829 Filter: (ctid = '(1,1)'::tid)
38303830 -> Bitmap Index Scan on p1_pkey
38313831 Index Cond: ((id >= 50) AND (id <= 51))
3832- -> Bitmap Heap Scan on p1_c1
3832+ -> Bitmap Heap Scan on p1_c1 p1_2
38333833 Recheck Cond: ((id >= 50) AND (id <= 51))
38343834 Filter: (ctid = '(1,1)'::tid)
38353835 -> Bitmap Index Scan on p1_c1_pkey
38363836 Index Cond: ((id >= 50) AND (id <= 51))
3837- -> Bitmap Heap Scan on p1_c1_c1
3837+ -> Bitmap Heap Scan on p1_c1_c1 p1_3
38383838 Recheck Cond: ((id >= 50) AND (id <= 51))
38393839 Filter: (ctid = '(1,1)'::tid)
38403840 -> Bitmap Index Scan on p1_c1_c1_pkey
38413841 Index Cond: ((id >= 50) AND (id <= 51))
3842- -> Bitmap Heap Scan on p1_c1_c2
3842+ -> Bitmap Heap Scan on p1_c1_c2 p1_4
38433843 Recheck Cond: ((id >= 50) AND (id <= 51))
38443844 Filter: (ctid = '(1,1)'::tid)
38453845 -> Bitmap Index Scan on p1_c1_c2_pkey
@@ -3864,16 +3864,16 @@ error hint:
38643864 -> Sort
38653865 Sort Key: p1.id
38663866 -> Append
3867- -> Tid Scan on p1
3867+ -> Tid Scan on p1 p1_1
38683868 TID Cond: (ctid = '(1,1)'::tid)
38693869 Filter: ((id >= 50) AND (id <= 51))
3870- -> Tid Scan on p1_c1
3870+ -> Tid Scan on p1_c1 p1_2
38713871 TID Cond: (ctid = '(1,1)'::tid)
38723872 Filter: ((id >= 50) AND (id <= 51))
3873- -> Tid Scan on p1_c1_c1
3873+ -> Tid Scan on p1_c1_c1 p1_3
38743874 TID Cond: (ctid = '(1,1)'::tid)
38753875 Filter: ((id >= 50) AND (id <= 51))
3876- -> Tid Scan on p1_c1_c2
3876+ -> Tid Scan on p1_c1_c2 p1_4
38773877 TID Cond: (ctid = '(1,1)'::tid)
38783878 Filter: ((id >= 50) AND (id <= 51))
38793879 -> Index Scan using t1_pkey on t1
@@ -3897,13 +3897,13 @@ error hint:
38973897 Index Cond: (id < 10)
38983898 -> Materialize
38993899 -> Append
3900- -> Seq Scan on p1
3900+ -> Seq Scan on p1 p1_1
39013901 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3902- -> Seq Scan on p1_c1
3902+ -> Seq Scan on p1_c1 p1_2
39033903 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3904- -> Seq Scan on p1_c1_c1
3904+ -> Seq Scan on p1_c1_c1 p1_3
39053905 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3906- -> Seq Scan on p1_c1_c2
3906+ -> Seq Scan on p1_c1_c2 p1_4
39073907 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
39083908 (14 rows)
39093909
@@ -3923,13 +3923,13 @@ error hint:
39233923 -> Sort
39243924 Sort Key: p1.id
39253925 -> Append
3926- -> Seq Scan on p1
3926+ -> Seq Scan on p1 p1_1
39273927 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3928- -> Seq Scan on p1_c1
3928+ -> Seq Scan on p1_c1 p1_2
39293929 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3930- -> Seq Scan on p1_c1_c1
3930+ -> Seq Scan on p1_c1_c1 p1_3
39313931 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3932- -> Seq Scan on p1_c1_c2
3932+ -> Seq Scan on p1_c1_c2 p1_4
39333933 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
39343934 -> Index Scan using t1_pkey on t1
39353935 Index Cond: (id < 10)
@@ -3952,13 +3952,13 @@ error hint:
39523952 Index Cond: (id < 10)
39533953 -> Hash
39543954 -> Append
3955- -> Seq Scan on p1
3955+ -> Seq Scan on p1 p1_1
39563956 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3957- -> Seq Scan on p1_c1
3957+ -> Seq Scan on p1_c1 p1_2
39583958 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3959- -> Seq Scan on p1_c1_c1
3959+ -> Seq Scan on p1_c1_c1 p1_3
39603960 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3961- -> Seq Scan on p1_c1_c2
3961+ -> Seq Scan on p1_c1_c2 p1_4
39623962 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
39633963 (14 rows)
39643964
@@ -6515,13 +6515,13 @@ EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid =
65156515 QUERY PLAN
65166516 -----------------------------------------------------------------------
65176517 Append
6518- -> Seq Scan on p2
6518+ -> Seq Scan on p2 p2_1
65196519 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6520- -> Seq Scan on p2_c1
6520+ -> Seq Scan on p2_c1 p2_2
65216521 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6522- -> Seq Scan on p2_c1_c1
6522+ -> Seq Scan on p2_c1_c1 p2_3
65236523 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6524- -> Seq Scan on p2_c1_c2
6524+ -> Seq Scan on p2_c1_c2 p2_4
65256525 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
65266526 (9 rows)
65276527
@@ -6538,19 +6538,19 @@ not used hint:
65386538 duplication hint:
65396539 error hint:
65406540
6541- QUERY PLAN
6542---------------------------------------------------
6541+ QUERY PLAN
6542+-------------------------------------------------------
65436543 Append
6544- -> Index Scan using p2_pkey on p2
6544+ -> Index Scan using p2_pkey on p2 p2_1
65456545 Index Cond: ((id >= 50) AND (id <= 51))
65466546 Filter: (ctid = '(1,1)'::tid)
6547- -> Index Scan using p2_c1_pkey on p2_c1
6547+ -> Index Scan using p2_c1_pkey on p2_c1 p2_2
65486548 Index Cond: ((id >= 50) AND (id <= 51))
65496549 Filter: (ctid = '(1,1)'::tid)
6550- -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6550+ -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
65516551 Index Cond: ((id >= 50) AND (id <= 51))
65526552 Filter: (ctid = '(1,1)'::tid)
6553- -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6553+ -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
65546554 Index Cond: ((id >= 50) AND (id <= 51))
65556555 Filter: (ctid = '(1,1)'::tid)
65566556 (13 rows)
@@ -6568,19 +6568,19 @@ not used hint:
65686568 duplication hint:
65696569 error hint:
65706570
6571- QUERY PLAN
6572---------------------------------------------------------
6571+ QUERY PLAN
6572+-------------------------------------------------------------
65736573 Append
6574- -> Index Scan using p2_id_val_idx on p2
6574+ -> Index Scan using p2_id_val_idx on p2 p2_1
65756575 Index Cond: ((id >= 50) AND (id <= 51))
65766576 Filter: (ctid = '(1,1)'::tid)
6577- -> Index Scan using p2_c1_id_val_idx on p2_c1
6577+ -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
65786578 Index Cond: ((id >= 50) AND (id <= 51))
65796579 Filter: (ctid = '(1,1)'::tid)
6580- -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
6580+ -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_3
65816581 Index Cond: ((id >= 50) AND (id <= 51))
65826582 Filter: (ctid = '(1,1)'::tid)
6583- -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
6583+ -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_4
65846584 Index Cond: ((id >= 50) AND (id <= 51))
65856585 Filter: (ctid = '(1,1)'::tid)
65866586 (13 rows)
@@ -6598,19 +6598,19 @@ not used hint:
65986598 duplication hint:
65996599 error hint:
66006600
6601- QUERY PLAN
6602---------------------------------------------------------
6601+ QUERY PLAN
6602+-------------------------------------------------------------
66036603 Append
6604- -> Index Scan using p2_val_id_idx on p2
6604+ -> Index Scan using p2_val_id_idx on p2 p2_1
66056605 Index Cond: ((id >= 50) AND (id <= 51))
66066606 Filter: (ctid = '(1,1)'::tid)
6607- -> Index Scan using p2_c1_val_id_idx on p2_c1
6607+ -> Index Scan using p2_c1_val_id_idx on p2_c1 p2_2
66086608 Index Cond: ((id >= 50) AND (id <= 51))
66096609 Filter: (ctid = '(1,1)'::tid)
6610- -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1
6610+ -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1 p2_3
66116611 Index Cond: ((id >= 50) AND (id <= 51))
66126612 Filter: (ctid = '(1,1)'::tid)
6613- -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2
6613+ -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2 p2_4
66146614 Index Cond: ((id >= 50) AND (id <= 51))
66156615 Filter: (ctid = '(1,1)'::tid)
66166616 (13 rows)
@@ -6619,23 +6619,23 @@ EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p
66196619 QUERY PLAN
66206620 -----------------------------------------------------------------------------------------
66216621 Append
6622- -> Seq Scan on p2
6622+ -> Seq Scan on p2 p2_1
66236623 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6624- -> Seq Scan on p2_c1
6624+ -> Seq Scan on p2_c1 p2_2
66256625 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6626- -> Seq Scan on p2_c2
6626+ -> Seq Scan on p2_c2 p2_3
66276627 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6628- -> Seq Scan on p2_c3
6628+ -> Seq Scan on p2_c3 p2_4
66296629 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6630- -> Seq Scan on p2_c4
6630+ -> Seq Scan on p2_c4 p2_5
66316631 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6632- -> Seq Scan on p2_c1_c1
6632+ -> Seq Scan on p2_c1_c1 p2_6
66336633 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6634- -> Seq Scan on p2_c1_c2
6634+ -> Seq Scan on p2_c1_c2 p2_7
66356635 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6636- -> Seq Scan on p2_c3_c1
6636+ -> Seq Scan on p2_c3_c1 p2_8
66376637 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6638- -> Seq Scan on p2_c3_c2
6638+ -> Seq Scan on p2_c3_c2 p2_9
66396639 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
66406640 (19 rows)
66416641
@@ -6662,23 +6662,23 @@ error hint:
66626662 QUERY PLAN
66636663 -----------------------------------------------------------------------------------------
66646664 Append
6665- -> Seq Scan on p2
6665+ -> Seq Scan on p2 p2_1
66666666 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6667- -> Seq Scan on p2_c1
6667+ -> Seq Scan on p2_c1 p2_2
66686668 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6669- -> Seq Scan on p2_c2
6669+ -> Seq Scan on p2_c2 p2_3
66706670 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6671- -> Seq Scan on p2_c3
6671+ -> Seq Scan on p2_c3 p2_4
66726672 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6673- -> Seq Scan on p2_c4
6673+ -> Seq Scan on p2_c4 p2_5
66746674 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6675- -> Seq Scan on p2_c1_c1
6675+ -> Seq Scan on p2_c1_c1 p2_6
66766676 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6677- -> Seq Scan on p2_c1_c2
6677+ -> Seq Scan on p2_c1_c2 p2_7
66786678 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6679- -> Seq Scan on p2_c3_c1
6679+ -> Seq Scan on p2_c3_c1 p2_8
66806680 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6681- -> Seq Scan on p2_c3_c2
6681+ -> Seq Scan on p2_c3_c2 p2_9
66826682 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
66836683 (19 rows)
66846684
@@ -6695,19 +6695,19 @@ not used hint:
66956695 duplication hint:
66966696 error hint:
66976697
6698- QUERY PLAN
6699---------------------------------------------------
6698+ QUERY PLAN
6699+-------------------------------------------------------
67006700 Append
6701- -> Index Scan using p2_pkey on p2
6701+ -> Index Scan using p2_pkey on p2 p2_1
67026702 Index Cond: ((id >= 50) AND (id <= 51))
67036703 Filter: (ctid = '(1,1)'::tid)
6704- -> Index Scan using p2_c1_pkey on p2_c1
6704+ -> Index Scan using p2_c1_pkey on p2_c1 p2_2
67056705 Index Cond: ((id >= 50) AND (id <= 51))
67066706 Filter: (ctid = '(1,1)'::tid)
6707- -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6707+ -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
67086708 Index Cond: ((id >= 50) AND (id <= 51))
67096709 Filter: (ctid = '(1,1)'::tid)
6710- -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6710+ -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
67116711 Index Cond: ((id >= 50) AND (id <= 51))
67126712 Filter: (ctid = '(1,1)'::tid)
67136713 (13 rows)
@@ -6728,15 +6728,15 @@ error hint:
67286728 QUERY PLAN
67296729 -----------------------------------------------------------------------
67306730 Append
6731- -> Index Scan using p2_id2_val on p2
6731+ -> Index Scan using p2_id2_val on p2 p2_1
67326732 Index Cond: ((id >= 50) AND (id <= 51))
67336733 Filter: (ctid = '(1,1)'::tid)
6734- -> Index Scan using p2_c1_id2_val on p2_c1
6734+ -> Index Scan using p2_c1_id2_val on p2_c1 p2_2
67356735 Index Cond: ((id >= 50) AND (id <= 51))
67366736 Filter: (ctid = '(1,1)'::tid)
6737- -> Seq Scan on p2_c1_c1
6737+ -> Seq Scan on p2_c1_c1 p2_3
67386738 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6739- -> Seq Scan on p2_c1_c2
6739+ -> Seq Scan on p2_c1_c2 p2_4
67406740 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
67416741 (11 rows)
67426742
@@ -6756,14 +6756,14 @@ error hint:
67566756 QUERY PLAN
67576757 -----------------------------------------------------------------------
67586758 Append
6759- -> Index Scan using p2_val2_id on p2
6759+ -> Index Scan using p2_val2_id on p2 p2_1
67606760 Index Cond: ((id >= 50) AND (id <= 51))
67616761 Filter: (ctid = '(1,1)'::tid)
6762- -> Seq Scan on p2_c1
6762+ -> Seq Scan on p2_c1 p2_2
67636763 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6764- -> Seq Scan on p2_c1_c1
6764+ -> Seq Scan on p2_c1_c1 p2_3
67656765 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6766- -> Seq Scan on p2_c1_c2
6766+ -> Seq Scan on p2_c1_c2 p2_4
67676767 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
67686768 (10 rows)
67696769
@@ -6780,19 +6780,19 @@ not used hint:
67806780 duplication hint:
67816781 error hint:
67826782
6783- QUERY PLAN
6784---------------------------------------------------
6783+ QUERY PLAN
6784+-------------------------------------------------------
67856785 Append
6786- -> Index Scan using p2_pkey on p2
6786+ -> Index Scan using p2_pkey on p2 p2_1
67876787 Index Cond: ((id >= 50) AND (id <= 51))
67886788 Filter: (ctid = '(1,1)'::tid)
6789- -> Index Scan using p2_c1_pkey on p2_c1
6789+ -> Index Scan using p2_c1_pkey on p2_c1 p2_2
67906790 Index Cond: ((id >= 50) AND (id <= 51))
67916791 Filter: (ctid = '(1,1)'::tid)
6792- -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6792+ -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
67936793 Index Cond: ((id >= 50) AND (id <= 51))
67946794 Filter: (ctid = '(1,1)'::tid)
6795- -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6795+ -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
67966796 Index Cond: ((id >= 50) AND (id <= 51))
67976797 Filter: (ctid = '(1,1)'::tid)
67986798 (13 rows)
@@ -6813,14 +6813,14 @@ error hint:
68136813 QUERY PLAN
68146814 -----------------------------------------------------------------------
68156815 Append
6816- -> Seq Scan on p2
6816+ -> Seq Scan on p2 p2_1
68176817 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6818- -> Index Scan using p2_c1_id_val_idx on p2_c1
6818+ -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
68196819 Index Cond: ((id >= 50) AND (id <= 51))
68206820 Filter: (ctid = '(1,1)'::tid)
6821- -> Seq Scan on p2_c1_c1
6821+ -> Seq Scan on p2_c1_c1 p2_3
68226822 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6823- -> Seq Scan on p2_c1_c2
6823+ -> Seq Scan on p2_c1_c2 p2_4
68246824 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
68256825 (10 rows)
68266826
@@ -6840,13 +6840,13 @@ error hint:
68406840 QUERY PLAN
68416841 -----------------------------------------------------------------------
68426842 Append
6843- -> Seq Scan on p2
6843+ -> Seq Scan on p2 p2_1
68446844 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6845- -> Seq Scan on p2_c1
6845+ -> Seq Scan on p2_c1 p2_2
68466846 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6847- -> Seq Scan on p2_c1_c1
6847+ -> Seq Scan on p2_c1_c1 p2_3
68486848 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6849- -> Seq Scan on p2_c1_c2
6849+ -> Seq Scan on p2_c1_c2 p2_4
68506850 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
68516851 (9 rows)
68526852
@@ -6863,19 +6863,19 @@ not used hint:
68636863 duplication hint:
68646864 error hint:
68656865
6866- QUERY PLAN
6867---------------------------------------------------
6866+ QUERY PLAN
6867+-------------------------------------------------------
68686868 Append
6869- -> Index Scan using p2_pkey on p2
6869+ -> Index Scan using p2_pkey on p2 p2_1
68706870 Index Cond: ((id >= 50) AND (id <= 51))
68716871 Filter: (ctid = '(1,1)'::tid)
6872- -> Index Scan using p2_c1_id_val_idx on p2_c1
6872+ -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
68736873 Index Cond: ((id >= 50) AND (id <= 51))
68746874 Filter: (ctid = '(1,1)'::tid)
6875- -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6875+ -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
68766876 Index Cond: ((id >= 50) AND (id <= 51))
68776877 Filter: (ctid = '(1,1)'::tid)
6878- -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6878+ -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
68796879 Index Cond: ((id >= 50) AND (id <= 51))
68806880 Filter: (ctid = '(1,1)'::tid)
68816881 (13 rows)
@@ -6893,19 +6893,19 @@ not used hint:
68936893 duplication hint:
68946894 error hint:
68956895
6896- QUERY PLAN
6897---------------------------------------------------
6896+ QUERY PLAN
6897+-------------------------------------------------------
68986898 Append
6899- -> Index Scan using p2_pkey on p2
6899+ -> Index Scan using p2_pkey on p2 p2_1
69006900 Index Cond: ((id >= 50) AND (id <= 51))
69016901 Filter: (ctid = '(1,1)'::tid)
6902- -> Index Scan using p2_c1_pkey on p2_c1
6902+ -> Index Scan using p2_c1_pkey on p2_c1 p2_2
69036903 Index Cond: ((id >= 50) AND (id <= 51))
69046904 Filter: (ctid = '(1,1)'::tid)
6905- -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6905+ -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
69066906 Index Cond: ((id >= 50) AND (id <= 51))
69076907 Filter: (ctid = '(1,1)'::tid)
6908- -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6908+ -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
69096909 Index Cond: ((id >= 50) AND (id <= 51))
69106910 Filter: (ctid = '(1,1)'::tid)
69116911 (13 rows)
@@ -6926,14 +6926,14 @@ error hint:
69266926 QUERY PLAN
69276927 -----------------------------------------------------------------------
69286928 Append
6929- -> Seq Scan on p2
6929+ -> Seq Scan on p2 p2_1
69306930 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6931- -> Index Scan using p2_c1_id_val_idx on p2_c1
6931+ -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
69326932 Index Cond: ((id >= 50) AND (id <= 51))
69336933 Filter: (ctid = '(1,1)'::tid)
6934- -> Seq Scan on p2_c1_c1
6934+ -> Seq Scan on p2_c1_c1 p2_3
69356935 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6936- -> Seq Scan on p2_c1_c2
6936+ -> Seq Scan on p2_c1_c2 p2_4
69376937 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
69386938 (10 rows)
69396939
@@ -6950,19 +6950,19 @@ not used hint:
69506950 duplication hint:
69516951 error hint:
69526952
6953- QUERY PLAN
6954---------------------------------------------------
6953+ QUERY PLAN
6954+-------------------------------------------------------
69556955 Append
6956- -> Index Scan using p2_pkey on p2
6956+ -> Index Scan using p2_pkey on p2 p2_1
69576957 Index Cond: ((id >= 50) AND (id <= 51))
69586958 Filter: (ctid = '(1,1)'::tid)
6959- -> Index Scan using p2_c1_id_val_idx on p2_c1
6959+ -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
69606960 Index Cond: ((id >= 50) AND (id <= 51))
69616961 Filter: (ctid = '(1,1)'::tid)
6962- -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6962+ -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
69636963 Index Cond: ((id >= 50) AND (id <= 51))
69646964 Filter: (ctid = '(1,1)'::tid)
6965- -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6965+ -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
69666966 Index Cond: ((id >= 50) AND (id <= 51))
69676967 Filter: (ctid = '(1,1)'::tid)
69686968 (13 rows)
@@ -6988,31 +6988,31 @@ error hint:
69886988 QUERY PLAN
69896989 -------------------------------------------------------------------
69906990 Append
6991- -> Index Scan using p2_val_idx on p2
6991+ -> Index Scan using p2_val_idx on p2 p2_1
69926992 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
69936993 Filter: (ctid = '(1,1)'::tid)
6994- -> Index Scan using p2_c1_val_idx on p2_c1
6994+ -> Index Scan using p2_c1_val_idx on p2_c1 p2_2
69956995 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
69966996 Filter: (ctid = '(1,1)'::tid)
6997- -> Index Scan using p2_c2_val_idx on p2_c2
6997+ -> Index Scan using p2_c2_val_idx on p2_c2 p2_3
69986998 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
69996999 Filter: (ctid = '(1,1)'::tid)
7000- -> Index Scan using p2_c3_val_idx on p2_c3
7000+ -> Index Scan using p2_c3_val_idx on p2_c3 p2_4
70017001 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
70027002 Filter: (ctid = '(1,1)'::tid)
7003- -> Index Scan using p2_c4_val_idx on p2_c4
7003+ -> Index Scan using p2_c4_val_idx on p2_c4 p2_5
70047004 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
70057005 Filter: (ctid = '(1,1)'::tid)
7006- -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
7006+ -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1 p2_6
70077007 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
70087008 Filter: (ctid = '(1,1)'::tid)
7009- -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
7009+ -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2 p2_7
70107010 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
70117011 Filter: (ctid = '(1,1)'::tid)
7012- -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
7012+ -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1 p2_8
70137013 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
70147014 Filter: (ctid = '(1,1)'::tid)
7015- -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
7015+ -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2 p2_9
70167016 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
70177017 Filter: (ctid = '(1,1)'::tid)
70187018 (28 rows)
@@ -7038,23 +7038,23 @@ error hint:
70387038 QUERY PLAN
70397039 -----------------------------------------------------------------------------------------
70407040 Append
7041- -> Seq Scan on p2
7041+ -> Seq Scan on p2 p2_1
70427042 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7043- -> Seq Scan on p2_c1
7043+ -> Seq Scan on p2_c1 p2_2
70447044 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7045- -> Seq Scan on p2_c2
7045+ -> Seq Scan on p2_c2 p2_3
70467046 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7047- -> Seq Scan on p2_c3
7047+ -> Seq Scan on p2_c3 p2_4
70487048 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7049- -> Seq Scan on p2_c4
7049+ -> Seq Scan on p2_c4 p2_5
70507050 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7051- -> Seq Scan on p2_c1_c1
7051+ -> Seq Scan on p2_c1_c1 p2_6
70527052 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7053- -> Seq Scan on p2_c1_c2
7053+ -> Seq Scan on p2_c1_c2 p2_7
70547054 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7055- -> Seq Scan on p2_c3_c1
7055+ -> Seq Scan on p2_c3_c1 p2_8
70567056 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7057- -> Seq Scan on p2_c3_c2
7057+ -> Seq Scan on p2_c3_c2 p2_9
70587058 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
70597059 (19 rows)
70607060
@@ -7079,23 +7079,23 @@ error hint:
70797079 QUERY PLAN
70807080 -----------------------------------------------------------------------------------------
70817081 Append
7082- -> Seq Scan on p2
7082+ -> Seq Scan on p2 p2_1
70837083 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7084- -> Seq Scan on p2_c1
7084+ -> Seq Scan on p2_c1 p2_2
70857085 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7086- -> Seq Scan on p2_c2
7086+ -> Seq Scan on p2_c2 p2_3
70877087 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7088- -> Seq Scan on p2_c3
7088+ -> Seq Scan on p2_c3 p2_4
70897089 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7090- -> Seq Scan on p2_c4
7090+ -> Seq Scan on p2_c4 p2_5
70917091 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7092- -> Seq Scan on p2_c1_c1
7092+ -> Seq Scan on p2_c1_c1 p2_6
70937093 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7094- -> Seq Scan on p2_c1_c2
7094+ -> Seq Scan on p2_c1_c2 p2_7
70957095 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7096- -> Seq Scan on p2_c3_c1
7096+ -> Seq Scan on p2_c3_c1 p2_8
70977097 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7098- -> Seq Scan on p2_c3_c2
7098+ -> Seq Scan on p2_c3_c2 p2_9
70997099 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
71007100 (19 rows)
71017101
@@ -7120,31 +7120,31 @@ error hint:
71207120 QUERY PLAN
71217121 -------------------------------------------------------------------
71227122 Append
7123- -> Index Scan using p2_val_idx on p2
7123+ -> Index Scan using p2_val_idx on p2 p2_1
71247124 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
71257125 Filter: (ctid = '(1,1)'::tid)
7126- -> Index Scan using p2_c1_val_idx on p2_c1
7126+ -> Index Scan using p2_c1_val_idx on p2_c1 p2_2
71277127 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
71287128 Filter: (ctid = '(1,1)'::tid)
7129- -> Index Scan using p2_c2_val_idx on p2_c2
7129+ -> Index Scan using p2_c2_val_idx on p2_c2 p2_3
71307130 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
71317131 Filter: (ctid = '(1,1)'::tid)
7132- -> Index Scan using p2_c3_val_idx on p2_c3
7132+ -> Index Scan using p2_c3_val_idx on p2_c3 p2_4
71337133 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
71347134 Filter: (ctid = '(1,1)'::tid)
7135- -> Index Scan using p2_c4_val_idx on p2_c4
7135+ -> Index Scan using p2_c4_val_idx on p2_c4 p2_5
71367136 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
71377137 Filter: (ctid = '(1,1)'::tid)
7138- -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
7138+ -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1 p2_6
71397139 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
71407140 Filter: (ctid = '(1,1)'::tid)
7141- -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
7141+ -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2 p2_7
71427142 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
71437143 Filter: (ctid = '(1,1)'::tid)
7144- -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
7144+ -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1 p2_8
71457145 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
71467146 Filter: (ctid = '(1,1)'::tid)
7147- -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
7147+ -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2 p2_9
71487148 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
71497149 Filter: (ctid = '(1,1)'::tid)
71507150 (28 rows)
@@ -7404,26 +7404,26 @@ error hint:
74047404
74057405 -- Inheritance
74067406 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7407- QUERY PLAN
7408-----------------------------
7407+ QUERY PLAN
7408+---------------------------------
74097409 Append
7410- -> Seq Scan on p1
7410+ -> Seq Scan on p1 p1_1
74117411 Filter: (val = 1)
7412- -> Seq Scan on p1_c1
7412+ -> Seq Scan on p1_c1 p1_2
74137413 Filter: (val = 1)
7414- -> Seq Scan on p1_c2
7414+ -> Seq Scan on p1_c2 p1_3
74157415 Filter: (val = 1)
7416- -> Seq Scan on p1_c3
7416+ -> Seq Scan on p1_c3 p1_4
74177417 Filter: (val = 1)
7418- -> Seq Scan on p1_c4
7418+ -> Seq Scan on p1_c4 p1_5
74197419 Filter: (val = 1)
7420- -> Seq Scan on p1_c1_c1
7420+ -> Seq Scan on p1_c1_c1 p1_6
74217421 Filter: (val = 1)
7422- -> Seq Scan on p1_c1_c2
7422+ -> Seq Scan on p1_c1_c2 p1_7
74237423 Filter: (val = 1)
7424- -> Seq Scan on p1_c3_c1
7424+ -> Seq Scan on p1_c3_c1 p1_8
74257425 Filter: (val = 1)
7426- -> Seq Scan on p1_c3_c2
7426+ -> Seq Scan on p1_c3_c2 p1_9
74277427 Filter: (val = 1)
74287428 (19 rows)
74297429
@@ -7445,26 +7445,26 @@ not used hint:
74457445 duplication hint:
74467446 error hint:
74477447
7448- QUERY PLAN
7449-----------------------------
7448+ QUERY PLAN
7449+---------------------------------
74507450 Append
7451- -> Seq Scan on p1
7451+ -> Seq Scan on p1 p1_1
74527452 Filter: (val = 1)
7453- -> Seq Scan on p1_c1
7453+ -> Seq Scan on p1_c1 p1_2
74547454 Filter: (val = 1)
7455- -> Seq Scan on p1_c2
7455+ -> Seq Scan on p1_c2 p1_3
74567456 Filter: (val = 1)
7457- -> Seq Scan on p1_c3
7457+ -> Seq Scan on p1_c3 p1_4
74587458 Filter: (val = 1)
7459- -> Seq Scan on p1_c4
7459+ -> Seq Scan on p1_c4 p1_5
74607460 Filter: (val = 1)
7461- -> Seq Scan on p1_c1_c1
7461+ -> Seq Scan on p1_c1_c1 p1_6
74627462 Filter: (val = 1)
7463- -> Seq Scan on p1_c1_c2
7463+ -> Seq Scan on p1_c1_c2 p1_7
74647464 Filter: (val = 1)
7465- -> Seq Scan on p1_c3_c1
7465+ -> Seq Scan on p1_c3_c1 p1_8
74667466 Filter: (val = 1)
7467- -> Seq Scan on p1_c3_c2
7467+ -> Seq Scan on p1_c3_c2 p1_9
74687468 Filter: (val = 1)
74697469 (19 rows)
74707470
@@ -7486,26 +7486,26 @@ not used hint:
74867486 duplication hint:
74877487 error hint:
74887488
7489- QUERY PLAN
7490---------------------------------------------------
7489+ QUERY PLAN
7490+-------------------------------------------------------
74917491 Append
7492- -> Index Scan using p1_val2 on p1
7492+ -> Index Scan using p1_val2 on p1 p1_1
74937493 Index Cond: (val = 1)
7494- -> Index Scan using p1_c1_val2 on p1_c1
7494+ -> Index Scan using p1_c1_val2 on p1_c1 p1_2
74957495 Index Cond: (val = 1)
7496- -> Index Scan using p1_c2_val2 on p1_c2
7496+ -> Index Scan using p1_c2_val2 on p1_c2 p1_3
74977497 Index Cond: (val = 1)
7498- -> Index Scan using p1_c3_val2 on p1_c3
7498+ -> Index Scan using p1_c3_val2 on p1_c3 p1_4
74997499 Index Cond: (val = 1)
7500- -> Index Scan using p1_c4_val2 on p1_c4
7500+ -> Index Scan using p1_c4_val2 on p1_c4 p1_5
75017501 Index Cond: (val = 1)
7502- -> Index Scan using p1_c1_c1_val2 on p1_c1_c1
7502+ -> Index Scan using p1_c1_c1_val2 on p1_c1_c1 p1_6
75037503 Index Cond: (val = 1)
7504- -> Index Scan using p1_c1_c2_val2 on p1_c1_c2
7504+ -> Index Scan using p1_c1_c2_val2 on p1_c1_c2 p1_7
75057505 Index Cond: (val = 1)
7506- -> Index Scan using p1_c3_c1_val2 on p1_c3_c1
7506+ -> Index Scan using p1_c3_c1_val2 on p1_c3_c1 p1_8
75077507 Index Cond: (val = 1)
7508- -> Index Scan using p1_c3_c2_val2 on p1_c3_c2
7508+ -> Index Scan using p1_c3_c2_val2 on p1_c3_c2 p1_9
75097509 Index Cond: (val = 1)
75107510 (19 rows)
75117511
@@ -7527,26 +7527,26 @@ not used hint:
75277527 duplication hint:
75287528 error hint:
75297529
7530- QUERY PLAN
7531-----------------------------
7530+ QUERY PLAN
7531+---------------------------------
75327532 Append
7533- -> Seq Scan on p1
7533+ -> Seq Scan on p1 p1_1
75347534 Filter: (val = 1)
7535- -> Seq Scan on p1_c1
7535+ -> Seq Scan on p1_c1 p1_2
75367536 Filter: (val = 1)
7537- -> Seq Scan on p1_c2
7537+ -> Seq Scan on p1_c2 p1_3
75387538 Filter: (val = 1)
7539- -> Seq Scan on p1_c3
7539+ -> Seq Scan on p1_c3 p1_4
75407540 Filter: (val = 1)
7541- -> Seq Scan on p1_c4
7541+ -> Seq Scan on p1_c4 p1_5
75427542 Filter: (val = 1)
7543- -> Seq Scan on p1_c1_c1
7543+ -> Seq Scan on p1_c1_c1 p1_6
75447544 Filter: (val = 1)
7545- -> Seq Scan on p1_c1_c2
7545+ -> Seq Scan on p1_c1_c2 p1_7
75467546 Filter: (val = 1)
7547- -> Seq Scan on p1_c3_c1
7547+ -> Seq Scan on p1_c3_c1 p1_8
75487548 Filter: (val = 1)
7549- -> Seq Scan on p1_c3_c2
7549+ -> Seq Scan on p1_c3_c2 p1_9
75507550 Filter: (val = 1)
75517551 (19 rows)
75527552
@@ -7568,26 +7568,26 @@ not used hint:
75687568 duplication hint:
75697569 error hint:
75707570
7571- QUERY PLAN
7572-----------------------------
7571+ QUERY PLAN
7572+---------------------------------
75737573 Append
7574- -> Seq Scan on p1
7574+ -> Seq Scan on p1 p1_1
75757575 Filter: (val = 1)
7576- -> Seq Scan on p1_c1
7576+ -> Seq Scan on p1_c1 p1_2
75777577 Filter: (val = 1)
7578- -> Seq Scan on p1_c2
7578+ -> Seq Scan on p1_c2 p1_3
75797579 Filter: (val = 1)
7580- -> Seq Scan on p1_c3
7580+ -> Seq Scan on p1_c3 p1_4
75817581 Filter: (val = 1)
7582- -> Seq Scan on p1_c4
7582+ -> Seq Scan on p1_c4 p1_5
75837583 Filter: (val = 1)
7584- -> Seq Scan on p1_c1_c1
7584+ -> Seq Scan on p1_c1_c1 p1_6
75857585 Filter: (val = 1)
7586- -> Seq Scan on p1_c1_c2
7586+ -> Seq Scan on p1_c1_c2 p1_7
75877587 Filter: (val = 1)
7588- -> Seq Scan on p1_c3_c1
7588+ -> Seq Scan on p1_c3_c1 p1_8
75897589 Filter: (val = 1)
7590- -> Seq Scan on p1_c3_c2
7590+ -> Seq Scan on p1_c3_c2 p1_9
75917591 Filter: (val = 1)
75927592 (19 rows)
75937593
@@ -7609,26 +7609,26 @@ not used hint:
76097609 duplication hint:
76107610 error hint:
76117611
7612- QUERY PLAN
7613-----------------------------
7612+ QUERY PLAN
7613+---------------------------------
76147614 Append
7615- -> Seq Scan on p1
7615+ -> Seq Scan on p1 p1_1
76167616 Filter: (val = 1)
7617- -> Seq Scan on p1_c1
7617+ -> Seq Scan on p1_c1 p1_2
76187618 Filter: (val = 1)
7619- -> Seq Scan on p1_c2
7619+ -> Seq Scan on p1_c2 p1_3
76207620 Filter: (val = 1)
7621- -> Seq Scan on p1_c3
7621+ -> Seq Scan on p1_c3 p1_4
76227622 Filter: (val = 1)
7623- -> Seq Scan on p1_c4
7623+ -> Seq Scan on p1_c4 p1_5
76247624 Filter: (val = 1)
7625- -> Seq Scan on p1_c1_c1
7625+ -> Seq Scan on p1_c1_c1 p1_6
76267626 Filter: (val = 1)
7627- -> Seq Scan on p1_c1_c2
7627+ -> Seq Scan on p1_c1_c2 p1_7
76287628 Filter: (val = 1)
7629- -> Seq Scan on p1_c3_c1
7629+ -> Seq Scan on p1_c3_c1 p1_8
76307630 Filter: (val = 1)
7631- -> Seq Scan on p1_c3_c2
7631+ -> Seq Scan on p1_c3_c2 p1_9
76327632 Filter: (val = 1)
76337633 (19 rows)
76347634
@@ -7650,26 +7650,26 @@ not used hint:
76507650 duplication hint:
76517651 error hint:
76527652
7653- QUERY PLAN
7654--------------------------------------------------------
7653+ QUERY PLAN
7654+------------------------------------------------------------
76557655 Append
7656- -> Index Only Scan using p1_val2 on p1
7656+ -> Index Only Scan using p1_val2 on p1 p1_1
76577657 Index Cond: (val = 1)
7658- -> Index Only Scan using p1_c1_val2 on p1_c1
7658+ -> Index Only Scan using p1_c1_val2 on p1_c1 p1_2
76597659 Index Cond: (val = 1)
7660- -> Index Only Scan using p1_c2_val2 on p1_c2
7660+ -> Index Only Scan using p1_c2_val2 on p1_c2 p1_3
76617661 Index Cond: (val = 1)
7662- -> Index Only Scan using p1_c3_val2 on p1_c3
7662+ -> Index Only Scan using p1_c3_val2 on p1_c3 p1_4
76637663 Index Cond: (val = 1)
7664- -> Index Only Scan using p1_c4_val2 on p1_c4
7664+ -> Index Only Scan using p1_c4_val2 on p1_c4 p1_5
76657665 Index Cond: (val = 1)
7666- -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1
7666+ -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1 p1_6
76677667 Index Cond: (val = 1)
7668- -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2
7668+ -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2 p1_7
76697669 Index Cond: (val = 1)
7670- -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1
7670+ -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1 p1_8
76717671 Index Cond: (val = 1)
7672- -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2
7672+ -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2 p1_9
76737673 Index Cond: (val = 1)
76747674 (19 rows)
76757675
@@ -7691,26 +7691,26 @@ not used hint:
76917691 duplication hint:
76927692 error hint:
76937693
7694- QUERY PLAN
7695-----------------------------
7694+ QUERY PLAN
7695+---------------------------------
76967696 Append
7697- -> Seq Scan on p1
7697+ -> Seq Scan on p1 p1_1
76987698 Filter: (val = 1)
7699- -> Seq Scan on p1_c1
7699+ -> Seq Scan on p1_c1 p1_2
77007700 Filter: (val = 1)
7701- -> Seq Scan on p1_c2
7701+ -> Seq Scan on p1_c2 p1_3
77027702 Filter: (val = 1)
7703- -> Seq Scan on p1_c3
7703+ -> Seq Scan on p1_c3 p1_4
77047704 Filter: (val = 1)
7705- -> Seq Scan on p1_c4
7705+ -> Seq Scan on p1_c4 p1_5
77067706 Filter: (val = 1)
7707- -> Seq Scan on p1_c1_c1
7707+ -> Seq Scan on p1_c1_c1 p1_6
77087708 Filter: (val = 1)
7709- -> Seq Scan on p1_c1_c2
7709+ -> Seq Scan on p1_c1_c2 p1_7
77107710 Filter: (val = 1)
7711- -> Seq Scan on p1_c3_c1
7711+ -> Seq Scan on p1_c3_c1 p1_8
77127712 Filter: (val = 1)
7713- -> Seq Scan on p1_c3_c2
7713+ -> Seq Scan on p1_c3_c2 p1_9
77147714 Filter: (val = 1)
77157715 (19 rows)
77167716
@@ -7732,26 +7732,26 @@ not used hint:
77327732 duplication hint:
77337733 error hint:
77347734
7735- QUERY PLAN
7736-----------------------------
7735+ QUERY PLAN
7736+---------------------------------
77377737 Append
7738- -> Seq Scan on p1
7738+ -> Seq Scan on p1 p1_1
77397739 Filter: (val = 1)
7740- -> Seq Scan on p1_c1
7740+ -> Seq Scan on p1_c1 p1_2
77417741 Filter: (val = 1)
7742- -> Seq Scan on p1_c2
7742+ -> Seq Scan on p1_c2 p1_3
77437743 Filter: (val = 1)
7744- -> Seq Scan on p1_c3
7744+ -> Seq Scan on p1_c3 p1_4
77457745 Filter: (val = 1)
7746- -> Seq Scan on p1_c4
7746+ -> Seq Scan on p1_c4 p1_5
77477747 Filter: (val = 1)
7748- -> Seq Scan on p1_c1_c1
7748+ -> Seq Scan on p1_c1_c1 p1_6
77497749 Filter: (val = 1)
7750- -> Seq Scan on p1_c1_c2
7750+ -> Seq Scan on p1_c1_c2 p1_7
77517751 Filter: (val = 1)
7752- -> Seq Scan on p1_c3_c1
7752+ -> Seq Scan on p1_c3_c1 p1_8
77537753 Filter: (val = 1)
7754- -> Seq Scan on p1_c3_c2
7754+ -> Seq Scan on p1_c3_c2 p1_9
77557755 Filter: (val = 1)
77567756 (19 rows)
77577757
@@ -7773,26 +7773,26 @@ not used hint:
77737773 duplication hint:
77747774 error hint:
77757775
7776- QUERY PLAN
7777-----------------------------
7776+ QUERY PLAN
7777+---------------------------------
77787778 Append
7779- -> Seq Scan on p1
7779+ -> Seq Scan on p1 p1_1
77807780 Filter: (val = 1)
7781- -> Seq Scan on p1_c1
7781+ -> Seq Scan on p1_c1 p1_2
77827782 Filter: (val = 1)
7783- -> Seq Scan on p1_c2
7783+ -> Seq Scan on p1_c2 p1_3
77847784 Filter: (val = 1)
7785- -> Seq Scan on p1_c3
7785+ -> Seq Scan on p1_c3 p1_4
77867786 Filter: (val = 1)
7787- -> Seq Scan on p1_c4
7787+ -> Seq Scan on p1_c4 p1_5
77887788 Filter: (val = 1)
7789- -> Seq Scan on p1_c1_c1
7789+ -> Seq Scan on p1_c1_c1 p1_6
77907790 Filter: (val = 1)
7791- -> Seq Scan on p1_c1_c2
7791+ -> Seq Scan on p1_c1_c2 p1_7
77927792 Filter: (val = 1)
7793- -> Seq Scan on p1_c3_c1
7793+ -> Seq Scan on p1_c3_c1 p1_8
77947794 Filter: (val = 1)
7795- -> Seq Scan on p1_c3_c2
7795+ -> Seq Scan on p1_c3_c2 p1_9
77967796 Filter: (val = 1)
77977797 (19 rows)
77987798
@@ -7817,39 +7817,39 @@ error hint:
78177817 QUERY PLAN
78187818 ------------------------------------------------
78197819 Append
7820- -> Bitmap Heap Scan on p1
7820+ -> Bitmap Heap Scan on p1 p1_1
78217821 Recheck Cond: (val = 1)
78227822 -> Bitmap Index Scan on p1_val2
78237823 Index Cond: (val = 1)
7824- -> Bitmap Heap Scan on p1_c1
7824+ -> Bitmap Heap Scan on p1_c1 p1_2
78257825 Recheck Cond: (val = 1)
78267826 -> Bitmap Index Scan on p1_c1_val2
78277827 Index Cond: (val = 1)
7828- -> Bitmap Heap Scan on p1_c2
7828+ -> Bitmap Heap Scan on p1_c2 p1_3
78297829 Recheck Cond: (val = 1)
78307830 -> Bitmap Index Scan on p1_c2_val2
78317831 Index Cond: (val = 1)
7832- -> Bitmap Heap Scan on p1_c3
7832+ -> Bitmap Heap Scan on p1_c3 p1_4
78337833 Recheck Cond: (val = 1)
78347834 -> Bitmap Index Scan on p1_c3_val2
78357835 Index Cond: (val = 1)
7836- -> Bitmap Heap Scan on p1_c4
7836+ -> Bitmap Heap Scan on p1_c4 p1_5
78377837 Recheck Cond: (val = 1)
78387838 -> Bitmap Index Scan on p1_c4_val2
78397839 Index Cond: (val = 1)
7840- -> Bitmap Heap Scan on p1_c1_c1
7840+ -> Bitmap Heap Scan on p1_c1_c1 p1_6
78417841 Recheck Cond: (val = 1)
78427842 -> Bitmap Index Scan on p1_c1_c1_val2
78437843 Index Cond: (val = 1)
7844- -> Bitmap Heap Scan on p1_c1_c2
7844+ -> Bitmap Heap Scan on p1_c1_c2 p1_7
78457845 Recheck Cond: (val = 1)
78467846 -> Bitmap Index Scan on p1_c1_c2_val2
78477847 Index Cond: (val = 1)
7848- -> Bitmap Heap Scan on p1_c3_c1
7848+ -> Bitmap Heap Scan on p1_c3_c1 p1_8
78497849 Recheck Cond: (val = 1)
78507850 -> Bitmap Index Scan on p1_c3_c1_val2
78517851 Index Cond: (val = 1)
7852- -> Bitmap Heap Scan on p1_c3_c2
7852+ -> Bitmap Heap Scan on p1_c3_c2 p1_9
78537853 Recheck Cond: (val = 1)
78547854 -> Bitmap Index Scan on p1_c3_c2_val2
78557855 Index Cond: (val = 1)
@@ -7873,26 +7873,26 @@ not used hint:
78737873 duplication hint:
78747874 error hint:
78757875
7876- QUERY PLAN
7877-----------------------------
7876+ QUERY PLAN
7877+---------------------------------
78787878 Append
7879- -> Seq Scan on p1
7879+ -> Seq Scan on p1 p1_1
78807880 Filter: (val = 1)
7881- -> Seq Scan on p1_c1
7881+ -> Seq Scan on p1_c1 p1_2
78827882 Filter: (val = 1)
7883- -> Seq Scan on p1_c2
7883+ -> Seq Scan on p1_c2 p1_3
78847884 Filter: (val = 1)
7885- -> Seq Scan on p1_c3
7885+ -> Seq Scan on p1_c3 p1_4
78867886 Filter: (val = 1)
7887- -> Seq Scan on p1_c4
7887+ -> Seq Scan on p1_c4 p1_5
78887888 Filter: (val = 1)
7889- -> Seq Scan on p1_c1_c1
7889+ -> Seq Scan on p1_c1_c1 p1_6
78907890 Filter: (val = 1)
7891- -> Seq Scan on p1_c1_c2
7891+ -> Seq Scan on p1_c1_c2 p1_7
78927892 Filter: (val = 1)
7893- -> Seq Scan on p1_c3_c1
7893+ -> Seq Scan on p1_c3_c1 p1_8
78947894 Filter: (val = 1)
7895- -> Seq Scan on p1_c3_c2
7895+ -> Seq Scan on p1_c3_c2 p1_9
78967896 Filter: (val = 1)
78977897 (19 rows)
78987898
@@ -7914,26 +7914,26 @@ not used hint:
79147914 duplication hint:
79157915 error hint:
79167916
7917- QUERY PLAN
7918-----------------------------
7917+ QUERY PLAN
7918+---------------------------------
79197919 Append
7920- -> Seq Scan on p1
7920+ -> Seq Scan on p1 p1_1
79217921 Filter: (val = 1)
7922- -> Seq Scan on p1_c1
7922+ -> Seq Scan on p1_c1 p1_2
79237923 Filter: (val = 1)
7924- -> Seq Scan on p1_c2
7924+ -> Seq Scan on p1_c2 p1_3
79257925 Filter: (val = 1)
7926- -> Seq Scan on p1_c3
7926+ -> Seq Scan on p1_c3 p1_4
79277927 Filter: (val = 1)
7928- -> Seq Scan on p1_c4
7928+ -> Seq Scan on p1_c4 p1_5
79297929 Filter: (val = 1)
7930- -> Seq Scan on p1_c1_c1
7930+ -> Seq Scan on p1_c1_c1 p1_6
79317931 Filter: (val = 1)
7932- -> Seq Scan on p1_c1_c2
7932+ -> Seq Scan on p1_c1_c2 p1_7
79337933 Filter: (val = 1)
7934- -> Seq Scan on p1_c3_c1
7934+ -> Seq Scan on p1_c3_c1 p1_8
79357935 Filter: (val = 1)
7936- -> Seq Scan on p1_c3_c2
7936+ -> Seq Scan on p1_c3_c2 p1_9
79377937 Filter: (val = 1)
79387938 (19 rows)
79397939
@@ -8392,47 +8392,47 @@ SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE schemaname = '
83928392 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
83938393 UNION ALL
83948394 SELECT val::int FROM p2 WHERE id < 1000;
8395- QUERY PLAN
8396------------------------------------------
8395+ QUERY PLAN
8396+---------------------------------------------
83978397 Append
83988398 -> Append
8399- -> Seq Scan on p1
8399+ -> Seq Scan on p1 p1_1
84008400 Filter: (val < 1000)
8401- -> Seq Scan on p1_c1
8401+ -> Seq Scan on p1_c1 p1_2
84028402 Filter: (val < 1000)
8403- -> Seq Scan on p1_c2
8403+ -> Seq Scan on p1_c2 p1_3
84048404 Filter: (val < 1000)
8405- -> Seq Scan on p1_c3
8405+ -> Seq Scan on p1_c3 p1_4
84068406 Filter: (val < 1000)
8407- -> Seq Scan on p1_c4
8407+ -> Seq Scan on p1_c4 p1_5
84088408 Filter: (val < 1000)
8409- -> Seq Scan on p1_c1_c1
8409+ -> Seq Scan on p1_c1_c1 p1_6
84108410 Filter: (val < 1000)
8411- -> Seq Scan on p1_c1_c2
8411+ -> Seq Scan on p1_c1_c2 p1_7
84128412 Filter: (val < 1000)
8413- -> Seq Scan on p1_c3_c1
8413+ -> Seq Scan on p1_c3_c1 p1_8
84148414 Filter: (val < 1000)
8415- -> Seq Scan on p1_c3_c2
8415+ -> Seq Scan on p1_c3_c2 p1_9
84168416 Filter: (val < 1000)
84178417 -> Result
84188418 -> Append
8419- -> Seq Scan on p2
8419+ -> Seq Scan on p2 p2_1
84208420 Filter: (id < 1000)
8421- -> Seq Scan on p2_c1
8421+ -> Seq Scan on p2_c1 p2_2
84228422 Filter: (id < 1000)
8423- -> Seq Scan on p2_c2
8423+ -> Seq Scan on p2_c2 p2_3
84248424 Filter: (id < 1000)
8425- -> Seq Scan on p2_c3
8425+ -> Seq Scan on p2_c3 p2_4
84268426 Filter: (id < 1000)
8427- -> Seq Scan on p2_c4
8427+ -> Seq Scan on p2_c4 p2_5
84288428 Filter: (id < 1000)
8429- -> Seq Scan on p2_c1_c1
8429+ -> Seq Scan on p2_c1_c1 p2_6
84308430 Filter: (id < 1000)
8431- -> Seq Scan on p2_c1_c2
8431+ -> Seq Scan on p2_c1_c2 p2_7
84328432 Filter: (id < 1000)
8433- -> Seq Scan on p2_c3_c1
8433+ -> Seq Scan on p2_c3_c1 p2_8
84348434 Filter: (id < 1000)
8435- -> Seq Scan on p2_c3_c2
8435+ -> Seq Scan on p2_c3_c2 p2_9
84368436 Filter: (id < 1000)
84378437 (40 rows)
84388438
@@ -8456,47 +8456,47 @@ not used hint:
84568456 duplication hint:
84578457 error hint:
84588458
8459- QUERY PLAN
8460---------------------------------------------------------
8459+ QUERY PLAN
8460+-------------------------------------------------------------
84618461 Append
84628462 -> Append
8463- -> Index Scan using p1_val3 on p1
8463+ -> Index Scan using p1_val3 on p1 p1_1
84648464 Index Cond: (val < 1000)
8465- -> Index Scan using p1_c1_val3 on p1_c1
8465+ -> Index Scan using p1_c1_val3 on p1_c1 p1_2
84668466 Index Cond: (val < 1000)
8467- -> Index Scan using p1_c2_val3 on p1_c2
8467+ -> Index Scan using p1_c2_val3 on p1_c2 p1_3
84688468 Index Cond: (val < 1000)
8469- -> Index Scan using p1_c3_val3 on p1_c3
8469+ -> Index Scan using p1_c3_val3 on p1_c3 p1_4
84708470 Index Cond: (val < 1000)
8471- -> Index Scan using p1_c4_val3 on p1_c4
8471+ -> Index Scan using p1_c4_val3 on p1_c4 p1_5
84728472 Index Cond: (val < 1000)
8473- -> Index Scan using p1_c1_c1_val3 on p1_c1_c1
8473+ -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
84748474 Index Cond: (val < 1000)
8475- -> Index Scan using p1_c1_c2_val3 on p1_c1_c2
8475+ -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
84768476 Index Cond: (val < 1000)
8477- -> Index Scan using p1_c3_c1_val3 on p1_c3_c1
8477+ -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
84788478 Index Cond: (val < 1000)
8479- -> Index Scan using p1_c3_c2_val3 on p1_c3_c2
8479+ -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
84808480 Index Cond: (val < 1000)
84818481 -> Result
84828482 -> Append
8483- -> Seq Scan on p2
8483+ -> Seq Scan on p2 p2_1
84848484 Filter: (id < 1000)
8485- -> Seq Scan on p2_c1
8485+ -> Seq Scan on p2_c1 p2_2
84868486 Filter: (id < 1000)
8487- -> Seq Scan on p2_c2
8487+ -> Seq Scan on p2_c2 p2_3
84888488 Filter: (id < 1000)
8489- -> Seq Scan on p2_c3
8489+ -> Seq Scan on p2_c3 p2_4
84908490 Filter: (id < 1000)
8491- -> Seq Scan on p2_c4
8491+ -> Seq Scan on p2_c4 p2_5
84928492 Filter: (id < 1000)
8493- -> Seq Scan on p2_c1_c1
8493+ -> Seq Scan on p2_c1_c1 p2_6
84948494 Filter: (id < 1000)
8495- -> Seq Scan on p2_c1_c2
8495+ -> Seq Scan on p2_c1_c2 p2_7
84968496 Filter: (id < 1000)
8497- -> Seq Scan on p2_c3_c1
8497+ -> Seq Scan on p2_c3_c1 p2_8
84988498 Filter: (id < 1000)
8499- -> Seq Scan on p2_c3_c2
8499+ -> Seq Scan on p2_c3_c2 p2_9
85008500 Filter: (id < 1000)
85018501 (40 rows)
85028502
@@ -8530,47 +8530,47 @@ not used hint:
85308530 duplication hint:
85318531 error hint:
85328532
8533- QUERY PLAN
8534---------------------------------------------------------------------
8533+ QUERY PLAN
8534+-------------------------------------------------------------------------
85358535 Append
85368536 -> Append
8537- -> Index Scan using p1_val3 on p1
8537+ -> Index Scan using p1_val3 on p1 p1_1
85388538 Index Cond: (val < 1000)
8539- -> Index Scan using p1_c1_val3 on p1_c1
8539+ -> Index Scan using p1_c1_val3 on p1_c1 p1_2
85408540 Index Cond: (val < 1000)
8541- -> Index Scan using p1_c2_val3 on p1_c2
8541+ -> Index Scan using p1_c2_val3 on p1_c2 p1_3
85428542 Index Cond: (val < 1000)
8543- -> Index Scan using p1_c3_val3 on p1_c3
8543+ -> Index Scan using p1_c3_val3 on p1_c3 p1_4
85448544 Index Cond: (val < 1000)
8545- -> Index Scan using p1_c4_val3 on p1_c4
8545+ -> Index Scan using p1_c4_val3 on p1_c4 p1_5
85468546 Index Cond: (val < 1000)
8547- -> Index Scan using p1_c1_c1_val3 on p1_c1_c1
8547+ -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
85488548 Index Cond: (val < 1000)
8549- -> Index Scan using p1_c1_c2_val3 on p1_c1_c2
8549+ -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
85508550 Index Cond: (val < 1000)
8551- -> Index Scan using p1_c3_c1_val3 on p1_c3_c1
8551+ -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
85528552 Index Cond: (val < 1000)
8553- -> Index Scan using p1_c3_c2_val3 on p1_c3_c2
8553+ -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
85548554 Index Cond: (val < 1000)
85558555 -> Result
85568556 -> Append
8557- -> Index Scan using p2_id_val_idx on p2
8557+ -> Index Scan using p2_id_val_idx on p2 p2_1
85588558 Index Cond: (id < 1000)
8559- -> Index Scan using p2_c1_id_val_idx on p2_c1
8559+ -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
85608560 Index Cond: (id < 1000)
8561- -> Index Scan using p2_c2_id_val_idx on p2_c2
8561+ -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
85628562 Index Cond: (id < 1000)
8563- -> Index Scan using p2_c3_id_val_idx on p2_c3
8563+ -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
85648564 Index Cond: (id < 1000)
8565- -> Index Scan using p2_c4_id_val_idx on p2_c4
8565+ -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
85668566 Index Cond: (id < 1000)
8567- -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
8567+ -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
85688568 Index Cond: (id < 1000)
8569- -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
8569+ -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
85708570 Index Cond: (id < 1000)
8571- -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
8571+ -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
85728572 Index Cond: (id < 1000)
8573- -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
8573+ -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
85748574 Index Cond: (id < 1000)
85758575 (40 rows)
85768576
@@ -8578,49 +8578,49 @@ error hint:
85788578 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
85798579 UNION
85808580 SELECT val::int FROM p2 WHERE id < 1000;
8581- QUERY PLAN
8582------------------------------------------------
8581+ QUERY PLAN
8582+---------------------------------------------------
85838583 HashAggregate
85848584 Group Key: p1.val
85858585 -> Append
85868586 -> Append
8587- -> Seq Scan on p1
8587+ -> Seq Scan on p1 p1_1
85888588 Filter: (val < 1000)
8589- -> Seq Scan on p1_c1
8589+ -> Seq Scan on p1_c1 p1_2
85908590 Filter: (val < 1000)
8591- -> Seq Scan on p1_c2
8591+ -> Seq Scan on p1_c2 p1_3
85928592 Filter: (val < 1000)
8593- -> Seq Scan on p1_c3
8593+ -> Seq Scan on p1_c3 p1_4
85948594 Filter: (val < 1000)
8595- -> Seq Scan on p1_c4
8595+ -> Seq Scan on p1_c4 p1_5
85968596 Filter: (val < 1000)
8597- -> Seq Scan on p1_c1_c1
8597+ -> Seq Scan on p1_c1_c1 p1_6
85988598 Filter: (val < 1000)
8599- -> Seq Scan on p1_c1_c2
8599+ -> Seq Scan on p1_c1_c2 p1_7
86008600 Filter: (val < 1000)
8601- -> Seq Scan on p1_c3_c1
8601+ -> Seq Scan on p1_c3_c1 p1_8
86028602 Filter: (val < 1000)
8603- -> Seq Scan on p1_c3_c2
8603+ -> Seq Scan on p1_c3_c2 p1_9
86048604 Filter: (val < 1000)
86058605 -> Result
86068606 -> Append
8607- -> Seq Scan on p2
8607+ -> Seq Scan on p2 p2_1
86088608 Filter: (id < 1000)
8609- -> Seq Scan on p2_c1
8609+ -> Seq Scan on p2_c1 p2_2
86108610 Filter: (id < 1000)
8611- -> Seq Scan on p2_c2
8611+ -> Seq Scan on p2_c2 p2_3
86128612 Filter: (id < 1000)
8613- -> Seq Scan on p2_c3
8613+ -> Seq Scan on p2_c3 p2_4
86148614 Filter: (id < 1000)
8615- -> Seq Scan on p2_c4
8615+ -> Seq Scan on p2_c4 p2_5
86168616 Filter: (id < 1000)
8617- -> Seq Scan on p2_c1_c1
8617+ -> Seq Scan on p2_c1_c1 p2_6
86188618 Filter: (id < 1000)
8619- -> Seq Scan on p2_c1_c2
8619+ -> Seq Scan on p2_c1_c2 p2_7
86208620 Filter: (id < 1000)
8621- -> Seq Scan on p2_c3_c1
8621+ -> Seq Scan on p2_c3_c1 p2_8
86228622 Filter: (id < 1000)
8623- -> Seq Scan on p2_c3_c2
8623+ -> Seq Scan on p2_c3_c2 p2_9
86248624 Filter: (id < 1000)
86258625 (42 rows)
86268626
@@ -8644,49 +8644,49 @@ not used hint:
86448644 duplication hint:
86458645 error hint:
86468646
8647- QUERY PLAN
8648---------------------------------------------------------------------------
8647+ QUERY PLAN
8648+-------------------------------------------------------------------------------
86498649 HashAggregate
86508650 Group Key: p1.val
86518651 -> Append
86528652 -> Append
8653- -> Seq Scan on p1
8653+ -> Seq Scan on p1 p1_1
86548654 Filter: (val < 1000)
8655- -> Seq Scan on p1_c1
8655+ -> Seq Scan on p1_c1 p1_2
86568656 Filter: (val < 1000)
8657- -> Seq Scan on p1_c2
8657+ -> Seq Scan on p1_c2 p1_3
86588658 Filter: (val < 1000)
8659- -> Seq Scan on p1_c3
8659+ -> Seq Scan on p1_c3 p1_4
86608660 Filter: (val < 1000)
8661- -> Seq Scan on p1_c4
8661+ -> Seq Scan on p1_c4 p1_5
86628662 Filter: (val < 1000)
8663- -> Seq Scan on p1_c1_c1
8663+ -> Seq Scan on p1_c1_c1 p1_6
86648664 Filter: (val < 1000)
8665- -> Seq Scan on p1_c1_c2
8665+ -> Seq Scan on p1_c1_c2 p1_7
86668666 Filter: (val < 1000)
8667- -> Seq Scan on p1_c3_c1
8667+ -> Seq Scan on p1_c3_c1 p1_8
86688668 Filter: (val < 1000)
8669- -> Seq Scan on p1_c3_c2
8669+ -> Seq Scan on p1_c3_c2 p1_9
86708670 Filter: (val < 1000)
86718671 -> Result
86728672 -> Append
8673- -> Index Scan using p2_id_val_idx on p2
8673+ -> Index Scan using p2_id_val_idx on p2 p2_1
86748674 Index Cond: (id < 1000)
8675- -> Index Scan using p2_c1_id_val_idx on p2_c1
8675+ -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
86768676 Index Cond: (id < 1000)
8677- -> Index Scan using p2_c2_id_val_idx on p2_c2
8677+ -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
86788678 Index Cond: (id < 1000)
8679- -> Index Scan using p2_c3_id_val_idx on p2_c3
8679+ -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
86808680 Index Cond: (id < 1000)
8681- -> Index Scan using p2_c4_id_val_idx on p2_c4
8681+ -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
86828682 Index Cond: (id < 1000)
8683- -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
8683+ -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
86848684 Index Cond: (id < 1000)
8685- -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
8685+ -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
86868686 Index Cond: (id < 1000)
8687- -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
8687+ -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
86888688 Index Cond: (id < 1000)
8689- -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
8689+ -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
86908690 Index Cond: (id < 1000)
86918691 (42 rows)
86928692
@@ -8720,49 +8720,49 @@ not used hint:
87208720 duplication hint:
87218721 error hint:
87228722
8723- QUERY PLAN
8724---------------------------------------------------------------------------
8723+ QUERY PLAN
8724+-------------------------------------------------------------------------------
87258725 HashAggregate
87268726 Group Key: p1.val
87278727 -> Append
87288728 -> Append
8729- -> Index Scan using p1_val3 on p1
8729+ -> Index Scan using p1_val3 on p1 p1_1
87308730 Index Cond: (val < 1000)
8731- -> Index Scan using p1_c1_val3 on p1_c1
8731+ -> Index Scan using p1_c1_val3 on p1_c1 p1_2
87328732 Index Cond: (val < 1000)
8733- -> Index Scan using p1_c2_val3 on p1_c2
8733+ -> Index Scan using p1_c2_val3 on p1_c2 p1_3
87348734 Index Cond: (val < 1000)
8735- -> Index Scan using p1_c3_val3 on p1_c3
8735+ -> Index Scan using p1_c3_val3 on p1_c3 p1_4
87368736 Index Cond: (val < 1000)
8737- -> Index Scan using p1_c4_val3 on p1_c4
8737+ -> Index Scan using p1_c4_val3 on p1_c4 p1_5
87388738 Index Cond: (val < 1000)
8739- -> Index Scan using p1_c1_c1_val3 on p1_c1_c1
8739+ -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
87408740 Index Cond: (val < 1000)
8741- -> Index Scan using p1_c1_c2_val3 on p1_c1_c2
8741+ -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
87428742 Index Cond: (val < 1000)
8743- -> Index Scan using p1_c3_c1_val3 on p1_c3_c1
8743+ -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
87448744 Index Cond: (val < 1000)
8745- -> Index Scan using p1_c3_c2_val3 on p1_c3_c2
8745+ -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
87468746 Index Cond: (val < 1000)
87478747 -> Result
87488748 -> Append
8749- -> Index Scan using p2_id_val_idx on p2
8749+ -> Index Scan using p2_id_val_idx on p2 p2_1
87508750 Index Cond: (id < 1000)
8751- -> Index Scan using p2_c1_id_val_idx on p2_c1
8751+ -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
87528752 Index Cond: (id < 1000)
8753- -> Index Scan using p2_c2_id_val_idx on p2_c2
8753+ -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
87548754 Index Cond: (id < 1000)
8755- -> Index Scan using p2_c3_id_val_idx on p2_c3
8755+ -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
87568756 Index Cond: (id < 1000)
8757- -> Index Scan using p2_c4_id_val_idx on p2_c4
8757+ -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
87588758 Index Cond: (id < 1000)
8759- -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
8759+ -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
87608760 Index Cond: (id < 1000)
8761- -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
8761+ -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
87628762 Index Cond: (id < 1000)
8763- -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
8763+ -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
87648764 Index Cond: (id < 1000)
8765- -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
8765+ -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
87668766 Index Cond: (id < 1000)
87678767 (42 rows)
87688768
--- a/expected/ut-A.out
+++ b/expected/ut-A.out
@@ -3261,6 +3261,7 @@ SELECT name, setting FROM settings;
32613261 enable_gathermerge | on
32623262 enable_hashagg | on
32633263 enable_hashjoin | on
3264+ enable_incremental_sort | on
32643265 enable_indexonlyscan | on
32653266 enable_indexscan | on
32663267 enable_material | on
@@ -3274,7 +3275,7 @@ SELECT name, setting FROM settings;
32743275 enable_seqscan | on
32753276 enable_sort | on
32763277 enable_tidscan | on
3277-(46 rows)
3278+(47 rows)
32783279
32793280 SET pg_hint_plan.parse_messages TO error;
32803281 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
@@ -3317,6 +3318,7 @@ SELECT name, setting FROM settings;
33173318 enable_gathermerge | on
33183319 enable_hashagg | on
33193320 enable_hashjoin | on
3321+ enable_incremental_sort | on
33203322 enable_indexonlyscan | on
33213323 enable_indexscan | on
33223324 enable_material | on
@@ -3330,7 +3332,7 @@ SELECT name, setting FROM settings;
33303332 enable_seqscan | on
33313333 enable_sort | on
33323334 enable_tidscan | on
3333-(46 rows)
3335+(47 rows)
33343336
33353337 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)*/
33363338 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
@@ -3392,6 +3394,7 @@ SELECT name, setting FROM settings;
33923394 enable_gathermerge | on
33933395 enable_hashagg | on
33943396 enable_hashjoin | on
3397+ enable_incremental_sort | on
33953398 enable_indexonlyscan | on
33963399 enable_indexscan | on
33973400 enable_material | on
@@ -3405,7 +3408,7 @@ SELECT name, setting FROM settings;
34053408 enable_seqscan | on
34063409 enable_sort | on
34073410 enable_tidscan | on
3408-(46 rows)
3411+(47 rows)
34093412
34103413 SET pg_hint_plan.parse_messages TO error;
34113414 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
@@ -3448,6 +3451,7 @@ SELECT name, setting FROM settings;
34483451 enable_gathermerge | on
34493452 enable_hashagg | on
34503453 enable_hashjoin | on
3454+ enable_incremental_sort | on
34513455 enable_indexonlyscan | on
34523456 enable_indexscan | on
34533457 enable_material | on
@@ -3461,7 +3465,7 @@ SELECT name, setting FROM settings;
34613465 enable_seqscan | on
34623466 enable_sort | on
34633467 enable_tidscan | on
3464-(46 rows)
3468+(47 rows)
34653469
34663470 EXPLAIN (COSTS false) EXECUTE p1;
34673471 QUERY PLAN
@@ -3512,6 +3516,7 @@ SELECT name, setting FROM settings;
35123516 enable_gathermerge | on
35133517 enable_hashagg | on
35143518 enable_hashjoin | on
3519+ enable_incremental_sort | on
35153520 enable_indexonlyscan | on
35163521 enable_indexscan | on
35173522 enable_material | on
@@ -3525,7 +3530,7 @@ SELECT name, setting FROM settings;
35253530 enable_seqscan | on
35263531 enable_sort | on
35273532 enable_tidscan | on
3528-(46 rows)
3533+(47 rows)
35293534
35303535 SET pg_hint_plan.parse_messages TO error;
35313536 EXPLAIN (COSTS false) EXECUTE p2;
@@ -3599,6 +3604,7 @@ SELECT name, setting FROM settings;
35993604 enable_gathermerge | on
36003605 enable_hashagg | on
36013606 enable_hashjoin | on
3607+ enable_incremental_sort | on
36023608 enable_indexonlyscan | on
36033609 enable_indexscan | on
36043610 enable_material | on
@@ -3612,7 +3618,7 @@ SELECT name, setting FROM settings;
36123618 enable_seqscan | on
36133619 enable_sort | on
36143620 enable_tidscan | on
3615-(46 rows)
3621+(47 rows)
36163622
36173623 -- No. A-12-1-4
36183624 -- No. A-12-2-4
@@ -3652,6 +3658,7 @@ SELECT name, setting FROM settings;
36523658 enable_gathermerge | on
36533659 enable_hashagg | on
36543660 enable_hashjoin | on
3661+ enable_incremental_sort | on
36553662 enable_indexonlyscan | on
36563663 enable_indexscan | on
36573664 enable_material | on
@@ -3665,7 +3672,7 @@ SELECT name, setting FROM settings;
36653672 enable_seqscan | on
36663673 enable_sort | on
36673674 enable_tidscan | on
3668-(46 rows)
3675+(47 rows)
36693676
36703677 SET pg_hint_plan.parse_messages TO error;
36713678 EXPLAIN (COSTS false) EXECUTE p2;
@@ -3717,6 +3724,7 @@ SELECT name, setting FROM settings;
37173724 enable_gathermerge | on
37183725 enable_hashagg | on
37193726 enable_hashjoin | on
3727+ enable_incremental_sort | on
37203728 enable_indexonlyscan | on
37213729 enable_indexscan | on
37223730 enable_material | on
@@ -3730,7 +3738,7 @@ SELECT name, setting FROM settings;
37303738 enable_seqscan | on
37313739 enable_sort | on
37323740 enable_tidscan | on
3733-(46 rows)
3741+(47 rows)
37343742
37353743 DEALLOCATE p1;
37363744 SET pg_hint_plan.parse_messages TO LOG;
@@ -3797,6 +3805,7 @@ SELECT name, setting FROM settings;
37973805 enable_gathermerge | on
37983806 enable_hashagg | on
37993807 enable_hashjoin | on
3808+ enable_incremental_sort | on
38003809 enable_indexonlyscan | on
38013810 enable_indexscan | off
38023811 enable_material | on
@@ -3810,7 +3819,7 @@ SELECT name, setting FROM settings;
38103819 enable_seqscan | on
38113820 enable_sort | on
38123821 enable_tidscan | on
3813-(46 rows)
3822+(47 rows)
38143823
38153824 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
38163825 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
@@ -3869,6 +3878,7 @@ SELECT name, setting FROM settings;
38693878 enable_gathermerge | on
38703879 enable_hashagg | on
38713880 enable_hashjoin | on
3881+ enable_incremental_sort | on
38723882 enable_indexonlyscan | on
38733883 enable_indexscan | off
38743884 enable_material | on
@@ -3882,7 +3892,7 @@ SELECT name, setting FROM settings;
38823892 enable_seqscan | on
38833893 enable_sort | on
38843894 enable_tidscan | on
3885-(46 rows)
3895+(47 rows)
38863896
38873897 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
38883898 QUERY PLAN
@@ -3943,6 +3953,7 @@ SELECT name, setting FROM settings;
39433953 enable_gathermerge | on
39443954 enable_hashagg | on
39453955 enable_hashjoin | on
3956+ enable_incremental_sort | on
39463957 enable_indexonlyscan | on
39473958 enable_indexscan | off
39483959 enable_material | on
@@ -3956,7 +3967,7 @@ SELECT name, setting FROM settings;
39563967 enable_seqscan | on
39573968 enable_sort | on
39583969 enable_tidscan | on
3959-(46 rows)
3970+(47 rows)
39603971
39613972 BEGIN;
39623973 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
@@ -4018,6 +4029,7 @@ SELECT name, setting FROM settings;
40184029 enable_gathermerge | on
40194030 enable_hashagg | on
40204031 enable_hashjoin | on
4032+ enable_incremental_sort | on
40214033 enable_indexonlyscan | on
40224034 enable_indexscan | off
40234035 enable_material | on
@@ -4031,7 +4043,7 @@ SELECT name, setting FROM settings;
40314043 enable_seqscan | on
40324044 enable_sort | on
40334045 enable_tidscan | on
4034-(46 rows)
4046+(47 rows)
40354047
40364048 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
40374049 QUERY PLAN
@@ -4093,6 +4105,7 @@ SELECT name, setting FROM settings;
40934105 enable_gathermerge | on
40944106 enable_hashagg | on
40954107 enable_hashjoin | on
4108+ enable_incremental_sort | on
40964109 enable_indexonlyscan | on
40974110 enable_indexscan | off
40984111 enable_material | on
@@ -4106,7 +4119,7 @@ SELECT name, setting FROM settings;
41064119 enable_seqscan | on
41074120 enable_sort | on
41084121 enable_tidscan | on
4109-(46 rows)
4122+(47 rows)
41104123
41114124 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
41124125 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
@@ -4169,6 +4182,7 @@ SELECT name, setting FROM settings;
41694182 enable_gathermerge | on
41704183 enable_hashagg | on
41714184 enable_hashjoin | on
4185+ enable_incremental_sort | on
41724186 enable_indexonlyscan | on
41734187 enable_indexscan | off
41744188 enable_material | on
@@ -4182,7 +4196,7 @@ SELECT name, setting FROM settings;
41824196 enable_seqscan | on
41834197 enable_sort | on
41844198 enable_tidscan | on
4185-(46 rows)
4199+(47 rows)
41864200
41874201 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
41884202 QUERY PLAN
--- a/expected/ut-J.out
+++ b/expected/ut-J.out
@@ -472,16 +472,16 @@ EXPLAIN (COSTS false) SELECT * FROM s1.p1 t1, s1.p1 t2 WHERE t1.c1 = t2.c1;
472472 Hash Join
473473 Hash Cond: (t1.c1 = t2.c1)
474474 -> Append
475- -> Seq Scan on p1 t1
476- -> Seq Scan on p1c1 t1_1
477- -> Seq Scan on p1c2 t1_2
478- -> Seq Scan on p1c3 t1_3
475+ -> Seq Scan on p1 t1_1
476+ -> Seq Scan on p1c1 t1_2
477+ -> Seq Scan on p1c2 t1_3
478+ -> Seq Scan on p1c3 t1_4
479479 -> Hash
480480 -> Append
481- -> Seq Scan on p1 t2
482- -> Seq Scan on p1c1 t2_1
483- -> Seq Scan on p1c2 t2_2
484- -> Seq Scan on p1c3 t2_3
481+ -> Seq Scan on p1 t2_1
482+ -> Seq Scan on p1c1 t2_2
483+ -> Seq Scan on p1c2 t2_3
484+ -> Seq Scan on p1c3 t2_4
485485 (13 rows)
486486
487487 /*+NestLoop(t1 t2)*/
@@ -497,18 +497,18 @@ error hint:
497497 --------------------------------------------------
498498 Nested Loop
499499 -> Append
500- -> Seq Scan on p1 t1
501- -> Seq Scan on p1c1 t1_1
502- -> Seq Scan on p1c2 t1_2
503- -> Seq Scan on p1c3 t1_3
500+ -> Seq Scan on p1 t1_1
501+ -> Seq Scan on p1c1 t1_2
502+ -> Seq Scan on p1c2 t1_3
503+ -> Seq Scan on p1c3 t1_4
504504 -> Append
505- -> Seq Scan on p1 t2
505+ -> Seq Scan on p1 t2_1
506506 Filter: (t1.c1 = c1)
507- -> Index Scan using p1c1_i on p1c1 t2_1
507+ -> Index Scan using p1c1_i on p1c1 t2_2
508508 Index Cond: (c1 = t1.c1)
509- -> Index Scan using p1c2_i on p1c2 t2_2
509+ -> Index Scan using p1c2_i on p1c2 t2_3
510510 Index Cond: (c1 = t1.c1)
511- -> Index Scan using p1c3_i on p1c3 t2_3
511+ -> Index Scan using p1c3_i on p1c3 t2_4
512512 Index Cond: (c1 = t1.c1)
513513 (15 rows)
514514
@@ -4248,27 +4248,27 @@ SET enable_hashjoin TO on;
42484248 ---- No. J-3-2 join inherit tables
42494249 ----
42504250 EXPLAIN (COSTS false) SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
4251- QUERY PLAN
4252-------------------------------------
4251+ QUERY PLAN
4252+-----------------------------------------
42534253 Hash Join
42544254 Hash Cond: (p2.c1 = p1.c1)
42554255 -> Append
4256- -> Seq Scan on p2
4257- -> Seq Scan on p2c1
4258- -> Seq Scan on p2c2
4259- -> Seq Scan on p2c3
4260- -> Seq Scan on p2c1c1
4261- -> Seq Scan on p2c1c2
4262- -> Seq Scan on p2c2c1
4263- -> Seq Scan on p2c2c2
4264- -> Seq Scan on p2c3c1
4265- -> Seq Scan on p2c3c2
4256+ -> Seq Scan on p2 p2_1
4257+ -> Seq Scan on p2c1 p2_2
4258+ -> Seq Scan on p2c2 p2_3
4259+ -> Seq Scan on p2c3 p2_4
4260+ -> Seq Scan on p2c1c1 p2_5
4261+ -> Seq Scan on p2c1c2 p2_6
4262+ -> Seq Scan on p2c2c1 p2_7
4263+ -> Seq Scan on p2c2c2 p2_8
4264+ -> Seq Scan on p2c3c1 p2_9
4265+ -> Seq Scan on p2c3c2 p2_10
42664266 -> Hash
42674267 -> Append
4268- -> Seq Scan on p1
4269- -> Seq Scan on p1c1
4270- -> Seq Scan on p1c2
4271- -> Seq Scan on p1c3
4268+ -> Seq Scan on p1 p1_1
4269+ -> Seq Scan on p1c1 p1_2
4270+ -> Seq Scan on p1c2 p1_3
4271+ -> Seq Scan on p1c3 p1_4
42724272 (19 rows)
42734273
42744274 -- No. J-3-2-1
@@ -4281,30 +4281,30 @@ not used hint:
42814281 duplication hint:
42824282 error hint:
42834283
4284- QUERY PLAN
4285---------------------------------------
4284+ QUERY PLAN
4285+--------------------------------------------
42864286 Merge Join
42874287 Merge Cond: (p1.c1 = p2.c1)
42884288 -> Sort
42894289 Sort Key: p1.c1
42904290 -> Append
4291- -> Seq Scan on p1
4292- -> Seq Scan on p1c1
4293- -> Seq Scan on p1c2
4294- -> Seq Scan on p1c3
4291+ -> Seq Scan on p1 p1_1
4292+ -> Seq Scan on p1c1 p1_2
4293+ -> Seq Scan on p1c2 p1_3
4294+ -> Seq Scan on p1c3 p1_4
42954295 -> Sort
42964296 Sort Key: p2.c1
42974297 -> Append
4298- -> Seq Scan on p2
4299- -> Seq Scan on p2c1
4300- -> Seq Scan on p2c2
4301- -> Seq Scan on p2c3
4302- -> Seq Scan on p2c1c1
4303- -> Seq Scan on p2c1c2
4304- -> Seq Scan on p2c2c1
4305- -> Seq Scan on p2c2c2
4306- -> Seq Scan on p2c3c1
4307- -> Seq Scan on p2c3c2
4298+ -> Seq Scan on p2 p2_1
4299+ -> Seq Scan on p2c1 p2_2
4300+ -> Seq Scan on p2c2 p2_3
4301+ -> Seq Scan on p2c3 p2_4
4302+ -> Seq Scan on p2c1c1 p2_5
4303+ -> Seq Scan on p2c1c2 p2_6
4304+ -> Seq Scan on p2c2c1 p2_7
4305+ -> Seq Scan on p2c2c2 p2_8
4306+ -> Seq Scan on p2c3c1 p2_9
4307+ -> Seq Scan on p2c3c2 p2_10
43084308 (22 rows)
43094309
43104310 -- No. J-3-2-2
@@ -4317,53 +4317,53 @@ MergeJoin(p1c1 p2c1)
43174317 duplication hint:
43184318 error hint:
43194319
4320- QUERY PLAN
4321-------------------------------------
4320+ QUERY PLAN
4321+-----------------------------------------
43224322 Hash Join
43234323 Hash Cond: (p2.c1 = p1.c1)
43244324 -> Append
4325- -> Seq Scan on p2
4326- -> Seq Scan on p2c1
4327- -> Seq Scan on p2c2
4328- -> Seq Scan on p2c3
4329- -> Seq Scan on p2c1c1
4330- -> Seq Scan on p2c1c2
4331- -> Seq Scan on p2c2c1
4332- -> Seq Scan on p2c2c2
4333- -> Seq Scan on p2c3c1
4334- -> Seq Scan on p2c3c2
4325+ -> Seq Scan on p2 p2_1
4326+ -> Seq Scan on p2c1 p2_2
4327+ -> Seq Scan on p2c2 p2_3
4328+ -> Seq Scan on p2c3 p2_4
4329+ -> Seq Scan on p2c1c1 p2_5
4330+ -> Seq Scan on p2c1c2 p2_6
4331+ -> Seq Scan on p2c2c1 p2_7
4332+ -> Seq Scan on p2c2c2 p2_8
4333+ -> Seq Scan on p2c3c1 p2_9
4334+ -> Seq Scan on p2c3c2 p2_10
43354335 -> Hash
43364336 -> Append
4337- -> Seq Scan on p1
4338- -> Seq Scan on p1c1
4339- -> Seq Scan on p1c2
4340- -> Seq Scan on p1c3
4337+ -> Seq Scan on p1 p1_1
4338+ -> Seq Scan on p1c1 p1_2
4339+ -> Seq Scan on p1c2 p1_3
4340+ -> Seq Scan on p1c3 p1_4
43414341 (19 rows)
43424342
43434343 ----
43444344 ---- No. J-3-2-2 join partitioned tables
43454345 ----
43464346 EXPLAIN (COSTS false) SELECT * FROM s1.pt1, s1.p2 WHERE pt1.c1 = p2.c1;
4347- QUERY PLAN
4348---------------------------------------
4347+ QUERY PLAN
4348+--------------------------------------------
43494349 Hash Join
4350- Hash Cond: (p2.c1 = pt1_c1.c1)
4350+ Hash Cond: (p2.c1 = pt1.c1)
43514351 -> Append
4352- -> Seq Scan on p2
4353- -> Seq Scan on p2c1
4354- -> Seq Scan on p2c2
4355- -> Seq Scan on p2c3
4356- -> Seq Scan on p2c1c1
4357- -> Seq Scan on p2c1c2
4358- -> Seq Scan on p2c2c1
4359- -> Seq Scan on p2c2c2
4360- -> Seq Scan on p2c3c1
4361- -> Seq Scan on p2c3c2
4352+ -> Seq Scan on p2 p2_1
4353+ -> Seq Scan on p2c1 p2_2
4354+ -> Seq Scan on p2c2 p2_3
4355+ -> Seq Scan on p2c3 p2_4
4356+ -> Seq Scan on p2c1c1 p2_5
4357+ -> Seq Scan on p2c1c2 p2_6
4358+ -> Seq Scan on p2c2c1 p2_7
4359+ -> Seq Scan on p2c2c2 p2_8
4360+ -> Seq Scan on p2c3c1 p2_9
4361+ -> Seq Scan on p2c3c2 p2_10
43624362 -> Hash
43634363 -> Append
4364- -> Seq Scan on pt1_c1
4365- -> Seq Scan on pt1_c2
4366- -> Seq Scan on pt1_c3
4364+ -> Seq Scan on pt1_c1 pt1_1
4365+ -> Seq Scan on pt1_c2 pt1_2
4366+ -> Seq Scan on pt1_c3 pt1_3
43674367 (18 rows)
43684368
43694369 /*+MergeJoin(pt1 p2)*/
@@ -4375,29 +4375,29 @@ not used hint:
43754375 duplication hint:
43764376 error hint:
43774377
4378- QUERY PLAN
4379---------------------------------------
4378+ QUERY PLAN
4379+--------------------------------------------
43804380 Merge Join
4381- Merge Cond: (pt1_c1.c1 = p2.c1)
4381+ Merge Cond: (pt1.c1 = p2.c1)
43824382 -> Sort
4383- Sort Key: pt1_c1.c1
4383+ Sort Key: pt1.c1
43844384 -> Append
4385- -> Seq Scan on pt1_c1
4386- -> Seq Scan on pt1_c2
4387- -> Seq Scan on pt1_c3
4385+ -> Seq Scan on pt1_c1 pt1_1
4386+ -> Seq Scan on pt1_c2 pt1_2
4387+ -> Seq Scan on pt1_c3 pt1_3
43884388 -> Sort
43894389 Sort Key: p2.c1
43904390 -> Append
4391- -> Seq Scan on p2
4392- -> Seq Scan on p2c1
4393- -> Seq Scan on p2c2
4394- -> Seq Scan on p2c3
4395- -> Seq Scan on p2c1c1
4396- -> Seq Scan on p2c1c2
4397- -> Seq Scan on p2c2c1
4398- -> Seq Scan on p2c2c2
4399- -> Seq Scan on p2c3c1
4400- -> Seq Scan on p2c3c2
4391+ -> Seq Scan on p2 p2_1
4392+ -> Seq Scan on p2c1 p2_2
4393+ -> Seq Scan on p2c2 p2_3
4394+ -> Seq Scan on p2c3 p2_4
4395+ -> Seq Scan on p2c1c1 p2_5
4396+ -> Seq Scan on p2c1c2 p2_6
4397+ -> Seq Scan on p2c2c1 p2_7
4398+ -> Seq Scan on p2c2c2 p2_8
4399+ -> Seq Scan on p2c3c1 p2_9
4400+ -> Seq Scan on p2c3c2 p2_10
44014401 (21 rows)
44024402
44034403 /*+MergeJoin(pt1_c1 p2c1)*/ /* will ignored */
@@ -4409,26 +4409,26 @@ MergeJoin(p2c1 pt1_c1)
44094409 duplication hint:
44104410 error hint:
44114411
4412- QUERY PLAN
4413---------------------------------------
4412+ QUERY PLAN
4413+--------------------------------------------
44144414 Hash Join
4415- Hash Cond: (p2.c1 = pt1_c1.c1)
4415+ Hash Cond: (p2.c1 = pt1.c1)
44164416 -> Append
4417- -> Seq Scan on p2
4418- -> Seq Scan on p2c1
4419- -> Seq Scan on p2c2
4420- -> Seq Scan on p2c3
4421- -> Seq Scan on p2c1c1
4422- -> Seq Scan on p2c1c2
4423- -> Seq Scan on p2c2c1
4424- -> Seq Scan on p2c2c2
4425- -> Seq Scan on p2c3c1
4426- -> Seq Scan on p2c3c2
4417+ -> Seq Scan on p2 p2_1
4418+ -> Seq Scan on p2c1 p2_2
4419+ -> Seq Scan on p2c2 p2_3
4420+ -> Seq Scan on p2c3 p2_4
4421+ -> Seq Scan on p2c1c1 p2_5
4422+ -> Seq Scan on p2c1c2 p2_6
4423+ -> Seq Scan on p2c2c1 p2_7
4424+ -> Seq Scan on p2c2c2 p2_8
4425+ -> Seq Scan on p2c3c1 p2_9
4426+ -> Seq Scan on p2c3c2 p2_10
44274427 -> Hash
44284428 -> Append
4429- -> Seq Scan on pt1_c1
4430- -> Seq Scan on pt1_c2
4431- -> Seq Scan on pt1_c3
4429+ -> Seq Scan on pt1_c1 pt1_1
4430+ -> Seq Scan on pt1_c2 pt1_2
4431+ -> Seq Scan on pt1_c3 pt1_3
44324432 (18 rows)
44334433
44344434 ----
--- a/expected/ut-L.out
+++ b/expected/ut-L.out
@@ -673,28 +673,28 @@ EXPLAIN (COSTS false) SELECT * FROM s1.p1 t1, s1.p1 t2, s1.p1 t3, s1.p1 t4 WHERE
673673 -> Hash Join
674674 Hash Cond: (t1.c1 = t2.c1)
675675 -> Append
676- -> Seq Scan on p1 t1
677- -> Seq Scan on p1c1 t1_1
678- -> Seq Scan on p1c2 t1_2
679- -> Seq Scan on p1c3 t1_3
676+ -> Seq Scan on p1 t1_1
677+ -> Seq Scan on p1c1 t1_2
678+ -> Seq Scan on p1c2 t1_3
679+ -> Seq Scan on p1c3 t1_4
680680 -> Hash
681681 -> Append
682- -> Seq Scan on p1 t2
683- -> Seq Scan on p1c1 t2_1
684- -> Seq Scan on p1c2 t2_2
685- -> Seq Scan on p1c3 t2_3
682+ -> Seq Scan on p1 t2_1
683+ -> Seq Scan on p1c1 t2_2
684+ -> Seq Scan on p1c2 t2_3
685+ -> Seq Scan on p1c3 t2_4
686686 -> Hash
687687 -> Append
688- -> Seq Scan on p1 t3
689- -> Seq Scan on p1c1 t3_1
690- -> Seq Scan on p1c2 t3_2
691- -> Seq Scan on p1c3 t3_3
688+ -> Seq Scan on p1 t3_1
689+ -> Seq Scan on p1c1 t3_2
690+ -> Seq Scan on p1c2 t3_3
691+ -> Seq Scan on p1c3 t3_4
692692 -> Hash
693693 -> Append
694- -> Seq Scan on p1 t4
695- -> Seq Scan on p1c1 t4_1
696- -> Seq Scan on p1c2 t4_2
697- -> Seq Scan on p1c3 t4_3
694+ -> Seq Scan on p1 t4_1
695+ -> Seq Scan on p1c1 t4_2
696+ -> Seq Scan on p1c2 t4_3
697+ -> Seq Scan on p1c3 t4_4
698698 (29 rows)
699699
700700 /*+Leading(t4 t3 t2 t1)*/
@@ -715,28 +715,28 @@ error hint:
715715 -> Hash Join
716716 Hash Cond: (t3.c1 = t4.c1)
717717 -> Append
718- -> Seq Scan on p1 t3
719- -> Seq Scan on p1c1 t3_1
720- -> Seq Scan on p1c2 t3_2
721- -> Seq Scan on p1c3 t3_3
718+ -> Seq Scan on p1 t3_1
719+ -> Seq Scan on p1c1 t3_2
720+ -> Seq Scan on p1c2 t3_3
721+ -> Seq Scan on p1c3 t3_4
722722 -> Hash
723723 -> Append
724- -> Seq Scan on p1 t4
725- -> Seq Scan on p1c1 t4_1
726- -> Seq Scan on p1c2 t4_2
727- -> Seq Scan on p1c3 t4_3
724+ -> Seq Scan on p1 t4_1
725+ -> Seq Scan on p1c1 t4_2
726+ -> Seq Scan on p1c2 t4_3
727+ -> Seq Scan on p1c3 t4_4
728728 -> Hash
729729 -> Append
730- -> Seq Scan on p1 t2
731- -> Seq Scan on p1c1 t2_1
732- -> Seq Scan on p1c2 t2_2
733- -> Seq Scan on p1c3 t2_3
730+ -> Seq Scan on p1 t2_1
731+ -> Seq Scan on p1c1 t2_2
732+ -> Seq Scan on p1c2 t2_3
733+ -> Seq Scan on p1c3 t2_4
734734 -> Hash
735735 -> Append
736- -> Seq Scan on p1 t1
737- -> Seq Scan on p1c1 t1_1
738- -> Seq Scan on p1c2 t1_2
739- -> Seq Scan on p1c3 t1_3
736+ -> Seq Scan on p1 t1_1
737+ -> Seq Scan on p1c1 t1_2
738+ -> Seq Scan on p1c2 t1_3
739+ -> Seq Scan on p1c3 t1_4
740740 (29 rows)
741741
742742 -- No. L-1-6-3
@@ -3999,19 +3999,19 @@ error hint:
39993999 -> Hash Join
40004000 Hash Cond: (t1.c1 = t2.c1)
40014001 -> Append
4002- -> Seq Scan on p2c1 t1
4003- -> Seq Scan on p2c1c1 t1_1
4004- -> Seq Scan on p2c1c2 t1_2
4002+ -> Seq Scan on p2c1 t1_1
4003+ -> Seq Scan on p2c1c1 t1_2
4004+ -> Seq Scan on p2c1c2 t1_3
40054005 -> Hash
40064006 -> Append
4007- -> Seq Scan on p2c2 t2
4008- -> Seq Scan on p2c2c1 t2_1
4009- -> Seq Scan on p2c2c2 t2_2
4007+ -> Seq Scan on p2c2 t2_1
4008+ -> Seq Scan on p2c2c1 t2_2
4009+ -> Seq Scan on p2c2c2 t2_3
40104010 -> Hash
40114011 -> Append
4012- -> Seq Scan on p2c3 t3
4013- -> Seq Scan on p2c3c1 t3_1
4014- -> Seq Scan on p2c3c2 t3_2
4012+ -> Seq Scan on p2c3 t3_1
4013+ -> Seq Scan on p2c3c1 t3_2
4014+ -> Seq Scan on p2c3c2 t3_3
40154015 (18 rows)
40164016
40174017 -- No. L-3-3-2
@@ -4033,19 +4033,19 @@ error hint:
40334033 -> Hash Join
40344034 Hash Cond: (t1.c1 = t2.c1)
40354035 -> Append
4036- -> Seq Scan on p2c1 t1
4037- -> Seq Scan on p2c1c1 t1_1
4038- -> Seq Scan on p2c1c2 t1_2
4036+ -> Seq Scan on p2c1 t1_1
4037+ -> Seq Scan on p2c1c1 t1_2
4038+ -> Seq Scan on p2c1c2 t1_3
40394039 -> Hash
40404040 -> Append
4041- -> Seq Scan on p2c2 t2
4042- -> Seq Scan on p2c2c1 t2_1
4043- -> Seq Scan on p2c2c2 t2_2
4041+ -> Seq Scan on p2c2 t2_1
4042+ -> Seq Scan on p2c2c1 t2_2
4043+ -> Seq Scan on p2c2c2 t2_3
40444044 -> Hash
40454045 -> Append
4046- -> Seq Scan on p2c3 t3
4047- -> Seq Scan on p2c3c1 t3_1
4048- -> Seq Scan on p2c3c2 t3_2
4046+ -> Seq Scan on p2c3 t3_1
4047+ -> Seq Scan on p2c3c1 t3_2
4048+ -> Seq Scan on p2c3c2 t3_3
40494049 (18 rows)
40504050
40514051 ----
--- a/expected/ut-R.out
+++ b/expected/ut-R.out
@@ -516,16 +516,16 @@ EXPLAIN SELECT * FROM s1.p1 t1, s1.p1 t2 WHERE t1.c1 = t2.c1;
516516 Hash Join (cost=xxx..xxx rows=301 width=xxx)
517517 Hash Cond: (t1.c1 = t2.c1)
518518 -> Append (cost=xxx..xxx rows=301 width=xxx)
519- -> Seq Scan on p1 t1 (cost=xxx..xxx rows=1 width=xxx)
520- -> Seq Scan on p1c1 t1_1 (cost=xxx..xxx rows=100 width=xxx)
521- -> Seq Scan on p1c2 t1_2 (cost=xxx..xxx rows=100 width=xxx)
522- -> Seq Scan on p1c3 t1_3 (cost=xxx..xxx rows=100 width=xxx)
519+ -> Seq Scan on p1 t1_1 (cost=xxx..xxx rows=1 width=xxx)
520+ -> Seq Scan on p1c1 t1_2 (cost=xxx..xxx rows=100 width=xxx)
521+ -> Seq Scan on p1c2 t1_3 (cost=xxx..xxx rows=100 width=xxx)
522+ -> Seq Scan on p1c3 t1_4 (cost=xxx..xxx rows=100 width=xxx)
523523 -> Hash (cost=xxx..xxx rows=301 width=xxx)
524524 -> Append (cost=xxx..xxx rows=301 width=xxx)
525- -> Seq Scan on p1 t2 (cost=xxx..xxx rows=1 width=xxx)
526- -> Seq Scan on p1c1 t2_1 (cost=xxx..xxx rows=100 width=xxx)
527- -> Seq Scan on p1c2 t2_2 (cost=xxx..xxx rows=100 width=xxx)
528- -> Seq Scan on p1c3 t2_3 (cost=xxx..xxx rows=100 width=xxx)
525+ -> Seq Scan on p1 t2_1 (cost=xxx..xxx rows=1 width=xxx)
526+ -> Seq Scan on p1c1 t2_2 (cost=xxx..xxx rows=100 width=xxx)
527+ -> Seq Scan on p1c2 t2_3 (cost=xxx..xxx rows=100 width=xxx)
528+ -> Seq Scan on p1c3 t2_4 (cost=xxx..xxx rows=100 width=xxx)
529529
530530 \o results/ut-R.tmpout
531531 /*+Rows(t1 t2 #1)*/
@@ -544,16 +544,16 @@ error hint:
544544 Hash Join (cost=xxx..xxx rows=1 width=xxx)
545545 Hash Cond: (t1.c1 = t2.c1)
546546 -> Append (cost=xxx..xxx rows=301 width=xxx)
547- -> Seq Scan on p1 t1 (cost=xxx..xxx rows=1 width=xxx)
548- -> Seq Scan on p1c1 t1_1 (cost=xxx..xxx rows=100 width=xxx)
549- -> Seq Scan on p1c2 t1_2 (cost=xxx..xxx rows=100 width=xxx)
550- -> Seq Scan on p1c3 t1_3 (cost=xxx..xxx rows=100 width=xxx)
547+ -> Seq Scan on p1 t1_1 (cost=xxx..xxx rows=1 width=xxx)
548+ -> Seq Scan on p1c1 t1_2 (cost=xxx..xxx rows=100 width=xxx)
549+ -> Seq Scan on p1c2 t1_3 (cost=xxx..xxx rows=100 width=xxx)
550+ -> Seq Scan on p1c3 t1_4 (cost=xxx..xxx rows=100 width=xxx)
551551 -> Hash (cost=xxx..xxx rows=301 width=xxx)
552552 -> Append (cost=xxx..xxx rows=301 width=xxx)
553- -> Seq Scan on p1 t2 (cost=xxx..xxx rows=1 width=xxx)
554- -> Seq Scan on p1c1 t2_1 (cost=xxx..xxx rows=100 width=xxx)
555- -> Seq Scan on p1c2 t2_2 (cost=xxx..xxx rows=100 width=xxx)
556- -> Seq Scan on p1c3 t2_3 (cost=xxx..xxx rows=100 width=xxx)
553+ -> Seq Scan on p1 t2_1 (cost=xxx..xxx rows=1 width=xxx)
554+ -> Seq Scan on p1c1 t2_2 (cost=xxx..xxx rows=100 width=xxx)
555+ -> Seq Scan on p1c2 t2_3 (cost=xxx..xxx rows=100 width=xxx)
556+ -> Seq Scan on p1c3 t2_4 (cost=xxx..xxx rows=100 width=xxx)
557557
558558 -- No. R-1-6-3
559559 \o results/ut-R.tmpout
@@ -4696,27 +4696,27 @@ error hint:
46964696 EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
46974697 \o
46984698 \! sql/maskout.sh results/ut-R.tmpout
4699- QUERY PLAN
4700--------------------------------------------------------------------------
4699+ QUERY PLAN
4700+------------------------------------------------------------------------------
47014701 Hash Join (cost=xxx..xxx rows=301 width=xxx)
47024702 Hash Cond: (p2.c1 = p1.c1)
47034703 -> Append (cost=xxx..xxx rows=304 width=xxx)
4704- -> Seq Scan on p2 (cost=xxx..xxx rows=1 width=xxx)
4705- -> Seq Scan on p2c1 (cost=xxx..xxx rows=1 width=xxx)
4706- -> Seq Scan on p2c2 (cost=xxx..xxx rows=1 width=xxx)
4707- -> Seq Scan on p2c3 (cost=xxx..xxx rows=1 width=xxx)
4708- -> Seq Scan on p2c1c1 (cost=xxx..xxx rows=50 width=xxx)
4709- -> Seq Scan on p2c1c2 (cost=xxx..xxx rows=50 width=xxx)
4710- -> Seq Scan on p2c2c1 (cost=xxx..xxx rows=50 width=xxx)
4711- -> Seq Scan on p2c2c2 (cost=xxx..xxx rows=50 width=xxx)
4712- -> Seq Scan on p2c3c1 (cost=xxx..xxx rows=50 width=xxx)
4713- -> Seq Scan on p2c3c2 (cost=xxx..xxx rows=50 width=xxx)
4704+ -> Seq Scan on p2 p2_1 (cost=xxx..xxx rows=1 width=xxx)
4705+ -> Seq Scan on p2c1 p2_2 (cost=xxx..xxx rows=1 width=xxx)
4706+ -> Seq Scan on p2c2 p2_3 (cost=xxx..xxx rows=1 width=xxx)
4707+ -> Seq Scan on p2c3 p2_4 (cost=xxx..xxx rows=1 width=xxx)
4708+ -> Seq Scan on p2c1c1 p2_5 (cost=xxx..xxx rows=50 width=xxx)
4709+ -> Seq Scan on p2c1c2 p2_6 (cost=xxx..xxx rows=50 width=xxx)
4710+ -> Seq Scan on p2c2c1 p2_7 (cost=xxx..xxx rows=50 width=xxx)
4711+ -> Seq Scan on p2c2c2 p2_8 (cost=xxx..xxx rows=50 width=xxx)
4712+ -> Seq Scan on p2c3c1 p2_9 (cost=xxx..xxx rows=50 width=xxx)
4713+ -> Seq Scan on p2c3c2 p2_10 (cost=xxx..xxx rows=50 width=xxx)
47144714 -> Hash (cost=xxx..xxx rows=301 width=xxx)
47154715 -> Append (cost=xxx..xxx rows=301 width=xxx)
4716- -> Seq Scan on p1 (cost=xxx..xxx rows=1 width=xxx)
4717- -> Seq Scan on p1c1 (cost=xxx..xxx rows=100 width=xxx)
4718- -> Seq Scan on p1c2 (cost=xxx..xxx rows=100 width=xxx)
4719- -> Seq Scan on p1c3 (cost=xxx..xxx rows=100 width=xxx)
4716+ -> Seq Scan on p1 p1_1 (cost=xxx..xxx rows=1 width=xxx)
4717+ -> Seq Scan on p1c1 p1_2 (cost=xxx..xxx rows=100 width=xxx)
4718+ -> Seq Scan on p1c2 p1_3 (cost=xxx..xxx rows=100 width=xxx)
4719+ -> Seq Scan on p1c3 p1_4 (cost=xxx..xxx rows=100 width=xxx)
47204720
47214721 \o results/ut-R.tmpout
47224722 /*+Rows(p1 p2 #1)*/
@@ -4730,54 +4730,54 @@ error hint:
47304730
47314731 \o
47324732 \! sql/maskout.sh results/ut-R.tmpout
4733- QUERY PLAN
4734--------------------------------------------------------------------------
4733+ QUERY PLAN
4734+------------------------------------------------------------------------------
47354735 Hash Join (cost=xxx..xxx rows=1 width=xxx)
47364736 Hash Cond: (p2.c1 = p1.c1)
47374737 -> Append (cost=xxx..xxx rows=304 width=xxx)
4738- -> Seq Scan on p2 (cost=xxx..xxx rows=1 width=xxx)
4739- -> Seq Scan on p2c1 (cost=xxx..xxx rows=1 width=xxx)
4740- -> Seq Scan on p2c2 (cost=xxx..xxx rows=1 width=xxx)
4741- -> Seq Scan on p2c3 (cost=xxx..xxx rows=1 width=xxx)
4742- -> Seq Scan on p2c1c1 (cost=xxx..xxx rows=50 width=xxx)
4743- -> Seq Scan on p2c1c2 (cost=xxx..xxx rows=50 width=xxx)
4744- -> Seq Scan on p2c2c1 (cost=xxx..xxx rows=50 width=xxx)
4745- -> Seq Scan on p2c2c2 (cost=xxx..xxx rows=50 width=xxx)
4746- -> Seq Scan on p2c3c1 (cost=xxx..xxx rows=50 width=xxx)
4747- -> Seq Scan on p2c3c2 (cost=xxx..xxx rows=50 width=xxx)
4738+ -> Seq Scan on p2 p2_1 (cost=xxx..xxx rows=1 width=xxx)
4739+ -> Seq Scan on p2c1 p2_2 (cost=xxx..xxx rows=1 width=xxx)
4740+ -> Seq Scan on p2c2 p2_3 (cost=xxx..xxx rows=1 width=xxx)
4741+ -> Seq Scan on p2c3 p2_4 (cost=xxx..xxx rows=1 width=xxx)
4742+ -> Seq Scan on p2c1c1 p2_5 (cost=xxx..xxx rows=50 width=xxx)
4743+ -> Seq Scan on p2c1c2 p2_6 (cost=xxx..xxx rows=50 width=xxx)
4744+ -> Seq Scan on p2c2c1 p2_7 (cost=xxx..xxx rows=50 width=xxx)
4745+ -> Seq Scan on p2c2c2 p2_8 (cost=xxx..xxx rows=50 width=xxx)
4746+ -> Seq Scan on p2c3c1 p2_9 (cost=xxx..xxx rows=50 width=xxx)
4747+ -> Seq Scan on p2c3c2 p2_10 (cost=xxx..xxx rows=50 width=xxx)
47484748 -> Hash (cost=xxx..xxx rows=301 width=xxx)
47494749 -> Append (cost=xxx..xxx rows=301 width=xxx)
4750- -> Seq Scan on p1 (cost=xxx..xxx rows=1 width=xxx)
4751- -> Seq Scan on p1c1 (cost=xxx..xxx rows=100 width=xxx)
4752- -> Seq Scan on p1c2 (cost=xxx..xxx rows=100 width=xxx)
4753- -> Seq Scan on p1c3 (cost=xxx..xxx rows=100 width=xxx)
4750+ -> Seq Scan on p1 p1_1 (cost=xxx..xxx rows=1 width=xxx)
4751+ -> Seq Scan on p1c1 p1_2 (cost=xxx..xxx rows=100 width=xxx)
4752+ -> Seq Scan on p1c2 p1_3 (cost=xxx..xxx rows=100 width=xxx)
4753+ -> Seq Scan on p1c3 p1_4 (cost=xxx..xxx rows=100 width=xxx)
47544754
47554755 -- No. R-3-4-2
47564756 \o results/ut-R.tmpout
47574757 EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
47584758 \o
47594759 \! sql/maskout.sh results/ut-R.tmpout
4760- QUERY PLAN
4761--------------------------------------------------------------------------
4760+ QUERY PLAN
4761+------------------------------------------------------------------------------
47624762 Hash Join (cost=xxx..xxx rows=301 width=xxx)
47634763 Hash Cond: (p2.c1 = p1.c1)
47644764 -> Append (cost=xxx..xxx rows=304 width=xxx)
4765- -> Seq Scan on p2 (cost=xxx..xxx rows=1 width=xxx)
4766- -> Seq Scan on p2c1 (cost=xxx..xxx rows=1 width=xxx)
4767- -> Seq Scan on p2c2 (cost=xxx..xxx rows=1 width=xxx)
4768- -> Seq Scan on p2c3 (cost=xxx..xxx rows=1 width=xxx)
4769- -> Seq Scan on p2c1c1 (cost=xxx..xxx rows=50 width=xxx)
4770- -> Seq Scan on p2c1c2 (cost=xxx..xxx rows=50 width=xxx)
4771- -> Seq Scan on p2c2c1 (cost=xxx..xxx rows=50 width=xxx)
4772- -> Seq Scan on p2c2c2 (cost=xxx..xxx rows=50 width=xxx)
4773- -> Seq Scan on p2c3c1 (cost=xxx..xxx rows=50 width=xxx)
4774- -> Seq Scan on p2c3c2 (cost=xxx..xxx rows=50 width=xxx)
4765+ -> Seq Scan on p2 p2_1 (cost=xxx..xxx rows=1 width=xxx)
4766+ -> Seq Scan on p2c1 p2_2 (cost=xxx..xxx rows=1 width=xxx)
4767+ -> Seq Scan on p2c2 p2_3 (cost=xxx..xxx rows=1 width=xxx)
4768+ -> Seq Scan on p2c3 p2_4 (cost=xxx..xxx rows=1 width=xxx)
4769+ -> Seq Scan on p2c1c1 p2_5 (cost=xxx..xxx rows=50 width=xxx)
4770+ -> Seq Scan on p2c1c2 p2_6 (cost=xxx..xxx rows=50 width=xxx)
4771+ -> Seq Scan on p2c2c1 p2_7 (cost=xxx..xxx rows=50 width=xxx)
4772+ -> Seq Scan on p2c2c2 p2_8 (cost=xxx..xxx rows=50 width=xxx)
4773+ -> Seq Scan on p2c3c1 p2_9 (cost=xxx..xxx rows=50 width=xxx)
4774+ -> Seq Scan on p2c3c2 p2_10 (cost=xxx..xxx rows=50 width=xxx)
47754775 -> Hash (cost=xxx..xxx rows=301 width=xxx)
47764776 -> Append (cost=xxx..xxx rows=301 width=xxx)
4777- -> Seq Scan on p1 (cost=xxx..xxx rows=1 width=xxx)
4778- -> Seq Scan on p1c1 (cost=xxx..xxx rows=100 width=xxx)
4779- -> Seq Scan on p1c2 (cost=xxx..xxx rows=100 width=xxx)
4780- -> Seq Scan on p1c3 (cost=xxx..xxx rows=100 width=xxx)
4777+ -> Seq Scan on p1 p1_1 (cost=xxx..xxx rows=1 width=xxx)
4778+ -> Seq Scan on p1c1 p1_2 (cost=xxx..xxx rows=100 width=xxx)
4779+ -> Seq Scan on p1c2 p1_3 (cost=xxx..xxx rows=100 width=xxx)
4780+ -> Seq Scan on p1c3 p1_4 (cost=xxx..xxx rows=100 width=xxx)
47814781
47824782 \o results/ut-R.tmpout
47834783 /*+Rows(p1c1 p2c1 #1)*/
@@ -4791,27 +4791,27 @@ error hint:
47914791
47924792 \o
47934793 \! sql/maskout.sh results/ut-R.tmpout
4794- QUERY PLAN
4795--------------------------------------------------------------------------
4794+ QUERY PLAN
4795+------------------------------------------------------------------------------
47964796 Hash Join (cost=xxx..xxx rows=301 width=xxx)
47974797 Hash Cond: (p2.c1 = p1.c1)
47984798 -> Append (cost=xxx..xxx rows=304 width=xxx)
4799- -> Seq Scan on p2 (cost=xxx..xxx rows=1 width=xxx)
4800- -> Seq Scan on p2c1 (cost=xxx..xxx rows=1 width=xxx)
4801- -> Seq Scan on p2c2 (cost=xxx..xxx rows=1 width=xxx)
4802- -> Seq Scan on p2c3 (cost=xxx..xxx rows=1 width=xxx)
4803- -> Seq Scan on p2c1c1 (cost=xxx..xxx rows=50 width=xxx)
4804- -> Seq Scan on p2c1c2 (cost=xxx..xxx rows=50 width=xxx)
4805- -> Seq Scan on p2c2c1 (cost=xxx..xxx rows=50 width=xxx)
4806- -> Seq Scan on p2c2c2 (cost=xxx..xxx rows=50 width=xxx)
4807- -> Seq Scan on p2c3c1 (cost=xxx..xxx rows=50 width=xxx)
4808- -> Seq Scan on p2c3c2 (cost=xxx..xxx rows=50 width=xxx)
4799+ -> Seq Scan on p2 p2_1 (cost=xxx..xxx rows=1 width=xxx)
4800+ -> Seq Scan on p2c1 p2_2 (cost=xxx..xxx rows=1 width=xxx)
4801+ -> Seq Scan on p2c2 p2_3 (cost=xxx..xxx rows=1 width=xxx)
4802+ -> Seq Scan on p2c3 p2_4 (cost=xxx..xxx rows=1 width=xxx)
4803+ -> Seq Scan on p2c1c1 p2_5 (cost=xxx..xxx rows=50 width=xxx)
4804+ -> Seq Scan on p2c1c2 p2_6 (cost=xxx..xxx rows=50 width=xxx)
4805+ -> Seq Scan on p2c2c1 p2_7 (cost=xxx..xxx rows=50 width=xxx)
4806+ -> Seq Scan on p2c2c2 p2_8 (cost=xxx..xxx rows=50 width=xxx)
4807+ -> Seq Scan on p2c3c1 p2_9 (cost=xxx..xxx rows=50 width=xxx)
4808+ -> Seq Scan on p2c3c2 p2_10 (cost=xxx..xxx rows=50 width=xxx)
48094809 -> Hash (cost=xxx..xxx rows=301 width=xxx)
48104810 -> Append (cost=xxx..xxx rows=301 width=xxx)
4811- -> Seq Scan on p1 (cost=xxx..xxx rows=1 width=xxx)
4812- -> Seq Scan on p1c1 (cost=xxx..xxx rows=100 width=xxx)
4813- -> Seq Scan on p1c2 (cost=xxx..xxx rows=100 width=xxx)
4814- -> Seq Scan on p1c3 (cost=xxx..xxx rows=100 width=xxx)
4811+ -> Seq Scan on p1 p1_1 (cost=xxx..xxx rows=1 width=xxx)
4812+ -> Seq Scan on p1c1 p1_2 (cost=xxx..xxx rows=100 width=xxx)
4813+ -> Seq Scan on p1c2 p1_3 (cost=xxx..xxx rows=100 width=xxx)
4814+ -> Seq Scan on p1c3 p1_4 (cost=xxx..xxx rows=100 width=xxx)
48154815
48164816 ----
48174817 ---- No. R-3-5 conflict join method hint
--- a/expected/ut-S.out
+++ b/expected/ut-S.out
@@ -377,12 +377,12 @@ error hint:
377377
378378 -- No. S-1-5-2
379379 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE p1.c1 = 1;
380- QUERY PLAN
381---------------------------
380+ QUERY PLAN
381+-----------------------------
382382 Append
383- -> Seq Scan on p1
383+ -> Seq Scan on p1 p1_1
384384 Filter: (c1 = 1)
385- -> Seq Scan on p1c1
385+ -> Seq Scan on p1c1 p1_2
386386 Filter: (c1 = 1)
387387 (5 rows)
388388
@@ -395,12 +395,12 @@ not used hint:
395395 duplication hint:
396396 error hint:
397397
398- QUERY PLAN
399----------------------------------------
398+ QUERY PLAN
399+--------------------------------------------
400400 Append
401- -> Index Scan using p1_i on p1
401+ -> Index Scan using p1_i on p1 p1_1
402402 Index Cond: (c1 = 1)
403- -> Index Scan using p1c1_i on p1c1
403+ -> Index Scan using p1c1_i on p1c1 p1_2
404404 Index Cond: (c1 = 1)
405405 (5 rows)
406406
@@ -3761,9 +3761,8 @@ error hint:
37613761 c4 | text | | |
37623762 Indexes:
37633763 "ti1_pkey" PRIMARY KEY, btree (c1)
3764- "ti1_c2_key" UNIQUE CONSTRAINT, btree (c2)
3765- "ti1_uniq" UNIQUE, btree (c1)
37663764 "ti1_btree" btree (c1)
3765+ "ti1_c2_key" UNIQUE CONSTRAINT, btree (c2)
37673766 "ti1_expr" btree ((c1 < 100))
37683767 "ti1_gin" gin (c1)
37693768 "ti1_gist" gist (c1)
@@ -3775,6 +3774,7 @@ Indexes:
37753774 "ti1_multi" btree (c1, c2, c3, c4)
37763775 "ti1_pred" btree (lower(c4))
37773776 "ti1_ts" gin (to_tsvector('english'::regconfig, c4))
3777+ "ti1_uniq" UNIQUE, btree (c1)
37783778
37793779 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
37803780 QUERY PLAN
@@ -4979,12 +4979,12 @@ error hint:
49794979
49804980 -- No. S-3-8-2
49814981 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
4982- QUERY PLAN
4983---------------------------
4982+ QUERY PLAN
4983+-----------------------------
49844984 Append
4985- -> Seq Scan on p1
4985+ -> Seq Scan on p1 p1_1
49864986 Filter: (c1 = 1)
4987- -> Seq Scan on p1c1
4987+ -> Seq Scan on p1c1 p1_2
49884988 Filter: (c1 = 1)
49894989 (5 rows)
49904990
@@ -4997,12 +4997,12 @@ not used hint:
49974997 duplication hint:
49984998 error hint:
49994999
5000- QUERY PLAN
5001----------------------------------------
5000+ QUERY PLAN
5001+--------------------------------------------
50025002 Append
5003- -> Index Scan using p1_i on p1
5003+ -> Index Scan using p1_i on p1 p1_1
50045004 Index Cond: (c1 = 1)
5005- -> Index Scan using p1c1_i on p1c1
5005+ -> Index Scan using p1c1_i on p1c1 p1_2
50065006 Index Cond: (c1 = 1)
50075007 (5 rows)
50085008
@@ -5050,14 +5050,14 @@ error hint:
50505050
50515051 -- No. S-3-8-4
50525052 EXPLAIN (COSTS false) UPDATE s1.p1 SET c4 = c4 WHERE c1 = 1;
5053- QUERY PLAN
5054---------------------------
5053+ QUERY PLAN
5054+-----------------------------
50555055 Update on p1
50565056 Update on p1
5057- Update on p1c1
5057+ Update on p1c1 p1_1
50585058 -> Seq Scan on p1
50595059 Filter: (c1 = 1)
5060- -> Seq Scan on p1c1
5060+ -> Seq Scan on p1c1 p1_1
50615061 Filter: (c1 = 1)
50625062 (7 rows)
50635063
@@ -5070,14 +5070,14 @@ not used hint:
50705070 duplication hint:
50715071 error hint:
50725072
5073- QUERY PLAN
5074----------------------------------------
5073+ QUERY PLAN
5074+--------------------------------------------
50755075 Update on p1
50765076 Update on p1
5077- Update on p1c1
5077+ Update on p1c1 p1_1
50785078 -> Index Scan using p1_i on p1
50795079 Index Cond: (c1 = 1)
5080- -> Index Scan using p1c1_i on p1c1
5080+ -> Index Scan using p1c1_i on p1c1 p1_1
50815081 Index Cond: (c1 = 1)
50825082 (7 rows)
50835083
@@ -5094,14 +5094,14 @@ not used hint:
50945094 duplication hint:
50955095 error hint:
50965096
5097- QUERY PLAN
5098-------------------------------------------
5097+ QUERY PLAN
5098+-----------------------------------------------
50995099 Update on p1
51005100 Update on p1
5101- Update on p1c1
5101+ Update on p1c1 p1_1
51025102 -> Index Scan using p1_pkey on p1
51035103 Index Cond: (c1 = 1)
5104- -> Index Scan using p1c1_pkey on p1c1
5104+ -> Index Scan using p1c1_pkey on p1c1 p1_1
51055105 Index Cond: (c1 = 1)
51065106 (7 rows)
51075107
@@ -5110,12 +5110,12 @@ error hint:
51105110 ----
51115111 -- No. S-3-9-1
51125112 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
5113- QUERY PLAN
5114---------------------------
5113+ QUERY PLAN
5114+-----------------------------
51155115 Append
5116- -> Seq Scan on p1
5116+ -> Seq Scan on p1 p1_1
51175117 Filter: (c1 = 1)
5118- -> Seq Scan on p1c1
5118+ -> Seq Scan on p1c1 p1_2
51195119 Filter: (c1 = 1)
51205120 (5 rows)
51215121
@@ -5128,25 +5128,25 @@ not used hint:
51285128 duplication hint:
51295129 error hint:
51305130
5131- QUERY PLAN
5132----------------------------------------
5131+ QUERY PLAN
5132+--------------------------------------------
51335133 Append
5134- -> Index Scan using p1_i on p1
5134+ -> Index Scan using p1_i on p1 p1_1
51355135 Index Cond: (c1 = 1)
5136- -> Index Scan using p1c1_i on p1c1
5136+ -> Index Scan using p1c1_i on p1c1 p1_2
51375137 Index Cond: (c1 = 1)
51385138 (5 rows)
51395139
51405140 -- No. S-3-9-2
51415141 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
5142- QUERY PLAN
5143---------------------------
5142+ QUERY PLAN
5143+-------------------------------
51445144 Append
5145- -> Seq Scan on p2
5145+ -> Seq Scan on p2 p2_1
51465146 Filter: (c1 = 1)
5147- -> Seq Scan on p2c1
5147+ -> Seq Scan on p2c1 p2_2
51485148 Filter: (c1 = 1)
5149- -> Seq Scan on p2c1c1
5149+ -> Seq Scan on p2c1c1 p2_3
51505150 Filter: (c1 = 1)
51515151 (7 rows)
51525152
@@ -5159,14 +5159,14 @@ not used hint:
51595159 duplication hint:
51605160 error hint:
51615161
5162- QUERY PLAN
5163--------------------------------------------
5162+ QUERY PLAN
5163+------------------------------------------------
51645164 Append
5165- -> Index Scan using p2_i on p2
5165+ -> Index Scan using p2_i on p2 p2_1
51665166 Index Cond: (c1 = 1)
5167- -> Index Scan using p2c1_i on p2c1
5167+ -> Index Scan using p2c1_i on p2c1 p2_2
51685168 Index Cond: (c1 = 1)
5169- -> Index Scan using p2c1c1_i on p2c1c1
5169+ -> Index Scan using p2c1c1_i on p2c1c1 p2_3
51705170 Index Cond: (c1 = 1)
51715171 (7 rows)
51725172
@@ -5174,14 +5174,14 @@ error hint:
51745174 ---- No. S-3-10 inheritance table specified table
51755175 ----
51765176 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
5177- QUERY PLAN
5178---------------------------
5177+ QUERY PLAN
5178+-------------------------------
51795179 Append
5180- -> Seq Scan on p2
5180+ -> Seq Scan on p2 p2_1
51815181 Filter: (c1 = 1)
5182- -> Seq Scan on p2c1
5182+ -> Seq Scan on p2c1 p2_2
51835183 Filter: (c1 = 1)
5184- -> Seq Scan on p2c1c1
5184+ -> Seq Scan on p2c1c1 p2_3
51855185 Filter: (c1 = 1)
51865186 (7 rows)
51875187
@@ -5195,14 +5195,14 @@ not used hint:
51955195 duplication hint:
51965196 error hint:
51975197
5198- QUERY PLAN
5199--------------------------------------------
5198+ QUERY PLAN
5199+------------------------------------------------
52005200 Append
5201- -> Index Scan using p2_i on p2
5201+ -> Index Scan using p2_i on p2 p2_1
52025202 Index Cond: (c1 = 1)
5203- -> Index Scan using p2c1_i on p2c1
5203+ -> Index Scan using p2c1_i on p2c1 p2_2
52045204 Index Cond: (c1 = 1)
5205- -> Index Scan using p2c1c1_i on p2c1c1
5205+ -> Index Scan using p2c1c1_i on p2c1c1 p2_3
52065206 Index Cond: (c1 = 1)
52075207 (7 rows)
52085208
@@ -5216,14 +5216,14 @@ not used hint:
52165216 duplication hint:
52175217 error hint:
52185218
5219- QUERY PLAN
5220----------------------------------------
5219+ QUERY PLAN
5220+--------------------------------------------
52215221 Append
5222- -> Seq Scan on p2
5222+ -> Seq Scan on p2 p2_1
52235223 Filter: (c1 = 1)
5224- -> Index Scan using p2c1_i on p2c1
5224+ -> Index Scan using p2c1_i on p2c1 p2_2
52255225 Index Cond: (c1 = 1)
5226- -> Seq Scan on p2c1c1
5226+ -> Seq Scan on p2c1c1 p2_3
52275227 Filter: (c1 = 1)
52285228 (7 rows)
52295229
@@ -5232,12 +5232,12 @@ error hint:
52325232 EXPLAIN SELECT c4 FROM s1.p1 WHERE c2 * 2 < 100 AND c1 < 10;
52335233 \o
52345234 \! sql/maskout.sh results/ut-S.tmpout
5235- QUERY PLAN
5236-----------------------------------------------------------
5235+ QUERY PLAN
5236+---------------------------------------------------------------
52375237 Append (cost=xxx..xxx rows=4 width=xxx)
5238- -> Seq Scan on p1 (cost=xxx..xxx rows=1 width=xxx)
5238+ -> Seq Scan on p1 p1_1 (cost=xxx..xxx rows=1 width=xxx)
52395239 Filter: ((c1 < 10) AND ((c2 * 2) < 100))
5240- -> Seq Scan on p1c1 (cost=xxx..xxx rows=3 width=xxx)
5240+ -> Seq Scan on p1c1 p1_2 (cost=xxx..xxx rows=3 width=xxx)
52415241 Filter: ((c1 < 10) AND ((c2 * 2) < 100))
52425242
52435243 \o results/ut-S.tmpout
@@ -5253,12 +5253,12 @@ error hint:
52535253
52545254 \o
52555255 \! sql/maskout.sh results/ut-S.tmpout
5256- QUERY PLAN
5257-------------------------------------------------------------------------------------
5256+ QUERY PLAN
5257+-----------------------------------------------------------------------------------------
52585258 Append (cost=xxx..xxx rows=4 width=xxx)
5259- -> Index Scan using p1_parent on p1 (cost=xxx..xxx rows=1 width=xxx)
5259+ -> Index Scan using p1_parent on p1 p1_1 (cost=xxx..xxx rows=1 width=xxx)
52605260 Filter: ((c2 * 2) < 100)
5261- -> Index Scan using p1c1_c4_expr_idx on p1c1 (cost=xxx..xxx rows=3 width=xxx)
5261+ -> Index Scan using p1c1_c4_expr_idx on p1c1 p1_2 (cost=xxx..xxx rows=3 width=xxx)
52625262 Filter: ((c2 * 2) < 100)
52635263
52645264 -- No. S-3-10-4
@@ -5277,16 +5277,16 @@ error hint:
52775277
52785278 \o
52795279 \! sql/maskout.sh results/ut-S.tmpout
5280- QUERY PLAN
5281--------------------------------------------------------------------------------
5280+ QUERY PLAN
5281+-----------------------------------------------------------------------------------
52825282 Append (cost=xxx..xxx rows=4 width=xxx)
5283- -> Index Scan using p1_i2 on p1 (cost=xxx..xxx rows=1 width=xxx)
5283+ -> Index Scan using p1_i2 on p1 p1_1 (cost=xxx..xxx rows=1 width=xxx)
52845284 Index Cond: (c2 = 1)
5285- -> Seq Scan on p1c1 (cost={inf}..{inf} rows=1 width=xxx)
5285+ -> Seq Scan on p1c1 p1_2 (cost={inf}..{inf} rows=1 width=xxx)
52865286 Filter: (c2 = 1)
5287- -> Seq Scan on p1c2 (cost={inf}..{inf} rows=1 width=xxx)
5287+ -> Seq Scan on p1c2 p1_3 (cost={inf}..{inf} rows=1 width=xxx)
52885288 Filter: (c2 = 1)
5289- -> Seq Scan on p1c3 (cost={inf}..{inf} rows=1 width=xxx)
5289+ -> Seq Scan on p1c3 p1_4 (cost={inf}..{inf} rows=1 width=xxx)
52905290 Filter: (c2 = 1)
52915291
52925292 -- No. S-3-10-5
@@ -5304,14 +5304,14 @@ error hint:
53045304
53055305 \o
53065306 \! sql/maskout.sh results/ut-S.tmpout
5307- QUERY PLAN
5308----------------------------------------------------------------------------------
5307+ QUERY PLAN
5308+--------------------------------------------------------------------------------------
53095309 Append (cost={inf}..{inf} rows=3 width=xxx)
5310- -> Seq Scan on p2 (cost={inf}..{inf} rows=1 width=xxx)
5310+ -> Seq Scan on p2 p2_1 (cost={inf}..{inf} rows=1 width=xxx)
53115311 Filter: (c1 = 1)
5312- -> Index Scan using p2c1_pkey on p2c1 (cost=xxx..xxx rows=1 width=xxx)
5312+ -> Index Scan using p2c1_pkey on p2c1 p2_2 (cost=xxx..xxx rows=1 width=xxx)
53135313 Index Cond: (c1 = 1)
5314- -> Seq Scan on p2c1c1 (cost={inf}..{inf} rows=1 width=xxx)
5314+ -> Seq Scan on p2c1c1 p2_3 (cost={inf}..{inf} rows=1 width=xxx)
53155315 Filter: (c1 = 1)
53165316
53175317 ----
@@ -6032,12 +6032,12 @@ not used hint:
60326032 duplication hint:
60336033 error hint:
60346034
6035- QUERY PLAN
6036-------------------------------------------
6035+ QUERY PLAN
6036+-----------------------------------------------
60376037 Append
6038- -> Index Scan using p1_pkey on p1
6038+ -> Index Scan using p1_pkey on p1 p1_1
60396039 Index Cond: (c1 = 1)
6040- -> Index Scan using p1c1_pkey on p1c1
6040+ -> Index Scan using p1c1_pkey on p1c1 p1_2
60416041 Index Cond: (c1 = 1)
60426042 (5 rows)
60436043
@@ -6053,12 +6053,12 @@ not used hint:
60536053 duplication hint:
60546054 error hint:
60556055
6056- QUERY PLAN
6057----------------------------------------
6056+ QUERY PLAN
6057+--------------------------------------------
60586058 Append
6059- -> Index Scan using p1_i on p1
6059+ -> Index Scan using p1_i on p1 p1_1
60606060 Index Cond: (c1 = 1)
6061- -> Index Scan using p1c1_i on p1c1
6061+ -> Index Scan using p1c1_i on p1c1 p1_2
60626062 Index Cond: (c1 = 1)
60636063 (5 rows)
60646064
@@ -6074,12 +6074,12 @@ not used hint:
60746074 duplication hint:
60756075 error hint:
60766076
6077- QUERY PLAN
6078---------------------------
6077+ QUERY PLAN
6078+-----------------------------
60796079 Append
6080- -> Seq Scan on p1
6080+ -> Seq Scan on p1 p1_1
60816081 Filter: (c1 = 1)
6082- -> Seq Scan on p1c1
6082+ -> Seq Scan on p1c1 p1_2
60836083 Filter: (c1 = 1)
60846084 (5 rows)
60856085
--- a/expected/ut-W.out
+++ b/expected/ut-W.out
@@ -97,20 +97,20 @@ not used hint:
9797 duplication hint:
9898 error hint:
9999
100- QUERY PLAN
101--------------------------------------------
100+ QUERY PLAN
101+------------------------------------------------
102102 Gather
103103 Workers Planned: 1
104104 -> Append
105- -> Parallel Seq Scan on p1
106- -> Parallel Seq Scan on p1_c1
107- -> Parallel Seq Scan on p1_c2
108- -> Parallel Seq Scan on p1_c3
109- -> Parallel Seq Scan on p1_c4
110- -> Parallel Seq Scan on p1_c1_c1
111- -> Parallel Seq Scan on p1_c1_c2
112- -> Parallel Seq Scan on p1_c3_c1
113- -> Parallel Seq Scan on p1_c3_c2
105+ -> Parallel Seq Scan on p1 p1_1
106+ -> Parallel Seq Scan on p1_c1 p1_2
107+ -> Parallel Seq Scan on p1_c2 p1_3
108+ -> Parallel Seq Scan on p1_c3 p1_4
109+ -> Parallel Seq Scan on p1_c4 p1_5
110+ -> Parallel Seq Scan on p1_c1_c1 p1_6
111+ -> Parallel Seq Scan on p1_c1_c2 p1_7
112+ -> Parallel Seq Scan on p1_c3_c1 p1_8
113+ -> Parallel Seq Scan on p1_c3_c2 p1_9
114114 (12 rows)
115115
116116 SET enable_parallel_append to true;
@@ -123,20 +123,20 @@ not used hint:
123123 duplication hint:
124124 error hint:
125125
126- QUERY PLAN
127--------------------------------------------
126+ QUERY PLAN
127+------------------------------------------------
128128 Gather
129129 Workers Planned: 2
130130 -> Parallel Append
131- -> Seq Scan on p1
132- -> Seq Scan on p1_c1
133- -> Seq Scan on p1_c3
134- -> Parallel Seq Scan on p1_c2
135- -> Parallel Seq Scan on p1_c4
136- -> Parallel Seq Scan on p1_c1_c1
137- -> Parallel Seq Scan on p1_c1_c2
138- -> Parallel Seq Scan on p1_c3_c1
139- -> Parallel Seq Scan on p1_c3_c2
131+ -> Seq Scan on p1 p1_1
132+ -> Seq Scan on p1_c1 p1_2
133+ -> Seq Scan on p1_c3 p1_4
134+ -> Parallel Seq Scan on p1_c2 p1_3
135+ -> Parallel Seq Scan on p1_c4 p1_5
136+ -> Parallel Seq Scan on p1_c1_c1 p1_6
137+ -> Parallel Seq Scan on p1_c1_c2 p1_7
138+ -> Parallel Seq Scan on p1_c3_c1 p1_8
139+ -> Parallel Seq Scan on p1_c3_c2 p1_9
140140 (12 rows)
141141
142142 SET parallel_setup_cost to DEFAULT;
@@ -153,20 +153,20 @@ not used hint:
153153 duplication hint:
154154 error hint:
155155
156- QUERY PLAN
157--------------------------------------------
156+ QUERY PLAN
157+------------------------------------------------
158158 Gather
159159 Workers Planned: 8
160160 -> Append
161- -> Parallel Seq Scan on p1
162- -> Parallel Seq Scan on p1_c1
163- -> Parallel Seq Scan on p1_c2
164- -> Parallel Seq Scan on p1_c3
165- -> Parallel Seq Scan on p1_c4
166- -> Parallel Seq Scan on p1_c1_c1
167- -> Parallel Seq Scan on p1_c1_c2
168- -> Parallel Seq Scan on p1_c3_c1
169- -> Parallel Seq Scan on p1_c3_c2
161+ -> Parallel Seq Scan on p1 p1_1
162+ -> Parallel Seq Scan on p1_c1 p1_2
163+ -> Parallel Seq Scan on p1_c2 p1_3
164+ -> Parallel Seq Scan on p1_c3 p1_4
165+ -> Parallel Seq Scan on p1_c4 p1_5
166+ -> Parallel Seq Scan on p1_c1_c1 p1_6
167+ -> Parallel Seq Scan on p1_c1_c2 p1_7
168+ -> Parallel Seq Scan on p1_c3_c1 p1_8
169+ -> Parallel Seq Scan on p1_c3_c2 p1_9
170170 (12 rows)
171171
172172 SET enable_parallel_append to true;
@@ -179,20 +179,20 @@ not used hint:
179179 duplication hint:
180180 error hint:
181181
182- QUERY PLAN
183--------------------------------------------
182+ QUERY PLAN
183+------------------------------------------------
184184 Gather
185185 Workers Planned: 8
186186 -> Parallel Append
187- -> Seq Scan on p1
188- -> Seq Scan on p1_c1
189- -> Seq Scan on p1_c3
190- -> Parallel Seq Scan on p1_c2
191- -> Parallel Seq Scan on p1_c4
192- -> Parallel Seq Scan on p1_c1_c1
193- -> Parallel Seq Scan on p1_c1_c2
194- -> Parallel Seq Scan on p1_c3_c1
195- -> Parallel Seq Scan on p1_c3_c2
187+ -> Seq Scan on p1 p1_1
188+ -> Seq Scan on p1_c1 p1_2
189+ -> Seq Scan on p1_c3 p1_4
190+ -> Parallel Seq Scan on p1_c2 p1_3
191+ -> Parallel Seq Scan on p1_c4 p1_5
192+ -> Parallel Seq Scan on p1_c1_c1 p1_6
193+ -> Parallel Seq Scan on p1_c1_c2 p1_7
194+ -> Parallel Seq Scan on p1_c3_c1 p1_8
195+ -> Parallel Seq Scan on p1_c3_c2 p1_9
196196 (12 rows)
197197
198198 -- hinting on children doesn't work (changed as of pg_hint_plan 10)
@@ -206,18 +206,18 @@ not used hint:
206206 duplication hint:
207207 error hint:
208208
209- QUERY PLAN
210-----------------------------
209+ QUERY PLAN
210+---------------------------------
211211 Append
212- -> Seq Scan on p1
213- -> Seq Scan on p1_c1
214- -> Seq Scan on p1_c2
215- -> Seq Scan on p1_c3
216- -> Seq Scan on p1_c4
217- -> Seq Scan on p1_c1_c1
218- -> Seq Scan on p1_c1_c2
219- -> Seq Scan on p1_c3_c1
220- -> Seq Scan on p1_c3_c2
212+ -> Seq Scan on p1 p1_1
213+ -> Seq Scan on p1_c1 p1_2
214+ -> Seq Scan on p1_c2 p1_3
215+ -> Seq Scan on p1_c3 p1_4
216+ -> Seq Scan on p1_c4 p1_5
217+ -> Seq Scan on p1_c1_c1 p1_6
218+ -> Seq Scan on p1_c1_c2 p1_7
219+ -> Seq Scan on p1_c3_c1 p1_8
220+ -> Seq Scan on p1_c3_c2 p1_9
221221 (10 rows)
222222
223223 SET enable_parallel_append to true;
@@ -230,18 +230,18 @@ not used hint:
230230 duplication hint:
231231 error hint:
232232
233- QUERY PLAN
234-----------------------------
233+ QUERY PLAN
234+---------------------------------
235235 Append
236- -> Seq Scan on p1
237- -> Seq Scan on p1_c1
238- -> Seq Scan on p1_c2
239- -> Seq Scan on p1_c3
240- -> Seq Scan on p1_c4
241- -> Seq Scan on p1_c1_c1
242- -> Seq Scan on p1_c1_c2
243- -> Seq Scan on p1_c3_c1
244- -> Seq Scan on p1_c3_c2
236+ -> Seq Scan on p1 p1_1
237+ -> Seq Scan on p1_c1 p1_2
238+ -> Seq Scan on p1_c2 p1_3
239+ -> Seq Scan on p1_c3 p1_4
240+ -> Seq Scan on p1_c4 p1_5
241+ -> Seq Scan on p1_c1_c1 p1_6
242+ -> Seq Scan on p1_c1_c2 p1_7
243+ -> Seq Scan on p1_c3_c1 p1_8
244+ -> Seq Scan on p1_c3_c2 p1_9
245245 (10 rows)
246246
247247 -- Joins
@@ -357,33 +357,33 @@ not used hint:
357357 duplication hint:
358358 error hint:
359359
360- QUERY PLAN
361--------------------------------------------------------
360+ QUERY PLAN
361+------------------------------------------------------------
362362 Gather
363363 Workers Planned: 1
364364 -> Parallel Hash Join
365365 Hash Cond: (p1.id = p2.id)
366366 -> Append
367- -> Parallel Seq Scan on p1
368- -> Parallel Seq Scan on p1_c1
369- -> Parallel Seq Scan on p1_c2
370- -> Parallel Seq Scan on p1_c3
371- -> Parallel Seq Scan on p1_c4
372- -> Parallel Seq Scan on p1_c1_c1
373- -> Parallel Seq Scan on p1_c1_c2
374- -> Parallel Seq Scan on p1_c3_c1
375- -> Parallel Seq Scan on p1_c3_c2
367+ -> Parallel Seq Scan on p1 p1_1
368+ -> Parallel Seq Scan on p1_c1 p1_2
369+ -> Parallel Seq Scan on p1_c2 p1_3
370+ -> Parallel Seq Scan on p1_c3 p1_4
371+ -> Parallel Seq Scan on p1_c4 p1_5
372+ -> Parallel Seq Scan on p1_c1_c1 p1_6
373+ -> Parallel Seq Scan on p1_c1_c2 p1_7
374+ -> Parallel Seq Scan on p1_c3_c1 p1_8
375+ -> Parallel Seq Scan on p1_c3_c2 p1_9
376376 -> Parallel Hash
377377 -> Append
378- -> Parallel Seq Scan on p2
379- -> Parallel Seq Scan on p2_c1
380- -> Parallel Seq Scan on p2_c2
381- -> Parallel Seq Scan on p2_c3
382- -> Parallel Seq Scan on p2_c4
383- -> Parallel Seq Scan on p2_c1_c1
384- -> Parallel Seq Scan on p2_c1_c2
385- -> Parallel Seq Scan on p2_c3_c1
386- -> Parallel Seq Scan on p2_c3_c2
378+ -> Parallel Seq Scan on p2 p2_1
379+ -> Parallel Seq Scan on p2_c1 p2_2
380+ -> Parallel Seq Scan on p2_c2 p2_3
381+ -> Parallel Seq Scan on p2_c3 p2_4
382+ -> Parallel Seq Scan on p2_c4 p2_5
383+ -> Parallel Seq Scan on p2_c1_c1 p2_6
384+ -> Parallel Seq Scan on p2_c1_c2 p2_7
385+ -> Parallel Seq Scan on p2_c3_c1 p2_8
386+ -> Parallel Seq Scan on p2_c3_c2 p2_9
387387 (25 rows)
388388
389389 SET enable_parallel_append to true;
@@ -396,33 +396,33 @@ not used hint:
396396 duplication hint:
397397 error hint:
398398
399- QUERY PLAN
400--------------------------------------------------------
399+ QUERY PLAN
400+------------------------------------------------------------
401401 Gather
402402 Workers Planned: 2
403403 -> Parallel Hash Join
404404 Hash Cond: (p1.id = p2.id)
405405 -> Parallel Append
406- -> Seq Scan on p1
407- -> Seq Scan on p1_c1
408- -> Seq Scan on p1_c3
409- -> Parallel Seq Scan on p1_c2
410- -> Parallel Seq Scan on p1_c4
411- -> Parallel Seq Scan on p1_c1_c1
412- -> Parallel Seq Scan on p1_c1_c2
413- -> Parallel Seq Scan on p1_c3_c1
414- -> Parallel Seq Scan on p1_c3_c2
406+ -> Seq Scan on p1 p1_1
407+ -> Seq Scan on p1_c1 p1_2
408+ -> Seq Scan on p1_c3 p1_4
409+ -> Parallel Seq Scan on p1_c2 p1_3
410+ -> Parallel Seq Scan on p1_c4 p1_5
411+ -> Parallel Seq Scan on p1_c1_c1 p1_6
412+ -> Parallel Seq Scan on p1_c1_c2 p1_7
413+ -> Parallel Seq Scan on p1_c3_c1 p1_8
414+ -> Parallel Seq Scan on p1_c3_c2 p1_9
415415 -> Parallel Hash
416416 -> Parallel Append
417- -> Seq Scan on p2
418- -> Seq Scan on p2_c1
419- -> Seq Scan on p2_c3
420- -> Parallel Seq Scan on p2_c2
421- -> Parallel Seq Scan on p2_c4
422- -> Parallel Seq Scan on p2_c1_c1
423- -> Parallel Seq Scan on p2_c1_c2
424- -> Parallel Seq Scan on p2_c3_c1
425- -> Parallel Seq Scan on p2_c3_c2
417+ -> Seq Scan on p2 p2_1
418+ -> Seq Scan on p2_c1 p2_2
419+ -> Seq Scan on p2_c3 p2_4
420+ -> Parallel Seq Scan on p2_c2 p2_3
421+ -> Parallel Seq Scan on p2_c4 p2_5
422+ -> Parallel Seq Scan on p2_c1_c1 p2_6
423+ -> Parallel Seq Scan on p2_c1_c2 p2_7
424+ -> Parallel Seq Scan on p2_c3_c1 p2_8
425+ -> Parallel Seq Scan on p2_c3_c2 p2_9
426426 (25 rows)
427427
428428 SET enable_parallel_append to false;
@@ -436,33 +436,33 @@ not used hint:
436436 duplication hint:
437437 error hint:
438438
439- QUERY PLAN
440--------------------------------------------------
439+ QUERY PLAN
440+------------------------------------------------------
441441 Gather
442442 Workers Planned: 1
443443 -> Hash Join
444444 Hash Cond: (p1.id = p2.id)
445445 -> Append
446- -> Parallel Seq Scan on p1
447- -> Parallel Seq Scan on p1_c1
448- -> Parallel Seq Scan on p1_c2
449- -> Parallel Seq Scan on p1_c3
450- -> Parallel Seq Scan on p1_c4
451- -> Parallel Seq Scan on p1_c1_c1
452- -> Parallel Seq Scan on p1_c1_c2
453- -> Parallel Seq Scan on p1_c3_c1
454- -> Parallel Seq Scan on p1_c3_c2
446+ -> Parallel Seq Scan on p1 p1_1
447+ -> Parallel Seq Scan on p1_c1 p1_2
448+ -> Parallel Seq Scan on p1_c2 p1_3
449+ -> Parallel Seq Scan on p1_c3 p1_4
450+ -> Parallel Seq Scan on p1_c4 p1_5
451+ -> Parallel Seq Scan on p1_c1_c1 p1_6
452+ -> Parallel Seq Scan on p1_c1_c2 p1_7
453+ -> Parallel Seq Scan on p1_c3_c1 p1_8
454+ -> Parallel Seq Scan on p1_c3_c2 p1_9
455455 -> Hash
456456 -> Append
457- -> Seq Scan on p2
458- -> Seq Scan on p2_c1
459- -> Seq Scan on p2_c2
460- -> Seq Scan on p2_c3
461- -> Seq Scan on p2_c4
462- -> Seq Scan on p2_c1_c1
463- -> Seq Scan on p2_c1_c2
464- -> Seq Scan on p2_c3_c1
465- -> Seq Scan on p2_c3_c2
457+ -> Seq Scan on p2 p2_1
458+ -> Seq Scan on p2_c1 p2_2
459+ -> Seq Scan on p2_c2 p2_3
460+ -> Seq Scan on p2_c3 p2_4
461+ -> Seq Scan on p2_c4 p2_5
462+ -> Seq Scan on p2_c1_c1 p2_6
463+ -> Seq Scan on p2_c1_c2 p2_7
464+ -> Seq Scan on p2_c3_c1 p2_8
465+ -> Seq Scan on p2_c3_c2 p2_9
466466 (25 rows)
467467
468468 SET enable_parallel_append to true;
@@ -476,33 +476,33 @@ not used hint:
476476 duplication hint:
477477 error hint:
478478
479- QUERY PLAN
480--------------------------------------------------
479+ QUERY PLAN
480+------------------------------------------------------
481481 Gather
482482 Workers Planned: 2
483483 -> Parallel Hash Join
484- Hash Cond: (p1.id = p2_c2.id)
484+ Hash Cond: (p1.id = p2.id)
485485 -> Parallel Append
486- -> Seq Scan on p1
487- -> Seq Scan on p1_c1
488- -> Seq Scan on p1_c3
489- -> Parallel Seq Scan on p1_c2
490- -> Parallel Seq Scan on p1_c4
491- -> Parallel Seq Scan on p1_c1_c1
492- -> Parallel Seq Scan on p1_c1_c2
493- -> Parallel Seq Scan on p1_c3_c1
494- -> Parallel Seq Scan on p1_c3_c2
486+ -> Seq Scan on p1 p1_1
487+ -> Seq Scan on p1_c1 p1_2
488+ -> Seq Scan on p1_c3 p1_4
489+ -> Parallel Seq Scan on p1_c2 p1_3
490+ -> Parallel Seq Scan on p1_c4 p1_5
491+ -> Parallel Seq Scan on p1_c1_c1 p1_6
492+ -> Parallel Seq Scan on p1_c1_c2 p1_7
493+ -> Parallel Seq Scan on p1_c3_c1 p1_8
494+ -> Parallel Seq Scan on p1_c3_c2 p1_9
495495 -> Parallel Hash
496496 -> Parallel Append
497- -> Seq Scan on p2_c2
498- -> Seq Scan on p2_c4
499- -> Seq Scan on p2_c1_c1
500- -> Seq Scan on p2_c1_c2
501- -> Seq Scan on p2_c3_c1
502- -> Seq Scan on p2_c3_c2
503- -> Seq Scan on p2
504- -> Seq Scan on p2_c1
505- -> Seq Scan on p2_c3
497+ -> Seq Scan on p2_c2 p2_3
498+ -> Seq Scan on p2_c4 p2_5
499+ -> Seq Scan on p2_c1_c1 p2_6
500+ -> Seq Scan on p2_c1_c2 p2_7
501+ -> Seq Scan on p2_c3_c1 p2_8
502+ -> Seq Scan on p2_c3_c2 p2_9
503+ -> Seq Scan on p2 p2_1
504+ -> Seq Scan on p2_c1 p2_2
505+ -> Seq Scan on p2_c3 p2_4
506506 (25 rows)
507507
508508 SET parallel_setup_cost to DEFAULT;
@@ -518,31 +518,31 @@ not used hint:
518518 duplication hint:
519519 error hint:
520520
521- QUERY PLAN
522-----------------------------------------
521+ QUERY PLAN
522+---------------------------------------------
523523 Hash Join
524524 Hash Cond: (p1.id = p2.id)
525525 -> Append
526- -> Seq Scan on p1
527- -> Seq Scan on p1_c1
528- -> Seq Scan on p1_c2
529- -> Seq Scan on p1_c3
530- -> Seq Scan on p1_c4
531- -> Seq Scan on p1_c1_c1
532- -> Seq Scan on p1_c1_c2
533- -> Seq Scan on p1_c3_c1
534- -> Seq Scan on p1_c3_c2
526+ -> Seq Scan on p1 p1_1
527+ -> Seq Scan on p1_c1 p1_2
528+ -> Seq Scan on p1_c2 p1_3
529+ -> Seq Scan on p1_c3 p1_4
530+ -> Seq Scan on p1_c4 p1_5
531+ -> Seq Scan on p1_c1_c1 p1_6
532+ -> Seq Scan on p1_c1_c2 p1_7
533+ -> Seq Scan on p1_c3_c1 p1_8
534+ -> Seq Scan on p1_c3_c2 p1_9
535535 -> Hash
536536 -> Append
537- -> Seq Scan on p2
538- -> Seq Scan on p2_c1
539- -> Seq Scan on p2_c2
540- -> Seq Scan on p2_c3
541- -> Seq Scan on p2_c4
542- -> Seq Scan on p2_c1_c1
543- -> Seq Scan on p2_c1_c2
544- -> Seq Scan on p2_c3_c1
545- -> Seq Scan on p2_c3_c2
537+ -> Seq Scan on p2 p2_1
538+ -> Seq Scan on p2_c1 p2_2
539+ -> Seq Scan on p2_c2 p2_3
540+ -> Seq Scan on p2_c3 p2_4
541+ -> Seq Scan on p2_c4 p2_5
542+ -> Seq Scan on p2_c1_c1 p2_6
543+ -> Seq Scan on p2_c1_c2 p2_7
544+ -> Seq Scan on p2_c3_c1 p2_8
545+ -> Seq Scan on p2_c3_c2 p2_9
546546 (23 rows)
547547
548548 /*+Parallel(p2 8 hard)*/
@@ -554,33 +554,33 @@ not used hint:
554554 duplication hint:
555555 error hint:
556556
557- QUERY PLAN
558--------------------------------------------------------
557+ QUERY PLAN
558+------------------------------------------------------------
559559 Gather
560560 Workers Planned: 8
561561 -> Parallel Hash Join
562562 Hash Cond: (p2.id = p1.id)
563563 -> Parallel Append
564- -> Seq Scan on p2
565- -> Seq Scan on p2_c1
566- -> Seq Scan on p2_c3
567- -> Parallel Seq Scan on p2_c2
568- -> Parallel Seq Scan on p2_c4
569- -> Parallel Seq Scan on p2_c1_c1
570- -> Parallel Seq Scan on p2_c1_c2
571- -> Parallel Seq Scan on p2_c3_c1
572- -> Parallel Seq Scan on p2_c3_c2
564+ -> Seq Scan on p2 p2_1
565+ -> Seq Scan on p2_c1 p2_2
566+ -> Seq Scan on p2_c3 p2_4
567+ -> Parallel Seq Scan on p2_c2 p2_3
568+ -> Parallel Seq Scan on p2_c4 p2_5
569+ -> Parallel Seq Scan on p2_c1_c1 p2_6
570+ -> Parallel Seq Scan on p2_c1_c2 p2_7
571+ -> Parallel Seq Scan on p2_c3_c1 p2_8
572+ -> Parallel Seq Scan on p2_c3_c2 p2_9
573573 -> Parallel Hash
574574 -> Parallel Append
575- -> Seq Scan on p1
576- -> Seq Scan on p1_c1
577- -> Seq Scan on p1_c3
578- -> Parallel Seq Scan on p1_c2
579- -> Parallel Seq Scan on p1_c4
580- -> Parallel Seq Scan on p1_c1_c1
581- -> Parallel Seq Scan on p1_c1_c2
582- -> Parallel Seq Scan on p1_c3_c1
583- -> Parallel Seq Scan on p1_c3_c2
575+ -> Seq Scan on p1 p1_1
576+ -> Seq Scan on p1_c1 p1_2
577+ -> Seq Scan on p1_c3 p1_4
578+ -> Parallel Seq Scan on p1_c2 p1_3
579+ -> Parallel Seq Scan on p1_c4 p1_5
580+ -> Parallel Seq Scan on p1_c1_c1 p1_6
581+ -> Parallel Seq Scan on p1_c1_c2 p1_7
582+ -> Parallel Seq Scan on p1_c3_c1 p1_8
583+ -> Parallel Seq Scan on p1_c3_c2 p1_9
584584 (25 rows)
585585
586586 -- Number of workers results to the largest number
@@ -595,33 +595,33 @@ not used hint:
595595 duplication hint:
596596 error hint:
597597
598- QUERY PLAN
599--------------------------------------------------------
598+ QUERY PLAN
599+------------------------------------------------------------
600600 Gather
601601 Workers Planned: 8
602602 -> Parallel Hash Join
603603 Hash Cond: (p1.id = p2.id)
604604 -> Append
605- -> Parallel Seq Scan on p1
606- -> Parallel Seq Scan on p1_c1
607- -> Parallel Seq Scan on p1_c2
608- -> Parallel Seq Scan on p1_c3
609- -> Parallel Seq Scan on p1_c4
610- -> Parallel Seq Scan on p1_c1_c1
611- -> Parallel Seq Scan on p1_c1_c2
612- -> Parallel Seq Scan on p1_c3_c1
613- -> Parallel Seq Scan on p1_c3_c2
605+ -> Parallel Seq Scan on p1 p1_1
606+ -> Parallel Seq Scan on p1_c1 p1_2
607+ -> Parallel Seq Scan on p1_c2 p1_3
608+ -> Parallel Seq Scan on p1_c3 p1_4
609+ -> Parallel Seq Scan on p1_c4 p1_5
610+ -> Parallel Seq Scan on p1_c1_c1 p1_6
611+ -> Parallel Seq Scan on p1_c1_c2 p1_7
612+ -> Parallel Seq Scan on p1_c3_c1 p1_8
613+ -> Parallel Seq Scan on p1_c3_c2 p1_9
614614 -> Parallel Hash
615615 -> Append
616- -> Parallel Seq Scan on p2
617- -> Parallel Seq Scan on p2_c1
618- -> Parallel Seq Scan on p2_c2
619- -> Parallel Seq Scan on p2_c3
620- -> Parallel Seq Scan on p2_c4
621- -> Parallel Seq Scan on p2_c1_c1
622- -> Parallel Seq Scan on p2_c1_c2
623- -> Parallel Seq Scan on p2_c3_c1
624- -> Parallel Seq Scan on p2_c3_c2
616+ -> Parallel Seq Scan on p2 p2_1
617+ -> Parallel Seq Scan on p2_c1 p2_2
618+ -> Parallel Seq Scan on p2_c2 p2_3
619+ -> Parallel Seq Scan on p2_c3 p2_4
620+ -> Parallel Seq Scan on p2_c4 p2_5
621+ -> Parallel Seq Scan on p2_c1_c1 p2_6
622+ -> Parallel Seq Scan on p2_c1_c2 p2_7
623+ -> Parallel Seq Scan on p2_c3_c1 p2_8
624+ -> Parallel Seq Scan on p2_c3_c2 p2_9
625625 (25 rows)
626626
627627 SET enable_parallel_append to true;
@@ -635,33 +635,33 @@ not used hint:
635635 duplication hint:
636636 error hint:
637637
638- QUERY PLAN
639--------------------------------------------------------
638+ QUERY PLAN
639+------------------------------------------------------------
640640 Gather
641641 Workers Planned: 8
642642 -> Parallel Hash Join
643643 Hash Cond: (p2.id = p1.id)
644644 -> Parallel Append
645- -> Seq Scan on p2
646- -> Seq Scan on p2_c1
647- -> Seq Scan on p2_c3
648- -> Parallel Seq Scan on p2_c2
649- -> Parallel Seq Scan on p2_c4
650- -> Parallel Seq Scan on p2_c1_c1
651- -> Parallel Seq Scan on p2_c1_c2
652- -> Parallel Seq Scan on p2_c3_c1
653- -> Parallel Seq Scan on p2_c3_c2
645+ -> Seq Scan on p2 p2_1
646+ -> Seq Scan on p2_c1 p2_2
647+ -> Seq Scan on p2_c3 p2_4
648+ -> Parallel Seq Scan on p2_c2 p2_3
649+ -> Parallel Seq Scan on p2_c4 p2_5
650+ -> Parallel Seq Scan on p2_c1_c1 p2_6
651+ -> Parallel Seq Scan on p2_c1_c2 p2_7
652+ -> Parallel Seq Scan on p2_c3_c1 p2_8
653+ -> Parallel Seq Scan on p2_c3_c2 p2_9
654654 -> Parallel Hash
655655 -> Parallel Append
656- -> Seq Scan on p1
657- -> Seq Scan on p1_c1
658- -> Seq Scan on p1_c3
659- -> Parallel Seq Scan on p1_c2
660- -> Parallel Seq Scan on p1_c4
661- -> Parallel Seq Scan on p1_c1_c1
662- -> Parallel Seq Scan on p1_c1_c2
663- -> Parallel Seq Scan on p1_c3_c1
664- -> Parallel Seq Scan on p1_c3_c2
656+ -> Seq Scan on p1 p1_1
657+ -> Seq Scan on p1_c1 p1_2
658+ -> Seq Scan on p1_c3 p1_4
659+ -> Parallel Seq Scan on p1_c2 p1_3
660+ -> Parallel Seq Scan on p1_c4 p1_5
661+ -> Parallel Seq Scan on p1_c1_c1 p1_6
662+ -> Parallel Seq Scan on p1_c1_c2 p1_7
663+ -> Parallel Seq Scan on p1_c3_c1 p1_8
664+ -> Parallel Seq Scan on p1_c3_c2 p1_9
665665 (25 rows)
666666
667667 -- Mixture with scan hints
@@ -677,33 +677,33 @@ not used hint:
677677 duplication hint:
678678 error hint:
679679
680- QUERY PLAN
681---------------------------------------------------------------
680+ QUERY PLAN
681+-------------------------------------------------------------------
682682 Hash Join
683683 Hash Cond: (p2.id = p1.id)
684684 -> Append
685- -> Index Scan using p2_id2_val on p2
686- -> Index Scan using p2_c1_id2_val on p2_c1
687- -> Index Scan using p2_c2_id2_val on p2_c2
688- -> Index Scan using p2_c3_id_val_idx on p2_c3
689- -> Index Scan using p2_c4_id_val_idx on p2_c4
690- -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
691- -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
692- -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
693- -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
685+ -> Index Scan using p2_id2_val on p2 p2_1
686+ -> Index Scan using p2_c1_id2_val on p2_c1 p2_2
687+ -> Index Scan using p2_c2_id2_val on p2_c2 p2_3
688+ -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
689+ -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
690+ -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
691+ -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
692+ -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
693+ -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
694694 -> Hash
695695 -> Gather
696696 Workers Planned: 8
697697 -> Append
698- -> Parallel Seq Scan on p1
699- -> Parallel Seq Scan on p1_c1
700- -> Parallel Seq Scan on p1_c2
701- -> Parallel Seq Scan on p1_c3
702- -> Parallel Seq Scan on p1_c4
703- -> Parallel Seq Scan on p1_c1_c1
704- -> Parallel Seq Scan on p1_c1_c2
705- -> Parallel Seq Scan on p1_c3_c1
706- -> Parallel Seq Scan on p1_c3_c2
698+ -> Parallel Seq Scan on p1 p1_1
699+ -> Parallel Seq Scan on p1_c1 p1_2
700+ -> Parallel Seq Scan on p1_c2 p1_3
701+ -> Parallel Seq Scan on p1_c3 p1_4
702+ -> Parallel Seq Scan on p1_c4 p1_5
703+ -> Parallel Seq Scan on p1_c1_c1 p1_6
704+ -> Parallel Seq Scan on p1_c1_c2 p1_7
705+ -> Parallel Seq Scan on p1_c3_c1 p1_8
706+ -> Parallel Seq Scan on p1_c3_c2 p1_9
707707 (25 rows)
708708
709709 SET enable_parallel_append to true;
@@ -717,33 +717,33 @@ not used hint:
717717 duplication hint:
718718 error hint:
719719
720- QUERY PLAN
721---------------------------------------------------------------
720+ QUERY PLAN
721+-------------------------------------------------------------------
722722 Hash Join
723723 Hash Cond: (p2.id = p1.id)
724724 -> Append
725- -> Index Scan using p2_id2_val on p2
726- -> Index Scan using p2_c1_id2_val on p2_c1
727- -> Index Scan using p2_c2_id2_val on p2_c2
728- -> Index Scan using p2_c3_id_val_idx on p2_c3
729- -> Index Scan using p2_c4_id_val_idx on p2_c4
730- -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
731- -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
732- -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
733- -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
725+ -> Index Scan using p2_id2_val on p2 p2_1
726+ -> Index Scan using p2_c1_id2_val on p2_c1 p2_2
727+ -> Index Scan using p2_c2_id2_val on p2_c2 p2_3
728+ -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
729+ -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
730+ -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
731+ -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
732+ -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
733+ -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
734734 -> Hash
735735 -> Gather
736736 Workers Planned: 8
737737 -> Parallel Append
738- -> Seq Scan on p1
739- -> Seq Scan on p1_c1
740- -> Seq Scan on p1_c3
741- -> Parallel Seq Scan on p1_c2
742- -> Parallel Seq Scan on p1_c4
743- -> Parallel Seq Scan on p1_c1_c1
744- -> Parallel Seq Scan on p1_c1_c2
745- -> Parallel Seq Scan on p1_c3_c1
746- -> Parallel Seq Scan on p1_c3_c2
738+ -> Seq Scan on p1 p1_1
739+ -> Seq Scan on p1_c1 p1_2
740+ -> Seq Scan on p1_c3 p1_4
741+ -> Parallel Seq Scan on p1_c2 p1_3
742+ -> Parallel Seq Scan on p1_c4 p1_5
743+ -> Parallel Seq Scan on p1_c1_c1 p1_6
744+ -> Parallel Seq Scan on p1_c1_c2 p1_7
745+ -> Parallel Seq Scan on p1_c3_c1 p1_8
746+ -> Parallel Seq Scan on p1_c3_c2 p1_9
747747 (25 rows)
748748
749749 -- Parallel sequential scan
@@ -758,33 +758,33 @@ not used hint:
758758 duplication hint:
759759 error hint:
760760
761- QUERY PLAN
762--------------------------------------------------------
761+ QUERY PLAN
762+------------------------------------------------------------
763763 Gather
764764 Workers Planned: 8
765765 -> Parallel Hash Join
766766 Hash Cond: (p1.id = p2.id)
767767 -> Append
768- -> Parallel Seq Scan on p1
769- -> Parallel Seq Scan on p1_c1
770- -> Parallel Seq Scan on p1_c2
771- -> Parallel Seq Scan on p1_c3
772- -> Parallel Seq Scan on p1_c4
773- -> Parallel Seq Scan on p1_c1_c1
774- -> Parallel Seq Scan on p1_c1_c2
775- -> Parallel Seq Scan on p1_c3_c1
776- -> Parallel Seq Scan on p1_c3_c2
768+ -> Parallel Seq Scan on p1 p1_1
769+ -> Parallel Seq Scan on p1_c1 p1_2
770+ -> Parallel Seq Scan on p1_c2 p1_3
771+ -> Parallel Seq Scan on p1_c3 p1_4
772+ -> Parallel Seq Scan on p1_c4 p1_5
773+ -> Parallel Seq Scan on p1_c1_c1 p1_6
774+ -> Parallel Seq Scan on p1_c1_c2 p1_7
775+ -> Parallel Seq Scan on p1_c3_c1 p1_8
776+ -> Parallel Seq Scan on p1_c3_c2 p1_9
777777 -> Parallel Hash
778778 -> Append
779- -> Parallel Seq Scan on p2
780- -> Parallel Seq Scan on p2_c1
781- -> Parallel Seq Scan on p2_c2
782- -> Parallel Seq Scan on p2_c3
783- -> Parallel Seq Scan on p2_c4
784- -> Parallel Seq Scan on p2_c1_c1
785- -> Parallel Seq Scan on p2_c1_c2
786- -> Parallel Seq Scan on p2_c3_c1
787- -> Parallel Seq Scan on p2_c3_c2
779+ -> Parallel Seq Scan on p2 p2_1
780+ -> Parallel Seq Scan on p2_c1 p2_2
781+ -> Parallel Seq Scan on p2_c2 p2_3
782+ -> Parallel Seq Scan on p2_c3 p2_4
783+ -> Parallel Seq Scan on p2_c4 p2_5
784+ -> Parallel Seq Scan on p2_c1_c1 p2_6
785+ -> Parallel Seq Scan on p2_c1_c2 p2_7
786+ -> Parallel Seq Scan on p2_c3_c1 p2_8
787+ -> Parallel Seq Scan on p2_c3_c2 p2_9
788788 (25 rows)
789789
790790 SET enable_parallel_append to true;
@@ -798,33 +798,33 @@ not used hint:
798798 duplication hint:
799799 error hint:
800800
801- QUERY PLAN
802--------------------------------------------------------
801+ QUERY PLAN
802+------------------------------------------------------------
803803 Gather
804804 Workers Planned: 8
805805 -> Parallel Hash Join
806806 Hash Cond: (p1.id = p2.id)
807807 -> Parallel Append
808- -> Seq Scan on p1
809- -> Seq Scan on p1_c1
810- -> Seq Scan on p1_c3
811- -> Parallel Seq Scan on p1_c2
812- -> Parallel Seq Scan on p1_c4
813- -> Parallel Seq Scan on p1_c1_c1
814- -> Parallel Seq Scan on p1_c1_c2
815- -> Parallel Seq Scan on p1_c3_c1
816- -> Parallel Seq Scan on p1_c3_c2
808+ -> Seq Scan on p1 p1_1
809+ -> Seq Scan on p1_c1 p1_2
810+ -> Seq Scan on p1_c3 p1_4
811+ -> Parallel Seq Scan on p1_c2 p1_3
812+ -> Parallel Seq Scan on p1_c4 p1_5
813+ -> Parallel Seq Scan on p1_c1_c1 p1_6
814+ -> Parallel Seq Scan on p1_c1_c2 p1_7
815+ -> Parallel Seq Scan on p1_c3_c1 p1_8
816+ -> Parallel Seq Scan on p1_c3_c2 p1_9
817817 -> Parallel Hash
818818 -> Parallel Append
819- -> Seq Scan on p2
820- -> Seq Scan on p2_c1
821- -> Seq Scan on p2_c3
822- -> Parallel Seq Scan on p2_c2
823- -> Parallel Seq Scan on p2_c4
824- -> Parallel Seq Scan on p2_c1_c1
825- -> Parallel Seq Scan on p2_c1_c2
826- -> Parallel Seq Scan on p2_c3_c1
827- -> Parallel Seq Scan on p2_c3_c2
819+ -> Seq Scan on p2 p2_1
820+ -> Seq Scan on p2_c1 p2_2
821+ -> Seq Scan on p2_c3 p2_4
822+ -> Parallel Seq Scan on p2_c2 p2_3
823+ -> Parallel Seq Scan on p2_c4 p2_5
824+ -> Parallel Seq Scan on p2_c1_c1 p2_6
825+ -> Parallel Seq Scan on p2_c1_c2 p2_7
826+ -> Parallel Seq Scan on p2_c3_c1 p2_8
827+ -> Parallel Seq Scan on p2_c3_c2 p2_9
828828 (25 rows)
829829
830830 -- Parallel index scan
@@ -839,33 +839,33 @@ not used hint:
839839 duplication hint:
840840 error hint:
841841
842- QUERY PLAN
843------------------------------------------------------------------------
842+ QUERY PLAN
843+----------------------------------------------------------------------------
844844 Gather
845845 Workers Planned: 8
846846 -> Parallel Hash Join
847847 Hash Cond: (p1.id = p2.id)
848848 -> Append
849- -> Parallel Index Scan using p1_pkey on p1
850- -> Parallel Index Scan using p1_c1_pkey on p1_c1
851- -> Parallel Index Scan using p1_c2_pkey on p1_c2
852- -> Parallel Index Scan using p1_c3_pkey on p1_c3
853- -> Parallel Index Scan using p1_c4_pkey on p1_c4
854- -> Parallel Index Scan using p1_c1_c1_pkey on p1_c1_c1
855- -> Parallel Index Scan using p1_c1_c2_pkey on p1_c1_c2
856- -> Parallel Index Scan using p1_c3_c1_pkey on p1_c3_c1
857- -> Parallel Index Scan using p1_c3_c2_pkey on p1_c3_c2
849+ -> Parallel Index Scan using p1_pkey on p1 p1_1
850+ -> Parallel Index Scan using p1_c1_pkey on p1_c1 p1_2
851+ -> Parallel Index Scan using p1_c2_pkey on p1_c2 p1_3
852+ -> Parallel Index Scan using p1_c3_pkey on p1_c3 p1_4
853+ -> Parallel Index Scan using p1_c4_pkey on p1_c4 p1_5
854+ -> Parallel Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_6
855+ -> Parallel Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_7
856+ -> Parallel Index Scan using p1_c3_c1_pkey on p1_c3_c1 p1_8
857+ -> Parallel Index Scan using p1_c3_c2_pkey on p1_c3_c2 p1_9
858858 -> Parallel Hash
859859 -> Append
860- -> Parallel Seq Scan on p2
861- -> Parallel Seq Scan on p2_c1
862- -> Parallel Seq Scan on p2_c2
863- -> Parallel Seq Scan on p2_c3
864- -> Parallel Seq Scan on p2_c4
865- -> Parallel Seq Scan on p2_c1_c1
866- -> Parallel Seq Scan on p2_c1_c2
867- -> Parallel Seq Scan on p2_c3_c1
868- -> Parallel Seq Scan on p2_c3_c2
860+ -> Parallel Seq Scan on p2 p2_1
861+ -> Parallel Seq Scan on p2_c1 p2_2
862+ -> Parallel Seq Scan on p2_c2 p2_3
863+ -> Parallel Seq Scan on p2_c3 p2_4
864+ -> Parallel Seq Scan on p2_c4 p2_5
865+ -> Parallel Seq Scan on p2_c1_c1 p2_6
866+ -> Parallel Seq Scan on p2_c1_c2 p2_7
867+ -> Parallel Seq Scan on p2_c3_c1 p2_8
868+ -> Parallel Seq Scan on p2_c3_c2 p2_9
869869 (25 rows)
870870
871871 SET enable_parallel_append to true;
@@ -879,33 +879,33 @@ not used hint:
879879 duplication hint:
880880 error hint:
881881
882- QUERY PLAN
883------------------------------------------------------------------------
882+ QUERY PLAN
883+----------------------------------------------------------------------------
884884 Gather
885885 Workers Planned: 8
886886 -> Parallel Hash Join
887887 Hash Cond: (p1.id = p2.id)
888888 -> Parallel Append
889- -> Parallel Index Scan using p1_pkey on p1
890- -> Parallel Index Scan using p1_c1_pkey on p1_c1
891- -> Parallel Index Scan using p1_c2_pkey on p1_c2
892- -> Parallel Index Scan using p1_c3_pkey on p1_c3
893- -> Parallel Index Scan using p1_c4_pkey on p1_c4
894- -> Parallel Index Scan using p1_c1_c1_pkey on p1_c1_c1
895- -> Parallel Index Scan using p1_c1_c2_pkey on p1_c1_c2
896- -> Parallel Index Scan using p1_c3_c1_pkey on p1_c3_c1
897- -> Parallel Index Scan using p1_c3_c2_pkey on p1_c3_c2
889+ -> Parallel Index Scan using p1_pkey on p1 p1_1
890+ -> Parallel Index Scan using p1_c1_pkey on p1_c1 p1_2
891+ -> Parallel Index Scan using p1_c2_pkey on p1_c2 p1_3
892+ -> Parallel Index Scan using p1_c3_pkey on p1_c3 p1_4
893+ -> Parallel Index Scan using p1_c4_pkey on p1_c4 p1_5
894+ -> Parallel Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_6
895+ -> Parallel Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_7
896+ -> Parallel Index Scan using p1_c3_c1_pkey on p1_c3_c1 p1_8
897+ -> Parallel Index Scan using p1_c3_c2_pkey on p1_c3_c2 p1_9
898898 -> Parallel Hash
899899 -> Parallel Append
900- -> Seq Scan on p2
901- -> Seq Scan on p2_c1
902- -> Seq Scan on p2_c3
903- -> Parallel Seq Scan on p2_c2
904- -> Parallel Seq Scan on p2_c4
905- -> Parallel Seq Scan on p2_c1_c1
906- -> Parallel Seq Scan on p2_c1_c2
907- -> Parallel Seq Scan on p2_c3_c1
908- -> Parallel Seq Scan on p2_c3_c2
900+ -> Seq Scan on p2 p2_1
901+ -> Seq Scan on p2_c1 p2_2
902+ -> Seq Scan on p2_c3 p2_4
903+ -> Parallel Seq Scan on p2_c2 p2_3
904+ -> Parallel Seq Scan on p2_c4 p2_5
905+ -> Parallel Seq Scan on p2_c1_c1 p2_6
906+ -> Parallel Seq Scan on p2_c1_c2 p2_7
907+ -> Parallel Seq Scan on p2_c3_c1 p2_8
908+ -> Parallel Seq Scan on p2_c3_c2 p2_9
909909 (25 rows)
910910
911911 -- This hint doesn't turn on parallel, so the Parallel hint is ignored
@@ -920,56 +920,56 @@ Parallel(p1 0 hard)
920920 duplication hint:
921921 error hint:
922922
923- QUERY PLAN
924---------------------------------------------------------
923+ QUERY PLAN
924+-------------------------------------------------------------
925925 Hash Join
926926 Hash Cond: (p1.id = p2.id)
927927 -> Append
928- -> Index Scan using p1_pkey on p1
929- -> Index Scan using p1_c1_pkey on p1_c1
930- -> Index Scan using p1_c2_pkey on p1_c2
931- -> Index Scan using p1_c3_pkey on p1_c3
932- -> Index Scan using p1_c4_pkey on p1_c4
933- -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
934- -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
935- -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
936- -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
928+ -> Index Scan using p1_pkey on p1 p1_1
929+ -> Index Scan using p1_c1_pkey on p1_c1 p1_2
930+ -> Index Scan using p1_c2_pkey on p1_c2 p1_3
931+ -> Index Scan using p1_c3_pkey on p1_c3 p1_4
932+ -> Index Scan using p1_c4_pkey on p1_c4 p1_5
933+ -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_6
934+ -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_7
935+ -> Index Scan using p1_c3_c1_pkey on p1_c3_c1 p1_8
936+ -> Index Scan using p1_c3_c2_pkey on p1_c3_c2 p1_9
937937 -> Hash
938938 -> Append
939- -> Seq Scan on p2
940- -> Seq Scan on p2_c1
941- -> Seq Scan on p2_c2
942- -> Seq Scan on p2_c3
943- -> Seq Scan on p2_c4
944- -> Seq Scan on p2_c1_c1
945- -> Seq Scan on p2_c1_c2
946- -> Seq Scan on p2_c3_c1
947- -> Seq Scan on p2_c3_c2
939+ -> Seq Scan on p2 p2_1
940+ -> Seq Scan on p2_c1 p2_2
941+ -> Seq Scan on p2_c2 p2_3
942+ -> Seq Scan on p2_c3 p2_4
943+ -> Seq Scan on p2_c4 p2_5
944+ -> Seq Scan on p2_c1_c1 p2_6
945+ -> Seq Scan on p2_c1_c2 p2_7
946+ -> Seq Scan on p2_c3_c1 p2_8
947+ -> Seq Scan on p2_c3_c2 p2_9
948948 (23 rows)
949949
950950 -- Parallel on UNION
951951 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
952- QUERY PLAN
953-----------------------------
952+ QUERY PLAN
953+---------------------------------
954954 Append
955955 -> Seq Scan on p1
956- -> Seq Scan on p1_c1
957- -> Seq Scan on p1_c2
958- -> Seq Scan on p1_c3
959- -> Seq Scan on p1_c4
960- -> Seq Scan on p1_c1_c1
961- -> Seq Scan on p1_c1_c2
962- -> Seq Scan on p1_c3_c1
963- -> Seq Scan on p1_c3_c2
956+ -> Seq Scan on p1_c1 p1_1
957+ -> Seq Scan on p1_c2 p1_2
958+ -> Seq Scan on p1_c3 p1_3
959+ -> Seq Scan on p1_c4 p1_4
960+ -> Seq Scan on p1_c1_c1 p1_5
961+ -> Seq Scan on p1_c1_c2 p1_6
962+ -> Seq Scan on p1_c3_c1 p1_7
963+ -> Seq Scan on p1_c3_c2 p1_8
964964 -> Seq Scan on p2
965- -> Seq Scan on p2_c1
966- -> Seq Scan on p2_c2
967- -> Seq Scan on p2_c3
968- -> Seq Scan on p2_c4
969- -> Seq Scan on p2_c1_c1
970- -> Seq Scan on p2_c1_c2
971- -> Seq Scan on p2_c3_c1
972- -> Seq Scan on p2_c3_c2
965+ -> Seq Scan on p2_c1 p2_1
966+ -> Seq Scan on p2_c2 p2_2
967+ -> Seq Scan on p2_c3 p2_3
968+ -> Seq Scan on p2_c4 p2_4
969+ -> Seq Scan on p2_c1_c1 p2_5
970+ -> Seq Scan on p2_c1_c2 p2_6
971+ -> Seq Scan on p2_c3_c1 p2_7
972+ -> Seq Scan on p2_c3_c2 p2_8
973973 (19 rows)
974974
975975 -- parallel hinting on any relation enables parallel
@@ -987,29 +987,29 @@ not used hint:
987987 duplication hint:
988988 error hint:
989989
990- QUERY PLAN
991--------------------------------------------
990+ QUERY PLAN
991+------------------------------------------------
992992 Gather
993993 Workers Planned: 1
994994 -> Parallel Append
995- -> Parallel Seq Scan on p2_c2
996- -> Parallel Seq Scan on p2_c4
997- -> Parallel Seq Scan on p2_c1_c1
998- -> Parallel Seq Scan on p2_c1_c2
999- -> Parallel Seq Scan on p2_c3_c1
1000- -> Parallel Seq Scan on p2_c3_c2
995+ -> Parallel Seq Scan on p2_c2 p2_2
996+ -> Parallel Seq Scan on p2_c4 p2_4
997+ -> Parallel Seq Scan on p2_c1_c1 p2_5
998+ -> Parallel Seq Scan on p2_c1_c2 p2_6
999+ -> Parallel Seq Scan on p2_c3_c1 p2_7
1000+ -> Parallel Seq Scan on p2_c3_c2 p2_8
10011001 -> Parallel Seq Scan on p1
1002- -> Parallel Seq Scan on p1_c1
1003- -> Parallel Seq Scan on p1_c2
1004- -> Parallel Seq Scan on p1_c3
1005- -> Parallel Seq Scan on p1_c4
1006- -> Parallel Seq Scan on p1_c1_c1
1007- -> Parallel Seq Scan on p1_c1_c2
1008- -> Parallel Seq Scan on p1_c3_c1
1009- -> Parallel Seq Scan on p1_c3_c2
1002+ -> Parallel Seq Scan on p1_c1 p1_1
1003+ -> Parallel Seq Scan on p1_c2 p1_2
1004+ -> Parallel Seq Scan on p1_c3 p1_3
1005+ -> Parallel Seq Scan on p1_c4 p1_4
1006+ -> Parallel Seq Scan on p1_c1_c1 p1_5
1007+ -> Parallel Seq Scan on p1_c1_c2 p1_6
1008+ -> Parallel Seq Scan on p1_c3_c1 p1_7
1009+ -> Parallel Seq Scan on p1_c3_c2 p1_8
10101010 -> Parallel Seq Scan on p2
1011- -> Parallel Seq Scan on p2_c1
1012- -> Parallel Seq Scan on p2_c3
1011+ -> Parallel Seq Scan on p2_c1 p2_1
1012+ -> Parallel Seq Scan on p2_c3 p2_3
10131013 (21 rows)
10141014
10151015 -- set hint has the same effect
@@ -1022,29 +1022,29 @@ not used hint:
10221022 duplication hint:
10231023 error hint:
10241024
1025- QUERY PLAN
1026--------------------------------------------
1025+ QUERY PLAN
1026+------------------------------------------------
10271027 Gather
10281028 Workers Planned: 1
10291029 -> Parallel Append
1030- -> Parallel Seq Scan on p1_c2
1031- -> Parallel Seq Scan on p1_c4
1032- -> Parallel Seq Scan on p2_c2
1033- -> Parallel Seq Scan on p2_c4
1034- -> Parallel Seq Scan on p1_c1_c1
1035- -> Parallel Seq Scan on p1_c1_c2
1036- -> Parallel Seq Scan on p1_c3_c1
1037- -> Parallel Seq Scan on p1_c3_c2
1038- -> Parallel Seq Scan on p2_c1_c1
1039- -> Parallel Seq Scan on p2_c1_c2
1040- -> Parallel Seq Scan on p2_c3_c1
1041- -> Parallel Seq Scan on p2_c3_c2
1030+ -> Parallel Seq Scan on p1_c2 p1_2
1031+ -> Parallel Seq Scan on p1_c4 p1_4
1032+ -> Parallel Seq Scan on p2_c2 p2_2
1033+ -> Parallel Seq Scan on p2_c4 p2_4
1034+ -> Parallel Seq Scan on p1_c1_c1 p1_5
1035+ -> Parallel Seq Scan on p1_c1_c2 p1_6
1036+ -> Parallel Seq Scan on p1_c3_c1 p1_7
1037+ -> Parallel Seq Scan on p1_c3_c2 p1_8
1038+ -> Parallel Seq Scan on p2_c1_c1 p2_5
1039+ -> Parallel Seq Scan on p2_c1_c2 p2_6
1040+ -> Parallel Seq Scan on p2_c3_c1 p2_7
1041+ -> Parallel Seq Scan on p2_c3_c2 p2_8
10421042 -> Parallel Seq Scan on p1
1043- -> Parallel Seq Scan on p1_c1
1044- -> Parallel Seq Scan on p1_c3
1043+ -> Parallel Seq Scan on p1_c1 p1_1
1044+ -> Parallel Seq Scan on p1_c3 p1_3
10451045 -> Parallel Seq Scan on p2
1046- -> Parallel Seq Scan on p2_c1
1047- -> Parallel Seq Scan on p2_c3
1046+ -> Parallel Seq Scan on p2_c1 p2_1
1047+ -> Parallel Seq Scan on p2_c3 p2_3
10481048 (21 rows)
10491049
10501050 -- applies largest number of workers on merged parallel paths
@@ -1063,29 +1063,29 @@ not used hint:
10631063 duplication hint:
10641064 error hint:
10651065
1066- QUERY PLAN
1067--------------------------------------------
1066+ QUERY PLAN
1067+------------------------------------------------
10681068 Gather
10691069 Workers Planned: 6
10701070 -> Parallel Append
10711071 -> Seq Scan on p1
1072- -> Seq Scan on p1_c1
1073- -> Seq Scan on p1_c3
1072+ -> Seq Scan on p1_c1 p1_1
1073+ -> Seq Scan on p1_c3 p1_3
10741074 -> Seq Scan on p2
1075- -> Seq Scan on p2_c1
1076- -> Seq Scan on p2_c3
1077- -> Parallel Seq Scan on p1_c2
1078- -> Parallel Seq Scan on p1_c4
1079- -> Parallel Seq Scan on p1_c1_c1
1080- -> Parallel Seq Scan on p1_c1_c2
1081- -> Parallel Seq Scan on p1_c3_c1
1082- -> Parallel Seq Scan on p1_c3_c2
1083- -> Parallel Seq Scan on p2_c2
1084- -> Parallel Seq Scan on p2_c4
1085- -> Parallel Seq Scan on p2_c1_c1
1086- -> Parallel Seq Scan on p2_c1_c2
1087- -> Parallel Seq Scan on p2_c3_c1
1088- -> Parallel Seq Scan on p2_c3_c2
1075+ -> Seq Scan on p2_c1 p2_1
1076+ -> Seq Scan on p2_c3 p2_3
1077+ -> Parallel Seq Scan on p1_c2 p1_2
1078+ -> Parallel Seq Scan on p1_c4 p1_4
1079+ -> Parallel Seq Scan on p1_c1_c1 p1_5
1080+ -> Parallel Seq Scan on p1_c1_c2 p1_6
1081+ -> Parallel Seq Scan on p1_c3_c1 p1_7
1082+ -> Parallel Seq Scan on p1_c3_c2 p1_8
1083+ -> Parallel Seq Scan on p2_c2 p2_2
1084+ -> Parallel Seq Scan on p2_c4 p2_4
1085+ -> Parallel Seq Scan on p2_c1_c1 p2_5
1086+ -> Parallel Seq Scan on p2_c1_c2 p2_6
1087+ -> Parallel Seq Scan on p2_c3_c1 p2_7
1088+ -> Parallel Seq Scan on p2_c3_c2 p2_8
10891089 (21 rows)
10901090
10911091 -- Negative hints
@@ -1096,20 +1096,20 @@ SET min_parallel_table_scan_size to 0;
10961096 SET min_parallel_index_scan_size to 0;
10971097 SET max_parallel_workers_per_gather to 5;
10981098 EXPLAIN (COSTS false) SELECT * FROM p1;
1099- QUERY PLAN
1100--------------------------------------------
1099+ QUERY PLAN
1100+------------------------------------------------
11011101 Gather
11021102 Workers Planned: 4
11031103 -> Parallel Append
1104- -> Parallel Seq Scan on p1_c2
1105- -> Parallel Seq Scan on p1_c4
1106- -> Parallel Seq Scan on p1_c1_c1
1107- -> Parallel Seq Scan on p1_c1_c2
1108- -> Parallel Seq Scan on p1_c3_c1
1109- -> Parallel Seq Scan on p1_c3_c2
1110- -> Parallel Seq Scan on p1
1111- -> Parallel Seq Scan on p1_c1
1112- -> Parallel Seq Scan on p1_c3
1104+ -> Parallel Seq Scan on p1_c2 p1_3
1105+ -> Parallel Seq Scan on p1_c4 p1_5
1106+ -> Parallel Seq Scan on p1_c1_c1 p1_6
1107+ -> Parallel Seq Scan on p1_c1_c2 p1_7
1108+ -> Parallel Seq Scan on p1_c3_c1 p1_8
1109+ -> Parallel Seq Scan on p1_c3_c2 p1_9
1110+ -> Parallel Seq Scan on p1 p1_1
1111+ -> Parallel Seq Scan on p1_c1 p1_2
1112+ -> Parallel Seq Scan on p1_c3 p1_4
11131113 (12 rows)
11141114
11151115 SET enable_parallel_append to false;
@@ -1122,18 +1122,18 @@ not used hint:
11221122 duplication hint:
11231123 error hint:
11241124
1125- QUERY PLAN
1126-----------------------------
1125+ QUERY PLAN
1126+---------------------------------
11271127 Append
1128- -> Seq Scan on p1
1129- -> Seq Scan on p1_c1
1130- -> Seq Scan on p1_c2
1131- -> Seq Scan on p1_c3
1132- -> Seq Scan on p1_c4
1133- -> Seq Scan on p1_c1_c1
1134- -> Seq Scan on p1_c1_c2
1135- -> Seq Scan on p1_c3_c1
1136- -> Seq Scan on p1_c3_c2
1128+ -> Seq Scan on p1 p1_1
1129+ -> Seq Scan on p1_c1 p1_2
1130+ -> Seq Scan on p1_c2 p1_3
1131+ -> Seq Scan on p1_c3 p1_4
1132+ -> Seq Scan on p1_c4 p1_5
1133+ -> Seq Scan on p1_c1_c1 p1_6
1134+ -> Seq Scan on p1_c1_c2 p1_7
1135+ -> Seq Scan on p1_c3_c1 p1_8
1136+ -> Seq Scan on p1_c3_c2 p1_9
11371137 (10 rows)
11381138
11391139 SET enable_parallel_append to true;
@@ -1146,18 +1146,18 @@ not used hint:
11461146 duplication hint:
11471147 error hint:
11481148
1149- QUERY PLAN
1150-----------------------------
1149+ QUERY PLAN
1150+---------------------------------
11511151 Append
1152- -> Seq Scan on p1
1153- -> Seq Scan on p1_c1
1154- -> Seq Scan on p1_c2
1155- -> Seq Scan on p1_c3
1156- -> Seq Scan on p1_c4
1157- -> Seq Scan on p1_c1_c1
1158- -> Seq Scan on p1_c1_c2
1159- -> Seq Scan on p1_c3_c1
1160- -> Seq Scan on p1_c3_c2
1152+ -> Seq Scan on p1 p1_1
1153+ -> Seq Scan on p1_c1 p1_2
1154+ -> Seq Scan on p1_c2 p1_3
1155+ -> Seq Scan on p1_c3 p1_4
1156+ -> Seq Scan on p1_c4 p1_5
1157+ -> Seq Scan on p1_c1_c1 p1_6
1158+ -> Seq Scan on p1_c1_c2 p1_7
1159+ -> Seq Scan on p1_c3_c1 p1_8
1160+ -> Seq Scan on p1_c3_c2 p1_9
11611161 (10 rows)
11621162
11631163 -- Errors
@@ -1188,29 +1188,29 @@ Parallel(p1 8 soft)
11881188 Parallel()
11891189 Parallel()
11901190
1191- QUERY PLAN
1192--------------------------------------------
1191+ QUERY PLAN
1192+------------------------------------------------
11931193 Gather
11941194 Workers Planned: 1
11951195 -> Parallel Append
1196- -> Parallel Seq Scan on p1_c2
1197- -> Parallel Seq Scan on p1_c4
1198- -> Parallel Seq Scan on p2_c2
1199- -> Parallel Seq Scan on p2_c4
1200- -> Parallel Seq Scan on p1_c1_c1
1201- -> Parallel Seq Scan on p1_c1_c2
1202- -> Parallel Seq Scan on p1_c3_c1
1203- -> Parallel Seq Scan on p1_c3_c2
1204- -> Parallel Seq Scan on p2_c1_c1
1205- -> Parallel Seq Scan on p2_c1_c2
1206- -> Parallel Seq Scan on p2_c3_c1
1207- -> Parallel Seq Scan on p2_c3_c2
1196+ -> Parallel Seq Scan on p1_c2 p1_2
1197+ -> Parallel Seq Scan on p1_c4 p1_4
1198+ -> Parallel Seq Scan on p2_c2 p2_2
1199+ -> Parallel Seq Scan on p2_c4 p2_4
1200+ -> Parallel Seq Scan on p1_c1_c1 p1_5
1201+ -> Parallel Seq Scan on p1_c1_c2 p1_6
1202+ -> Parallel Seq Scan on p1_c3_c1 p1_7
1203+ -> Parallel Seq Scan on p1_c3_c2 p1_8
1204+ -> Parallel Seq Scan on p2_c1_c1 p2_5
1205+ -> Parallel Seq Scan on p2_c1_c2 p2_6
1206+ -> Parallel Seq Scan on p2_c3_c1 p2_7
1207+ -> Parallel Seq Scan on p2_c3_c2 p2_8
12081208 -> Parallel Seq Scan on p1
1209- -> Parallel Seq Scan on p1_c1
1210- -> Parallel Seq Scan on p1_c3
1209+ -> Parallel Seq Scan on p1_c1 p1_1
1210+ -> Parallel Seq Scan on p1_c3 p1_3
12111211 -> Parallel Seq Scan on p2
1212- -> Parallel Seq Scan on p2_c1
1213- -> Parallel Seq Scan on p2_c3
1212+ -> Parallel Seq Scan on p2_c1 p2_1
1213+ -> Parallel Seq Scan on p2_c3 p2_3
12141214 (21 rows)
12151215
12161216 -- Hints on unhintable relations are just ignored
@@ -1253,23 +1253,23 @@ error hint:
12531253 -> Gather
12541254 Workers Planned: 5
12551255 -> Parallel Append
1256- -> Seq Scan on p1
1256+ -> Seq Scan on p1 p1_1
12571257 Filter: ((id % 2) = 0)
1258- -> Seq Scan on p1_c1
1258+ -> Seq Scan on p1_c1 p1_2
12591259 Filter: ((id % 2) = 0)
1260- -> Seq Scan on p1_c3
1260+ -> Seq Scan on p1_c3 p1_4
12611261 Filter: ((id % 2) = 0)
1262- -> Parallel Seq Scan on p1_c2
1262+ -> Parallel Seq Scan on p1_c2 p1_3
12631263 Filter: ((id % 2) = 0)
1264- -> Parallel Seq Scan on p1_c4
1264+ -> Parallel Seq Scan on p1_c4 p1_5
12651265 Filter: ((id % 2) = 0)
1266- -> Parallel Seq Scan on p1_c1_c1
1266+ -> Parallel Seq Scan on p1_c1_c1 p1_6
12671267 Filter: ((id % 2) = 0)
1268- -> Parallel Seq Scan on p1_c1_c2
1268+ -> Parallel Seq Scan on p1_c1_c2 p1_7
12691269 Filter: ((id % 2) = 0)
1270- -> Parallel Seq Scan on p1_c3_c1
1270+ -> Parallel Seq Scan on p1_c3_c1 p1_8
12711271 Filter: ((id % 2) = 0)
1272- -> Parallel Seq Scan on p1_c3_c2
1272+ -> Parallel Seq Scan on p1_c3_c2 p1_9
12731273 Filter: ((id % 2) = 0)
12741274 -> Function Scan on pg_stat_statements
12751275 -> Subquery Scan on "*SELECT* 5"
--- a/pg_hint_plan.c
+++ b/pg_hint_plan.c
@@ -405,8 +405,9 @@ static void pg_hint_plan_ProcessUtility(PlannedStmt *pstmt,
405405 const char *queryString,
406406 ProcessUtilityContext context,
407407 ParamListInfo params, QueryEnvironment *queryEnv,
408- DestReceiver *dest, char *completionTag);
409-static PlannedStmt *pg_hint_plan_planner(Query *parse, int cursorOptions,
408+ DestReceiver *dest, QueryCompletion *qc);
409+static PlannedStmt *pg_hint_plan_planner(Query *parse, const char *query_string,
410+ int cursorOptions,
410411 ParamListInfo boundParams);
411412 static RelOptInfo *pg_hint_plan_join_search(PlannerInfo *root,
412413 int levels_needed,
@@ -480,10 +481,11 @@ void pg_hint_plan_set_rel_pathlist(PlannerInfo * root, RelOptInfo *rel,
480481 static void create_plain_partial_paths(PlannerInfo *root,
481482 RelOptInfo *rel);
482483 static void make_rels_by_clause_joins(PlannerInfo *root, RelOptInfo *old_rel,
484+ List *other_rels_list,
483485 ListCell *other_rels);
484486 static void make_rels_by_clauseless_joins(PlannerInfo *root,
485487 RelOptInfo *old_rel,
486- ListCell *other_rels);
488+ List *other_rels);
487489 static bool has_join_restriction(PlannerInfo *root, RelOptInfo *rel);
488490 static void set_plain_rel_pathlist(PlannerInfo *root, RelOptInfo *rel,
489491 RangeTblEntry *rte);
@@ -3012,14 +3014,14 @@ static void
30123014 pg_hint_plan_ProcessUtility(PlannedStmt *pstmt, const char *queryString,
30133015 ProcessUtilityContext context,
30143016 ParamListInfo params, QueryEnvironment *queryEnv,
3015- DestReceiver *dest, char *completionTag)
3017+ DestReceiver *dest, QueryCompletion *qc)
30163018 {
30173019 if (prev_ProcessUtility_hook)
30183020 prev_ProcessUtility_hook(pstmt, queryString, context, params, queryEnv,
3019- dest, completionTag);
3021+ dest, qc);
30203022 else
30213023 standard_ProcessUtility(pstmt, queryString, context, params, queryEnv,
3022- dest, completionTag);
3024+ dest, qc);
30233025
30243026 if (plpgsql_recurse_level == 0)
30253027 current_hint_retrieved = false;
@@ -3029,7 +3031,7 @@ pg_hint_plan_ProcessUtility(PlannedStmt *pstmt, const char *queryString,
30293031 * Read and set up hint information
30303032 */
30313033 static PlannedStmt *
3032-pg_hint_plan_planner(Query *parse, int cursorOptions, ParamListInfo boundParams)
3034+pg_hint_plan_planner(Query *parse, const char *query_string, int cursorOptions, ParamListInfo boundParams)
30333035 {
30343036 int save_nestlevel;
30353037 PlannedStmt *result;
@@ -3143,9 +3145,11 @@ pg_hint_plan_planner(Query *parse, int cursorOptions, ParamListInfo boundParams)
31433145 PG_TRY();
31443146 {
31453147 if (prev_planner)
3146- result = (*prev_planner) (parse, cursorOptions, boundParams);
3148+ result = (*prev_planner) (parse, query_string,
3149+ cursorOptions, boundParams);
31473150 else
3148- result = standard_planner(parse, cursorOptions, boundParams);
3151+ result = standard_planner(parse, query_string,
3152+ cursorOptions, boundParams);
31493153
31503154 current_hint_str = prev_hint_str;
31513155 recurse_level--;
@@ -3201,9 +3205,11 @@ standard_planner_proc:
32013205 }
32023206 current_hint_state = NULL;
32033207 if (prev_planner)
3204- result = (*prev_planner) (parse, cursorOptions, boundParams);
3208+ result = (*prev_planner) (parse, query_string,
3209+ cursorOptions, boundParams);
32053210 else
3206- result = standard_planner(parse, cursorOptions, boundParams);
3211+ result = standard_planner(parse, query_string,
3212+ cursorOptions, boundParams);
32073213
32083214 /* The upper-level planner still needs the current hint state */
32093215 if (HintStateStack != NIL)
@@ -3390,7 +3396,6 @@ restrict_indexes(PlannerInfo *root, ScanMethodHint *hint, RelOptInfo *rel,
33903396 bool using_parent_hint)
33913397 {
33923398 ListCell *cell;
3393- ListCell *prev;
33943399 ListCell *next;
33953400 StringInfoData buf;
33963401 RangeTblEntry *rte = root->simple_rte_array[rel->relid];
@@ -3420,7 +3425,6 @@ restrict_indexes(PlannerInfo *root, ScanMethodHint *hint, RelOptInfo *rel,
34203425 * Leaving only an specified index, we delete it from a IndexOptInfo list
34213426 * other than it.
34223427 */
3423- prev = NULL;
34243428 if (debug_level > 0)
34253429 initStringInfo(&buf);
34263430
@@ -3431,8 +3435,7 @@ restrict_indexes(PlannerInfo *root, ScanMethodHint *hint, RelOptInfo *rel,
34313435 ListCell *l;
34323436 bool use_index = false;
34333437
3434- next = lnext(cell);
3435-
3438+ next = lnext(rel->indexlist, cell);
34363439 foreach(l, hint->indexnames)
34373440 {
34383441 char *hintname = (char *) lfirst(l);
@@ -3602,10 +3605,18 @@ restrict_indexes(PlannerInfo *root, ScanMethodHint *hint, RelOptInfo *rel,
36023605 }
36033606
36043607 if (!use_index)
3605- rel->indexlist = list_delete_cell(rel->indexlist, cell, prev);
3606- else
3607- prev = cell;
3608+ {
3609+ rel->indexlist = list_delete_cell(rel->indexlist, cell);
36083610
3611+ /*
3612+ * the elements after cell moved to the list head by 1 element.
3613+ * the next iteration should visit the cell at the same address if
3614+ * any.
3615+ */
3616+ if (next)
3617+ next = cell;
3618+ }
3619+
36093620 pfree(indexname);
36103621 }
36113622
@@ -3865,7 +3876,7 @@ setup_hint_enforcement(PlannerInfo *root, RelOptInfo *rel,
38653876
38663877 parentrel_oid =
38673878 root->simple_rte_array[current_hint_state->parent_relid]->relid;
3868- parent_rel = heap_open(parentrel_oid, NoLock);
3879+ parent_rel = table_open(parentrel_oid, NoLock);
38693880
38703881 /* Search the parent relation for indexes match the hint spec */
38713882 foreach(l, RelationGetIndexList(parent_rel))
@@ -3889,7 +3900,7 @@ setup_hint_enforcement(PlannerInfo *root, RelOptInfo *rel,
38893900 lappend(current_hint_state->parent_index_infos,
38903901 parent_index_info);
38913902 }
3892- heap_close(parent_rel, NoLock);
3903+ table_close(parent_rel, NoLock);
38933904 }
38943905 }
38953906 }
@@ -4069,8 +4080,8 @@ OuterInnerJoinCreate(OuterInnerRels *outer_inner, LeadingHint *leading_hint,
40694080 leading_hint->base.hint_str));
40704081 }
40714082
4072- outer_rels = lfirst(outer_inner->outer_inner_pair->head);
4073- inner_rels = lfirst(outer_inner->outer_inner_pair->tail);
4083+ outer_rels = linitial(outer_inner->outer_inner_pair);
4084+ inner_rels = llast(outer_inner->outer_inner_pair);
40744085
40754086 outer_relids = OuterInnerJoinCreate(outer_rels,
40764087 leading_hint,
@@ -4377,14 +4388,13 @@ transform_join_hints(HintState *hstate, PlannerInfo *root, int nbaserel,
43774388 {
43784389 if (hstate->join_hint_level[i] != NIL)
43794390 {
4380- ListCell *prev = NULL;
43814391 ListCell *next = NULL;
43824392 for(l = list_head(hstate->join_hint_level[i]); l; l = next)
43834393 {
43844394
43854395 JoinMethodHint *hint = (JoinMethodHint *)lfirst(l);
43864396
4387- next = lnext(l);
4397+ next = lnext(hstate->join_hint_level[i], l);
43884398
43894399 if (hint->inner_nrels == 0 &&
43904400 !(bms_intersect(hint->joinrelids, joinrelids) == NULL ||
@@ -4392,11 +4402,8 @@ transform_join_hints(HintState *hstate, PlannerInfo *root, int nbaserel,
43924402 hint->joinrelids)))
43934403 {
43944404 hstate->join_hint_level[i] =
4395- list_delete_cell(hstate->join_hint_level[i], l,
4396- prev);
4405+ list_delete_cell(hstate->join_hint_level[i], l);
43974406 }
4398- else
4399- prev = l;
44004407 }
44014408 }
44024409 }
Show on old repository browser