Skip to content

Commit c29c5f0

Browse files
committed
resolve conflicts
2 parents f87a871 + 6c4f596 commit c29c5f0

File tree

4 files changed

+152
-3
lines changed

4 files changed

+152
-3
lines changed

Diff for: expected/pathman_views.out

+67-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ select create_hash_partitions('views._abc', 'id', 10);
1616
(1 row)
1717

1818
insert into views._abc select generate_series(1, 100);
19+
/* create a dummy table */
20+
create table views._abc_add (like views._abc);
21+
vacuum analyze;
1922
/* create a facade view */
2023
create view views.abc as select * from views._abc;
2124
create or replace function views.disable_modification()
@@ -117,6 +120,69 @@ explain (costs off) delete from views.abc where id = 1 or id = 2;
117120

118121
delete from views.abc where id = 1 or id = 2;
119122
ERROR: DELETE
123+
/* Test SELECT with UNION */
124+
create view views.abc_union as table views._abc union table views._abc_add;
125+
create view views.abc_union_all as table views._abc union all table views._abc_add;
126+
explain (costs off) table views.abc_union;
127+
QUERY PLAN
128+
--------------------------------------
129+
HashAggregate
130+
Group Key: _abc_0.id
131+
-> Append
132+
-> Append
133+
-> Seq Scan on _abc_0
134+
-> Seq Scan on _abc_1
135+
-> Seq Scan on _abc_2
136+
-> Seq Scan on _abc_3
137+
-> Seq Scan on _abc_4
138+
-> Seq Scan on _abc_5
139+
-> Seq Scan on _abc_6
140+
-> Seq Scan on _abc_7
141+
-> Seq Scan on _abc_8
142+
-> Seq Scan on _abc_9
143+
-> Seq Scan on _abc_add
144+
(15 rows)
145+
146+
explain (costs off) select * from views.abc_union where id = 5;
147+
QUERY PLAN
148+
--------------------------------------
149+
HashAggregate
150+
Group Key: _abc_8.id
151+
-> Append
152+
-> Append
153+
-> Seq Scan on _abc_8
154+
Filter: (id = 5)
155+
-> Seq Scan on _abc_add
156+
Filter: (id = 5)
157+
(8 rows)
158+
159+
explain (costs off) table views.abc_union_all;
160+
QUERY PLAN
161+
----------------------------
162+
Append
163+
-> Seq Scan on _abc_0
164+
-> Seq Scan on _abc_1
165+
-> Seq Scan on _abc_2
166+
-> Seq Scan on _abc_3
167+
-> Seq Scan on _abc_4
168+
-> Seq Scan on _abc_5
169+
-> Seq Scan on _abc_6
170+
-> Seq Scan on _abc_7
171+
-> Seq Scan on _abc_8
172+
-> Seq Scan on _abc_9
173+
-> Seq Scan on _abc_add
174+
(12 rows)
175+
176+
explain (costs off) select * from views.abc_union_all where id = 5;
177+
QUERY PLAN
178+
----------------------------
179+
Append
180+
-> Seq Scan on _abc_8
181+
Filter: (id = 5)
182+
-> Seq Scan on _abc_add
183+
Filter: (id = 5)
184+
(5 rows)
185+
120186
DROP SCHEMA views CASCADE;
121-
NOTICE: drop cascades to 13 other objects
187+
NOTICE: drop cascades to 16 other objects
122188
DROP EXTENSION pg_pathman;

Diff for: expected/pathman_views_1.out

+67-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ select create_hash_partitions('views._abc', 'id', 10);
1616
(1 row)
1717

1818
insert into views._abc select generate_series(1, 100);
19+
/* create a dummy table */
20+
create table views._abc_add (like views._abc);
21+
vacuum analyze;
1922
/* create a facade view */
2023
create view views.abc as select * from views._abc;
2124
create or replace function views.disable_modification()
@@ -173,6 +176,69 @@ explain (costs off) delete from views.abc where id = 1 or id = 2;
173176

