Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

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

Provide feedback

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

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9fedc28

Browse files
committed
Merge branch 'rel_future_beta' into rel_future_strings
2 parents199cf98 +ceecae3 commit9fedc28

File tree

7 files changed

+121
-68
lines changed

7 files changed

+121
-68
lines changed

‎expected/insert_nodes.out

Lines changed: 59 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,123 @@
11
Parsed test spec with 2 sessions
22

33
starting permutation: s1b s1_insert_150 s1r s1_show_partitions s2b s2_insert_150 s2c s2_show_partitions
4-
create_range_partitions
4+
set_spawn_using_bgw
55

6-
1
6+
77
step s1b: BEGIN;
8-
step s1_insert_150: INSERT INTO range_rel SELECT generate_series(1, 150);
8+
step s1_insert_150: INSERT INTO range_rel SELECT generate_series(1,150);
99
step s1r: ROLLBACK;
10-
step s1_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c ON c.conrelid = i.inhrelid AND c.consrc IS NOT NULL WHERE i.inhparent = 'range_rel'::regclass::oid ORDER BY c.oid;
10+
step s1_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c
11+
ON c.conrelid = i.inhrelid
12+
WHERE i.inhparent = 'range_rel'::regclass
13+
ORDER BY c.oid;
1114
consrc
1215

16+
1317
((id >= 1) AND (id < 101))
18+
1419
((id >= 101) AND (id < 201))
1520
step s2b: BEGIN;
16-
step s2_insert_150: INSERT INTO range_rel SELECT generate_series(1, 150);
21+
step s2_insert_150: INSERT INTO range_rel SELECT generate_series(1,150);
1722
step s2c: COMMIT;
18-
step s2_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c ON c.conrelid = i.inhrelid AND c.consrc IS NOT NULL WHERE i.inhparent = 'range_rel'::regclass::oid ORDER BY c.oid;
23+
step s2_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c
24+
ON c.conrelid = i.inhrelid
25+
WHERE i.inhparent = 'range_rel'::regclass
26+
ORDER BY c.oid;
1927
consrc
2028

29+
2130
((id >= 1) AND (id < 101))
31+
2232
((id >= 101) AND (id < 201))
2333

2434
starting permutation: s1b s1_insert_150 s1r s1_show_partitions s2b s2_insert_300 s2c s2_show_partitions
25-
create_range_partitions
35+
set_spawn_using_bgw
2636

27-
1
37+
2838
step s1b: BEGIN;
29-
step s1_insert_150: INSERT INTO range_rel SELECT generate_series(1, 150);
39+
step s1_insert_150: INSERT INTO range_rel SELECT generate_series(1,150);
3040
step s1r: ROLLBACK;
31-
step s1_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c ON c.conrelid = i.inhrelid AND c.consrc IS NOT NULL WHERE i.inhparent = 'range_rel'::regclass::oid ORDER BY c.oid;
41+
step s1_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c
42+
ON c.conrelid = i.inhrelid
43+
WHERE i.inhparent = 'range_rel'::regclass
44+
ORDER BY c.oid;
3245
consrc
3346

47+
3448
((id >= 1) AND (id < 101))
49+
3550
((id >= 101) AND (id < 201))
3651
step s2b: BEGIN;
3752
step s2_insert_300: INSERT INTO range_rel SELECT generate_series(151, 300);
3853
step s2c: COMMIT;
39-
step s2_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c ON c.conrelid = i.inhrelid AND c.consrc IS NOT NULL WHERE i.inhparent = 'range_rel'::regclass::oid ORDER BY c.oid;
54+
step s2_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c
55+
ON c.conrelid = i.inhrelid
56+
WHERE i.inhparent = 'range_rel'::regclass
57+
ORDER BY c.oid;
4058
consrc
4159

60+
4261
((id >= 1) AND (id < 101))
62+
4363
((id >= 101) AND (id < 201))
64+
4465
((id >= 201) AND (id < 301))
4566

4667
starting permutation: s1b s1_insert_300 s1r s1_show_partitions s2b s2_insert_150 s2c s2_show_partitions
47-
create_range_partitions
68+
set_spawn_using_bgw
4869

