@@ -1138,197 +1138,6 @@ SELECT * FROM test.hash_varchar WHERE val = '12'::TEXT;
1138
1138
1139
1139
DROP TABLE test.hash_varchar CASCADE;
1140
1140
NOTICE: drop cascades to 4 other objects
1141
- /*
1142
- * Test CTE query
1143
- */
1144
- EXPLAIN (COSTS OFF)
1145
- WITH ttt AS (SELECT * FROM test.range_rel WHERE dt >= '2015-02-01' AND dt < '2015-03-15')
1146
- SELECT * FROM ttt;
1147
- QUERY PLAN
1148
- --------------------------------------------------------------------------------------------
1149
- CTE Scan on ttt
1150
- CTE ttt
1151
- -> Append
1152
- -> Seq Scan on range_rel_2
1153
- -> Index Scan using range_rel_3_dt_idx on range_rel_3
1154
- Index Cond: (dt < 'Sun Mar 15 00:00:00 2015'::timestamp without time zone)
1155
- (6 rows)
1156
-
1157
- EXPLAIN (COSTS OFF)
1158
- WITH ttt AS (SELECT * FROM test.hash_rel WHERE value = 2)
1159
- SELECT * FROM ttt;
1160
- QUERY PLAN
1161
- --------------------------------------
1162
- CTE Scan on ttt
1163
- CTE ttt
1164
- -> Append
1165
- -> Seq Scan on hash_rel_1
1166
- Filter: (value = 2)
1167
- (5 rows)
1168
-
1169
- /*
1170
- * Test CTE query - by @parihaaraka (add varno to WalkerContext)
1171
- */
1172
- CREATE TABLE test.cte_del_xacts (id BIGSERIAL PRIMARY KEY, pdate DATE NOT NULL);
1173
- INSERT INTO test.cte_del_xacts (pdate) SELECT gen_date FROM generate_series('2016-01-01'::date, '2016-04-9'::date, '1 day') AS gen_date;
1174
- create table test.cte_del_xacts_specdata
1175
- (
1176
- tid BIGINT PRIMARY KEY,
1177
- test_mode SMALLINT,
1178
- state_code SMALLINT NOT NULL DEFAULT 8,
1179
- regtime TIMESTAMP WITHOUT TIME ZONE NOT NULL
1180
- );
1181
- INSERT INTO test.cte_del_xacts_specdata VALUES(1, 1, 1, current_timestamp); /* for subquery test */
1182
- /* create 2 partitions */
1183
- SELECT pathman.create_range_partitions('test.cte_del_xacts'::regclass, 'pdate', '2016-01-01'::date, '50 days'::interval);
1184
- NOTICE: sequence "cte_del_xacts_seq" does not exist, skipping
1185
- create_range_partitions
1186
- -------------------------
1187
- 2
1188
- (1 row)
1189
-
1190
- EXPLAIN (COSTS OFF)
1191
- WITH tmp AS (
1192
- SELECT tid, test_mode, regtime::DATE AS pdate, state_code
1193
- FROM test.cte_del_xacts_specdata)
1194
- DELETE FROM test.cte_del_xacts t USING tmp
1195
- WHERE t.id = tmp.tid AND t.pdate = tmp.pdate AND tmp.test_mode > 0;
1196
- QUERY PLAN
1197
- --------------------------------------------------------------------------------
1198
- Delete on cte_del_xacts t
1199
- Delete on cte_del_xacts t
1200
- Delete on cte_del_xacts_1 t_1
1201
- Delete on cte_del_xacts_2 t_2
1202
- CTE tmp
1203
- -> Seq Scan on cte_del_xacts_specdata
1204
- -> Hash Join
1205
- Hash Cond: ((tmp.tid = t.id) AND (tmp.pdate = t.pdate))
1206
- -> CTE Scan on tmp
1207
- Filter: (test_mode > 0)
1208
- -> Hash
1209
- -> Index Scan using cte_del_xacts_pkey on cte_del_xacts t
1210
- -> Hash Join
1211
- Hash Cond: ((tmp.tid = t_1.id) AND (tmp.pdate = t_1.pdate))
1212
- -> CTE Scan on tmp
1213
- Filter: (test_mode > 0)
1214
- -> Hash
1215
- -> Index Scan using cte_del_xacts_1_pkey on cte_del_xacts_1 t_1
1216
- -> Hash Join
1217
- Hash Cond: ((tmp.tid = t_2.id) AND (tmp.pdate = t_2.pdate))
1218
- -> CTE Scan on tmp
1219
- Filter: (test_mode > 0)
1220
- -> Hash
1221
- -> Index Scan using cte_del_xacts_2_pkey on cte_del_xacts_2 t_2
1222
- (24 rows)
1223
-
1224
- SELECT pathman.drop_partitions('test.cte_del_xacts'); /* now drop partitions */
1225
- NOTICE: function test.cte_del_xacts_upd_trig_func() does not exist, skipping
1226
- NOTICE: 50 rows copied from test.cte_del_xacts_1
1227
- NOTICE: 50 rows copied from test.cte_del_xacts_2
1228
- drop_partitions
1229
- -----------------
1230
- 2
1231
- (1 row)
1232
-
1233
- /* create 1 partition */
1234
- SELECT pathman.create_range_partitions('test.cte_del_xacts'::regclass, 'pdate', '2016-01-01'::date, '1 year'::interval);
1235
- create_range_partitions
1236
- -------------------------
1237
- 1
1238
- (1 row)
1239
-
1240
- /* parent enabled! */
1241
- SELECT pathman.set_enable_parent('test.cte_del_xacts', true);
1242
- set_enable_parent
1243
- -------------------
1244
-
1245
- (1 row)
1246
-
1247
- EXPLAIN (COSTS OFF)
1248
- WITH tmp AS (
1249
- SELECT tid, test_mode, regtime::DATE AS pdate, state_code
1250
- FROM test.cte_del_xacts_specdata)
1251
- DELETE FROM test.cte_del_xacts t USING tmp
1252
- WHERE t.id = tmp.tid AND t.pdate = tmp.pdate AND tmp.test_mode > 0;
1253
- QUERY PLAN
1254
- --------------------------------------------------------------------------------
1255
- Delete on cte_del_xacts t
1256
- Delete on cte_del_xacts t
1257
- Delete on cte_del_xacts_1 t_1
1258
- CTE tmp
1259
- -> Seq Scan on cte_del_xacts_specdata
1260
- -> Hash Join
1261
- Hash Cond: ((tmp.tid = t.id) AND (tmp.pdate = t.pdate))
1262
- -> CTE Scan on tmp
1263
- Filter: (test_mode > 0)
1264
- -> Hash
1265
- -> Index Scan using cte_del_xacts_pkey on cte_del_xacts t
1266
- -> Hash Join
1267
- Hash Cond: ((tmp.tid = t_1.id) AND (tmp.pdate = t_1.pdate))
1268
- -> CTE Scan on tmp
1269
- Filter: (test_mode > 0)
1270
- -> Hash
1271
- -> Index Scan using cte_del_xacts_1_pkey on cte_del_xacts_1 t_1
1272
- (17 rows)
1273
-
1274
- /* parent disabled! */
1275
- SELECT pathman.set_enable_parent('test.cte_del_xacts', false);
1276
- set_enable_parent
1277
- -------------------
1278
-
1279
- (1 row)
1280
-
1281
- EXPLAIN (COSTS OFF)
1282
- WITH tmp AS (
1283
- SELECT tid, test_mode, regtime::DATE AS pdate, state_code
1284
- FROM test.cte_del_xacts_specdata)
1285
- DELETE FROM test.cte_del_xacts t USING tmp
1286
- WHERE t.id = tmp.tid AND t.pdate = tmp.pdate AND tmp.test_mode > 0;
1287
- QUERY PLAN
1288
- ------------------------------------------------------------------------------
1289
- Delete on cte_del_xacts_1 t
1290
- CTE tmp
1291
- -> Seq Scan on cte_del_xacts_specdata
1292
- -> Hash Join
1293
- Hash Cond: ((tmp.tid = t.id) AND (tmp.pdate = t.pdate))
1294
- -> CTE Scan on tmp
1295
- Filter: (test_mode > 0)
1296
- -> Hash
1297
- -> Index Scan using cte_del_xacts_1_pkey on cte_del_xacts_1 t
1298
- (9 rows)
1299
-
1300
- /* create stub pl/PgSQL function */
1301
- CREATE OR REPLACE FUNCTION test.cte_del_xacts_stab(name TEXT)
1302
- RETURNS smallint AS
1303
- $$
1304
- begin
1305
- return 2::smallint;
1306
- end
1307
- $$
1308
- LANGUAGE plpgsql STABLE;
1309
- /* test subquery planning */
1310
- WITH tmp AS (
1311
- SELECT tid FROM test.cte_del_xacts_specdata
1312
- WHERE state_code != test.cte_del_xacts_stab('test'))
1313
- SELECT * FROM test.cte_del_xacts t JOIN tmp ON t.id = tmp.tid;
1314
- id | pdate | tid
1315
- ----+------------+-----
1316
- 1 | 01-01-2016 | 1
1317
- (1 row)
1318
-
1319
- /* test subquery planning (one more time) */
1320
- WITH tmp AS (
1321
- SELECT tid FROM test.cte_del_xacts_specdata
1322
- WHERE state_code != test.cte_del_xacts_stab('test'))
1323
- SELECT * FROM test.cte_del_xacts t JOIN tmp ON t.id = tmp.tid;
1324
- id | pdate | tid
1325
- ----+------------+-----
1326
- 1 | 01-01-2016 | 1
1327
- (1 row)
1328
-
1329
- DROP FUNCTION test.cte_del_xacts_stab(TEXT);
1330
- DROP TABLE test.cte_del_xacts, test.cte_del_xacts_specdata CASCADE;
1331
- NOTICE: drop cascades to table test.cte_del_xacts_1
1332
1141
/*
1333
1142
* Test split and merge
1334
1143
*/
@@ -2244,32 +2053,6 @@ SELECT count(*) FROM bool_test WHERE b = true; /* 25 values */
2244
2053
2245
2054
DROP TABLE bool_test CASCADE;
2246
2055
NOTICE: drop cascades to 3 other objects
2247
- /* Test foreign keys */
2248
- CREATE TABLE test.messages(id SERIAL PRIMARY KEY, msg TEXT);
2249
- CREATE TABLE test.replies(id SERIAL PRIMARY KEY, message_id INTEGER REFERENCES test.messages(id), msg TEXT);
2250
- INSERT INTO test.messages SELECT g, md5(g::text) FROM generate_series(1, 10) as g;
2251
- INSERT INTO test.replies SELECT g, g, md5(g::text) FROM generate_series(1, 10) as g;
2252
- SELECT create_range_partitions('test.messages', 'id', 1, 100, 2);
2253
- WARNING: foreign key "replies_message_id_fkey" references relation "test.messages"
2254
- ERROR: relation "test.messages" is referenced from other relations
2255
- ALTER TABLE test.replies DROP CONSTRAINT replies_message_id_fkey;
2256
- SELECT create_range_partitions('test.messages', 'id', 1, 100, 2);
2257
- NOTICE: sequence "messages_seq" does not exist, skipping
2258
- create_range_partitions
2259
- -------------------------
2260
- 2
2261
- (1 row)
2262
-
2263
- EXPLAIN (COSTS OFF) SELECT * FROM test.messages;
2264
- QUERY PLAN
2265
- ------------------------------
2266
- Append
2267
- -> Seq Scan on messages_1
2268
- -> Seq Scan on messages_2
2269
- (3 rows)
2270
-
2271
- DROP TABLE test.messages, test.replies CASCADE;
2272
- NOTICE: drop cascades to 2 other objects
2273
2056
/* Special test case (quals generation) -- fixing commit f603e6c5 */
2274
2057
CREATE TABLE test.special_case_1_ind_o_s(val serial, comment text);
2275
2058
INSERT INTO test.special_case_1_ind_o_s SELECT generate_series(1, 200), NULL;
@@ -2392,44 +2175,6 @@ EXPLAIN (COSTS OFF) SELECT * FROM test.index_on_childs WHERE c1 > 100 AND c1 < 2
2392
2175
Filter: (c1 < 2500)
2393
2176
(12 rows)
2394
2177
2395
- /* Test recursive CTE */
2396
- CREATE TABLE test.recursive_cte_test_tbl(id INT NOT NULL, name TEXT NOT NULL);
2397
- SELECT * FROM create_hash_partitions('test.recursive_cte_test_tbl', 'id', 2);
2398
- create_hash_partitions
2399
- ------------------------
2400
- 2
2401
- (1 row)
2402
-
2403
- INSERT INTO test.recursive_cte_test_tbl (id, name) SELECT id, 'name'||id FROM generate_series(1,100) f(id);
2404
- INSERT INTO test.recursive_cte_test_tbl (id, name) SELECT id, 'name'||(id + 1) FROM generate_series(1,100) f(id);
2405
- INSERT INTO test.recursive_cte_test_tbl (id, name) SELECT id, 'name'||(id + 2) FROM generate_series(1,100) f(id);
2406
- SELECT * FROM test.recursive_cte_test_tbl WHERE id = 5;
2407
- id | name
2408
- ----+-------
2409
- 5 | name5
2410
- 5 | name6
2411
- 5 | name7
2412
- (3 rows)
2413
-
2414
- WITH RECURSIVE test AS (
2415
- SELECT min(name) AS name
2416
- FROM test.recursive_cte_test_tbl
2417
- WHERE id = 5
2418
- UNION ALL
2419
- SELECT (SELECT min(name)
2420
- FROM test.recursive_cte_test_tbl
2421
- WHERE id = 5 AND name > test.name)
2422
- FROM test
2423
- WHERE name IS NOT NULL)
2424
- SELECT * FROM test;
2425
- name
2426
- -------
2427
- name5
2428
- name6
2429
- name7
2430
-
2431
- (4 rows)
2432
-
2433
2178
/* Test create_range_partitions() + relnames */
2434
2179
CREATE TABLE test.provided_part_names(id INT NOT NULL);
2435
2180
INSERT INTO test.provided_part_names SELECT generate_series(1, 10);
@@ -2456,6 +2201,6 @@ ORDER BY partition;
2456
2201
DROP TABLE test.provided_part_names CASCADE;
2457
2202
NOTICE: drop cascades to 2 other objects
2458
2203
DROP SCHEMA test CASCADE;
2459
- NOTICE: drop cascades to 54 other objects
2204
+ NOTICE: drop cascades to 49 other objects
2460
2205
DROP EXTENSION pg_pathman CASCADE;
2461
2206
DROP SCHEMA pathman CASCADE;
0 commit comments