2 SET pg_hint_plan.enable_hint TO on;
3 SET pg_hint_plan.debug_print TO on;
4 SET client_min_messages TO LOG;
5 SET search_path TO public;
8 ---- No.A-2-1 uninstall
11 CREATE EXTENSION pg_hint_plan;
13 DROP EXTENSION pg_hint_plan;
15 CREATE EXTENSION pg_hint_plan SCHEMA other_name;
16 ERROR: extension "pg_hint_plan" must be installed in schema "hint_plan"
17 CREATE EXTENSION pg_hint_plan;
19 ---- No. A-5-1 comment pattern
23 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
39 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
41 ------------------------------
42 Index Scan using t1_i1 on t1
48 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
50 ------------------------------
51 Index Scan using t1_i1 on t1
57 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
59 ------------------------------
60 Index Scan using t1_i1 on t1
65 /* /*+SeqScan(t1)*/ */
66 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
68 ------------------------------
69 Index Scan using t1_i1 on t1
74 ---- No. A-5-2 hint position
77 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
79 -----------------------------------
80 Index Only Scan using t1_i1 on t1
85 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
100 EXPLAIN (COSTS false) SELECT c1, c2 AS c_2 /*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
115 EXPLAIN (COSTS false) SELECT c1 AS "c1"/*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
117 -----------------------------------
118 Index Only Scan using t1_i1 on t1
123 EXPLAIN (COSTS false) SELECT * /*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
125 ------------------------------
126 Index Scan using t1_i1 on t1
131 ---- No. A-6-1 hint's table definition
133 SET pg_hint_plan.enable_hint_table TO on;
136 Table "hint_plan.hints"
137 Column | Type | Modifiers
138 -------------------+---------+--------------------------------------------------------------
139 id | integer | not null default nextval('hint_plan.hints_id_seq'::regclass)
140 norm_query_string | text | not null
141 application_name | text | not null
142 hints | text | not null
144 "hints_pkey" PRIMARY KEY, btree (id)
145 "hints_norm_and_app" UNIQUE, btree (norm_query_string, application_name)
148 ---- No. A-6-2 search condition
150 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
152 ------------------------------
153 Index Scan using t1_i1 on t1
158 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
160 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
163 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
178 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
180 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
183 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
197 TRUNCATE hint_plan.hints;
199 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
201 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
202 'dummy_application_name',
205 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
207 ------------------------------
208 Index Scan using t1_i1 on t1
212 TRUNCATE hint_plan.hints;
214 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
216 'EXPLAIN (COSTS false) SELECT * FROM s1.t1;',
220 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
222 ------------------------------
223 Index Scan using t1_i1 on t1
227 TRUNCATE hint_plan.hints;
229 ---- No. A-6-3 number of constant
232 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
234 'EXPLAIN (COSTS false) SELECT c1 FROM s1.t1;',
238 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1;
251 TRUNCATE hint_plan.hints;
253 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
255 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
259 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
273 TRUNCATE hint_plan.hints;
275 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
277 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ? OR t1.c1 = ?;',
281 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 OR t1.c1 = 0;
290 ----------------------------------
292 Filter: ((c1 = 1) OR (c1 = 0))
295 TRUNCATE hint_plan.hints;
296 SET pg_hint_plan.enable_hint_table TO off;
298 ---- No. A-7-2 hint delimiter
300 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
302 ------------------------------
303 Index Scan using t1_i1 on t1
314 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
315 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
318 Set(enable_bitmapscan off)
319 Set(enable_indexscan off)
331 /*+ Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
332 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
335 Set(enable_bitmapscan off)
336 Set(enable_indexscan off)
348 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off") */
349 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
352 Set(enable_bitmapscan off)
353 Set(enable_indexscan off)
365 /*+ Set (enable_indexscan"off") Set (enable_bitmapscan"off")*/
366 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
369 Set(enable_bitmapscan off)
370 Set(enable_indexscan off)
382 /*+Set ( enable_indexscan"off")Set ( enable_bitmapscan"off")*/
383 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
386 Set(enable_bitmapscan off)
387 Set(enable_indexscan off)
399 /*+Set(enable_indexscan"off" ) Set(enable_bitmapscan"off" ) */
400 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
403 Set(enable_bitmapscan off)
404 Set(enable_indexscan off)
416 /*+Set( enable_indexscan "off" )Set( enable_bitmapscan "off" )*/
417 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
420 Set(enable_bitmapscan off)
421 Set(enable_indexscan off)
433 /*+ Set ( enable_indexscan "off" ) Set ( enable_bitmapscan "off" ) */
434 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
437 Set(enable_bitmapscan off)
438 Set(enable_indexscan off)
450 /*+ Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
451 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
454 Set(enable_bitmapscan off)
455 Set(enable_indexscan off)
467 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off") */
468 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
471 Set(enable_bitmapscan off)
472 Set(enable_indexscan off)
484 /*+ Set (enable_indexscan"off") Set (enable_bitmapscan"off")*/
485 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
488 Set(enable_bitmapscan off)
489 Set(enable_indexscan off)
501 /*+Set ( enable_indexscan"off")Set ( enable_bitmapscan"off")*/
502 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
505 Set(enable_bitmapscan off)
506 Set(enable_indexscan off)
518 /*+Set(enable_indexscan"off" ) Set(enable_bitmapscan"off" ) */
519 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
522 Set(enable_bitmapscan off)
523 Set(enable_indexscan off)
535 /*+Set( enable_indexscan "off" )Set( enable_bitmapscan "off" )*/
536 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
539 Set(enable_bitmapscan off)
540 Set(enable_indexscan off)
552 /*+ Set ( enable_indexscan "off" ) Set ( enable_bitmapscan "off" ) */
553 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
556 Set(enable_bitmapscan off)
557 Set(enable_indexscan off)
570 Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
571 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
574 Set(enable_bitmapscan off)
575 Set(enable_indexscan off)
587 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")
589 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
592 Set(enable_bitmapscan off)
593 Set(enable_indexscan off)
607 (enable_indexscan"off")
609 (enable_bitmapscan"off")*/
610 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
613 Set(enable_bitmapscan off)
614 Set(enable_indexscan off)
628 enable_indexscan"off")Set
630 enable_bitmapscan"off")*/
631 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
634 Set(enable_bitmapscan off)
635 Set(enable_indexscan off)
647 /*+Set(enable_indexscan"off"
649 Set(enable_bitmapscan"off"
652 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
655 Set(enable_bitmapscan off)
656 Set(enable_indexscan off)
675 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
678 Set(enable_bitmapscan off)
679 Set(enable_indexscan off)
703 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
706 Set(enable_bitmapscan off)
707 Set(enable_indexscan off)
720 Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
721 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
724 Set(enable_bitmapscan off)
725 Set(enable_indexscan off)
737 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")
739 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
742 Set(enable_bitmapscan off)
743 Set(enable_indexscan off)
757 (enable_indexscan"off")
759 (enable_bitmapscan"off")*/
760 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
763 Set(enable_bitmapscan off)
764 Set(enable_indexscan off)
778 enable_indexscan"off")Set
780 enable_bitmapscan"off")*/
781 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
784 Set(enable_bitmapscan off)
785 Set(enable_indexscan off)
797 /*+Set(enable_indexscan"off"
799 Set(enable_bitmapscan"off"
802 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
805 Set(enable_bitmapscan off)
806 Set(enable_indexscan off)
825 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
828 Set(enable_bitmapscan off)
829 Set(enable_indexscan off)
853 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
856 Set(enable_bitmapscan off)
857 Set(enable_indexscan off)
869 ---- No. A-7-3 hint object pattern
870 ---- No. A-9-2 message object pattern
875 EXPLAIN (COSTS false) SELECT * FROM s1.t1 t WHERE t.c1 = 1;
890 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ttt WHERE ttt.c1 = 1;
905 EXPLAIN (COSTS false) SELECT * FROM s1.t1 t WHERE t.c1 = 1;
920 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ttt WHERE ttt.c1 = 1;
937 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "T" WHERE "T".c1 = 1;
952 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "TTT" WHERE "TTT".c1 = 1;
961 ----------------------
967 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "T" WHERE "T".c1 = 1;
982 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "TTT" WHERE "TTT".c1 = 1;
991 ----------------------
999 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(" WHERE "(".c1 = 1;
1000 INFO: hint syntax error at or near "()"
1001 DETAIL: Zero-length delimited string.
1003 ----------------------------------
1004 Index Scan using t1_i1 on t1 "("
1005 Index Cond: (c1 = 1)
1009 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(" WHERE "(".c1 = 1;
1018 --------------------
1026 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ")" WHERE ")".c1 = 1;
1027 INFO: hint syntax error at or near ")"
1028 DETAIL: SeqScan hint requires a relation.
1029 INFO: hint syntax error at or near ")"
1030 DETAIL: Unrecognized hint keyword ")".
1039 ----------------------------------
1040 Index Scan using t1_i1 on t1 ")"
1041 Index Cond: (c1 = 1)
1045 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ")" WHERE ")".c1 = 1;
1054 --------------------
1060 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ")))" WHERE ")))".c1 = 1;
1069 ----------------------
1070 Seq Scan on t1 ")))"
1077 EXPLAIN (COSTS false) SELECT * FROM s1.t1 """" WHERE """".c1 = 1;
1078 INFO: hint syntax error at or near ""
1079 DETAIL: Unterminated quoted string.
1081 -----------------------------------
1082 Index Scan using t1_i1 on t1 """"
1083 Index Cond: (c1 = 1)
1087 EXPLAIN (COSTS false) SELECT * FROM s1.t1 """" WHERE """".c1 = 1;
1096 ---------------------
1101 /*+SeqScan("""""""")*/
1102 EXPLAIN (COSTS false) SELECT * FROM s1.t1 """""""" WHERE """""""".c1 = 1;
1111 -------------------------
1112 Seq Scan on t1 """"""""
1119 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1120 INFO: hint syntax error at or near ""
1121 DETAIL: SeqScan hint requires a relation.
1130 ----------------------------------
1131 Index Scan using t1_i1 on t1 " "
1132 Index Cond: (c1 = 1)
1136 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1145 --------------------
1151 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1160 ----------------------
1168 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1169 INFO: hint syntax error at or near ""
1170 DETAIL: SeqScan hint requires a relation.
1179 -----------------------------------
1180 Index Scan using t1_i1 on t1 " "
1181 Index Cond: (c1 = 1)
1185 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1194 ---------------------------
1200 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1209 -------------------------------------------
1218 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "
1221 INFO: hint syntax error at or near ""
1222 DETAIL: SeqScan hint requires a relation.
1231 --------------------------------
1232 Index Scan using t1_i1 on t1 "
1234 Index Cond: (c1 = 1)
1239 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "
1251 --------------------
1261 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "
1279 --------------------
1290 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "Set" WHERE "Set".c1 = 1;
1299 ----------------------
1300 Seq Scan on t1 "Set"
1305 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "Set" WHERE "Set".c1 = 1;
1314 ----------------------
1315 Seq Scan on t1 "Set"
1319 /*+SeqScan("Set SeqScan Leading")*/
1320 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "Set SeqScan Leading" WHERE "Set SeqScan Leading".c1 = 1;
1323 SeqScan("Set SeqScan Leading")
1329 --------------------------------------
1330 Seq Scan on t1 "Set SeqScan Leading"
1337 EXPLAIN (COSTS false) SELECT * FROM s1.t1 あ WHERE あ.c1 = 1;
1346 ---------------------
1352 EXPLAIN (COSTS false) SELECT * FROM s1.t1 あいう WHERE あいう.c1 = 1;
1361 -------------------------
1362 Seq Scan on t1 "あいう"
1367 EXPLAIN (COSTS false) SELECT * FROM s1.t1 あ WHERE あ.c1 = 1;
1376 ---------------------
1382 EXPLAIN (COSTS false) SELECT * FROM s1.t1 あいう WHERE あいう.c1 = 1;
1391 -------------------------
1392 Seq Scan on t1 "あいう"
1399 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**/" WHERE "/**/".c1 = 1;
1400 INFO: hint syntax error at or near "/**/)*/
1401 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**/" WHERE "/**/".c1 = 1;"
1402 DETAIL: Nested block comments are not supported.
1404 -------------------------------------
1405 Index Scan using t1_i1 on t1 "/**/"
1406 Index Cond: (c1 = 1)
1409 /*+SeqScan(/**//**//**/)*/
1410 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**//**//**/" WHERE "/**//**//**/".c1 = 1;
1411 INFO: hint syntax error at or near "/**//**//**/)*/
1412 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**//**//**/" WHERE "/**//**//**/".c1 = 1;"
1413 DETAIL: Nested block comments are not supported.
1415 ---------------------------------------------
1416 Index Scan using t1_i1 on t1 "/**//**//**/"
1417 Index Cond: (c1 = 1)
1424 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""
1425 Set/**/あ" WHERE "tT()""
1427 INFO: hint syntax error at or near "/**/あ")*/
1428 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""
1429 Set/**/あ" WHERE "tT()""
1431 DETAIL: Nested block comments are not supported.
1433 ------------------------------------------
1434 Index Scan using t1_i1 on t1 "tT()""
1436 Index Cond: (c1 = 1)
1442 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""
1454 --------------------------
1455 Seq Scan on t1 "tT()""
1462 /*+SeqScan(a123456789b123456789c123456789d123456789e123456789f123)*/
1463 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "123456789012345678901234567890123456789012345678901234" WHERE "123456789012345678901234567890123456789012345678901234".c1 = 1;
1467 SeqScan(a123456789b123456789c123456789d123456789e123456789f123)
1472 ---------------------------------------------------------------------------------------
1473 Index Scan using t1_i1 on t1 "123456789012345678901234567890123456789012345678901234"
1474 Index Cond: (c1 = 1)
1478 ---- No. A-7-4 hint parse error
1481 /*+Set(enable_indexscan off)Set enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
1482 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1483 INFO: hint syntax error at or near "enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
1484 DETAIL: Opening parenthesis is necessary.
1487 Set(enable_indexscan off)
1493 ----------------------------------
1494 Bitmap Heap Scan on t1
1495 Recheck Cond: (c1 = 1)
1496 -> Bitmap Index Scan on t1_i1
1497 Index Cond: (c1 = 1)
1501 /*+Set(enable_indexscan off)Set(enable_tidscan off Set(enable_bitmapscan off)SeqScan(t1)*/
1502 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1503 INFO: hint syntax error at or near "(enable_bitmapscan off)SeqScan(t1)"
1504 DETAIL: Zero-length delimited string.
1507 Set(enable_indexscan off)
1513 ----------------------------------
1514 Bitmap Heap Scan on t1
1515 Recheck Cond: (c1 = 1)
1516 -> Bitmap Index Scan on t1_i1
1517 Index Cond: (c1 = 1)
1521 /*+Set(enable_indexscan off)Set(enable_tidscan "off)Set(enable_bitmapscan off)SeqScan(t1)*/
1522 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1523 INFO: hint syntax error at or near ""
1524 DETAIL: Unterminated quoted string.
1527 Set(enable_indexscan off)
1533 ----------------------------------
1534 Bitmap Heap Scan on t1
1535 Recheck Cond: (c1 = 1)
1536 -> Bitmap Index Scan on t1_i1
1537 Index Cond: (c1 = 1)
1541 /*+Set(enable_indexscan off)SeqScan("")Set(enable_bitmapscan off)*/
1542 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1543 INFO: hint syntax error at or near ")Set(enable_bitmapscan off)"
1544 DETAIL: Zero-length delimited string.
1547 Set(enable_indexscan off)
1553 ----------------------------------
1554 Bitmap Heap Scan on t1
1555 Recheck Cond: (c1 = 1)
1556 -> Bitmap Index Scan on t1_i1
1557 Index Cond: (c1 = 1)
1561 /*+Set(enable_indexscan off)NoSet(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
1562 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1563 INFO: hint syntax error at or near "NoSet(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
1564 DETAIL: Unrecognized hint keyword "NoSet".
1567 Set(enable_indexscan off)
1573 ----------------------------------
1574 Bitmap Heap Scan on t1
1575 Recheck Cond: (c1 = 1)
1576 -> Bitmap Index Scan on t1_i1
1577 Index Cond: (c1 = 1)
1581 /*+Set(enable_indexscan off)"Set"(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
1582 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1583 INFO: hint syntax error at or near ""Set"(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
1584 DETAIL: Unrecognized hint keyword ""Set"".
1587 Set(enable_indexscan off)
1593 ----------------------------------
1594 Bitmap Heap Scan on t1
1595 Recheck Cond: (c1 = 1)
1596 -> Bitmap Index Scan on t1_i1
1597 Index Cond: (c1 = 1)
1601 /*+Set(enable_indexscan off)Set(enable_tidscan /* value */off)Set(enable_bitmapscan off)SeqScan(t1)*/
1602 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1603 INFO: hint syntax error at or near "/* value */off)Set(enable_bitmapscan off)SeqScan(t1)*/
1604 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;"
1605 DETAIL: Nested block comments are not supported.
1607 ------------------------------
1608 Index Scan using t1_i1 on t1
1609 Index Cond: (c1 = 1)
1613 ---- No. A-8-1 original GUC parameter
1616 SET ROLE super_user;
1617 SET pg_hint_plan.debug_print TO off;
1618 SHOW pg_hint_plan.enable_hint;
1619 pg_hint_plan.enable_hint
1620 --------------------------
1624 SHOW pg_hint_plan.debug_print;
1625 pg_hint_plan.debug_print
1626 --------------------------
1630 SHOW pg_hint_plan.parse_messages;
1631 pg_hint_plan.parse_messages
1632 -----------------------------
1636 SET pg_hint_plan.enable_hint TO off;
1637 SET pg_hint_plan.debug_print TO on;
1638 SET pg_hint_plan.parse_messages TO error;
1639 SHOW pg_hint_plan.enable_hint;
1640 pg_hint_plan.enable_hint
1641 --------------------------
1645 SHOW pg_hint_plan.debug_print;
1646 pg_hint_plan.debug_print
1647 --------------------------
1651 SHOW pg_hint_plan.parse_messages;
1652 pg_hint_plan.parse_messages
1653 -----------------------------
1657 RESET pg_hint_plan.enable_hint;
1658 RESET pg_hint_plan.debug_print;
1659 RESET pg_hint_plan.parse_messages;
1660 SHOW pg_hint_plan.enable_hint;
1661 pg_hint_plan.enable_hint
1662 --------------------------
1666 SHOW pg_hint_plan.debug_print;
1667 pg_hint_plan.debug_print
1668 --------------------------
1672 SHOW pg_hint_plan.parse_messages;
1673 pg_hint_plan.parse_messages
1674 -----------------------------
1679 SET ROLE normal_user;
1680 SHOW pg_hint_plan.enable_hint;
1681 pg_hint_plan.enable_hint
1682 --------------------------
1686 SHOW pg_hint_plan.debug_print;
1687 pg_hint_plan.debug_print
1688 --------------------------
1692 SHOW pg_hint_plan.parse_messages;
1693 pg_hint_plan.parse_messages
1694 -----------------------------
1698 SET pg_hint_plan.enable_hint TO off;
1699 SET pg_hint_plan.debug_print TO on;
1700 SET pg_hint_plan.parse_messages TO error;
1701 SHOW pg_hint_plan.enable_hint;
1702 pg_hint_plan.enable_hint
1703 --------------------------
1707 SHOW pg_hint_plan.debug_print;
1708 pg_hint_plan.debug_print
1709 --------------------------
1713 SHOW pg_hint_plan.parse_messages;
1714 pg_hint_plan.parse_messages
1715 -----------------------------
1719 RESET pg_hint_plan.enable_hint;
1720 RESET pg_hint_plan.debug_print;
1721 RESET pg_hint_plan.parse_messages;
1722 SHOW pg_hint_plan.enable_hint;
1723 pg_hint_plan.enable_hint
1724 --------------------------
1728 SHOW pg_hint_plan.debug_print;
1729 pg_hint_plan.debug_print
1730 --------------------------
1734 SHOW pg_hint_plan.parse_messages;
1735 pg_hint_plan.parse_messages
1736 -----------------------------
1742 ---- No. A-8-2 original GUC parameter pg_hint_plan.enable_hint
1745 SET pg_hint_plan.enable_hint TO on;
1746 SHOW pg_hint_plan.enable_hint;
1747 pg_hint_plan.enable_hint
1748 --------------------------
1752 /*+Set(enable_indexscan off)*/
1753 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1755 ----------------------------------
1756 Bitmap Heap Scan on t1
1757 Recheck Cond: (c1 = 1)
1758 -> Bitmap Index Scan on t1_i1
1759 Index Cond: (c1 = 1)
1763 SET pg_hint_plan.enable_hint TO off;
1764 SHOW pg_hint_plan.enable_hint;
1765 pg_hint_plan.enable_hint
1766 --------------------------
1770 /*+Set(enable_indexscan off)*/
1771 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1773 ------------------------------
1774 Index Scan using t1_i1 on t1
1775 Index Cond: (c1 = 1)
1779 SET pg_hint_plan.enable_hint TO DEFAULT;
1780 SHOW pg_hint_plan.enable_hint;
1781 pg_hint_plan.enable_hint
1782 --------------------------
1786 /*+Set(enable_indexscan off)*/
1787 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1789 ----------------------------------
1790 Bitmap Heap Scan on t1
1791 Recheck Cond: (c1 = 1)
1792 -> Bitmap Index Scan on t1_i1
1793 Index Cond: (c1 = 1)
1797 SET pg_hint_plan.enable_hint TO enable;
1798 ERROR: parameter "pg_hint_plan.enable_hint" requires a Boolean value
1799 SHOW pg_hint_plan.enable_hint;
1800 pg_hint_plan.enable_hint
1801 --------------------------
1806 ---- No. A-8-3 original GUC parameter pg_hint_plan.debug_print
1809 SET pg_hint_plan.debug_print TO on;
1810 SHOW pg_hint_plan.debug_print;
1811 pg_hint_plan.debug_print
1812 --------------------------
1816 /*+Set(enable_indexscan off)*/
1817 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1820 Set(enable_indexscan off)
1826 ----------------------------------
1827 Bitmap Heap Scan on t1
1828 Recheck Cond: (c1 = 1)
1829 -> Bitmap Index Scan on t1_i1
1830 Index Cond: (c1 = 1)
1834 SET pg_hint_plan.debug_print TO off;
1835 SHOW pg_hint_plan.debug_print;
1836 pg_hint_plan.debug_print
1837 --------------------------
1841 /*+Set(enable_indexscan off)*/
1842 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1844 ----------------------------------
1845 Bitmap Heap Scan on t1
1846 Recheck Cond: (c1 = 1)
1847 -> Bitmap Index Scan on t1_i1
1848 Index Cond: (c1 = 1)
1852 SET pg_hint_plan.debug_print TO DEFAULT;
1853 SHOW pg_hint_plan.debug_print;
1854 pg_hint_plan.debug_print
1855 --------------------------
1859 /*+Set(enable_indexscan off)*/
1860 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1862 ----------------------------------
1863 Bitmap Heap Scan on t1
1864 Recheck Cond: (c1 = 1)
1865 -> Bitmap Index Scan on t1_i1
1866 Index Cond: (c1 = 1)
1870 SET pg_hint_plan.debug_print TO enable;
1871 ERROR: parameter "pg_hint_plan.debug_print" requires a Boolean value
1872 SHOW pg_hint_plan.debug_print;
1873 pg_hint_plan.debug_print
1874 --------------------------
1879 ---- No. A-8-4 original GUC parameter pg_hint_plan.parse_messages
1881 SET client_min_messages TO debug5;
1882 DEBUG: CommitTransactionCommand
1883 DEBUG: CommitTransaction
1884 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1886 SET pg_hint_plan.parse_messages TO debug5;
1887 DEBUG: StartTransactionCommand
1888 DEBUG: StartTransaction
1889 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1890 DEBUG: ProcessUtility
1891 DEBUG: CommitTransactionCommand
1892 DEBUG: CommitTransaction
1893 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1894 SHOW pg_hint_plan.parse_messages;
1895 DEBUG: StartTransactionCommand
1896 DEBUG: StartTransaction
1897 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1898 DEBUG: ProcessUtility
1899 DEBUG: CommitTransactionCommand
1900 DEBUG: CommitTransaction
1901 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1902 pg_hint_plan.parse_messages
1903 -----------------------------
1908 DEBUG: StartTransactionCommand
1909 DEBUG: StartTransaction
1910 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1911 DEBUG: hint syntax error at or near ""
1912 DETAIL: Opening parenthesis is necessary.
1913 DEBUG: CommitTransactionCommand
1914 DEBUG: CommitTransaction
1915 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1921 SET client_min_messages TO debug4;
1922 DEBUG: StartTransactionCommand
1923 DEBUG: StartTransaction
1924 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1925 DEBUG: ProcessUtility
1926 DEBUG: CommitTransactionCommand
1927 DEBUG: CommitTransaction
1928 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1930 DEBUG: StartTransactionCommand
1931 DEBUG: StartTransaction
1932 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1933 DEBUG: CommitTransactionCommand
1934 DEBUG: CommitTransaction
1935 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1942 SET pg_hint_plan.parse_messages TO debug4;
1943 DEBUG: StartTransactionCommand
1944 DEBUG: StartTransaction
1945 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1946 DEBUG: ProcessUtility
1947 DEBUG: CommitTransactionCommand
1948 DEBUG: CommitTransaction
1949 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1950 SHOW pg_hint_plan.parse_messages;
1951 DEBUG: StartTransactionCommand
1952 DEBUG: StartTransaction
1953 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1954 DEBUG: ProcessUtility
1955 DEBUG: CommitTransactionCommand
1956 DEBUG: CommitTransaction
1957 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1958 pg_hint_plan.parse_messages
1959 -----------------------------
1964 DEBUG: StartTransactionCommand
1965 DEBUG: StartTransaction
1966 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1967 DEBUG: hint syntax error at or near ""
1968 DETAIL: Opening parenthesis is necessary.
1969 DEBUG: CommitTransactionCommand
1970 DEBUG: CommitTransaction
1971 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1977 SET client_min_messages TO debug3;
1978 DEBUG: StartTransactionCommand
1979 DEBUG: StartTransaction
1980 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1981 DEBUG: ProcessUtility
1982 DEBUG: CommitTransactionCommand
1983 DEBUG: CommitTransaction
1984 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1986 DEBUG: StartTransactionCommand
1987 DEBUG: StartTransaction
1988 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1989 DEBUG: CommitTransactionCommand
1990 DEBUG: CommitTransaction
1991 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1998 SET pg_hint_plan.parse_messages TO debug3;
1999 DEBUG: StartTransactionCommand
2000 DEBUG: StartTransaction
2001 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2002 DEBUG: ProcessUtility
2003 DEBUG: CommitTransactionCommand
2004 DEBUG: CommitTransaction
2005 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2006 SHOW pg_hint_plan.parse_messages;
2007 DEBUG: StartTransactionCommand
2008 DEBUG: StartTransaction
2009 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2010 DEBUG: ProcessUtility
2011 DEBUG: CommitTransactionCommand
2012 DEBUG: CommitTransaction
2013 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2014 pg_hint_plan.parse_messages
2015 -----------------------------
2020 DEBUG: StartTransactionCommand
2021 DEBUG: StartTransaction
2022 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2023 DEBUG: hint syntax error at or near ""
2024 DETAIL: Opening parenthesis is necessary.
2025 DEBUG: CommitTransactionCommand
2026 DEBUG: CommitTransaction
2027 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2033 SET client_min_messages TO debug2;
2034 DEBUG: StartTransactionCommand
2035 DEBUG: StartTransaction
2036 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2037 DEBUG: ProcessUtility
2045 SET pg_hint_plan.parse_messages TO debug2;
2046 SHOW pg_hint_plan.parse_messages;
2047 pg_hint_plan.parse_messages
2048 -----------------------------
2053 DEBUG: hint syntax error at or near ""
2054 DETAIL: Opening parenthesis is necessary.
2060 SET client_min_messages TO debug1;
2068 SET pg_hint_plan.parse_messages TO debug1;
2069 SHOW pg_hint_plan.parse_messages;
2070 pg_hint_plan.parse_messages
2071 -----------------------------
2076 DEBUG: hint syntax error at or near ""
2077 DETAIL: Opening parenthesis is necessary.
2083 SET client_min_messages TO log;
2091 SET pg_hint_plan.parse_messages TO log;
2092 SHOW pg_hint_plan.parse_messages;
2093 pg_hint_plan.parse_messages
2094 -----------------------------
2099 LOG: hint syntax error at or near ""
2100 DETAIL: Opening parenthesis is necessary.
2106 SET client_min_messages TO info;
2114 SET pg_hint_plan.parse_messages TO info;
2115 SHOW pg_hint_plan.parse_messages;
2116 pg_hint_plan.parse_messages
2117 -----------------------------
2122 INFO: hint syntax error at or near ""
2123 DETAIL: Opening parenthesis is necessary.
2129 SET client_min_messages TO notice;
2131 INFO: hint syntax error at or near ""
2132 DETAIL: Opening parenthesis is necessary.
2139 SET pg_hint_plan.parse_messages TO notice;
2140 SHOW pg_hint_plan.parse_messages;
2141 pg_hint_plan.parse_messages
2142 -----------------------------
2147 NOTICE: hint syntax error at or near ""
2148 DETAIL: Opening parenthesis is necessary.
2154 SET client_min_messages TO warning;
2162 SET pg_hint_plan.parse_messages TO warning;
2163 SHOW pg_hint_plan.parse_messages;
2164 pg_hint_plan.parse_messages
2165 -----------------------------
2170 WARNING: hint syntax error at or near ""
2171 DETAIL: Opening parenthesis is necessary.
2177 SET client_min_messages TO error;
2185 SET pg_hint_plan.parse_messages TO error;
2186 SHOW pg_hint_plan.parse_messages;
2187 pg_hint_plan.parse_messages
2188 -----------------------------
2193 ERROR: hint syntax error at or near ""
2194 DETAIL: Opening parenthesis is necessary.
2195 SET client_min_messages TO fatal;
2198 RESET client_min_messages;
2199 SET pg_hint_plan.parse_messages TO DEFAULT;
2200 SHOW pg_hint_plan.parse_messages;
2201 pg_hint_plan.parse_messages
2202 -----------------------------
2207 INFO: hint syntax error at or near ""
2208 DETAIL: Opening parenthesis is necessary.
2215 SET pg_hint_plan.parse_messages TO fatal;
2216 ERROR: invalid value for parameter "pg_hint_plan.parse_messages": "fatal"
2217 HINT: Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
2218 SHOW pg_hint_plan.parse_messages;
2219 pg_hint_plan.parse_messages
2220 -----------------------------
2225 SET pg_hint_plan.parse_messages TO panic;
2226 ERROR: invalid value for parameter "pg_hint_plan.parse_messages": "panic"
2227 HINT: Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
2228 SHOW pg_hint_plan.parse_messages;
2229 pg_hint_plan.parse_messages
2230 -----------------------------
2235 SET pg_hint_plan.parse_messages TO on;
2236 ERROR: invalid value for parameter "pg_hint_plan.parse_messages": "on"
2237 HINT: Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
2238 SHOW pg_hint_plan.parse_messages;
2239 pg_hint_plan.parse_messages
2240 -----------------------------
2245 ---- No. A-8-5 original GUC parameter pg_hint_plan.enable_hint_table
2247 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
2249 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
2253 SET pg_hint_plan.enable_hint_table TO on;
2254 SHOW pg_hint_plan.enable_hint_table;
2255 pg_hint_plan.enable_hint_table
2256 --------------------------------
2260 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2262 --------------------
2268 SET pg_hint_plan.enable_hint_table TO off;
2269 SHOW pg_hint_plan.enable_hint_table;
2270 pg_hint_plan.enable_hint_table
2271 --------------------------------
2275 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2277 ------------------------------
2278 Index Scan using t1_i1 on t1
2279 Index Cond: (c1 = 1)
2283 SET pg_hint_plan.enable_hint_table TO DEFAULT;
2284 SHOW pg_hint_plan.enable_hint_table;
2285 pg_hint_plan.enable_hint_table
2286 --------------------------------
2290 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2292 ------------------------------
2293 Index Scan using t1_i1 on t1
2294 Index Cond: (c1 = 1)
2298 SET pg_hint_plan.enable_hint_table TO enable;
2299 ERROR: parameter "pg_hint_plan.enable_hint_table" requires a Boolean value
2300 SHOW pg_hint_plan.enable_hint_table;
2301 pg_hint_plan.enable_hint_table
2302 --------------------------------
2306 TRUNCATE hint_plan.hints;
2308 ---- No. A-9-1 parse error message output
2311 /*+"Set"(enable_indexscan on)*/SELECT 1;
2312 INFO: hint syntax error at or near ""Set"(enable_indexscan on)"
2313 DETAIL: Unrecognized hint keyword ""Set"".
2319 /*+Set()(enable_indexscan on)*/SELECT 1;
2320 INFO: hint syntax error at or near "Set()(enable_indexscan on)"
2321 DETAIL: Set hint requires name and value of GUC parameter.
2322 INFO: hint syntax error at or near "(enable_indexscan on)"
2323 DETAIL: Unrecognized hint keyword "".
2329 /*+Set(enable_indexscan on*/SELECT 1;
2330 INFO: hint syntax error at or near ""
2331 DETAIL: Closing parenthesis is necessary.
2338 ---- No. A-9-3 hint state output
2340 SET pg_hint_plan.debug_print TO on;
2341 SET client_min_messages TO LOG;
2344 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2353 --------------------
2359 /*+SeqScan(no_table)*/
2360 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2369 ------------------------------
2370 Index Scan using t1_i1 on t1
2371 Index Cond: (c1 = 1)
2375 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2377 -----------------------------------
2379 TID Cond: (ctid = '(1,1)'::tid)
2383 /*+TidScan(t1)BitmapScan(t1)*/
2384 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2385 INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)"
2386 DETAIL: Conflict scan method hint.
2396 ----------------------------------
2397 Bitmap Heap Scan on t1
2398 Recheck Cond: (c1 = 1)
2399 Filter: (ctid = '(1,1)'::tid)
2400 -> Bitmap Index Scan on t1_i1
2401 Index Cond: (c1 = 1)
2404 /*+TidScan(t1)BitmapScan(t1)IndexScan(t1)*/
2405 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2406 INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)IndexScan(t1)"
2407 DETAIL: Conflict scan method hint.
2408 INFO: hint syntax error at or near "BitmapScan(t1)IndexScan(t1)"
2409 DETAIL: Conflict scan method hint.
2420 ---------------------------------
2421 Index Scan using t1_i1 on t1
2422 Index Cond: (c1 = 1)
2423 Filter: (ctid = '(1,1)'::tid)
2426 /*+TidScan(t1)BitmapScan(t1)IndexScan(t1)SeqScan(t1)*/
2427 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2428 INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)IndexScan(t1)SeqScan(t1)"
2429 DETAIL: Conflict scan method hint.
2430 INFO: hint syntax error at or near "BitmapScan(t1)IndexScan(t1)SeqScan(t1)"
2431 DETAIL: Conflict scan method hint.
2432 INFO: hint syntax error at or near "IndexScan(t1)SeqScan(t1)"
2433 DETAIL: Conflict scan method hint.
2445 ------------------------------------------------
2447 Filter: ((c1 = 1) AND (ctid = '(1,1)'::tid))
2451 /*+Set(enable_indexscan enable)*/
2452 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2453 INFO: parameter "enable_indexscan" requires a Boolean value
2459 Set(enable_indexscan enable)
2462 ------------------------------
2463 Index Scan using t1_i1 on t1
2464 Index Cond: (c1 = 1)
2468 ---- No. A-10-1 hint state output
2470 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2471 EXPLAIN (COSTS false) EXECUTE p1;
2473 ------------------------------
2474 Index Scan using t1_i1 on t1
2475 Index Cond: (c1 = 1)
2479 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2480 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2482 -----------------------
2487 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2489 -----------------------
2494 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2496 -----------------------
2501 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2503 -----------------------
2508 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2510 -----------------------
2515 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2517 ---------------------
2526 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2528 EXPLAIN (COSTS false) EXECUTE p1;
2537 --------------------
2542 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2544 EXPLAIN (COSTS false) EXECUTE p1;
2553 --------------------
2560 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2562 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2571 ----------------------------------
2572 Bitmap Heap Scan on t1
2573 Recheck Cond: (c1 < 1000)
2574 -> Bitmap Index Scan on t1_i1
2575 Index Cond: (c1 < 1000)
2579 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2588 ----------------------------------
2589 Bitmap Heap Scan on t1
2590 Recheck Cond: (c1 < 1000)
2591 -> Bitmap Index Scan on t1_i1
2592 Index Cond: (c1 < 1000)
2596 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2605 ----------------------------------
2606 Bitmap Heap Scan on t1
2607 Recheck Cond: (c1 < 1000)
2608 -> Bitmap Index Scan on t1_i1
2609 Index Cond: (c1 < 1000)
2613 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2622 ----------------------------------
2623 Bitmap Heap Scan on t1
2624 Recheck Cond: (c1 < 1000)
2625 -> Bitmap Index Scan on t1_i1
2626 Index Cond: (c1 < 1000)
2630 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2639 ----------------------------------
2640 Bitmap Heap Scan on t1
2641 Recheck Cond: (c1 < 1000)
2642 -> Bitmap Index Scan on t1_i1
2643 Index Cond: (c1 < 1000)
2647 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2656 ----------------------------------
2657 Bitmap Heap Scan on t1
2658 Recheck Cond: (c1 < $1)
2659 -> Bitmap Index Scan on t1_i1
2660 Index Cond: (c1 < $1)
2663 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2665 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2674 ----------------------------------
2675 Bitmap Heap Scan on t1
2676 Recheck Cond: (c1 < $1)
2677 -> Bitmap Index Scan on t1_i1
2678 Index Cond: (c1 < $1)
2685 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2686 EXPLAIN (COSTS false) EXECUTE p1;
2695 --------------------
2700 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2701 EXPLAIN (COSTS false) EXECUTE p1;
2710 --------------------
2717 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2718 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2727 ----------------------------------
2728 Bitmap Heap Scan on t1
2729 Recheck Cond: (c1 < 1000)
2730 -> Bitmap Index Scan on t1_i1
2731 Index Cond: (c1 < 1000)
2734 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2743 ----------------------------------
2744 Bitmap Heap Scan on t1
2745 Recheck Cond: (c1 < 1000)
2746 -> Bitmap Index Scan on t1_i1
2747 Index Cond: (c1 < 1000)
2750 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2759 ----------------------------------
2760 Bitmap Heap Scan on t1
2761 Recheck Cond: (c1 < 1000)
2762 -> Bitmap Index Scan on t1_i1
2763 Index Cond: (c1 < 1000)
2766 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2775 ----------------------------------
2776 Bitmap Heap Scan on t1
2777 Recheck Cond: (c1 < 1000)
2778 -> Bitmap Index Scan on t1_i1
2779 Index Cond: (c1 < 1000)
2782 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2791 ----------------------------------
2792 Bitmap Heap Scan on t1
2793 Recheck Cond: (c1 < 1000)
2794 -> Bitmap Index Scan on t1_i1
2795 Index Cond: (c1 < 1000)
2798 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2807 ----------------------------------
2808 Bitmap Heap Scan on t1
2809 Recheck Cond: (c1 < $1)
2810 -> Bitmap Index Scan on t1_i1
2811 Index Cond: (c1 < $1)
2814 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2815 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2824 ----------------------------------
2825 Bitmap Heap Scan on t1
2826 Recheck Cond: (c1 < $1)
2827 -> Bitmap Index Scan on t1_i1
2828 Index Cond: (c1 < $1)
2834 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2836 EXPLAIN (COSTS false) EXECUTE p1;
2838 ------------------------------
2839 Index Scan using t1_i1 on t1
2840 Index Cond: (c1 = 1)
2843 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2845 EXPLAIN (COSTS false) EXECUTE p1;
2847 ------------------------------
2848 Index Scan using t1_i1 on t1
2849 Index Cond: (c1 = 1)
2853 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2855 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2857 -----------------------
2862 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2864 -----------------------
2869 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2871 -----------------------
2876 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2878 -----------------------
2883 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2885 -----------------------
2890 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2892 ---------------------
2897 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2899 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2901 ---------------------
2910 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2912 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
2921 --------------------
2926 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2928 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
2937 --------------------
2944 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2946 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2955 ----------------------------------
2956 Bitmap Heap Scan on t1
2957 Recheck Cond: (c1 < 1000)
2958 -> Bitmap Index Scan on t1_i1
2959 Index Cond: (c1 < 1000)
2963 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2972 ----------------------------------
2973 Bitmap Heap Scan on t1
2974 Recheck Cond: (c1 < 1000)
2975 -> Bitmap Index Scan on t1_i1
2976 Index Cond: (c1 < 1000)
2980 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2989 ----------------------------------
2990 Bitmap Heap Scan on t1
2991 Recheck Cond: (c1 < 1000)
2992 -> Bitmap Index Scan on t1_i1
2993 Index Cond: (c1 < 1000)
2997 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3006 ----------------------------------
3007 Bitmap Heap Scan on t1
3008 Recheck Cond: (c1 < 1000)
3009 -> Bitmap Index Scan on t1_i1
3010 Index Cond: (c1 < 1000)
3014 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3023 ----------------------------------
3024 Bitmap Heap Scan on t1
3025 Recheck Cond: (c1 < 1000)
3026 -> Bitmap Index Scan on t1_i1
3027 Index Cond: (c1 < 1000)
3031 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3040 ----------------------------------
3041 Bitmap Heap Scan on t1
3042 Recheck Cond: (c1 < $1)
3043 -> Bitmap Index Scan on t1_i1
3044 Index Cond: (c1 < $1)
3047 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3049 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3058 ----------------------------------
3059 Bitmap Heap Scan on t1
3060 Recheck Cond: (c1 < $1)
3061 -> Bitmap Index Scan on t1_i1
3062 Index Cond: (c1 < $1)
3069 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3070 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
3079 --------------------
3084 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3085 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
3094 --------------------
3101 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
3102 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3111 ----------------------------------
3112 Bitmap Heap Scan on t1
3113 Recheck Cond: (c1 < 1000)
3114 -> Bitmap Index Scan on t1_i1
3115 Index Cond: (c1 < 1000)
3118 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3127 ----------------------------------
3128 Bitmap Heap Scan on t1
3129 Recheck Cond: (c1 < 1000)
3130 -> Bitmap Index Scan on t1_i1
3131 Index Cond: (c1 < 1000)
3134 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3143 ----------------------------------
3144 Bitmap Heap Scan on t1
3145 Recheck Cond: (c1 < 1000)
3146 -> Bitmap Index Scan on t1_i1
3147 Index Cond: (c1 < 1000)
3150 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3159 ----------------------------------
3160 Bitmap Heap Scan on t1
3161 Recheck Cond: (c1 < 1000)
3162 -> Bitmap Index Scan on t1_i1
3163 Index Cond: (c1 < 1000)
3166 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3175 ----------------------------------
3176 Bitmap Heap Scan on t1
3177 Recheck Cond: (c1 < 1000)
3178 -> Bitmap Index Scan on t1_i1
3179 Index Cond: (c1 < 1000)
3182 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3191 ----------------------------------
3192 Bitmap Heap Scan on t1
3193 Recheck Cond: (c1 < $1)
3194 -> Bitmap Index Scan on t1_i1
3195 Index Cond: (c1 < $1)
3198 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3199 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3208 ----------------------------------
3209 Bitmap Heap Scan on t1
3210 Recheck Cond: (c1 < $1)
3211 -> Bitmap Index Scan on t1_i1
3212 Index Cond: (c1 < $1)
3218 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3220 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
3222 ------------------------------
3223 Index Scan using t1_i1 on t1
3224 Index Cond: (c1 = 1)
3227 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3229 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
3231 ------------------------------
3232 Index Scan using t1_i1 on t1
3233 Index Cond: (c1 = 1)
3237 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
3239 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3241 -----------------------
3247 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3249 -----------------------
3255 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3257 -----------------------
3263 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3265 -----------------------
3271 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3273 -----------------------
3279 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3281 ---------------------
3286 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3288 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3290 ---------------------
3297 ---- No. A-10-4 EXECUTE statement name error
3301 ERROR: prepared statement "p1" does not exist
3302 SHOW pg_hint_plan.debug_print;
3303 pg_hint_plan.debug_print
3304 --------------------------
3309 ---- No. A-11-5 EXECUTE statement name error
3312 SELECT pg_stat_statements_reset();
3313 pg_stat_statements_reset
3314 --------------------------
3318 SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3324 /*+Set(enable_seqscan off)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3327 Set(enable_seqscan off)
3337 /*+SeqScan(t1)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3350 SELECT s.query, s.calls
3351 FROM public.pg_stat_statements s
3352 JOIN pg_catalog.pg_database d
3356 --------------------------------------+-------
3357 SELECT * FROM s1.t1 WHERE t1.c1 = ?; | 3
3358 SELECT pg_stat_statements_reset(); | 1
3362 ---- No. A-12-1 reset of global variable of core at the error
3363 ---- No. A-12-2 reset of global variable of original at the error
3365 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3367 ------------------------------------
3369 Merge Cond: (t1.c1 = t2.c1)
3370 -> Index Scan using t1_i1 on t1
3376 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
3377 PREPARE p1 AS SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3378 EXPLAIN (COSTS false) EXECUTE p1;
3379 INFO: hint syntax error at or near "NestLoop(t1 t1)"
3380 DETAIL: Relation name "t1" is duplicated.
3385 Set(enable_seqscan off)
3386 Set(geqo_threshold 100)
3393 ------------------------------------
3395 Merge Cond: (t1.c1 = t2.c1)
3399 -> Index Scan using t2_i1 on t2
3404 SELECT name, setting FROM settings;
3406 ---------------------------+-----------
3409 geqo_generations | 0
3412 geqo_selection_bias | 2
3414 constraint_exclusion | partition
3415 cursor_tuple_fraction | 0.1
3416 default_statistics_target | 100
3417 from_collapse_limit | 8
3418 join_collapse_limit | 8
3419 cpu_index_tuple_cost | 0.005
3420 cpu_operator_cost | 0.0025
3421 cpu_tuple_cost | 0.01
3422 effective_cache_size | 16384
3423 random_page_cost | 4
3425 enable_bitmapscan | on
3427 enable_hashjoin | on
3428 enable_indexonlyscan | on
3429 enable_indexscan | on
3430 enable_material | on
3431 enable_mergejoin | on
3432 enable_nestloop | on
3436 client_min_messages | log
3439 SET pg_hint_plan.parse_messages TO error;
3440 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
3441 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3442 ERROR: hint syntax error at or near "NestLoop(t1 t1)"
3443 DETAIL: Relation name "t1" is duplicated.
3444 SELECT name, setting FROM settings;
3446 ---------------------------+-----------
3449 geqo_generations | 0
3452 geqo_selection_bias | 2
3454 constraint_exclusion | partition
3455 cursor_tuple_fraction | 0.1
3456 default_statistics_target | 100
3457 from_collapse_limit | 8
3458 join_collapse_limit | 8
3459 cpu_index_tuple_cost | 0.005
3460 cpu_operator_cost | 0.0025
3461 cpu_tuple_cost | 0.01
3462 effective_cache_size | 16384
3463 random_page_cost | 4
3465 enable_bitmapscan | on
3467 enable_hashjoin | on
3468 enable_indexonlyscan | on
3469 enable_indexscan | on
3470 enable_material | on
3471 enable_mergejoin | on
3472 enable_nestloop | on
3476 client_min_messages | log
3479 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)*/
3480 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3485 Set(enable_seqscan off)
3486 Set(geqo_threshold 100)
3492 ------------------------------------
3494 Merge Cond: (t1.c1 = t2.c1)
3498 -> Index Scan using t2_i1 on t2
3503 SELECT name, setting FROM settings;
3505 ---------------------------+-----------
3508 geqo_generations | 0
3511 geqo_selection_bias | 2
3513 constraint_exclusion | partition
3514 cursor_tuple_fraction | 0.1
3515 default_statistics_target | 100
3516 from_collapse_limit | 8
3517 join_collapse_limit | 8
3518 cpu_index_tuple_cost | 0.005
3519 cpu_operator_cost | 0.0025
3520 cpu_tuple_cost | 0.01
3521 effective_cache_size | 16384
3522 random_page_cost | 4
3524 enable_bitmapscan | on
3526 enable_hashjoin | on
3527 enable_indexonlyscan | on
3528 enable_indexscan | on
3529 enable_material | on
3530 enable_mergejoin | on
3531 enable_nestloop | on
3535 client_min_messages | log
3538 SET pg_hint_plan.parse_messages TO error;
3539 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
3540 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3541 ERROR: hint syntax error at or near "NestLoop(t1 t1)"
3542 DETAIL: Relation name "t1" is duplicated.
3543 SELECT name, setting FROM settings;
3545 ---------------------------+-----------
3548 geqo_generations | 0
3551 geqo_selection_bias | 2
3553 constraint_exclusion | partition
3554 cursor_tuple_fraction | 0.1
3555 default_statistics_target | 100
3556 from_collapse_limit | 8
3557 join_collapse_limit | 8
3558 cpu_index_tuple_cost | 0.005
3559 cpu_operator_cost | 0.0025
3560 cpu_tuple_cost | 0.01
3561 effective_cache_size | 16384
3562 random_page_cost | 4
3564 enable_bitmapscan | on
3566 enable_hashjoin | on
3567 enable_indexonlyscan | on
3568 enable_indexscan | on
3569 enable_material | on
3570 enable_mergejoin | on
3571 enable_nestloop | on
3575 client_min_messages | log
3578 EXPLAIN (COSTS false) EXECUTE p1;
3580 ------------------------------------
3582 Merge Cond: (t1.c1 = t2.c1)
3586 -> Index Scan using t2_i1 on t2
3591 SELECT name, setting FROM settings;
3593 ---------------------------+-----------
3596 geqo_generations | 0
3599 geqo_selection_bias | 2
3601 constraint_exclusion | partition
3602 cursor_tuple_fraction | 0.1
3603 default_statistics_target | 100
3604 from_collapse_limit | 8
3605 join_collapse_limit | 8
3606 cpu_index_tuple_cost | 0.005
3607 cpu_operator_cost | 0.0025
3608 cpu_tuple_cost | 0.01
3609 effective_cache_size | 16384
3610 random_page_cost | 4
3612 enable_bitmapscan | on
3614 enable_hashjoin | on
3615 enable_indexonlyscan | on
3616 enable_indexscan | on
3617 enable_material | on
3618 enable_mergejoin | on
3619 enable_nestloop | on
3623 client_min_messages | log
3626 SET pg_hint_plan.parse_messages TO error;
3627 EXPLAIN (COSTS false) EXECUTE p2;
3628 ERROR: prepared statement "p2" does not exist
3629 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)*/
3630 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3635 Set(enable_seqscan off)
3636 Set(geqo_threshold 100)
3642 ------------------------------------
3644 Merge Cond: (t1.c1 = t2.c1)
3648 -> Index Scan using t2_i1 on t2
3651 EXPLAIN (COSTS false) EXECUTE p1;
3653 ------------------------------------
3655 Merge Cond: (t1.c1 = t2.c1)
3659 -> Index Scan using t2_i1 on t2
3662 SELECT name, setting FROM settings;
3664 ---------------------------+-----------
3667 geqo_generations | 0
3670 geqo_selection_bias | 2
3672 constraint_exclusion | partition
3673 cursor_tuple_fraction | 0.1
3674 default_statistics_target | 100
3675 from_collapse_limit | 8
3676 join_collapse_limit | 8
3677 cpu_index_tuple_cost | 0.005
3678 cpu_operator_cost | 0.0025
3679 cpu_tuple_cost | 0.01
3680 effective_cache_size | 16384
3681 random_page_cost | 4
3683 enable_bitmapscan | on
3685 enable_hashjoin | on
3686 enable_indexonlyscan | on
3687 enable_indexscan | on
3688 enable_material | on
3689 enable_mergejoin | on
3690 enable_nestloop | on
3694 client_min_messages | log
3699 SELECT name, setting FROM settings;
3701 ---------------------------+-----------
3704 geqo_generations | 0
3707 geqo_selection_bias | 2
3709 constraint_exclusion | partition
3710 cursor_tuple_fraction | 0.1
3711 default_statistics_target | 100
3712 from_collapse_limit | 8
3713 join_collapse_limit | 8
3714 cpu_index_tuple_cost | 0.005
3715 cpu_operator_cost | 0.0025
3716 cpu_tuple_cost | 0.01
3717 effective_cache_size | 16384
3718 random_page_cost | 4
3720 enable_bitmapscan | on
3722 enable_hashjoin | on
3723 enable_indexonlyscan | on
3724 enable_indexscan | on
3725 enable_material | on
3726 enable_mergejoin | on
3727 enable_nestloop | on
3731 client_min_messages | log
3734 SET pg_hint_plan.parse_messages TO error;
3735 EXPLAIN (COSTS false) EXECUTE p2;
3736 ERROR: prepared statement "p2" does not exist
3737 EXPLAIN (COSTS false) EXECUTE p1;
3739 ------------------------------------
3741 Merge Cond: (t1.c1 = t2.c1)
3745 -> Index Scan using t2_i1 on t2
3748 SELECT name, setting FROM settings;
3750 ---------------------------+-----------
3753 geqo_generations | 0
3756 geqo_selection_bias | 2
3758 constraint_exclusion | partition
3759 cursor_tuple_fraction | 0.1
3760 default_statistics_target | 100
3761 from_collapse_limit | 8
3762 join_collapse_limit | 8
3763 cpu_index_tuple_cost | 0.005
3764 cpu_operator_cost | 0.0025
3765 cpu_tuple_cost | 0.01
3766 effective_cache_size | 16384
3767 random_page_cost | 4
3769 enable_bitmapscan | on
3771 enable_hashjoin | on
3772 enable_indexonlyscan | on
3773 enable_indexscan | on
3774 enable_material | on
3775 enable_mergejoin | on
3776 enable_nestloop | on
3780 client_min_messages | log
3784 SET pg_hint_plan.parse_messages TO LOG;
3786 ---- No. A-12-3 effective range of the hint
3788 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3790 ------------------------------------
3792 Merge Cond: (t1.c1 = t2.c1)
3793 -> Index Scan using t1_i1 on t1
3800 SET enable_indexscan TO off;
3801 SET enable_mergejoin TO off;
3802 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3804 ------------------------------
3806 Hash Cond: (t1.c1 = t2.c1)
3812 SELECT name, setting FROM settings;
3814 ---------------------------+-----------
3817 geqo_generations | 0
3820 geqo_selection_bias | 2
3822 constraint_exclusion | partition
3823 cursor_tuple_fraction | 0.1
3824 default_statistics_target | 100
3825 from_collapse_limit | 8
3826 join_collapse_limit | 8
3827 cpu_index_tuple_cost | 0.005
3828 cpu_operator_cost | 0.0025
3829 cpu_tuple_cost | 0.01
3830 effective_cache_size | 16384
3831 random_page_cost | 4
3833 enable_bitmapscan | on
3835 enable_hashjoin | on
3836 enable_indexonlyscan | on
3837 enable_indexscan | off
3838 enable_material | on
3839 enable_mergejoin | off
3840 enable_nestloop | on
3844 client_min_messages | log
3847 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
3848 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3854 Set(enable_indexscan on)
3855 Set(geqo_threshold 100)
3861 ------------------------------------
3863 Merge Cond: (t1.c1 = t2.c1)
3864 -> Index Scan using t1_i1 on t1
3865 -> Index Scan using t2_i1 on t2
3868 SELECT name, setting FROM settings;
3870 ---------------------------+-----------
3873 geqo_generations | 0
3876 geqo_selection_bias | 2
3878 constraint_exclusion | partition
3879 cursor_tuple_fraction | 0.1
3880 default_statistics_target | 100
3881 from_collapse_limit | 8
3882 join_collapse_limit | 8
3883 cpu_index_tuple_cost | 0.005
3884 cpu_operator_cost | 0.0025
3885 cpu_tuple_cost | 0.01
3886 effective_cache_size | 16384
3887 random_page_cost | 4
3889 enable_bitmapscan | on
3891 enable_hashjoin | on
3892 enable_indexonlyscan | on
3893 enable_indexscan | off
3894 enable_material | on
3895 enable_mergejoin | off
3896 enable_nestloop | on
3900 client_min_messages | log
3903 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3905 ------------------------------
3907 Hash Cond: (t1.c1 = t2.c1)
3914 SET enable_indexscan TO off;
3915 SET enable_mergejoin TO off;
3916 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3918 ------------------------------
3920 Hash Cond: (t1.c1 = t2.c1)
3926 SELECT name, setting FROM settings;
3928 ---------------------------+-----------
3931 geqo_generations | 0
3934 geqo_selection_bias | 2
3936 constraint_exclusion | partition
3937 cursor_tuple_fraction | 0.1
3938 default_statistics_target | 100
3939 from_collapse_limit | 8
3940 join_collapse_limit | 8
3941 cpu_index_tuple_cost | 0.005
3942 cpu_operator_cost | 0.0025
3943 cpu_tuple_cost | 0.01
3944 effective_cache_size | 16384
3945 random_page_cost | 4
3947 enable_bitmapscan | on
3949 enable_hashjoin | on
3950 enable_indexonlyscan | on
3951 enable_indexscan | off
3952 enable_material | on
3953 enable_mergejoin | off
3954 enable_nestloop | on
3958 client_min_messages | log
3962 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
3963 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3969 Set(enable_indexscan on)
3970 Set(geqo_threshold 100)
3976 ------------------------------------
3978 Merge Cond: (t1.c1 = t2.c1)
3979 -> Index Scan using t1_i1 on t1
3980 -> Index Scan using t2_i1 on t2
3985 SELECT name, setting FROM settings;
3987 ---------------------------+-----------
3990 geqo_generations | 0
3993 geqo_selection_bias | 2
3995 constraint_exclusion | partition
3996 cursor_tuple_fraction | 0.1
3997 default_statistics_target | 100
3998 from_collapse_limit | 8
3999 join_collapse_limit | 8
4000 cpu_index_tuple_cost | 0.005
4001 cpu_operator_cost | 0.0025
4002 cpu_tuple_cost | 0.01
4003 effective_cache_size | 16384
4004 random_page_cost | 4
4006 enable_bitmapscan | on
4008 enable_hashjoin | on
4009 enable_indexonlyscan | on
4010 enable_indexscan | off
4011 enable_material | on
4012 enable_mergejoin | off
4013 enable_nestloop | on
4017 client_min_messages | log
4020 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
4022 ------------------------------
4024 Hash Cond: (t1.c1 = t2.c1)
4032 SET enable_indexscan TO off;
4033 SET enable_mergejoin TO off;
4034 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
4036 ------------------------------
4038 Hash Cond: (t1.c1 = t2.c1)
4044 SELECT name, setting FROM settings;
4046 ---------------------------+-----------
4049 geqo_generations | 0
4052 geqo_selection_bias | 2
4054 constraint_exclusion | partition
4055 cursor_tuple_fraction | 0.1
4056 default_statistics_target | 100
4057 from_collapse_limit | 8
4058 join_collapse_limit | 8
4059 cpu_index_tuple_cost | 0.005
4060 cpu_operator_cost | 0.0025
4061 cpu_tuple_cost | 0.01
4062 effective_cache_size | 16384
4063 random_page_cost | 4
4065 enable_bitmapscan | on
4067 enable_hashjoin | on
4068 enable_indexonlyscan | on
4069 enable_indexscan | off
4070 enable_material | on
4071 enable_mergejoin | off
4072 enable_nestloop | on
4076 client_min_messages | log
4079 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
4080 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
4086 Set(enable_indexscan on)
4087 Set(geqo_threshold 100)
4093 ------------------------------------
4095 Merge Cond: (t1.c1 = t2.c1)
4096 -> Index Scan using t1_i1 on t1
4097 -> Index Scan using t2_i1 on t2
4101 SET enable_indexscan TO off;
4102 SET enable_mergejoin TO off;
4103 LOAD 'pg_hint_plan';
4104 SELECT name, setting FROM settings;
4106 ---------------------------+-----------
4109 geqo_generations | 0
4112 geqo_selection_bias | 2
4114 constraint_exclusion | partition
4115 cursor_tuple_fraction | 0.1
4116 default_statistics_target | 100
4117 from_collapse_limit | 8
4118 join_collapse_limit | 8
4119 cpu_index_tuple_cost | 0.005
4120 cpu_operator_cost | 0.0025
4121 cpu_tuple_cost | 0.01
4122 effective_cache_size | 16384
4123 random_page_cost | 4
4125 enable_bitmapscan | on
4127 enable_hashjoin | on
4128 enable_indexonlyscan | on
4129 enable_indexscan | off
4130 enable_material | on
4131 enable_mergejoin | off
4132 enable_nestloop | on
4136 client_min_messages | notice
4139 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
4141 ------------------------------
4143 Hash Cond: (t1.c1 = t2.c1)
4149 SET pg_hint_plan.enable_hint TO on;
4150 SET pg_hint_plan.debug_print TO on;
4151 SET client_min_messages TO LOG;
4152 SET search_path TO public;
4153 RESET enable_indexscan;
4154 RESET enable_mergejoin;
4156 ---- No. A-13 call planner recursively
4158 CREATE OR REPLACE FUNCTION nested_planner(cnt int) RETURNS int AS $$
4162 RAISE NOTICE 'nested_planner(%)', cnt;
4169 SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) INTO new_cnt
4171 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4172 ORDER BY t_1.c1 LIMIT 1;
4176 $$ LANGUAGE plpgsql IMMUTABLE;
4178 ---- No. A-13-2 use hint of main query
4181 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4182 NOTICE: nested_planner(1)
4184 ---------------------------------------
4185 Index Only Scan using t1_i1 on t1 t_1
4189 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4190 NOTICE: nested_planner(1)
4199 --------------------------
4202 -> Seq Scan on t1 t_1
4206 ---- No. A-13-3 output number of times of debugging log
4209 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4210 NOTICE: nested_planner(1)
4212 ---------------------------------------
4213 Index Only Scan using t1_i1 on t1 t_1
4217 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4218 NOTICE: nested_planner(1)
4227 ---------------------------------------
4228 Index Only Scan using t1_i1 on t1 t_1
4232 EXPLAIN (COSTS false) SELECT nested_planner(2) FROM s1.t1 t_1 ORDER BY t_1.c1;
4233 NOTICE: nested_planner(2)
4234 NOTICE: nested_planner(1)
4235 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4236 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4237 ORDER BY t_1.c1 LIMIT 1"
4238 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4246 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4247 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4248 ORDER BY t_1.c1 LIMIT 1"
4249 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4251 ---------------------------------------
4252 Index Only Scan using t1_i1 on t1 t_1
4256 EXPLAIN (COSTS false) SELECT nested_planner(2) FROM s1.t1 t_1 ORDER BY t_1.c1;
4257 NOTICE: nested_planner(2)
4258 NOTICE: nested_planner(1)
4259 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4260 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4261 ORDER BY t_1.c1 LIMIT 1"
4262 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4270 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4271 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4272 ORDER BY t_1.c1 LIMIT 1"
4273 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4282 ---------------------------------------
4283 Index Only Scan using t1_i1 on t1 t_1
4287 EXPLAIN (COSTS false) SELECT nested_planner(5) FROM s1.t1 t_1 ORDER BY t_1.c1;
4288 NOTICE: nested_planner(5)
4289 NOTICE: nested_planner(4)
4290 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4291 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4292 ORDER BY t_1.c1 LIMIT 1"
4293 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4294 NOTICE: nested_planner(3)
4295 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4296 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4297 ORDER BY t_1.c1 LIMIT 1"
4298 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4299 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4300 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4301 ORDER BY t_1.c1 LIMIT 1"
4302 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4303 NOTICE: nested_planner(2)
4304 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4305 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4306 ORDER BY t_1.c1 LIMIT 1"
4307 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4308 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4309 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4310 ORDER BY t_1.c1 LIMIT 1"
4311 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4312 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4313 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4314 ORDER BY t_1.c1 LIMIT 1"
4315 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4316 NOTICE: nested_planner(1)
4317 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4318 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4319 ORDER BY t_1.c1 LIMIT 1"
4320 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4321 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4322 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4323 ORDER BY t_1.c1 LIMIT 1"
4324 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4325 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4326 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4327 ORDER BY t_1.c1 LIMIT 1"
4328 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4329 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4330 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4331 ORDER BY t_1.c1 LIMIT 1"
4332 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4340 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4341 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4342 ORDER BY t_1.c1 LIMIT 1"
4343 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4344 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4345 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4346 ORDER BY t_1.c1 LIMIT 1"
4347 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4348 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4349 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4350 ORDER BY t_1.c1 LIMIT 1"
4351 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4352 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4353 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4354 ORDER BY t_1.c1 LIMIT 1"
4355 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4363 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4364 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4365 ORDER BY t_1.c1 LIMIT 1"
4366 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4367 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4368 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4369 ORDER BY t_1.c1 LIMIT 1"
4370 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4371 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4372 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4373 ORDER BY t_1.c1 LIMIT 1"
4374 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4382 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4383 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4384 ORDER BY t_1.c1 LIMIT 1"
4385 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4386 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4387 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4388 ORDER BY t_1.c1 LIMIT 1"
4389 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4397 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4398 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4399 ORDER BY t_1.c1 LIMIT 1"
4400 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4402 ---------------------------------------
4403 Index Only Scan using t1_i1 on t1 t_1
4407 EXPLAIN (COSTS false) SELECT nested_planner(5) FROM s1.t1 t_1 ORDER BY t_1.c1;
4408 NOTICE: nested_planner(5)
4416 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4417 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4418 ORDER BY t_1.c1 LIMIT 1"
4419 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4420 NOTICE: nested_planner(4)
4421 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4422 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4423 ORDER BY t_1.c1 LIMIT 1"
4424 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4425 NOTICE: nested_planner(3)
4426 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4427 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4428 ORDER BY t_1.c1 LIMIT 1"
4429 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4430 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4431 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4432 ORDER BY t_1.c1 LIMIT 1"
4433 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4434 NOTICE: nested_planner(2)
4435 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4436 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4437 ORDER BY t_1.c1 LIMIT 1"
4438 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4439 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4440 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4441 ORDER BY t_1.c1 LIMIT 1"
4442 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4443 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4444 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4445 ORDER BY t_1.c1 LIMIT 1"
4446 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4447 NOTICE: nested_planner(1)
4448 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4449 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4450 ORDER BY t_1.c1 LIMIT 1"
4451 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4452 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4453 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4454 ORDER BY t_1.c1 LIMIT 1"
4455 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4456 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4457 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4458 ORDER BY t_1.c1 LIMIT 1"
4459 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4460 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4461 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4462 ORDER BY t_1.c1 LIMIT 1"
4463 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4471 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4472 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4473 ORDER BY t_1.c1 LIMIT 1"
4474 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4475 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4476 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4477 ORDER BY t_1.c1 LIMIT 1"
4478 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4479 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4480 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4481 ORDER BY t_1.c1 LIMIT 1"
4482 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4483 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4484 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4485 ORDER BY t_1.c1 LIMIT 1"
4486 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4494 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4495 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4496 ORDER BY t_1.c1 LIMIT 1"
4497 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4498 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4499 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4500 ORDER BY t_1.c1 LIMIT 1"
4501 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4502 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4503 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4504 ORDER BY t_1.c1 LIMIT 1"
4505 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4513 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4514 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4515 ORDER BY t_1.c1 LIMIT 1"
4516 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4517 SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4518 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4519 ORDER BY t_1.c1 LIMIT 1"
4520 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4528 CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) FROM s1.t1 t_1
4529 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4530 ORDER BY t_1.c1 LIMIT 1"
4531 PL/pgSQL function nested_planner(integer) line 12 at SQL statement
4540 ---------------------------------------
4541 Index Only Scan using t1_i1 on t1 t_1
4545 ---- No. A-13-4 output of debugging log on hint status
4547 CREATE OR REPLACE FUNCTION recall_planner() RETURNS int AS $$
4548 SELECT /*+ IndexScan(t_1) */t_1.c1
4550 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4551 ORDER BY t_1.c1 LIMIT 1;
4552 $$ LANGUAGE SQL IMMUTABLE;
4554 /*+HashJoin(t_1 t_2)*/
4555 EXPLAIN (COSTS false)
4556 SELECT recall_planner() FROM s1.t1 t_1
4557 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4566 CONTEXT: SQL function "recall_planner" during startup
4575 --------------------------------------
4579 Hash Cond: (t_1.c1 = t_2.c1)
4580 -> Seq Scan on t1 t_1
4582 -> Seq Scan on t2 t_2
4586 /*+HashJoin(st_1 st_2)*/
4587 EXPLAIN (COSTS false)
4588 SELECT recall_planner() FROM s1.t1 st_1
4589 JOIN s1.t2 st_2 ON (st_1.c1 = st_2.c1)
4598 CONTEXT: SQL function "recall_planner" during startup
4607 ----------------------------------------
4611 Hash Cond: (st_1.c1 = st_2.c1)
4612 -> Seq Scan on t1 st_1
4614 -> Seq Scan on t2 st_2
4618 /*+HashJoin(t_1 t_2)*/
4619 EXPLAIN (COSTS false)
4620 SELECT recall_planner() FROM s1.t1 st_1
4621 JOIN s1.t2 st_2 ON (st_1.c1 = st_2.c1)
4630 CONTEXT: SQL function "recall_planner" during startup
4639 ----------------------------------------------
4641 Merge Cond: (st_1.c1 = st_2.c1)
4642 -> Index Only Scan using t1_i1 on t1 st_1
4645 -> Seq Scan on t2 st_2
4649 /*+HashJoin(st_1 st_2)*/
4650 EXPLAIN (COSTS false)
4651 SELECT recall_planner() FROM s1.t1 t_1
4652 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4661 CONTEXT: SQL function "recall_planner" during startup
4670 ---------------------------------------------
4672 Merge Cond: (t_1.c1 = t_2.c1)
4673 -> Index Only Scan using t1_i1 on t1 t_1
4676 -> Seq Scan on t2 t_2
4680 /*+HashJoin(t_1 t_1)*/
4681 EXPLAIN (COSTS false)
4682 SELECT recall_planner() FROM s1.t1 t_1
4684 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4685 DETAIL: Relation name "t_1" is duplicated.
4686 CONTEXT: SQL function "recall_planner" during startup
4694 CONTEXT: SQL function "recall_planner" during startup
4703 ---------------------------------------
4704 Index Only Scan using t1_i1 on t1 t_1
4708 CREATE OR REPLACE FUNCTION recall_planner_one_t() RETURNS int AS $$
4709 SELECT /*+ IndexScan(t_1) */t_1.c1
4711 ORDER BY t_1.c1 LIMIT 1;
4712 $$ LANGUAGE SQL IMMUTABLE;
4713 EXPLAIN (COSTS false)
4714 SELECT recall_planner_one_t() FROM s1.t1 t_1
4715 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4718 ---------------------------------------------
4720 Merge Cond: (t_1.c1 = t_2.c1)
4721 -> Index Only Scan using t1_i1 on t1 t_1
4724 -> Seq Scan on t2 t_2
4727 /*+HashJoin(t_1 t_1)*/
4728 EXPLAIN (COSTS false)
4729 SELECT recall_planner_one_t() FROM s1.t1 t_1
4730 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4739 CONTEXT: SQL function "recall_planner_one_t" during startup
4740 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4741 DETAIL: Relation name "t_1" is duplicated.
4750 ---------------------------------------------
4752 Merge Cond: (t_1.c1 = t_2.c1)
4753 -> Index Only Scan using t1_i1 on t1 t_1
4756 -> Seq Scan on t2 t_2
4759 DROP FUNCTION recall_planner_one_t(int);
4760 ERROR: function recall_planner_one_t(integer) does not exist
4762 /*+HashJoin(t_1 t_1)*/
4763 EXPLAIN (COSTS false)
4764 SELECT recall_planner() FROM s1.t1 t_1
4765 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4767 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4768 DETAIL: Relation name "t_1" is duplicated.
4769 CONTEXT: SQL function "recall_planner" during startup
4777 CONTEXT: SQL function "recall_planner" during startup
4778 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4779 DETAIL: Relation name "t_1" is duplicated.
4788 ---------------------------------------------
4790 Merge Cond: (t_1.c1 = t_2.c1)
4791 -> Index Only Scan using t1_i1 on t1 t_1
4794 -> Seq Scan on t2 t_2
4798 /*+MergeJoin(t_1 t_2)HashJoin(t_1 t_2)*/
4799 EXPLAIN (COSTS false)
4800 SELECT recall_planner() FROM s1.t1 t_1
4801 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4803 INFO: hint syntax error at or near "MergeJoin(t_1 t_2)HashJoin(t_1 t_2)"
4804 DETAIL: Conflict join method hint.
4805 INFO: hint syntax error at or near "MergeJoin(t_1 t_2)HashJoin(t_1 t_2)"
4806 DETAIL: Conflict join method hint.
4807 CONTEXT: SQL function "recall_planner" during startup
4816 CONTEXT: SQL function "recall_planner" during startup
4826 --------------------------------------
4830 Hash Cond: (t_1.c1 = t_2.c1)
4831 -> Seq Scan on t1 t_1
4833 -> Seq Scan on t2 t_2