49-
1
70+
5071
step s1b: BEGIN;
5172
step s1_insert_300: INSERT INTO range_rel SELECT generate_series(151, 300);
5273
step s1r: ROLLBACK;
53-
step s1_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c ON c.conrelid = i.inhrelid AND c.consrc IS NOT NULL WHERE i.inhparent = 'range_rel'::regclass::oid ORDER BY c.oid;
74+
step s1_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c
75+
ON c.conrelid = i.inhrelid
76+
WHERE i.inhparent = 'range_rel'::regclass
77+
ORDER BY c.oid;
5478
consrc
5579

80+
5681
((id >= 1) AND (id < 101))
82+
5783
((id >= 101) AND (id < 201))
84+
5885
((id >= 201) AND (id < 301))
5986
step s2b: BEGIN;
60-
step s2_insert_150: INSERT INTO range_rel SELECT generate_series(1, 150);
87+
step s2_insert_150: INSERT INTO range_rel SELECT generate_series(1,150);
6188
step s2c: COMMIT;
62-
step s2_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c ON c.conrelid = i.inhrelid AND c.consrc IS NOT NULL WHERE i.inhparent = 'range_rel'::regclass::oid ORDER BY c.oid;
89+
step s2_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c
90+
ON c.conrelid = i.inhrelid
91+
WHERE i.inhparent = 'range_rel'::regclass
92+
ORDER BY c.oid;
6393
consrc
6494

95+
6596
((id >= 1) AND (id < 101))
97+
6698
((id >= 101) AND (id < 201))
99+
67100
((id >= 201) AND (id < 301))
68101

69102
starting permutation: s1b s1_insert_150 s2b s2_insert_300 s1r s2r s2_show_partitions
70-
create_range_partitions
103+
set_spawn_using_bgw
71104

72-
1
105+
73106
step s1b: BEGIN;
74-
step s1_insert_150: INSERT INTO range_rel SELECT generate_series(1, 150);
107+
step s1_insert_150: INSERT INTO range_rel SELECT generate_series(1,150);
75108
step s2b: BEGIN;
76109
step s2_insert_300: INSERT INTO range_rel SELECT generate_series(151, 300);
77110
step s1r: ROLLBACK;
78111
step s2r: ROLLBACK;
79-
step s2_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c ON c.conrelid = i.inhrelid AND c.consrc IS NOT NULL WHERE i.inhparent = 'range_rel'::regclass::oid ORDER BY c.oid;
112+
step s2_show_partitions: SELECT c.consrc FROM pg_inherits i LEFT JOIN pg_constraint c
113+
ON c.conrelid = i.inhrelid
114+
WHERE i.inhparent = 'range_rel'::regclass
115+
ORDER BY c.oid;
80116
consrc
81117

118+
82119
((id >= 1) AND (id < 101))
120+
83121
((id >= 101) AND (id < 201))
122+
84123
((id >= 201) AND (id < 301))

‎specs/for_update.spec

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ teardown
1313
}
1414

1515
session"s1"
16-
step"s1_b"{begin; }
17-
step"s1_c"{commit; }
18-
step"s1_r"{rollback; }
19-
step"s1_update"{updatetest_tblsetid=2whereid=1; }
16+
step"s1_b"{begin; }
17+
step"s1_c"{commit; }
18+
step"s1_r"{rollback; }
19+
step"s1_update"{updatetest_tblsetid=2whereid=1; }
2020

2121
session"s2"
22-
step"s2_b"{begin; }
23-
step"s2_c"{commit; }
24-
step"s2_select_locked"{select*fromtest_tblwhereid=1forshare; }
25-
step"s2_select"{select*fromtest_tblwhereid=1; }
22+
step"s2_b"{begin; }
23+
step"s2_c"{commit; }
24+
step"s2_select_locked"{select*fromtest_tblwhereid=1forshare; }
25+
step"s2_select"{select*fromtest_tblwhereid=1; }
2626

2727

2828
permutation"s1_b""s1_update""s2_select""s1_r"

‎specs/insert_nodes.spec

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ setup
33
CREATEEXTENSIONpg_pathman;
44
CREATETABLErange_rel(idserialprimarykey);
55
SELECTcreate_range_partitions('range_rel','id',1,100,1);
6+
SELECTset_spawn_using_bgw('range_rel',true);
67
}
78

89
teardown
@@ -13,20 +14,26 @@ teardown
1314
}
1415

