@@ -1210,17 +1210,17 @@ DROP EXTENSION pg_pathman;
12101210/* Test that everything works fine without schemas */
12111211CREATE EXTENSION pg_pathman;
12121212/* Hash */
1213- CREATE TABLE hash_rel (
1213+ CREATE TABLEtest. hash_rel (
12141214idSERIAL PRIMARY KEY,
12151215valueINTEGER NOT NULL);
1216- INSERT INTO hash_rel (value) SELECT g FROM generate_series(1, 10000) as g;
1217- SELECT create_hash_partitions('hash_rel', 'value', 3);
1216+ INSERT INTOtest. hash_rel (value) SELECT g FROM generate_series(1, 10000) as g;
1217+ SELECT create_hash_partitions('test. hash_rel', 'value', 3);
12181218 create_hash_partitions
12191219------------------------
12201220 3
12211221(1 row)
12221222
1223- EXPLAIN (COSTS OFF) SELECT * FROM hash_rel WHERE id = 1234;
1223+ EXPLAIN (COSTS OFF) SELECT * FROMtest. hash_rel WHERE id = 1234;
12241224 QUERY PLAN
12251225------------------------------------------------------
12261226 Append
@@ -1233,43 +1233,42 @@ EXPLAIN (COSTS OFF) SELECT * FROM hash_rel WHERE id = 1234;
12331233(7 rows)
12341234
12351235/* Range */
1236- CREATE TABLE range_rel (
1236+ CREATE TABLEtest. range_rel (
12371237idSERIAL PRIMARY KEY,
12381238dtTIMESTAMP NOT NULL,
12391239valueINTEGER);
1240- INSERT INTO range_rel (dt, value) SELECT g, extract(day from g) FROM generate_series('2010-01-01'::date, '2010-12-31'::date, '1 day') as g;
1241- SELECT create_range_partitions('range_rel', 'dt', '2010-01-01'::date, '1 month'::interval, 12);
1242- NOTICE: sequence "range_rel_seq" does not exist, skipping
1240+ INSERT INTO test.range_rel (dt, value) SELECT g, extract(day from g) FROM generate_series('2010-01-01'::date, '2010-12-31'::date, '1 day') as g;
1241+ SELECT create_range_partitions('test.range_rel', 'dt', '2010-01-01'::date, '1 month'::interval, 12);
12431242 create_range_partitions
12441243-------------------------
12451244 12
12461245(1 row)
12471246
1248- SELECT merge_range_partitions('range_rel_1', 'range_rel_2');
1247+ SELECT merge_range_partitions('test. range_rel_1', 'test. range_rel_2');
12491248 merge_range_partitions
12501249------------------------
12511250
12521251(1 row)
12531252
1254- SELECT split_range_partition('range_rel_1', '2010-02-15'::date);
1253+ SELECT split_range_partition('test. range_rel_1', '2010-02-15'::date);
12551254 split_range_partition
12561255-------------------------
12571256 {01-01-2010,03-01-2010}
12581257(1 row)
12591258
1260- SELECT append_range_partition('range_rel');
1259+ SELECT append_range_partition('test. range_rel');
12611260 append_range_partition
12621261------------------------
1263- public .range_rel_14
1262+ test .range_rel_14
12641263(1 row)
12651264
1266- SELECT prepend_range_partition('range_rel');
1265+ SELECT prepend_range_partition('test. range_rel');
12671266 prepend_range_partition
12681267-------------------------
1269- public .range_rel_15
1268+ test .range_rel_15
12701269(1 row)
12711270
1272- EXPLAIN (COSTS OFF) SELECT * FROM range_rel WHERE dt < '2010-03-01';
1271+ EXPLAIN (COSTS OFF) SELECT * FROMtest. range_rel WHERE dt < '2010-03-01';
12731272 QUERY PLAN
12741273--------------------------------
12751274 Append
@@ -1278,7 +1277,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM range_rel WHERE dt < '2010-03-01';
12781277 -> Seq Scan on range_rel_13
12791278(4 rows)
12801279
1281- EXPLAIN (COSTS OFF) SELECT * FROM range_rel WHERE dt > '2010-12-15';
1280+ EXPLAIN (COSTS OFF) SELECT * FROMtest. range_rel WHERE dt > '2010-12-15';
12821281 QUERY PLAN
12831282--------------------------------------------------------------------------------
12841283 Append
@@ -1288,39 +1287,39 @@ EXPLAIN (COSTS OFF) SELECT * FROM range_rel WHERE dt > '2010-12-15';
12881287(4 rows)
12891288
12901289/* Temporary table for JOINs */
1291- CREATE TABLE tmp (id INTEGER NOT NULL, value INTEGER NOT NULL);
1292- INSERT INTO tmp VALUES (1, 1), (2, 2);
1290+ CREATE TABLEtest. tmp (id INTEGER NOT NULL, value INTEGER NOT NULL);
1291+ INSERT INTOtest. tmp VALUES (1, 1), (2, 2);
12931292/* Test UPDATE and DELETE */
1294- EXPLAIN (COSTS OFF) UPDATE range_rel SET value = 111 WHERE dt = '2010-06-15';
1293+ EXPLAIN (COSTS OFF) UPDATEtest. range_rel SET value = 111 WHERE dt = '2010-06-15';
12951294 QUERY PLAN
12961295--------------------------------------------------------------------------------
12971296 Update on range_rel_6
12981297 -> Seq Scan on range_rel_6
12991298 Filter: (dt = 'Tue Jun 15 00:00:00 2010'::timestamp without time zone)
13001299(3 rows)
13011300
1302- UPDATE range_rel SET value = 111 WHERE dt = '2010-06-15';
1303- SELECT * FROM range_rel WHERE dt = '2010-06-15';
1301+ UPDATEtest. range_rel SET value = 111 WHERE dt = '2010-06-15';
1302+ SELECT * FROMtest. range_rel WHERE dt = '2010-06-15';
13041303 id | dt | value
13051304-----+--------------------------+-------
13061305 166 | Tue Jun 15 00:00:00 2010 | 111
13071306(1 row)
13081307
1309- EXPLAIN (COSTS OFF) DELETE FROM range_rel WHERE dt = '2010-06-15';
1308+ EXPLAIN (COSTS OFF) DELETE FROMtest. range_rel WHERE dt = '2010-06-15';
13101309 QUERY PLAN
13111310--------------------------------------------------------------------------------
13121311 Delete on range_rel_6
13131312 -> Seq Scan on range_rel_6
13141313 Filter: (dt = 'Tue Jun 15 00:00:00 2010'::timestamp without time zone)
13151314(3 rows)
13161315
1317- DELETE FROM range_rel WHERE dt = '2010-06-15';
1318- SELECT * FROM range_rel WHERE dt = '2010-06-15';
1316+ DELETE FROMtest. range_rel WHERE dt = '2010-06-15';
1317+ SELECT * FROMtest. range_rel WHERE dt = '2010-06-15';
13191318 id | dt | value
13201319----+----+-------
13211320(0 rows)
13221321
1323- EXPLAIN (COSTS OFF) UPDATE range_rel r SET value = t.value FROM tmp t WHERE r.dt = '2010-01-01' AND r.id = t.id;
1322+ EXPLAIN (COSTS OFF) UPDATEtest. range_rel r SET value = t.value FROMtest. tmp t WHERE r.dt = '2010-01-01' AND r.id = t.id;
13241323 QUERY PLAN
13251324--------------------------------------------------------------------------------------------
13261325 Update on range_rel_1 r
@@ -1332,8 +1331,8 @@ EXPLAIN (COSTS OFF) UPDATE range_rel r SET value = t.value FROM tmp t WHERE r.dt
13321331 Filter: (dt = 'Fri Jan 01 00:00:00 2010'::timestamp without time zone)
13331332(7 rows)
13341333
1335- UPDATE range_rel r SET value = t.value FROM tmp t WHERE r.dt = '2010-01-01' AND r.id = t.id;
1336- EXPLAIN (COSTS OFF) DELETE FROM range_rel r USING tmp t WHERE r.dt = '2010-01-02' AND r.id = t.id;
1334+ UPDATEtest. range_rel r SET value = t.value FROMtest. tmp t WHERE r.dt = '2010-01-01' AND r.id = t.id;
1335+ EXPLAIN (COSTS OFF) DELETE FROMtest. range_rel r USINGtest. tmp t WHERE r.dt = '2010-01-02' AND r.id = t.id;
13371336 QUERY PLAN
13381337--------------------------------------------------------------------------------------------
13391338 Delete on range_rel_1 r
@@ -1345,49 +1344,49 @@ EXPLAIN (COSTS OFF) DELETE FROM range_rel r USING tmp t WHERE r.dt = '2010-01-02
13451344 Filter: (dt = 'Sat Jan 02 00:00:00 2010'::timestamp without time zone)
13461345(7 rows)
13471346
1348- DELETE FROM range_rel r USING tmp t WHERE r.dt = '2010-01-02' AND r.id = t.id;
1347+ DELETE FROMtest. range_rel r USINGtest. tmp t WHERE r.dt = '2010-01-02' AND r.id = t.id;
13491348/* Create range partitions from whole range */
1350- SELECT drop_partitions('range_rel');
1351- NOTICE: functionpublic .range_rel_upd_trig_func() does not exist, skipping
1352- NOTICE: 44 rows copied from range_rel_1
1353- NOTICE: 31 rows copied from range_rel_3
1354- NOTICE: 30 rows copied from range_rel_4
1355- NOTICE: 31 rows copied from range_rel_5
1356- NOTICE: 29 rows copied from range_rel_6
1357- NOTICE: 31 rows copied from range_rel_7
1358- NOTICE: 31 rows copied from range_rel_8
1359- NOTICE: 30 rows copied from range_rel_9
1360- NOTICE: 31 rows copied from range_rel_10
1361- NOTICE: 30 rows copied from range_rel_11
1362- NOTICE: 31 rows copied from range_rel_12
1363- NOTICE: 14 rows copied from range_rel_13
1364- NOTICE: 0 rows copied from range_rel_14
1365- NOTICE: 0 rows copied from range_rel_15
1349+ SELECT drop_partitions('test. range_rel');
1350+ NOTICE: functiontest .range_rel_upd_trig_func() does not exist, skipping
1351+ NOTICE: 44 rows copied fromtest. range_rel_1
1352+ NOTICE: 31 rows copied fromtest. range_rel_3
1353+ NOTICE: 30 rows copied fromtest. range_rel_4
1354+ NOTICE: 31 rows copied fromtest. range_rel_5
1355+ NOTICE: 29 rows copied fromtest. range_rel_6
1356+ NOTICE: 31 rows copied fromtest. range_rel_7
1357+ NOTICE: 31 rows copied fromtest. range_rel_8
1358+ NOTICE: 30 rows copied fromtest. range_rel_9
1359+ NOTICE: 31 rows copied fromtest. range_rel_10
1360+ NOTICE: 30 rows copied fromtest. range_rel_11
1361+ NOTICE: 31 rows copied fromtest. range_rel_12
1362+ NOTICE: 14 rows copied fromtest. range_rel_13
1363+ NOTICE: 0 rows copied fromtest. range_rel_14
1364+ NOTICE: 0 rows copied fromtest. range_rel_15
13661365 drop_partitions
13671366-----------------
13681367 14
13691368(1 row)
13701369
1371- SELECT create_partitions_from_range('range_rel', 'id', 1, 1000, 100);
1370+ SELECT create_partitions_from_range('test. range_rel', 'id', 1, 1000, 100);
13721371 create_partitions_from_range
13731372------------------------------
13741373 10
13751374(1 row)
13761375
1377- SELECT drop_partitions('range_rel', TRUE);
1378- NOTICE: functionpublic .range_rel_upd_trig_func() does not exist, skipping
1376+ SELECT drop_partitions('test. range_rel', TRUE);
1377+ NOTICE: functiontest .range_rel_upd_trig_func() does not exist, skipping
13791378 drop_partitions
13801379-----------------
13811380 10
13821381(1 row)
13831382
1384- SELECT create_partitions_from_range('range_rel', 'dt', '2015-01-01'::date, '2015-12-01'::date, '1 month'::interval);
1383+ SELECT create_partitions_from_range('test. range_rel', 'dt', '2015-01-01'::date, '2015-12-01'::date, '1 month'::interval);
13851384 create_partitions_from_range
13861385------------------------------
13871386 12
13881387(1 row)
13891388
1390- EXPLAIN (COSTS OFF) SELECT * FROM range_rel WHERE dt = '2015-12-15';
1389+ EXPLAIN (COSTS OFF) SELECT * FROMtest. range_rel WHERE dt = '2015-12-15';
13911390 QUERY PLAN
13921391--------------------------------------------------------------------------------
13931392 Append
@@ -1396,45 +1395,45 @@ EXPLAIN (COSTS OFF) SELECT * FROM range_rel WHERE dt = '2015-12-15';
13961395(3 rows)
13971396
13981397/* Test foreign keys */
1399- CREATE TABLE messages(id SERIAL PRIMARY KEY, msg TEXT);
1400- CREATE TABLE replies(id SERIAL PRIMARY KEY, message_id INTEGER REFERENCES messages(id), msg TEXT);
1401- INSERT INTO messages SELECT g, md5(g::text) FROM generate_series(1, 10) as g;
1402- INSERT INTO replies SELECT g, g, md5(g::text) FROM generate_series(1, 10) as g;
1403- SELECT create_range_partitions('messages', 'id', 1, 100, 2);
1404- WARNING: foreign key "replies_message_id_fkey" references relation "messages"
1405- ERROR: relation "messages" is referenced from other relations
1406- ALTER TABLE replies DROP CONSTRAINT replies_message_id_fkey;
1407- SELECT create_range_partitions('messages', 'id', 1, 100, 2);
1398+ CREATE TABLEtest. messages(id SERIAL PRIMARY KEY, msg TEXT);
1399+ CREATE TABLEtest. replies(id SERIAL PRIMARY KEY, message_id INTEGER REFERENCEStest. messages(id), msg TEXT);
1400+ INSERT INTOtest. messages SELECT g, md5(g::text) FROM generate_series(1, 10) as g;
1401+ INSERT INTOtest. replies SELECT g, g, md5(g::text) FROM generate_series(1, 10) as g;
1402+ SELECT create_range_partitions('test. messages', 'id', 1, 100, 2);
1403+ WARNING: foreign key "replies_message_id_fkey" references relation "test. messages"
1404+ ERROR: relation "test. messages" is referenced from other relations
1405+ ALTER TABLEtest. replies DROP CONSTRAINT replies_message_id_fkey;
1406+ SELECT create_range_partitions('test. messages', 'id', 1, 100, 2);
14081407NOTICE: sequence "messages_seq" does not exist, skipping
14091408 create_range_partitions
14101409-------------------------
14111410 2
14121411(1 row)
14131412
1414- EXPLAIN (COSTS OFF) SELECT * FROM messages;
1413+ EXPLAIN (COSTS OFF) SELECT * FROMtest. messages;
14151414 QUERY PLAN
14161415------------------------------
14171416 Append
14181417 -> Seq Scan on messages_1
14191418 -> Seq Scan on messages_2
14201419(3 rows)
14211420
1422- DROP TABLE messages, replies CASCADE;
1421+ DROP TABLEtest. messages,test. replies CASCADE;
14231422NOTICE: drop cascades to 2 other objects
14241423/* Special test case (quals generation) -- fixing commit f603e6c5 */
1425- CREATE TABLE special_case_1_ind_o_s(val serial, comment text);
1426- INSERT INTO special_case_1_ind_o_s SELECT generate_series(1, 200), NULL;
1427- SELECT create_range_partitions('special_case_1_ind_o_s', 'val', 1, 50);
1424+ CREATE TABLEtest. special_case_1_ind_o_s(val serial, comment text);
1425+ INSERT INTOtest. special_case_1_ind_o_s SELECT generate_series(1, 200), NULL;
1426+ SELECT create_range_partitions('test. special_case_1_ind_o_s', 'val', 1, 50);
14281427NOTICE: sequence "special_case_1_ind_o_s_seq" does not exist, skipping
14291428 create_range_partitions
14301429-------------------------
14311430 4
14321431(1 row)
14331432
1434- INSERT INTO special_case_1_ind_o_s_2 SELECT 75 FROM generate_series(1, 6000);
1435- CREATE INDEX ON special_case_1_ind_o_s_2 (val, comment);
1436- VACUUM ANALYZE special_case_1_ind_o_s_2;
1437- EXPLAIN (COSTS OFF) SELECT * FROM special_case_1_ind_o_s WHERE val < 75 AND comment = 'a';
1433+ INSERT INTOtest. special_case_1_ind_o_s_2 SELECT 75 FROM generate_series(1, 6000);
1434+ CREATE INDEX ONtest. special_case_1_ind_o_s_2 (val, comment);
1435+ VACUUM ANALYZEtest. special_case_1_ind_o_s_2;
1436+ EXPLAIN (COSTS OFF) SELECT * FROMtest. special_case_1_ind_o_s WHERE val < 75 AND comment = 'a';
14381437 QUERY PLAN
14391438--------------------------------------------------------------------------------------------------
14401439 Append
@@ -1444,13 +1443,13 @@ EXPLAIN (COSTS OFF) SELECT * FROM special_case_1_ind_o_s WHERE val < 75 AND comm
14441443 Index Cond: ((val < 75) AND (comment = 'a'::text))
14451444(5 rows)
14461445
1447- SELECT set_enable_parent('special_case_1_ind_o_s', true);
1446+ SELECT set_enable_parent('test. special_case_1_ind_o_s', true);
14481447 set_enable_parent
14491448-------------------
14501449
14511450(1 row)
14521451
1453- EXPLAIN (COSTS OFF) SELECT * FROM special_case_1_ind_o_s WHERE val < 75 AND comment = 'a';
1452+ EXPLAIN (COSTS OFF) SELECT * FROMtest. special_case_1_ind_o_s WHERE val < 75 AND comment = 'a';
14541453 QUERY PLAN
14551454--------------------------------------------------------------------------------------------------
14561455 Append
@@ -1462,13 +1461,13 @@ EXPLAIN (COSTS OFF) SELECT * FROM special_case_1_ind_o_s WHERE val < 75 AND comm
14621461 Index Cond: ((val < 75) AND (comment = 'a'::text))
14631462(7 rows)
14641463
1465- SELECT set_enable_parent('special_case_1_ind_o_s', false);
1464+ SELECT set_enable_parent('test. special_case_1_ind_o_s', false);
14661465 set_enable_parent
14671466-------------------
14681467
14691468(1 row)
14701469
1471- EXPLAIN (COSTS OFF) SELECT * FROM special_case_1_ind_o_s WHERE val < 75 AND comment = 'a';
1470+ EXPLAIN (COSTS OFF) SELECT * FROMtest. special_case_1_ind_o_s WHERE val < 75 AND comment = 'a';
14721471 QUERY PLAN
14731472--------------------------------------------------------------------------------------------------
14741473 Append
@@ -1478,8 +1477,72 @@ EXPLAIN (COSTS OFF) SELECT * FROM special_case_1_ind_o_s WHERE val < 75 AND comm
14781477 Index Cond: ((val < 75) AND (comment = 'a'::text))
14791478(5 rows)
14801479
1480+ /* Test index scans on child relation under enable_parent is set */
1481+ CREATE TABLE test.index_on_childs(c1 integer not null, c2 integer);
1482+ CREATE INDEX ON test.index_on_childs(c2);
1483+ INSERT INTO test.index_on_childs SELECT i, (random()*10000)::integer FROM generate_series(1, 10000) i;
1484+ SELECT create_range_partitions('test.index_on_childs', 'c1', 1, 1000, 0, false);
1485+ NOTICE: sequence "index_on_childs_seq" does not exist, skipping
1486+ create_range_partitions
1487+ -------------------------
1488+ 0
1489+ (1 row)
1490+
1491+ SELECT add_range_partition('test.index_on_childs', 1, 1000, 'test.index_on_childs_1_1K');
1492+ add_range_partition
1493+ ---------------------------
1494+ test.index_on_childs_1_1K
1495+ (1 row)
1496+
1497+ SELECT append_range_partition('test.index_on_childs', 'test.index_on_childs_1K_2K');
1498+ append_range_partition
1499+ ----------------------------
1500+ test.index_on_childs_1K_2K
1501+ (1 row)
1502+
1503+ SELECT append_range_partition('test.index_on_childs', 'test.index_on_childs_2K_3K');
1504+ append_range_partition
1505+ ----------------------------
1506+ test.index_on_childs_2K_3K
1507+ (1 row)
1508+
1509+ SELECT append_range_partition('test.index_on_childs', 'test.index_on_childs_3K_4K');
1510+ append_range_partition
1511+ ----------------------------
1512+ test.index_on_childs_3K_4K
1513+ (1 row)
1514+
1515+ SELECT append_range_partition('test.index_on_childs', 'test.index_on_childs_4K_5K');
1516+ append_range_partition
1517+ ----------------------------
1518+ test.index_on_childs_4K_5K
1519+ (1 row)
1520+
1521+ SELECT set_enable_parent('test.index_on_childs', true);
1522+ set_enable_parent
1523+ -------------------
1524+
1525+ (1 row)
1526+
1527+ VACUUM ANALYZE test.index_on_childs;
1528+ EXPLAIN (COSTS OFF) SELECT * FROM test.index_on_childs WHERE c1 > 100 AND c1 < 2500 AND c2 = 500;
1529+ QUERY PLAN
1530+ ------------------------------------------------------------------------------
1531+ Append
1532+ -> Index Scan using index_on_childs_c2_idx on index_on_childs
1533+ Index Cond: (c2 = 500)
1534+ Filter: ((c1 > 100) AND (c1 < 2500))
1535+ -> Index Scan using index_on_childs_1_1k_c2_idx on index_on_childs_1_1k
1536+ Index Cond: (c2 = 500)
1537+ Filter: (c1 > 100)
1538+ -> Index Scan using index_on_childs_1k_2k_c2_idx on index_on_childs_1k_2k
1539+ Index Cond: (c2 = 500)
1540+ -> Index Scan using index_on_childs_2k_3k_c2_idx on index_on_childs_2k_3k
1541+ Index Cond: (c2 = 500)
1542+ Filter: (c1 < 2500)
1543+ (12 rows)
1544+
14811545DROP SCHEMA test CASCADE;
1482- NOTICE: drop cascades to13 other objects
1546+ NOTICE: drop cascades to45 other objects
14831547DROP EXTENSION pg_pathman CASCADE;
1484- NOTICE: drop cascades to 3 other objects
14851548DROP SCHEMA pathman CASCADE;