|
58 | 58 | return 'ok'; |
59 | 59 | end; |
60 | 60 | $$ language plpgsql |
61 | | -set pg_pathman.enable = true |
62 | 61 | set enable_mergejoin = off |
63 | 62 | set enable_hashjoin = off; |
64 | 63 | create or replace function test.pathman_test_2() returns text as $$ |
|
100 | 99 | return 'ok'; |
101 | 100 | end; |
102 | 101 | $$ language plpgsql |
103 | | -set pg_pathman.enable = true |
104 | 102 | set enable_mergejoin = off |
105 | 103 | set enable_hashjoin = off; |
106 | 104 | create or replace function test.pathman_test_3() returns text as $$ |
@@ -133,7 +131,6 @@ begin |
133 | 131 | return 'ok'; |
134 | 132 | end; |
135 | 133 | $$ language plpgsql |
136 | | -set pg_pathman.enable = true |
137 | 134 | set enable_mergejoin = off |
138 | 135 | set enable_hashjoin = off; |
139 | 136 | create or replace function test.pathman_test_4() returns text as $$ |
@@ -172,7 +169,6 @@ begin |
172 | 169 | return 'ok'; |
173 | 170 | end; |
174 | 171 | $$ language plpgsql |
175 | | -set pg_pathman.enable = true |
176 | 172 | set enable_mergejoin = off |
177 | 173 | set enable_hashjoin = off; |
178 | 174 | create or replace function test.pathman_test_5() returns text as $$ |
@@ -233,7 +229,6 @@ begin |
233 | 229 | return 'ok'; |
234 | 230 | end; |
235 | 231 | $$ language plpgsql |
236 | | -set pg_pathman.enable = true |
237 | 232 | set enable_hashjoin = off |
238 | 233 | set enable_mergejoin = off; |
239 | 234 | create table test.run_values as select generate_series(1, 10000) val; |
@@ -464,5 +459,41 @@ DROP FUNCTION test.pathman_test_3(); |
464 | 459 | DROP FUNCTION test.pathman_test_4(); |
465 | 460 | DROP FUNCTION test.pathman_test_5(); |
466 | 461 | DROP SCHEMA test; |
| 462 | +-- |
| 463 | +-- |
| 464 | +-- PGPRO-7928 |
| 465 | +-- Variable pg_pathman.enable must be called before any query. |
| 466 | +-- |
| 467 | +CREATE TABLE part_test (val int NOT NULL); |
| 468 | +SELECT create_hash_partitions('part_test', 'val', 2, partition_names := array['part_test_1','pg_pathman']); |
| 469 | +ERROR: function create_hash_partitions(unknown, unknown, integer, partition_names => text[]) does not exist at character 8 |
| 470 | +CREATE OR REPLACE FUNCTION part_test_trigger() RETURNS TRIGGER AS $$ |
| 471 | +BEGIN |
| 472 | + RAISE NOTICE '%', format('%s %s %s (%s)', TG_WHEN, TG_OP, TG_LEVEL, TG_TABLE_NAME); |
| 473 | + IF TG_OP::text = 'DELETE'::text then |
| 474 | + SET pg_pathman.enable = f; |
| 475 | + RETURN new; |
| 476 | + END IF; |
| 477 | +END; |
| 478 | +$$ LANGUAGE PLPGSQL; |
| 479 | +SET pg_pathman.enable_partitionrouter = t; |
| 480 | +CREATE TRIGGER ad AFTER DELETE ON part_test_1 FOR EACH ROW EXECUTE PROCEDURE part_test_trigger (); |
| 481 | +ERROR: relation "part_test_1" does not exist |
| 482 | +INSERT INTO part_test VALUES (1); |
| 483 | +UPDATE part_test SET val = val + 1 RETURNING *, tableoid::regclass; |
| 484 | + val | tableoid |
| 485 | +-----+----------- |
| 486 | + 2 | part_test |
| 487 | +(1 row) |
| 488 | + |
| 489 | +UPDATE part_test SET val = val + 1 RETURNING *, tableoid::regclass; |
| 490 | + val | tableoid |
| 491 | +-----+----------- |
| 492 | + 3 | part_test |
| 493 | +(1 row) |
| 494 | + |
| 495 | +RESET pg_pathman.enable_partitionrouter; |
| 496 | +DROP TABLE part_test CASCADE; |
| 497 | +DROP FUNCTION part_test_trigger(); |
467 | 498 | DROP EXTENSION pg_pathman CASCADE; |
468 | 499 | DROP SCHEMA pathman; |
0 commit comments