1516
session"s1"
16-
step"s1b"{BEGIN;}
17-
step"s1_insert_150"{INSERTINTOrange_relSELECTgenerate_series(1,150);}
18-
step"s1_insert_300"{INSERTINTOrange_relSELECTgenerate_series(151,300);}
19-
step"s1_show_partitions"{SELECTc.consrcFROMpg_inheritsiLEFTJOINpg_constraintcONc.conrelid=i.inhrelidANDc.consrcISNOTNULLWHERE i.inhparent='range_rel'::regclass::oidORDERBYc.oid;}
20-
step"s1r"{ROLLBACK;}
21-
step"s1c"{COMMIT;}
17+
step"s1b"{BEGIN;}
18+
step"s1_insert_150"{INSERTINTOrange_relSELECTgenerate_series(1,150);}
19+
step"s1_insert_300"{INSERTINTOrange_relSELECTgenerate_series(151,300);}
20+
step"s1_show_partitions"{SELECTc.consrcFROMpg_inheritsiLEFTJOINpg_constraintc
21+
ONc.conrelid=i.inhrelid
22+
WHERE i.inhparent='range_rel'::regclass
23+
ORDERBYc.oid;}
24+
step"s1r"{ROLLBACK;}
25+
step"s1c"{COMMIT;}
2226

2327
session"s2"
24-
step"s2b"{BEGIN;}
25-
step"s2_insert_150"{INSERTINTOrange_relSELECTgenerate_series(1,150);}
26-
step"s2_insert_300"{INSERTINTOrange_relSELECTgenerate_series(151,300);}
27-
step"s2_show_partitions"{SELECTc.consrcFROMpg_inheritsiLEFTJOINpg_constraintcONc.conrelid=i.inhrelidANDc.consrcISNOTNULLWHERE i.inhparent='range_rel'::regclass::oidORDERBYc.oid;}
28-
step"s2r"{ROLLBACK;}
29-
step"s2c"{COMMIT;}
28+
step"s2b"{BEGIN;}
29+
step"s2_insert_150"{INSERTINTOrange_relSELECTgenerate_series(1,150);}
30+
step"s2_insert_300"{INSERTINTOrange_relSELECTgenerate_series(151,300);}
31+
step"s2_show_partitions"{SELECTc.consrcFROMpg_inheritsiLEFTJOINpg_constraintc
32+
ONc.conrelid=i.inhrelid
33+
WHERE i.inhparent='range_rel'::regclass
34+
ORDERBYc.oid;}
35+
step"s2r"{ROLLBACK;}
36+
step"s2c"{COMMIT;}
3037

3138
# Rollback first transactions
3239
permutation"s1b""s1_insert_150""s1r""s1_show_partitions""s2b""s2_insert_150""s2c""s2_show_partitions"

‎specs/rollback_on_create_partitions.spec

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,18 @@ teardown
1111
}
1212

1313
session"s1"
14-
step"begin"{BEGIN; }
15-
step"rollback"{ROLLBACK; }
16-
step"commit"{COMMIT; }
17-
step"insert_data"{INSERTINTOrange_relSELECTgenerate_series(1,10000); }
18-
step"create_partitions"{SELECTcreate_range_partitions('range_rel','id',1,1000); }
19-
step"drop_partitions"{SELECTdrop_partitions('range_rel'); }
20-
step"savepoint_a"{SAVEPOINTa; }
21-
step"rollback_a"{ROLLBACKTOSAVEPOINTa; }
22-
step"savepoint_b"{SAVEPOINTb; }
23-
step"rollback_b"{ROLLBACKTOSAVEPOINTb; }
24-
step"savepoint_c"{SAVEPOINTc; }
25-
step"show_rel"{EXPLAIN (COSTSOFF)SELECT*FROMrange_rel; }
14+
step"begin"{BEGIN; }
15+
step"rollback"{ROLLBACK; }
16+
step"commit"{COMMIT; }
17+
step"insert_data"{INSERTINTOrange_relSELECTgenerate_series(1,10000); }
18+
step"create_partitions"{SELECTcreate_range_partitions('range_rel','id',1,1000); }
19+
step"drop_partitions"{SELECTdrop_partitions('range_rel'); }
20+
step"savepoint_a"{SAVEPOINTa; }
21+
step"rollback_a"{ROLLBACKTOSAVEPOINTa; }
22+
step"savepoint_b"{SAVEPOINTb; }
23+
step"rollback_b"{ROLLBACKTOSAVEPOINTb; }
24+
step"savepoint_c"{SAVEPOINTc; }
25+
step"show_rel"{EXPLAIN (COSTSOFF)SELECT*FROMrange_rel; }
2626