174177
delete from views.abc where id = 1 or id = 2;
175178
ERROR: DELETE
179+
/* Test SELECT with UNION */
180+
create view views.abc_union as table views._abc union table views._abc_add;
181+
create view views.abc_union_all as table views._abc union all table views._abc_add;
182+
explain (costs off) table views.abc_union;
183+
QUERY PLAN
184+
--------------------------------------
185+
HashAggregate
186+
Group Key: _abc_0.id
187+
-> Append
188+
-> Append
189+
-> Seq Scan on _abc_0
190+
-> Seq Scan on _abc_1
191+
-> Seq Scan on _abc_2
192+
-> Seq Scan on _abc_3
193+
-> Seq Scan on _abc_4
194+
-> Seq Scan on _abc_5
195+
-> Seq Scan on _abc_6
196+
-> Seq Scan on _abc_7
197+
-> Seq Scan on _abc_8
198+
-> Seq Scan on _abc_9
199+
-> Seq Scan on _abc_add
200+
(15 rows)
201+
202+
explain (costs off) select * from views.abc_union where id = 5;
203+
QUERY PLAN
204+
--------------------------------------
205+
HashAggregate
206+
Group Key: _abc_8.id
207+
-> Append
208+
-> Append
209+
-> Seq Scan on _abc_8
210+
Filter: (id = 5)
211+
-> Seq Scan on _abc_add
212+
Filter: (id = 5)
213+
(8 rows)
214+
215+
explain (costs off) table views.abc_union_all;
216+
QUERY PLAN
217+
----------------------------
218+
Append
219+
-> Seq Scan on _abc_0
220+
-> Seq Scan on _abc_1
221+
-> Seq Scan on _abc_2
222+
-> Seq Scan on _abc_3
223+
-> Seq Scan on _abc_4
224+
-> Seq Scan on _abc_5
225+
-> Seq Scan on _abc_6
226+
-> Seq Scan on _abc_7
227+
-> Seq Scan on _abc_8
228+
-> Seq Scan on _abc_9
229+
-> Seq Scan on _abc_add
230+
(12 rows)
231+
232+
explain (costs off) select * from views.abc_union_all where id = 5;
233+
QUERY PLAN
234+
----------------------------
235+
Append
236+
-> Seq Scan on _abc_8
237+
Filter: (id = 5)
238+
-> Seq Scan on _abc_add
239+
Filter: (id = 5)
240+
(5 rows)
241+
176242
DROP SCHEMA views CASCADE;
177-
NOTICE: drop cascades to 13 other objects
243+
NOTICE: drop cascades to 16 other objects
178244
DROP EXTENSION pg_pathman;

Diff for: sql/pathman_views.sql

+15
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ create table views._abc(id int4 not null);
1717
select create_hash_partitions('views._abc', 'id', 10);
1818
insert into views._abc select generate_series(1, 100);
1919

20+
/* create a dummy table */
21+
create table views._abc_add (like views._abc);
22+
23+
24+
vacuum analyze;
25+
2026

2127
/* create a facade view */
2228
create view views.abc as select * from views._abc;
@@ -60,6 +66,15 @@ explain (costs off) delete from views.abc where id = 1 or id = 2;
6066
delete from views.abc where id = 1 or id = 2;
6167

6268

69+
/* Test SELECT with UNION */
70+
create view views.abc_union as table views._abc union table views._abc_add;
71+
create view views.abc_union_all as table views._abc union all table views._abc_add;
72+
explain (costs off) table views.abc_union;
73+
explain (costs off) select * from views.abc_union where id = 5;
74+
explain (costs off) table views.abc_union_all;
75+
explain (costs off) select * from views.abc_union_all where id = 5;
76+
77+
6378

6479
DROP SCHEMA views CASCADE;
6580
DROP EXTENSION pg_pathman;

Diff for: src/hooks.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,9 @@ pathman_rel_pathlist_hook(PlannerInfo *root,
395395
* (PG?) has already processed this partitioned table
396396
* and added its children to the plan.
397397
*/
398-
if (appinfo->child_relid == rti && child_oid == parent_oid)
398+
if (appinfo->child_relid == rti &&
399+
child_oid == parent_oid &&
400+
OidIsValid(appinfo->parent_reloid))
399401
{
400402
goto cleanup;
401403
}

0 commit comments

Comments
 (0)