2727
permutation"begin""insert_data""create_partitions""show_rel""rollback""show_rel"
2828

‎src/init.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -840,9 +840,7 @@ read_pathman_config(void)
840840
{
841841
Datumvalues[Natts_pathman_config];
842842
boolisnull[Natts_pathman_config];
843-
Oidrelid;/* partitioned table */
844-
PartTypeparttype;/* partitioning type */
845-
text*attname;/* partitioned column name */
843+
Oidrelid;/* partitioned table */
846844

847845
/* Extract Datums from tuple 'htup' */
848846
heap_deform_tuple(htup,RelationGetDescr(rel),values,isnull);
@@ -854,8 +852,6 @@ read_pathman_config(void)
854852

855853
/* Extract values from Datums */
856854
relid=DatumGetObjectId(values[Anum_pathman_config_partrel-1]);
857-
parttype=DatumGetPartType(values[Anum_pathman_config_parttype-1]);
858-
attname=DatumGetTextP(values[Anum_pathman_config_attname-1]);
859855

860856
/* Check that relation 'relid' exists */
861857
if (get_rel_type_id(relid)==InvalidOid)
@@ -867,10 +863,8 @@ read_pathman_config(void)
867863
errhint(INIT_ERROR_HINT)));
868864
}
869865

870-
/* Create or update PartRelationInfo for this partitioned table */
871-
refresh_pathman_relation_info(relid,parttype,
872-
text_to_cstring(attname),
873-
true);/* allow lazy prel loading */
866+
/* get_pathman_relation_info() will refresh this entry */
867+
invalidate_pathman_relation_info(relid,NULL);
874868
}
875869

876870
/* Clean resources */

‎src/pg_pathman.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ append_child_relation(PlannerInfo *root, Relation parent_relation,
225225
*child_rowmark;
226226
Node*childqual;
227227
List*childquals;
228-
ListCell*lc,
228+
ListCell*lc1,
229229
*lc2;
230230

231231
parent_rel=root->simple_rel_array[parent_rti];
@@ -288,9 +288,9 @@ append_child_relation(PlannerInfo *root, Relation parent_relation,
288288
{
289289
childquals=NIL;
290290

291-
forboth(lc,wrappers,lc2,parent_rel->baserestrictinfo)
291+
forboth(lc1,wrappers,lc2,parent_rel->baserestrictinfo)
292292
{
293-
WrapperNode*wrap= (WrapperNode*)lfirst(lc);
293+
WrapperNode*wrap= (WrapperNode*)lfirst(lc1);
294294
Node*new_clause;
295295
boolalways_true;
296296

‎src/planner_tree_modification.c

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
* ------------------------------------------------------------------------
99
*/
1010

11+
#include"compat/expand_rte_hook.h"
1112
#include"compat/relation_tags.h"
1213
#include"compat/rowmarks_fix.h"
1314

@@ -180,19 +181,31 @@ pathman_transform_query_walker(Node *node, void *context)
180181
staticvoid
181182
disable_standard_inheritance(Query*parse)
182183
{
183-
ListCell*lc;
184+
ListCell*lc;
185+
Indexcurrent_rti;/* current range table entry index */
184186

185-
/* Exit if it's not a SELECT query */
187+
/*
188+
* We can't handle non-SELECT queries unless
189+
* there's a pathman_expand_inherited_rtentry_hook()
190+
*/
191+
#ifndefNATIVE_EXPAND_RTE_HOOK
186192
if (parse->commandType!=CMD_SELECT)
187193
return;
194+
#endif
188195

189196
/* Walk through RangeTblEntries list */
197+
current_rti=0;
190198
foreach (lc,parse->rtable)
191199
{
192200
RangeTblEntry*rte= (RangeTblEntry*)lfirst(lc);
193201

194-
/* Operate only on simple (non-join etc) relations */
195-
if (rte->rtekind!=RTE_RELATION||rte->relkind!=RELKIND_RELATION)
202+
current_rti++;/* increment RTE index */
203+
Assert(current_rti!=0);
204+
205+
/* Process only non-result base relations */
206+
if (rte->rtekind!=RTE_RELATION||
207+
rte->relkind!=RELKIND_RELATION||
208+
parse->resultRelation==current_rti)/* is it a result relation? */
196209
continue;
197210

198211
/* Table may be partitioned */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp