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
66 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
68 ------------------------------
69 Index Scan using t1_i1 on t1
75 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
77 ------------------------------
78 Index Scan using t1_i1 on t1
83 /*+SeqScan(t1) /* nest comment */ */
84 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
85 INFO: hint syntax error at or near "/* nest comment */ */
86 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;"
87 DETAIL: Nested block comments are not supported.
89 ------------------------------
90 Index Scan using t1_i1 on t1
95 /* +SeqScan(t1) /* nest comment */ */
96 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
98 ------------------------------
99 Index Scan using t1_i1 on t1
104 /*SeqScan(t1) /* nest comment */ */
105 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
107 ------------------------------
108 Index Scan using t1_i1 on t1
113 ---- No. A-5-2 hint position
116 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
118 -----------------------------------
119 Index Only Scan using t1_i1 on t1
124 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
139 EXPLAIN (COSTS false) SELECT c1, c2 AS c_2 /*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
154 EXPLAIN (COSTS false) SELECT c1 AS "c1"/*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
156 -----------------------------------
157 Index Only Scan using t1_i1 on t1
162 EXPLAIN (COSTS false) SELECT * /*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
164 ------------------------------
165 Index Scan using t1_i1 on t1
170 ---- No. A-6-1 hint's table definition
172 SET pg_hint_plan.enable_hint_table TO on;
175 Table "hint_plan.hints"
176 Column | Type | Modifiers
177 -------------------+------+-----------
178 norm_query_string | text | not null
179 application_name | text | not null
180 hints | text | not null
182 "hints_pkey" PRIMARY KEY, btree (norm_query_string, application_name)
185 ---- No. A-6-2 search condition
187 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
189 ------------------------------
190 Index Scan using t1_i1 on t1
195 INSERT INTO hint_plan.hints VALUES (
196 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
199 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
214 INSERT INTO hint_plan.hints VALUES (
215 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
218 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
232 TRUNCATE hint_plan.hints;
234 INSERT INTO hint_plan.hints VALUES (
235 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
236 'dummy_application_name',
239 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
241 ------------------------------
242 Index Scan using t1_i1 on t1
246 TRUNCATE hint_plan.hints;
248 INSERT INTO hint_plan.hints VALUES (
249 'EXPLAIN (COSTS false) SELECT * FROM s1.t1;',
253 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
255 ------------------------------
256 Index Scan using t1_i1 on t1
260 TRUNCATE hint_plan.hints;
262 ---- No. A-6-3 number of constant
265 INSERT INTO hint_plan.hints VALUES (
266 'EXPLAIN (COSTS false) SELECT c1 FROM s1.t1;',
270 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1;
283 TRUNCATE hint_plan.hints;
285 INSERT INTO hint_plan.hints VALUES (
286 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
290 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
304 TRUNCATE hint_plan.hints;
306 INSERT INTO hint_plan.hints VALUES (
307 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ? OR t1.c1 = ?;',
311 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 OR t1.c1 = 0;
320 ----------------------------------
322 Filter: ((c1 = 1) OR (c1 = 0))
325 TRUNCATE hint_plan.hints;
326 SET pg_hint_plan.enable_hint_table TO off;
328 ---- No. A-7-2 hint delimiter
330 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
332 ------------------------------
333 Index Scan using t1_i1 on t1
344 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
345 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
348 Set(enable_bitmapscan off)
349 Set(enable_indexscan off)
361 /*+ Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
362 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
365 Set(enable_bitmapscan off)
366 Set(enable_indexscan off)
378 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off") */
379 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
382 Set(enable_bitmapscan off)
383 Set(enable_indexscan off)
395 /*+ Set (enable_indexscan"off") Set (enable_bitmapscan"off")*/
396 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
399 Set(enable_bitmapscan off)
400 Set(enable_indexscan off)
412 /*+Set ( enable_indexscan"off")Set ( enable_bitmapscan"off")*/
413 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
416 Set(enable_bitmapscan off)
417 Set(enable_indexscan off)
429 /*+Set(enable_indexscan"off" ) Set(enable_bitmapscan"off" ) */
430 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
433 Set(enable_bitmapscan off)
434 Set(enable_indexscan off)
446 /*+Set( enable_indexscan "off" )Set( enable_bitmapscan "off" )*/
447 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
450 Set(enable_bitmapscan off)
451 Set(enable_indexscan off)
463 /*+ Set ( enable_indexscan "off" ) Set ( enable_bitmapscan "off" ) */
464 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
467 Set(enable_bitmapscan off)
468 Set(enable_indexscan off)
480 /*+ Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
481 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
484 Set(enable_bitmapscan off)
485 Set(enable_indexscan off)
497 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off") */
498 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
501 Set(enable_bitmapscan off)
502 Set(enable_indexscan off)
514 /*+ Set (enable_indexscan"off") Set (enable_bitmapscan"off")*/
515 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
518 Set(enable_bitmapscan off)
519 Set(enable_indexscan off)
531 /*+Set ( enable_indexscan"off")Set ( enable_bitmapscan"off")*/
532 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
535 Set(enable_bitmapscan off)
536 Set(enable_indexscan off)
548 /*+Set(enable_indexscan"off" ) Set(enable_bitmapscan"off" ) */
549 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
552 Set(enable_bitmapscan off)
553 Set(enable_indexscan off)
565 /*+Set( enable_indexscan "off" )Set( enable_bitmapscan "off" )*/
566 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
569 Set(enable_bitmapscan off)
570 Set(enable_indexscan off)
582 /*+ Set ( enable_indexscan "off" ) Set ( enable_bitmapscan "off" ) */
583 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
586 Set(enable_bitmapscan off)
587 Set(enable_indexscan off)
600 Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
601 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
604 Set(enable_bitmapscan off)
605 Set(enable_indexscan off)
617 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")
619 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
622 Set(enable_bitmapscan off)
623 Set(enable_indexscan off)
637 (enable_indexscan"off")
639 (enable_bitmapscan"off")*/
640 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
643 Set(enable_bitmapscan off)
644 Set(enable_indexscan off)
658 enable_indexscan"off")Set
660 enable_bitmapscan"off")*/
661 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
664 Set(enable_bitmapscan off)
665 Set(enable_indexscan off)
677 /*+Set(enable_indexscan"off"
679 Set(enable_bitmapscan"off"
682 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
685 Set(enable_bitmapscan off)
686 Set(enable_indexscan off)
705 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
708 Set(enable_bitmapscan off)
709 Set(enable_indexscan off)
733 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
736 Set(enable_bitmapscan off)
737 Set(enable_indexscan off)
750 Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
751 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
754 Set(enable_bitmapscan off)
755 Set(enable_indexscan off)
767 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")
769 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
772 Set(enable_bitmapscan off)
773 Set(enable_indexscan off)
787 (enable_indexscan"off")
789 (enable_bitmapscan"off")*/
790 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
793 Set(enable_bitmapscan off)
794 Set(enable_indexscan off)
808 enable_indexscan"off")Set
810 enable_bitmapscan"off")*/
811 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
814 Set(enable_bitmapscan off)
815 Set(enable_indexscan off)
827 /*+Set(enable_indexscan"off"
829 Set(enable_bitmapscan"off"
832 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
835 Set(enable_bitmapscan off)
836 Set(enable_indexscan off)
855 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
858 Set(enable_bitmapscan off)
859 Set(enable_indexscan off)
883 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
886 Set(enable_bitmapscan off)
887 Set(enable_indexscan off)
899 ---- No. A-7-3 hint object pattern
900 ---- No. A-9-2 message object pattern
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;
935 EXPLAIN (COSTS false) SELECT * FROM s1.t1 t WHERE t.c1 = 1;
950 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ttt WHERE ttt.c1 = 1;
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 ----------------------
997 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "T" WHERE "T".c1 = 1;
1006 --------------------
1012 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "TTT" WHERE "TTT".c1 = 1;
1021 ----------------------
1022 Seq Scan on t1 "TTT"
1029 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(" WHERE "(".c1 = 1;
1030 INFO: hint syntax error at or near "()"
1031 DETAIL: Zero-length delimited string.
1033 ----------------------------------
1034 Index Scan using t1_i1 on t1 "("
1035 Index Cond: (c1 = 1)
1039 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(" WHERE "(".c1 = 1;
1048 --------------------
1056 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ")" WHERE ")".c1 = 1;
1057 INFO: hint syntax error at or near ")"
1058 DETAIL: SeqScan hint requires a relation.
1059 INFO: hint syntax error at or near ")"
1060 DETAIL: Unrecognized hint keyword ")".
1069 ----------------------------------
1070 Index Scan using t1_i1 on t1 ")"
1071 Index Cond: (c1 = 1)
1075 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ")" WHERE ")".c1 = 1;
1084 --------------------
1090 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ")))" WHERE ")))".c1 = 1;
1099 ----------------------
1100 Seq Scan on t1 ")))"
1107 EXPLAIN (COSTS false) SELECT * FROM s1.t1 """" WHERE """".c1 = 1;
1108 INFO: hint syntax error at or near ""
1109 DETAIL: Unterminated quoted string.
1111 -----------------------------------
1112 Index Scan using t1_i1 on t1 """"
1113 Index Cond: (c1 = 1)
1117 EXPLAIN (COSTS false) SELECT * FROM s1.t1 """" WHERE """".c1 = 1;
1126 ---------------------
1131 /*+SeqScan("""""""")*/
1132 EXPLAIN (COSTS false) SELECT * FROM s1.t1 """""""" WHERE """""""".c1 = 1;
1141 -------------------------
1142 Seq Scan on t1 """"""""
1149 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1150 INFO: hint syntax error at or near ""
1151 DETAIL: SeqScan hint requires a relation.
1160 ----------------------------------
1161 Index Scan using t1_i1 on t1 " "
1162 Index Cond: (c1 = 1)
1166 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1175 --------------------
1181 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1190 ----------------------
1198 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1199 INFO: hint syntax error at or near ""
1200 DETAIL: SeqScan hint requires a relation.
1209 -----------------------------------
1210 Index Scan using t1_i1 on t1 " "
1211 Index Cond: (c1 = 1)
1215 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1224 ---------------------------
1230 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1239 -------------------------------------------
1248 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "
1251 INFO: hint syntax error at or near ""
1252 DETAIL: SeqScan hint requires a relation.
1261 --------------------------------
1262 Index Scan using t1_i1 on t1 "
1264 Index Cond: (c1 = 1)
1269 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "
1281 --------------------
1291 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "
1309 --------------------
1320 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "Set" WHERE "Set".c1 = 1;
1329 ----------------------
1330 Seq Scan on t1 "Set"
1335 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "Set" WHERE "Set".c1 = 1;
1344 ----------------------
1345 Seq Scan on t1 "Set"
1349 /*+SeqScan("Set SeqScan Leading")*/
1350 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "Set SeqScan Leading" WHERE "Set SeqScan Leading".c1 = 1;
1353 SeqScan("Set SeqScan Leading")
1359 --------------------------------------
1360 Seq Scan on t1 "Set SeqScan Leading"
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 "あいう"
1397 EXPLAIN (COSTS false) SELECT * FROM s1.t1 あ WHERE あ.c1 = 1;
1406 ---------------------
1412 EXPLAIN (COSTS false) SELECT * FROM s1.t1 あいう WHERE あいう.c1 = 1;
1421 -------------------------
1422 Seq Scan on t1 "あいう"
1429 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**/" WHERE "/**/".c1 = 1;
1430 INFO: hint syntax error at or near "/**/)*/
1431 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**/" WHERE "/**/".c1 = 1;"
1432 DETAIL: Nested block comments are not supported.
1434 -------------------------------------
1435 Index Scan using t1_i1 on t1 "/**/"
1436 Index Cond: (c1 = 1)
1439 /*+SeqScan(/**//**//**/)*/
1440 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**//**//**/" WHERE "/**//**//**/".c1 = 1;
1441 INFO: hint syntax error at or near "/**//**//**/)*/
1442 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**//**//**/" WHERE "/**//**//**/".c1 = 1;"
1443 DETAIL: Nested block comments are not supported.
1445 ---------------------------------------------
1446 Index Scan using t1_i1 on t1 "/**//**//**/"
1447 Index Cond: (c1 = 1)
1454 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""
1455 Set/**/あ" WHERE "tT()""
1457 INFO: hint syntax error at or near "/**/あ")*/
1458 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""
1459 Set/**/あ" WHERE "tT()""
1461 DETAIL: Nested block comments are not supported.
1463 ------------------------------------------
1464 Index Scan using t1_i1 on t1 "tT()""
1466 Index Cond: (c1 = 1)
1472 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""
1484 --------------------------
1485 Seq Scan on t1 "tT()""
1491 ---- No. A-7-4 hint parse error
1494 /*+Set(enable_indexscan off)Set enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
1495 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1496 INFO: hint syntax error at or near "enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
1497 DETAIL: Opening parenthesis is necessary.
1500 Set(enable_indexscan off)
1506 ----------------------------------
1507 Bitmap Heap Scan on t1
1508 Recheck Cond: (c1 = 1)
1509 -> Bitmap Index Scan on t1_i1
1510 Index Cond: (c1 = 1)
1514 /*+Set(enable_indexscan off)Set(enable_tidscan off Set(enable_bitmapscan off)SeqScan(t1)*/
1515 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1516 INFO: hint syntax error at or near "(enable_bitmapscan off)SeqScan(t1)"
1517 DETAIL: Zero-length delimited string.
1520 Set(enable_indexscan off)
1526 ----------------------------------
1527 Bitmap Heap Scan on t1
1528 Recheck Cond: (c1 = 1)
1529 -> Bitmap Index Scan on t1_i1
1530 Index Cond: (c1 = 1)
1534 /*+Set(enable_indexscan off)Set(enable_tidscan "off)Set(enable_bitmapscan off)SeqScan(t1)*/
1535 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1536 INFO: hint syntax error at or near ""
1537 DETAIL: Unterminated quoted string.
1540 Set(enable_indexscan off)
1546 ----------------------------------
1547 Bitmap Heap Scan on t1
1548 Recheck Cond: (c1 = 1)
1549 -> Bitmap Index Scan on t1_i1
1550 Index Cond: (c1 = 1)
1554 /*+Set(enable_indexscan off)SeqScan("")Set(enable_bitmapscan off)*/
1555 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1556 INFO: hint syntax error at or near ")Set(enable_bitmapscan off)"
1557 DETAIL: Zero-length delimited string.
1560 Set(enable_indexscan off)
1566 ----------------------------------
1567 Bitmap Heap Scan on t1
1568 Recheck Cond: (c1 = 1)
1569 -> Bitmap Index Scan on t1_i1
1570 Index Cond: (c1 = 1)
1574 /*+Set(enable_indexscan off)NoSet(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
1575 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1576 INFO: hint syntax error at or near "NoSet(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
1577 DETAIL: Unrecognized hint keyword "NoSet".
1580 Set(enable_indexscan off)
1586 ----------------------------------
1587 Bitmap Heap Scan on t1
1588 Recheck Cond: (c1 = 1)
1589 -> Bitmap Index Scan on t1_i1
1590 Index Cond: (c1 = 1)
1594 /*+Set(enable_indexscan off)"Set"(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
1595 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1596 INFO: hint syntax error at or near ""Set"(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
1597 DETAIL: Unrecognized hint keyword ""Set"".
1600 Set(enable_indexscan off)
1606 ----------------------------------
1607 Bitmap Heap Scan on t1
1608 Recheck Cond: (c1 = 1)
1609 -> Bitmap Index Scan on t1_i1
1610 Index Cond: (c1 = 1)
1614 /*+Set(enable_indexscan off)Set(enable_tidscan /* value */off)Set(enable_bitmapscan off)SeqScan(t1)*/
1615 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1616 INFO: hint syntax error at or near "/* value */off)Set(enable_bitmapscan off)SeqScan(t1)*/
1617 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;"
1618 DETAIL: Nested block comments are not supported.
1620 ------------------------------
1621 Index Scan using t1_i1 on t1
1622 Index Cond: (c1 = 1)
1626 ---- No. A-8-1 original GUC parameter
1629 SET ROLE super_user;
1630 SET pg_hint_plan.debug_print TO off;
1631 SHOW pg_hint_plan.enable_hint;
1632 pg_hint_plan.enable_hint
1633 --------------------------
1637 SHOW pg_hint_plan.debug_print;
1638 pg_hint_plan.debug_print
1639 --------------------------
1643 SHOW pg_hint_plan.parse_messages;
1644 pg_hint_plan.parse_messages
1645 -----------------------------
1649 SET pg_hint_plan.enable_hint TO off;
1650 SET pg_hint_plan.debug_print TO on;
1651 SET pg_hint_plan.parse_messages TO error;
1652 SHOW pg_hint_plan.enable_hint;
1653 pg_hint_plan.enable_hint
1654 --------------------------
1658 SHOW pg_hint_plan.debug_print;
1659 pg_hint_plan.debug_print
1660 --------------------------
1664 SHOW pg_hint_plan.parse_messages;
1665 pg_hint_plan.parse_messages
1666 -----------------------------
1670 RESET pg_hint_plan.enable_hint;
1671 RESET pg_hint_plan.debug_print;
1672 RESET pg_hint_plan.parse_messages;
1673 SHOW pg_hint_plan.enable_hint;
1674 pg_hint_plan.enable_hint
1675 --------------------------
1679 SHOW pg_hint_plan.debug_print;
1680 pg_hint_plan.debug_print
1681 --------------------------
1685 SHOW pg_hint_plan.parse_messages;
1686 pg_hint_plan.parse_messages
1687 -----------------------------
1692 SET ROLE normal_user;
1693 SHOW pg_hint_plan.enable_hint;
1694 pg_hint_plan.enable_hint
1695 --------------------------
1699 SHOW pg_hint_plan.debug_print;
1700 pg_hint_plan.debug_print
1701 --------------------------
1705 SHOW pg_hint_plan.parse_messages;
1706 pg_hint_plan.parse_messages
1707 -----------------------------
1711 SET pg_hint_plan.enable_hint TO off;
1712 SET pg_hint_plan.debug_print TO on;
1713 SET pg_hint_plan.parse_messages TO error;
1714 SHOW pg_hint_plan.enable_hint;
1715 pg_hint_plan.enable_hint
1716 --------------------------
1720 SHOW pg_hint_plan.debug_print;
1721 pg_hint_plan.debug_print
1722 --------------------------
1726 SHOW pg_hint_plan.parse_messages;
1727 pg_hint_plan.parse_messages
1728 -----------------------------
1732 RESET pg_hint_plan.enable_hint;
1733 RESET pg_hint_plan.debug_print;
1734 RESET pg_hint_plan.parse_messages;
1735 SHOW pg_hint_plan.enable_hint;
1736 pg_hint_plan.enable_hint
1737 --------------------------
1741 SHOW pg_hint_plan.debug_print;
1742 pg_hint_plan.debug_print
1743 --------------------------
1747 SHOW pg_hint_plan.parse_messages;
1748 pg_hint_plan.parse_messages
1749 -----------------------------
1755 ---- No. A-8-2 original GUC parameter pg_hint_plan.enable_hint
1758 SET pg_hint_plan.enable_hint TO on;
1759 SHOW pg_hint_plan.enable_hint;
1760 pg_hint_plan.enable_hint
1761 --------------------------
1765 /*+Set(enable_indexscan off)*/
1766 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1768 ----------------------------------
1769 Bitmap Heap Scan on t1
1770 Recheck Cond: (c1 = 1)
1771 -> Bitmap Index Scan on t1_i1
1772 Index Cond: (c1 = 1)
1776 SET pg_hint_plan.enable_hint TO off;
1777 SHOW pg_hint_plan.enable_hint;
1778 pg_hint_plan.enable_hint
1779 --------------------------
1783 /*+Set(enable_indexscan off)*/
1784 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1786 ------------------------------
1787 Index Scan using t1_i1 on t1
1788 Index Cond: (c1 = 1)
1792 SET pg_hint_plan.enable_hint TO DEFAULT;
1793 SHOW pg_hint_plan.enable_hint;
1794 pg_hint_plan.enable_hint
1795 --------------------------
1799 /*+Set(enable_indexscan off)*/
1800 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1802 ----------------------------------
1803 Bitmap Heap Scan on t1
1804 Recheck Cond: (c1 = 1)
1805 -> Bitmap Index Scan on t1_i1
1806 Index Cond: (c1 = 1)
1810 SET pg_hint_plan.enable_hint TO enable;
1811 ERROR: parameter "pg_hint_plan.enable_hint" requires a Boolean value
1812 SHOW pg_hint_plan.enable_hint;
1813 pg_hint_plan.enable_hint
1814 --------------------------
1819 ---- No. A-8-3 original GUC parameter pg_hint_plan.debug_print
1822 SET pg_hint_plan.debug_print TO on;
1823 SHOW pg_hint_plan.debug_print;
1824 pg_hint_plan.debug_print
1825 --------------------------
1829 /*+Set(enable_indexscan off)*/
1830 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1833 Set(enable_indexscan off)
1839 ----------------------------------
1840 Bitmap Heap Scan on t1
1841 Recheck Cond: (c1 = 1)
1842 -> Bitmap Index Scan on t1_i1
1843 Index Cond: (c1 = 1)
1847 SET pg_hint_plan.debug_print TO off;
1848 SHOW pg_hint_plan.debug_print;
1849 pg_hint_plan.debug_print
1850 --------------------------
1854 /*+Set(enable_indexscan off)*/
1855 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1857 ----------------------------------
1858 Bitmap Heap Scan on t1
1859 Recheck Cond: (c1 = 1)
1860 -> Bitmap Index Scan on t1_i1
1861 Index Cond: (c1 = 1)
1865 SET pg_hint_plan.debug_print TO DEFAULT;
1866 SHOW pg_hint_plan.debug_print;
1867 pg_hint_plan.debug_print
1868 --------------------------
1872 /*+Set(enable_indexscan off)*/
1873 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1875 ----------------------------------
1876 Bitmap Heap Scan on t1
1877 Recheck Cond: (c1 = 1)
1878 -> Bitmap Index Scan on t1_i1
1879 Index Cond: (c1 = 1)
1883 SET pg_hint_plan.debug_print TO enable;
1884 ERROR: parameter "pg_hint_plan.debug_print" requires a Boolean value
1885 SHOW pg_hint_plan.debug_print;
1886 pg_hint_plan.debug_print
1887 --------------------------
1892 ---- No. A-8-4 original GUC parameter pg_hint_plan.parse_messages
1894 SET client_min_messages TO debug5;
1895 DEBUG: CommitTransactionCommand
1896 DEBUG: CommitTransaction
1897 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1899 SET pg_hint_plan.parse_messages TO debug5;
1900 DEBUG: StartTransactionCommand
1901 DEBUG: StartTransaction
1902 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1903 DEBUG: ProcessUtility
1904 DEBUG: CommitTransactionCommand
1905 DEBUG: CommitTransaction
1906 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1907 SHOW pg_hint_plan.parse_messages;
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: ProcessUtility
1912 DEBUG: CommitTransactionCommand
1913 DEBUG: CommitTransaction
1914 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1915 pg_hint_plan.parse_messages
1916 -----------------------------
1921 DEBUG: StartTransactionCommand
1922 DEBUG: StartTransaction
1923 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1924 DEBUG: hint syntax error at or near ""
1925 DETAIL: Opening parenthesis is necessary.
1926 DEBUG: CommitTransactionCommand
1927 DEBUG: CommitTransaction
1928 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1934 SET client_min_messages TO debug4;
1935 DEBUG: StartTransactionCommand
1936 DEBUG: StartTransaction
1937 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1938 DEBUG: ProcessUtility
1939 DEBUG: CommitTransactionCommand
1940 DEBUG: CommitTransaction
1941 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
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: CommitTransactionCommand
1947 DEBUG: CommitTransaction
1948 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1955 SET pg_hint_plan.parse_messages TO debug4;
1956 DEBUG: StartTransactionCommand
1957 DEBUG: StartTransaction
1958 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1959 DEBUG: ProcessUtility
1960 DEBUG: CommitTransactionCommand
1961 DEBUG: CommitTransaction
1962 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1963 SHOW pg_hint_plan.parse_messages;
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: ProcessUtility
1968 DEBUG: CommitTransactionCommand
1969 DEBUG: CommitTransaction
1970 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1971 pg_hint_plan.parse_messages
1972 -----------------------------
1977 DEBUG: StartTransactionCommand
1978 DEBUG: StartTransaction
1979 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1980 DEBUG: hint syntax error at or near ""
1981 DETAIL: Opening parenthesis is necessary.
1982 DEBUG: CommitTransactionCommand
1983 DEBUG: CommitTransaction
1984 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1990 SET client_min_messages TO debug3;
1991 DEBUG: StartTransactionCommand
1992 DEBUG: StartTransaction
1993 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1994 DEBUG: ProcessUtility
1995 DEBUG: CommitTransactionCommand
1996 DEBUG: CommitTransaction
1997 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
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: CommitTransactionCommand
2003 DEBUG: CommitTransaction
2004 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2011 SET pg_hint_plan.parse_messages TO debug3;
2012 DEBUG: StartTransactionCommand
2013 DEBUG: StartTransaction
2014 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2015 DEBUG: ProcessUtility
2016 DEBUG: CommitTransactionCommand
2017 DEBUG: CommitTransaction
2018 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2019 SHOW pg_hint_plan.parse_messages;
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: ProcessUtility
2024 DEBUG: CommitTransactionCommand
2025 DEBUG: CommitTransaction
2026 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2027 pg_hint_plan.parse_messages
2028 -----------------------------
2033 DEBUG: StartTransactionCommand
2034 DEBUG: StartTransaction
2035 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2036 DEBUG: hint syntax error at or near ""
2037 DETAIL: Opening parenthesis is necessary.
2038 DEBUG: CommitTransactionCommand
2039 DEBUG: CommitTransaction
2040 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2046 SET client_min_messages TO debug2;
2047 DEBUG: StartTransactionCommand
2048 DEBUG: StartTransaction
2049 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2050 DEBUG: ProcessUtility
2058 SET pg_hint_plan.parse_messages TO debug2;
2059 SHOW pg_hint_plan.parse_messages;
2060 pg_hint_plan.parse_messages
2061 -----------------------------
2066 DEBUG: hint syntax error at or near ""
2067 DETAIL: Opening parenthesis is necessary.
2073 SET client_min_messages TO debug1;
2081 SET pg_hint_plan.parse_messages TO debug1;
2082 SHOW pg_hint_plan.parse_messages;
2083 pg_hint_plan.parse_messages
2084 -----------------------------
2089 DEBUG: hint syntax error at or near ""
2090 DETAIL: Opening parenthesis is necessary.
2096 SET client_min_messages TO log;
2104 SET pg_hint_plan.parse_messages TO log;
2105 SHOW pg_hint_plan.parse_messages;
2106 pg_hint_plan.parse_messages
2107 -----------------------------
2112 LOG: hint syntax error at or near ""
2113 DETAIL: Opening parenthesis is necessary.
2119 SET client_min_messages TO info;
2127 SET pg_hint_plan.parse_messages TO info;
2128 SHOW pg_hint_plan.parse_messages;
2129 pg_hint_plan.parse_messages
2130 -----------------------------
2135 INFO: hint syntax error at or near ""
2136 DETAIL: Opening parenthesis is necessary.
2142 SET client_min_messages TO notice;
2144 INFO: hint syntax error at or near ""
2145 DETAIL: Opening parenthesis is necessary.
2152 SET pg_hint_plan.parse_messages TO notice;
2153 SHOW pg_hint_plan.parse_messages;
2154 pg_hint_plan.parse_messages
2155 -----------------------------
2160 NOTICE: hint syntax error at or near ""
2161 DETAIL: Opening parenthesis is necessary.
2167 SET client_min_messages TO warning;
2175 SET pg_hint_plan.parse_messages TO warning;
2176 SHOW pg_hint_plan.parse_messages;
2177 pg_hint_plan.parse_messages
2178 -----------------------------
2183 WARNING: hint syntax error at or near ""
2184 DETAIL: Opening parenthesis is necessary.
2190 SET client_min_messages TO error;
2198 SET pg_hint_plan.parse_messages TO error;
2199 SHOW pg_hint_plan.parse_messages;
2200 pg_hint_plan.parse_messages
2201 -----------------------------
2206 ERROR: hint syntax error at or near ""
2207 DETAIL: Opening parenthesis is necessary.
2208 SET client_min_messages TO fatal;
2211 RESET client_min_messages;
2212 SET pg_hint_plan.parse_messages TO DEFAULT;
2213 SHOW pg_hint_plan.parse_messages;
2214 pg_hint_plan.parse_messages
2215 -----------------------------
2220 INFO: hint syntax error at or near ""
2221 DETAIL: Opening parenthesis is necessary.
2228 SET pg_hint_plan.parse_messages TO fatal;
2229 ERROR: invalid value for parameter "pg_hint_plan.parse_messages": "fatal"
2230 HINT: Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
2231 SHOW pg_hint_plan.parse_messages;
2232 pg_hint_plan.parse_messages
2233 -----------------------------
2238 SET pg_hint_plan.parse_messages TO panic;
2239 ERROR: invalid value for parameter "pg_hint_plan.parse_messages": "panic"
2240 HINT: Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
2241 SHOW pg_hint_plan.parse_messages;
2242 pg_hint_plan.parse_messages
2243 -----------------------------
2248 SET pg_hint_plan.parse_messages TO on;
2249 ERROR: invalid value for parameter "pg_hint_plan.parse_messages": "on"
2250 HINT: Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
2251 SHOW pg_hint_plan.parse_messages;
2252 pg_hint_plan.parse_messages
2253 -----------------------------
2258 ---- No. A-8-5 original GUC parameter pg_hint_plan.enable_hint_table
2260 INSERT INTO hint_plan.hints VALUES (
2261 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
2265 SET pg_hint_plan.enable_hint_table TO on;
2266 SHOW pg_hint_plan.enable_hint_table;
2267 pg_hint_plan.enable_hint_table
2268 --------------------------------
2272 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2274 --------------------
2280 SET pg_hint_plan.enable_hint_table TO off;
2281 SHOW pg_hint_plan.enable_hint_table;
2282 pg_hint_plan.enable_hint_table
2283 --------------------------------
2287 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2289 ------------------------------
2290 Index Scan using t1_i1 on t1
2291 Index Cond: (c1 = 1)
2295 SET pg_hint_plan.enable_hint_table TO DEFAULT;
2296 SHOW pg_hint_plan.enable_hint_table;
2297 pg_hint_plan.enable_hint_table
2298 --------------------------------
2302 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2304 ------------------------------
2305 Index Scan using t1_i1 on t1
2306 Index Cond: (c1 = 1)
2310 SET pg_hint_plan.enable_hint_table TO enable;
2311 ERROR: parameter "pg_hint_plan.enable_hint_table" requires a Boolean value
2312 SHOW pg_hint_plan.enable_hint_table;
2313 pg_hint_plan.enable_hint_table
2314 --------------------------------
2318 TRUNCATE hint_plan.hints;
2320 ---- No. A-9-1 parse error message output
2323 /*+"Set"(enable_indexscan on)*/SELECT 1;
2324 INFO: hint syntax error at or near ""Set"(enable_indexscan on)"
2325 DETAIL: Unrecognized hint keyword ""Set"".
2331 /*+Set()(enable_indexscan on)*/SELECT 1;
2332 INFO: hint syntax error at or near "Set()(enable_indexscan on)"
2333 DETAIL: Set hint requires name and value of GUC parameter.
2334 INFO: hint syntax error at or near "(enable_indexscan on)"
2335 DETAIL: Unrecognized hint keyword "".
2341 /*+Set(enable_indexscan on*/SELECT 1;
2342 INFO: hint syntax error at or near ""
2343 DETAIL: Closing parenthesis is necessary.
2350 ---- No. A-9-3 hint state output
2352 SET pg_hint_plan.debug_print TO on;
2353 SET client_min_messages TO LOG;
2356 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2365 --------------------
2371 /*+SeqScan(no_table)*/
2372 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2381 ------------------------------
2382 Index Scan using t1_i1 on t1
2383 Index Cond: (c1 = 1)
2387 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2389 -----------------------------------
2391 TID Cond: (ctid = '(1,1)'::tid)
2395 /*+TidScan(t1)BitmapScan(t1)*/
2396 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2397 INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)"
2398 DETAIL: Conflict scan method hint.
2408 ----------------------------------
2409 Bitmap Heap Scan on t1
2410 Recheck Cond: (c1 = 1)
2411 Filter: (ctid = '(1,1)'::tid)
2412 -> Bitmap Index Scan on t1_i1
2413 Index Cond: (c1 = 1)
2416 /*+TidScan(t1)BitmapScan(t1)IndexScan(t1)*/
2417 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2418 INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)IndexScan(t1)"
2419 DETAIL: Conflict scan method hint.
2420 INFO: hint syntax error at or near "BitmapScan(t1)IndexScan(t1)"
2421 DETAIL: Conflict scan method hint.
2432 ---------------------------------
2433 Index Scan using t1_i1 on t1
2434 Index Cond: (c1 = 1)
2435 Filter: (ctid = '(1,1)'::tid)
2438 /*+TidScan(t1)BitmapScan(t1)IndexScan(t1)SeqScan(t1)*/
2439 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2440 INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)IndexScan(t1)SeqScan(t1)"
2441 DETAIL: Conflict scan method hint.
2442 INFO: hint syntax error at or near "BitmapScan(t1)IndexScan(t1)SeqScan(t1)"
2443 DETAIL: Conflict scan method hint.
2444 INFO: hint syntax error at or near "IndexScan(t1)SeqScan(t1)"
2445 DETAIL: Conflict scan method hint.
2457 ------------------------------------------------
2459 Filter: ((c1 = 1) AND (ctid = '(1,1)'::tid))
2463 /*+Set(enable_indexscan enable)*/
2464 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2465 INFO: parameter "enable_indexscan" requires a Boolean value
2471 Set(enable_indexscan enable)
2474 ------------------------------
2475 Index Scan using t1_i1 on t1
2476 Index Cond: (c1 = 1)
2480 ---- No. A-10-1 hint state output
2482 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2483 EXPLAIN (COSTS false) EXECUTE p1;
2485 ------------------------------
2486 Index Scan using t1_i1 on t1
2487 Index Cond: (c1 = 1)
2491 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2492 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2494 -----------------------
2499 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2501 -----------------------
2506 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2508 -----------------------
2513 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2515 -----------------------
2520 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2522 -----------------------
2527 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2529 ---------------------
2538 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2540 EXPLAIN (COSTS false) EXECUTE p1;
2549 --------------------
2554 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2556 EXPLAIN (COSTS false) EXECUTE p1;
2565 --------------------
2572 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2574 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2583 ----------------------------------
2584 Bitmap Heap Scan on t1
2585 Recheck Cond: (c1 < 1000)
2586 -> Bitmap Index Scan on t1_i1
2587 Index Cond: (c1 < 1000)
2591 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2600 ----------------------------------
2601 Bitmap Heap Scan on t1
2602 Recheck Cond: (c1 < 1000)
2603 -> Bitmap Index Scan on t1_i1
2604 Index Cond: (c1 < 1000)
2608 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2617 ----------------------------------
2618 Bitmap Heap Scan on t1
2619 Recheck Cond: (c1 < 1000)
2620 -> Bitmap Index Scan on t1_i1
2621 Index Cond: (c1 < 1000)
2625 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2634 ----------------------------------
2635 Bitmap Heap Scan on t1
2636 Recheck Cond: (c1 < 1000)
2637 -> Bitmap Index Scan on t1_i1
2638 Index Cond: (c1 < 1000)
2642 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2651 ----------------------------------
2652 Bitmap Heap Scan on t1
2653 Recheck Cond: (c1 < 1000)
2654 -> Bitmap Index Scan on t1_i1
2655 Index Cond: (c1 < 1000)
2659 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2668 ----------------------------------
2669 Bitmap Heap Scan on t1
2670 Recheck Cond: (c1 < $1)
2671 -> Bitmap Index Scan on t1_i1
2672 Index Cond: (c1 < $1)
2675 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2677 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2686 ----------------------------------
2687 Bitmap Heap Scan on t1
2688 Recheck Cond: (c1 < $1)
2689 -> Bitmap Index Scan on t1_i1
2690 Index Cond: (c1 < $1)
2697 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2698 EXPLAIN (COSTS false) EXECUTE p1;
2707 --------------------
2712 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2713 EXPLAIN (COSTS false) EXECUTE p1;
2722 --------------------
2729 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2730 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2739 ----------------------------------
2740 Bitmap Heap Scan on t1
2741 Recheck Cond: (c1 < 1000)
2742 -> Bitmap Index Scan on t1_i1
2743 Index Cond: (c1 < 1000)
2746 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2755 ----------------------------------
2756 Bitmap Heap Scan on t1
2757 Recheck Cond: (c1 < 1000)
2758 -> Bitmap Index Scan on t1_i1
2759 Index Cond: (c1 < 1000)
2762 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2771 ----------------------------------
2772 Bitmap Heap Scan on t1
2773 Recheck Cond: (c1 < 1000)
2774 -> Bitmap Index Scan on t1_i1
2775 Index Cond: (c1 < 1000)
2778 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2787 ----------------------------------
2788 Bitmap Heap Scan on t1
2789 Recheck Cond: (c1 < 1000)
2790 -> Bitmap Index Scan on t1_i1
2791 Index Cond: (c1 < 1000)
2794 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2803 ----------------------------------
2804 Bitmap Heap Scan on t1
2805 Recheck Cond: (c1 < 1000)
2806 -> Bitmap Index Scan on t1_i1
2807 Index Cond: (c1 < 1000)
2810 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2819 ----------------------------------
2820 Bitmap Heap Scan on t1
2821 Recheck Cond: (c1 < $1)
2822 -> Bitmap Index Scan on t1_i1
2823 Index Cond: (c1 < $1)
2826 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2827 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2836 ----------------------------------
2837 Bitmap Heap Scan on t1
2838 Recheck Cond: (c1 < $1)
2839 -> Bitmap Index Scan on t1_i1
2840 Index Cond: (c1 < $1)
2846 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2848 EXPLAIN (COSTS false) EXECUTE p1;
2850 ------------------------------
2851 Index Scan using t1_i1 on t1
2852 Index Cond: (c1 = 1)
2855 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2857 EXPLAIN (COSTS false) EXECUTE p1;
2859 ------------------------------
2860 Index Scan using t1_i1 on t1
2861 Index Cond: (c1 = 1)
2865 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2867 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2869 -----------------------
2874 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2876 -----------------------
2881 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2883 -----------------------
2888 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2890 -----------------------
2895 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2897 -----------------------
2902 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2904 ---------------------
2909 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2911 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2913 ---------------------
2922 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2924 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
2933 --------------------
2938 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2940 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
2949 --------------------
2956 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2958 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2967 ----------------------------------
2968 Bitmap Heap Scan on t1
2969 Recheck Cond: (c1 < 1000)
2970 -> Bitmap Index Scan on t1_i1
2971 Index Cond: (c1 < 1000)
2975 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2984 ----------------------------------
2985 Bitmap Heap Scan on t1
2986 Recheck Cond: (c1 < 1000)
2987 -> Bitmap Index Scan on t1_i1
2988 Index Cond: (c1 < 1000)
2992 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3001 ----------------------------------
3002 Bitmap Heap Scan on t1
3003 Recheck Cond: (c1 < 1000)
3004 -> Bitmap Index Scan on t1_i1
3005 Index Cond: (c1 < 1000)
3009 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3018 ----------------------------------
3019 Bitmap Heap Scan on t1
3020 Recheck Cond: (c1 < 1000)
3021 -> Bitmap Index Scan on t1_i1
3022 Index Cond: (c1 < 1000)
3026 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3035 ----------------------------------
3036 Bitmap Heap Scan on t1
3037 Recheck Cond: (c1 < 1000)
3038 -> Bitmap Index Scan on t1_i1
3039 Index Cond: (c1 < 1000)
3043 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3052 ----------------------------------
3053 Bitmap Heap Scan on t1
3054 Recheck Cond: (c1 < $1)
3055 -> Bitmap Index Scan on t1_i1
3056 Index Cond: (c1 < $1)
3059 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3061 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3070 ----------------------------------
3071 Bitmap Heap Scan on t1
3072 Recheck Cond: (c1 < $1)
3073 -> Bitmap Index Scan on t1_i1
3074 Index Cond: (c1 < $1)
3081 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3082 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
3091 --------------------
3096 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3097 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
3106 --------------------
3113 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
3114 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3123 ----------------------------------
3124 Bitmap Heap Scan on t1
3125 Recheck Cond: (c1 < 1000)
3126 -> Bitmap Index Scan on t1_i1
3127 Index Cond: (c1 < 1000)
3130 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3139 ----------------------------------
3140 Bitmap Heap Scan on t1
3141 Recheck Cond: (c1 < 1000)
3142 -> Bitmap Index Scan on t1_i1
3143 Index Cond: (c1 < 1000)
3146 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3155 ----------------------------------
3156 Bitmap Heap Scan on t1
3157 Recheck Cond: (c1 < 1000)
3158 -> Bitmap Index Scan on t1_i1
3159 Index Cond: (c1 < 1000)
3162 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3171 ----------------------------------
3172 Bitmap Heap Scan on t1
3173 Recheck Cond: (c1 < 1000)
3174 -> Bitmap Index Scan on t1_i1
3175 Index Cond: (c1 < 1000)
3178 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3187 ----------------------------------
3188 Bitmap Heap Scan on t1
3189 Recheck Cond: (c1 < 1000)
3190 -> Bitmap Index Scan on t1_i1
3191 Index Cond: (c1 < 1000)
3194 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3203 ----------------------------------
3204 Bitmap Heap Scan on t1
3205 Recheck Cond: (c1 < $1)
3206 -> Bitmap Index Scan on t1_i1
3207 Index Cond: (c1 < $1)
3210 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3211 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3220 ----------------------------------
3221 Bitmap Heap Scan on t1
3222 Recheck Cond: (c1 < $1)
3223 -> Bitmap Index Scan on t1_i1
3224 Index Cond: (c1 < $1)
3230 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3232 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
3234 ------------------------------
3235 Index Scan using t1_i1 on t1
3236 Index Cond: (c1 = 1)
3239 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3241 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
3243 ------------------------------
3244 Index Scan using t1_i1 on t1
3245 Index Cond: (c1 = 1)
3249 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
3251 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3253 -----------------------
3259 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3261 -----------------------
3267 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3269 -----------------------
3275 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3277 -----------------------
3283 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3285 -----------------------
3291 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3293 ---------------------
3298 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3300 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3302 ---------------------
3309 ---- No. A-10-4 EXECUTE statement name error
3313 ERROR: prepared statement "p1" does not exist
3314 SHOW pg_hint_plan.debug_print;
3315 pg_hint_plan.debug_print
3316 --------------------------
3321 ---- No. A-11-5 EXECUTE statement name error
3324 SELECT pg_stat_statements_reset();
3325 pg_stat_statements_reset
3326 --------------------------
3330 SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3336 /*+Set(enable_seqscan off)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3339 Set(enable_seqscan off)
3349 /*+SeqScan(t1)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3362 SELECT s.query, s.calls
3363 FROM public.pg_stat_statements s
3364 JOIN pg_catalog.pg_database d
3368 --------------------------------------+-------
3369 SELECT * FROM s1.t1 WHERE t1.c1 = ?; | 3
3370 SELECT pg_stat_statements_reset(); | 1
3374 ---- No. A-12-1 reset of global variable of core at the error
3375 ---- No. A-12-2 reset of global variable of original at the error
3377 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3379 ------------------------------------
3381 Merge Cond: (t1.c1 = t2.c1)
3382 -> Index Scan using t1_i1 on t1
3388 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
3389 PREPARE p1 AS SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3390 EXPLAIN (COSTS false) EXECUTE p1;
3391 INFO: hint syntax error at or near "NestLoop(t1 t1)"
3392 DETAIL: Relation name "t1" is duplicated.
3397 Set(enable_seqscan off)
3398 Set(geqo_threshold 100)
3405 ------------------------------------
3407 Merge Cond: (t1.c1 = t2.c1)
3411 -> Index Scan using t2_i1 on t2
3416 SELECT name, setting FROM settings;
3418 ---------------------------+-----------
3421 geqo_generations | 0
3424 geqo_selection_bias | 2
3426 constraint_exclusion | partition
3427 cursor_tuple_fraction | 0.1
3428 default_statistics_target | 100
3429 from_collapse_limit | 8
3430 join_collapse_limit | 8
3431 cpu_index_tuple_cost | 0.005
3432 cpu_operator_cost | 0.0025
3433 cpu_tuple_cost | 0.01
3434 effective_cache_size | 16384
3435 random_page_cost | 4
3437 enable_bitmapscan | on
3439 enable_hashjoin | on
3440 enable_indexonlyscan | on
3441 enable_indexscan | on
3442 enable_material | on
3443 enable_mergejoin | on
3444 enable_nestloop | on
3448 client_min_messages | log
3451 SET pg_hint_plan.parse_messages TO error;
3452 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
3453 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3454 ERROR: hint syntax error at or near "NestLoop(t1 t1)"
3455 DETAIL: Relation name "t1" is duplicated.
3456 SELECT name, setting FROM settings;
3458 ---------------------------+-----------
3461 geqo_generations | 0
3464 geqo_selection_bias | 2
3466 constraint_exclusion | partition
3467 cursor_tuple_fraction | 0.1
3468 default_statistics_target | 100
3469 from_collapse_limit | 8
3470 join_collapse_limit | 8
3471 cpu_index_tuple_cost | 0.005
3472 cpu_operator_cost | 0.0025
3473 cpu_tuple_cost | 0.01
3474 effective_cache_size | 16384
3475 random_page_cost | 4
3477 enable_bitmapscan | on
3479 enable_hashjoin | on
3480 enable_indexonlyscan | on
3481 enable_indexscan | on
3482 enable_material | on
3483 enable_mergejoin | on
3484 enable_nestloop | on
3488 client_min_messages | log
3491 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)*/
3492 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3497 Set(enable_seqscan off)
3498 Set(geqo_threshold 100)
3504 ------------------------------------
3506 Merge Cond: (t1.c1 = t2.c1)
3510 -> Index Scan using t2_i1 on t2
3515 SELECT name, setting FROM settings;
3517 ---------------------------+-----------
3520 geqo_generations | 0
3523 geqo_selection_bias | 2
3525 constraint_exclusion | partition
3526 cursor_tuple_fraction | 0.1
3527 default_statistics_target | 100
3528 from_collapse_limit | 8
3529 join_collapse_limit | 8
3530 cpu_index_tuple_cost | 0.005
3531 cpu_operator_cost | 0.0025
3532 cpu_tuple_cost | 0.01
3533 effective_cache_size | 16384
3534 random_page_cost | 4
3536 enable_bitmapscan | on
3538 enable_hashjoin | on
3539 enable_indexonlyscan | on
3540 enable_indexscan | on
3541 enable_material | on
3542 enable_mergejoin | on
3543 enable_nestloop | on
3547 client_min_messages | log
3550 SET pg_hint_plan.parse_messages TO error;
3551 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
3552 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3553 ERROR: hint syntax error at or near "NestLoop(t1 t1)"
3554 DETAIL: Relation name "t1" is duplicated.
3555 SELECT name, setting FROM settings;
3557 ---------------------------+-----------
3560 geqo_generations | 0
3563 geqo_selection_bias | 2
3565 constraint_exclusion | partition
3566 cursor_tuple_fraction | 0.1
3567 default_statistics_target | 100
3568 from_collapse_limit | 8
3569 join_collapse_limit | 8
3570 cpu_index_tuple_cost | 0.005
3571 cpu_operator_cost | 0.0025
3572 cpu_tuple_cost | 0.01
3573 effective_cache_size | 16384
3574 random_page_cost | 4
3576 enable_bitmapscan | on
3578 enable_hashjoin | on
3579 enable_indexonlyscan | on
3580 enable_indexscan | on
3581 enable_material | on
3582 enable_mergejoin | on
3583 enable_nestloop | on
3587 client_min_messages | log
3590 EXPLAIN (COSTS false) EXECUTE p1;
3592 ------------------------------------
3594 Merge Cond: (t1.c1 = t2.c1)
3598 -> Index Scan using t2_i1 on t2
3603 SELECT name, setting FROM settings;
3605 ---------------------------+-----------
3608 geqo_generations | 0
3611 geqo_selection_bias | 2
3613 constraint_exclusion | partition
3614 cursor_tuple_fraction | 0.1
3615 default_statistics_target | 100
3616 from_collapse_limit | 8
3617 join_collapse_limit | 8
3618 cpu_index_tuple_cost | 0.005
3619 cpu_operator_cost | 0.0025
3620 cpu_tuple_cost | 0.01
3621 effective_cache_size | 16384
3622 random_page_cost | 4
3624 enable_bitmapscan | on
3626 enable_hashjoin | on
3627 enable_indexonlyscan | on
3628 enable_indexscan | on
3629 enable_material | on
3630 enable_mergejoin | on
3631 enable_nestloop | on
3635 client_min_messages | log
3638 SET pg_hint_plan.parse_messages TO error;
3639 EXPLAIN (COSTS false) EXECUTE p2;
3640 ERROR: prepared statement "p2" does not exist
3641 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)*/
3642 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3647 Set(enable_seqscan off)
3648 Set(geqo_threshold 100)
3654 ------------------------------------
3656 Merge Cond: (t1.c1 = t2.c1)
3660 -> Index Scan using t2_i1 on t2
3663 EXPLAIN (COSTS false) EXECUTE p1;
3665 ------------------------------------
3667 Merge Cond: (t1.c1 = t2.c1)
3671 -> Index Scan using t2_i1 on t2
3674 SELECT name, setting FROM settings;
3676 ---------------------------+-----------
3679 geqo_generations | 0
3682 geqo_selection_bias | 2
3684 constraint_exclusion | partition
3685 cursor_tuple_fraction | 0.1
3686 default_statistics_target | 100
3687 from_collapse_limit | 8
3688 join_collapse_limit | 8
3689 cpu_index_tuple_cost | 0.005
3690 cpu_operator_cost | 0.0025
3691 cpu_tuple_cost | 0.01
3692 effective_cache_size | 16384
3693 random_page_cost | 4
3695 enable_bitmapscan | on
3697 enable_hashjoin | on
3698 enable_indexonlyscan | on
3699 enable_indexscan | on
3700 enable_material | on
3701 enable_mergejoin | on
3702 enable_nestloop | on
3706 client_min_messages | log
3711 SELECT name, setting FROM settings;
3713 ---------------------------+-----------
3716 geqo_generations | 0
3719 geqo_selection_bias | 2
3721 constraint_exclusion | partition
3722 cursor_tuple_fraction | 0.1
3723 default_statistics_target | 100
3724 from_collapse_limit | 8
3725 join_collapse_limit | 8
3726 cpu_index_tuple_cost | 0.005
3727 cpu_operator_cost | 0.0025
3728 cpu_tuple_cost | 0.01
3729 effective_cache_size | 16384
3730 random_page_cost | 4
3732 enable_bitmapscan | on
3734 enable_hashjoin | on
3735 enable_indexonlyscan | on
3736 enable_indexscan | on
3737 enable_material | on
3738 enable_mergejoin | on
3739 enable_nestloop | on
3743 client_min_messages | log
3746 SET pg_hint_plan.parse_messages TO error;
3747 EXPLAIN (COSTS false) EXECUTE p2;
3748 ERROR: prepared statement "p2" does not exist
3749 EXPLAIN (COSTS false) EXECUTE p1;
3751 ------------------------------------
3753 Merge Cond: (t1.c1 = t2.c1)
3757 -> Index Scan using t2_i1 on t2
3760 SELECT name, setting FROM settings;
3762 ---------------------------+-----------
3765 geqo_generations | 0
3768 geqo_selection_bias | 2
3770 constraint_exclusion | partition
3771 cursor_tuple_fraction | 0.1
3772 default_statistics_target | 100
3773 from_collapse_limit | 8
3774 join_collapse_limit | 8
3775 cpu_index_tuple_cost | 0.005
3776 cpu_operator_cost | 0.0025
3777 cpu_tuple_cost | 0.01
3778 effective_cache_size | 16384
3779 random_page_cost | 4
3781 enable_bitmapscan | on
3783 enable_hashjoin | on
3784 enable_indexonlyscan | on
3785 enable_indexscan | on
3786 enable_material | on
3787 enable_mergejoin | on
3788 enable_nestloop | on
3792 client_min_messages | log
3796 SET pg_hint_plan.parse_messages TO LOG;
3798 ---- No. A-12-3 effective range of the hint
3800 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3802 ------------------------------------
3804 Merge Cond: (t1.c1 = t2.c1)
3805 -> Index Scan using t1_i1 on t1
3812 SET enable_indexscan TO off;
3813 SET enable_mergejoin TO off;
3814 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3816 ------------------------------
3818 Hash Cond: (t1.c1 = t2.c1)
3824 SELECT name, setting FROM settings;
3826 ---------------------------+-----------
3829 geqo_generations | 0
3832 geqo_selection_bias | 2
3834 constraint_exclusion | partition
3835 cursor_tuple_fraction | 0.1
3836 default_statistics_target | 100
3837 from_collapse_limit | 8
3838 join_collapse_limit | 8
3839 cpu_index_tuple_cost | 0.005
3840 cpu_operator_cost | 0.0025
3841 cpu_tuple_cost | 0.01
3842 effective_cache_size | 16384
3843 random_page_cost | 4
3845 enable_bitmapscan | on
3847 enable_hashjoin | on
3848 enable_indexonlyscan | on
3849 enable_indexscan | off
3850 enable_material | on
3851 enable_mergejoin | off
3852 enable_nestloop | on
3856 client_min_messages | log
3859 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
3860 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3866 Set(enable_indexscan on)
3867 Set(geqo_threshold 100)
3873 ------------------------------------
3875 Merge Cond: (t1.c1 = t2.c1)
3876 -> Index Scan using t1_i1 on t1
3877 -> Index Scan using t2_i1 on t2
3880 SELECT name, setting FROM settings;
3882 ---------------------------+-----------
3885 geqo_generations | 0
3888 geqo_selection_bias | 2
3890 constraint_exclusion | partition
3891 cursor_tuple_fraction | 0.1
3892 default_statistics_target | 100
3893 from_collapse_limit | 8
3894 join_collapse_limit | 8
3895 cpu_index_tuple_cost | 0.005
3896 cpu_operator_cost | 0.0025
3897 cpu_tuple_cost | 0.01
3898 effective_cache_size | 16384
3899 random_page_cost | 4
3901 enable_bitmapscan | on
3903 enable_hashjoin | on
3904 enable_indexonlyscan | on
3905 enable_indexscan | off
3906 enable_material | on
3907 enable_mergejoin | off
3908 enable_nestloop | on
3912 client_min_messages | log
3915 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3917 ------------------------------
3919 Hash Cond: (t1.c1 = t2.c1)
3926 SET enable_indexscan TO off;
3927 SET enable_mergejoin TO off;
3928 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3930 ------------------------------
3932 Hash Cond: (t1.c1 = t2.c1)
3938 SELECT name, setting FROM settings;
3940 ---------------------------+-----------
3943 geqo_generations | 0
3946 geqo_selection_bias | 2
3948 constraint_exclusion | partition
3949 cursor_tuple_fraction | 0.1
3950 default_statistics_target | 100
3951 from_collapse_limit | 8
3952 join_collapse_limit | 8
3953 cpu_index_tuple_cost | 0.005
3954 cpu_operator_cost | 0.0025
3955 cpu_tuple_cost | 0.01
3956 effective_cache_size | 16384
3957 random_page_cost | 4
3959 enable_bitmapscan | on
3961 enable_hashjoin | on
3962 enable_indexonlyscan | on
3963 enable_indexscan | off
3964 enable_material | on
3965 enable_mergejoin | off
3966 enable_nestloop | on
3970 client_min_messages | log
3974 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
3975 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3981 Set(enable_indexscan on)
3982 Set(geqo_threshold 100)
3988 ------------------------------------
3990 Merge Cond: (t1.c1 = t2.c1)
3991 -> Index Scan using t1_i1 on t1
3992 -> Index Scan using t2_i1 on t2
3997 SELECT name, setting FROM settings;
3999 ---------------------------+-----------
4002 geqo_generations | 0
4005 geqo_selection_bias | 2
4007 constraint_exclusion | partition
4008 cursor_tuple_fraction | 0.1
4009 default_statistics_target | 100
4010 from_collapse_limit | 8
4011 join_collapse_limit | 8
4012 cpu_index_tuple_cost | 0.005
4013 cpu_operator_cost | 0.0025
4014 cpu_tuple_cost | 0.01
4015 effective_cache_size | 16384
4016 random_page_cost | 4
4018 enable_bitmapscan | on
4020 enable_hashjoin | on
4021 enable_indexonlyscan | on
4022 enable_indexscan | off
4023 enable_material | on
4024 enable_mergejoin | off
4025 enable_nestloop | on
4029 client_min_messages | log
4032 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
4034 ------------------------------
4036 Hash Cond: (t1.c1 = t2.c1)
4044 SET enable_indexscan TO off;
4045 SET enable_mergejoin TO off;
4046 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
4048 ------------------------------
4050 Hash Cond: (t1.c1 = t2.c1)
4056 SELECT name, setting FROM settings;
4058 ---------------------------+-----------
4061 geqo_generations | 0
4064 geqo_selection_bias | 2
4066 constraint_exclusion | partition
4067 cursor_tuple_fraction | 0.1
4068 default_statistics_target | 100
4069 from_collapse_limit | 8
4070 join_collapse_limit | 8
4071 cpu_index_tuple_cost | 0.005
4072 cpu_operator_cost | 0.0025
4073 cpu_tuple_cost | 0.01
4074 effective_cache_size | 16384
4075 random_page_cost | 4
4077 enable_bitmapscan | on
4079 enable_hashjoin | on
4080 enable_indexonlyscan | on
4081 enable_indexscan | off
4082 enable_material | on
4083 enable_mergejoin | off
4084 enable_nestloop | on
4088 client_min_messages | log
4091 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
4092 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
4098 Set(enable_indexscan on)
4099 Set(geqo_threshold 100)
4105 ------------------------------------
4107 Merge Cond: (t1.c1 = t2.c1)
4108 -> Index Scan using t1_i1 on t1
4109 -> Index Scan using t2_i1 on t2
4113 SET enable_indexscan TO off;
4114 SET enable_mergejoin TO off;
4115 LOAD 'pg_hint_plan';
4116 SELECT name, setting FROM settings;
4118 ---------------------------+-----------
4121 geqo_generations | 0
4124 geqo_selection_bias | 2
4126 constraint_exclusion | partition
4127 cursor_tuple_fraction | 0.1
4128 default_statistics_target | 100
4129 from_collapse_limit | 8
4130 join_collapse_limit | 8
4131 cpu_index_tuple_cost | 0.005
4132 cpu_operator_cost | 0.0025
4133 cpu_tuple_cost | 0.01
4134 effective_cache_size | 16384
4135 random_page_cost | 4
4137 enable_bitmapscan | on
4139 enable_hashjoin | on
4140 enable_indexonlyscan | on
4141 enable_indexscan | off
4142 enable_material | on
4143 enable_mergejoin | off
4144 enable_nestloop | on
4148 client_min_messages | notice
4151 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
4153 ------------------------------
4155 Hash Cond: (t1.c1 = t2.c1)
4161 SET pg_hint_plan.enable_hint TO on;
4162 SET pg_hint_plan.debug_print TO on;
4163 SET client_min_messages TO LOG;
4164 SET search_path TO public;
4165 RESET enable_indexscan;
4166 RESET enable_mergejoin;
4168 ---- No. A-13 call planner recursively
4170 CREATE OR REPLACE FUNCTION nested_planner(cnt int) RETURNS int AS $$
4174 RAISE NOTICE 'nested_planner(%)', cnt;
4181 EXECUTE '/*+ IndexScan(t_1) */'
4182 ' SELECT nested_planner($1) FROM s1.t1 t_1'
4183 ' JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)'
4184 ' ORDER BY t_1.c1 LIMIT 1'
4185 INTO new_cnt USING cnt - 1;
4189 $$ LANGUAGE plpgsql IMMUTABLE;
4191 ---- No. A-13-2 use hint of main query
4194 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4195 NOTICE: nested_planner(1)
4197 ---------------------------------------
4198 Index Only Scan using t1_i1 on t1 t_1
4202 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4203 NOTICE: nested_planner(1)
4212 --------------------------
4215 -> Seq Scan on t1 t_1
4219 ---- No. A-13-3 output number of times of debugging log
4222 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4223 NOTICE: nested_planner(1)
4225 ---------------------------------------
4226 Index Only Scan using t1_i1 on t1 t_1
4230 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4231 NOTICE: nested_planner(1)
4240 ---------------------------------------
4241 Index Only Scan using t1_i1 on t1 t_1
4245 EXPLAIN (COSTS false) SELECT nested_planner(2) FROM s1.t1 t_1 ORDER BY t_1.c1;
4246 NOTICE: nested_planner(2)
4247 NOTICE: nested_planner(1)
4248 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4249 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE 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 "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4260 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4268 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4269 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4278 ---------------------------------------
4279 Index Only Scan using t1_i1 on t1 t_1
4283 EXPLAIN (COSTS false) SELECT nested_planner(5) FROM s1.t1 t_1 ORDER BY t_1.c1;
4284 NOTICE: nested_planner(5)
4285 NOTICE: nested_planner(4)
4286 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4287 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4288 NOTICE: nested_planner(3)
4289 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4290 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4291 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4292 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4293 NOTICE: nested_planner(2)
4294 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4295 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4296 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4297 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4298 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4299 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4300 NOTICE: nested_planner(1)
4301 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4302 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4303 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4304 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4305 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4306 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4307 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4308 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4310 ---------------------------------------
4311 Index Only Scan using t1_i1 on t1 t_1
4315 EXPLAIN (COSTS false) SELECT nested_planner(5) FROM s1.t1 t_1 ORDER BY t_1.c1;
4316 NOTICE: nested_planner(5)
4317 NOTICE: nested_planner(4)
4318 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4319 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4320 NOTICE: nested_planner(3)
4321 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4322 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4323 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4324 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4325 NOTICE: nested_planner(2)
4326 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4327 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4328 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4329 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4330 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4331 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4332 NOTICE: nested_planner(1)
4333 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4334 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4335 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4336 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4337 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4338 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4339 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4340 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4348 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4349 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4350 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4351 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4352 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4353 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4354 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4355 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4363 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4364 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4365 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4366 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4367 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4368 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4376 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4377 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4378 SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4379 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4387 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4388 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4397 ---------------------------------------
4398 Index Only Scan using t1_i1 on t1 t_1
4402 ---- No. A-13-4 output of debugging log on hint status
4405 /*+HashJoin(t_1 t_2)*/
4406 EXPLAIN (COSTS false)
4407 SELECT nested_planner(2) FROM s1.t1 t_1
4408 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4410 NOTICE: nested_planner(2)
4411 NOTICE: nested_planner(1)
4412 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4413 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4421 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4422 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4431 --------------------------------------
4435 Hash Cond: (t_1.c1 = t_2.c1)
4436 -> Seq Scan on t1 t_1
4438 -> Seq Scan on t2 t_2
4442 /*+HashJoin(st_1 st_2)*/
4443 EXPLAIN (COSTS false)
4444 SELECT nested_planner(2) FROM s1.t1 st_1
4445 JOIN s1.t2 st_2 ON (st_1.c1 = st_2.c1)
4447 NOTICE: nested_planner(2)
4448 NOTICE: nested_planner(1)
4449 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4450 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4458 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4459 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4468 ----------------------------------------
4472 Hash Cond: (st_1.c1 = st_2.c1)
4473 -> Seq Scan on t1 st_1
4475 -> Seq Scan on t2 st_2
4479 /*+HashJoin(t_1 t_2)*/
4480 EXPLAIN (COSTS false)
4481 SELECT nested_planner(2) FROM s1.t1 st_1
4482 JOIN s1.t2 st_2 ON (st_1.c1 = st_2.c1)
4484 NOTICE: nested_planner(2)
4485 NOTICE: nested_planner(1)
4486 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4487 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4495 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4496 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4505 ----------------------------------------------
4507 Merge Cond: (st_1.c1 = st_2.c1)
4508 -> Index Only Scan using t1_i1 on t1 st_1
4511 -> Seq Scan on t2 st_2
4515 /*+HashJoin(st_1 st_2)*/
4516 EXPLAIN (COSTS false)
4517 SELECT nested_planner(2) FROM s1.t1 t_1
4518 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4520 NOTICE: nested_planner(2)
4521 NOTICE: nested_planner(1)
4522 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4523 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4531 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4532 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4541 ---------------------------------------------
4543 Merge Cond: (t_1.c1 = t_2.c1)
4544 -> Index Only Scan using t1_i1 on t1 t_1
4547 -> Seq Scan on t2 t_2
4551 /*+HashJoin(t_1 t_1)*/
4552 EXPLAIN (COSTS false)
4553 SELECT nested_planner(2) FROM s1.t1 t_1
4555 NOTICE: nested_planner(2)
4556 NOTICE: nested_planner(1)
4557 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4558 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4559 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4560 DETAIL: Relation name "t_1" is duplicated.
4561 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4562 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4570 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4571 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4580 ---------------------------------------
4581 Index Only Scan using t1_i1 on t1 t_1
4585 CREATE OR REPLACE FUNCTION nested_planner_one_t(cnt int) RETURNS int AS $$
4589 RAISE NOTICE 'nested_planner_one_t(%)', cnt;
4595 EXECUTE '/*+ IndexScan(t_1) */'
4596 ' SELECT nested_planner_one_t($1) FROM s1.t1 t_1'
4597 ' ORDER BY t_1.c1 LIMIT 1'
4598 INTO new_cnt USING cnt - 1;
4602 $$ LANGUAGE plpgsql IMMUTABLE;
4603 EXPLAIN (COSTS false)
4604 SELECT nested_planner_one_t(2) FROM s1.t1 t_1
4605 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4607 NOTICE: nested_planner_one_t(2)
4608 NOTICE: nested_planner_one_t(1)
4609 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner_one_t($1) FROM s1.t1 t_1 ORDER BY t_1.c1 LIMIT 1"
4610 PL/pgSQL function nested_planner_one_t(integer) line 11 at EXECUTE statement
4612 ---------------------------------------------
4614 Merge Cond: (t_1.c1 = t_2.c1)
4615 -> Index Only Scan using t1_i1 on t1 t_1
4618 -> Seq Scan on t2 t_2
4621 /*+HashJoin(t_1 t_1)*/
4622 EXPLAIN (COSTS false)
4623 SELECT nested_planner_one_t(2) FROM s1.t1 t_1
4624 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4626 NOTICE: nested_planner_one_t(2)
4627 NOTICE: nested_planner_one_t(1)
4628 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner_one_t($1) FROM s1.t1 t_1 ORDER BY t_1.c1 LIMIT 1"
4629 PL/pgSQL function nested_planner_one_t(integer) line 11 at EXECUTE statement
4637 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner_one_t($1) FROM s1.t1 t_1 ORDER BY t_1.c1 LIMIT 1"
4638 PL/pgSQL function nested_planner_one_t(integer) line 11 at EXECUTE statement
4639 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4640 DETAIL: Relation name "t_1" is duplicated.
4649 ---------------------------------------------
4651 Merge Cond: (t_1.c1 = t_2.c1)
4652 -> Index Only Scan using t1_i1 on t1 t_1
4655 -> Seq Scan on t2 t_2
4658 DROP FUNCTION nested_planner_one_t(int);
4660 /*+HashJoin(t_1 t_1)*/
4661 EXPLAIN (COSTS false)
4662 SELECT nested_planner(2) FROM s1.t1 t_1
4663 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4665 NOTICE: nested_planner(2)
4666 NOTICE: nested_planner(1)
4667 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4668 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4669 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4670 DETAIL: Relation name "t_1" is duplicated.
4671 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4672 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4680 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4681 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4682 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4683 DETAIL: Relation name "t_1" is duplicated.
4692 ---------------------------------------------
4694 Merge Cond: (t_1.c1 = t_2.c1)
4695 -> Index Only Scan using t1_i1 on t1 t_1
4698 -> Seq Scan on t2 t_2
4702 /*+MergeJoin(t_1 t_2)HashJoin(t_1 t_2)*/
4703 EXPLAIN (COSTS false)
4704 SELECT nested_planner(2) FROM s1.t1 t_1
4705 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4707 INFO: hint syntax error at or near "MergeJoin(t_1 t_2)HashJoin(t_1 t_2)"
4708 DETAIL: Conflict join method hint.
4709 NOTICE: nested_planner(2)
4710 INFO: hint syntax error at or near "MergeJoin(t_1 t_2)HashJoin(t_1 t_2)"
4711 DETAIL: Conflict join method hint.
4712 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4713 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4714 NOTICE: nested_planner(1)
4715 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4716 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4725 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner($1) FROM s1.t1 t_1 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1) ORDER BY t_1.c1 LIMIT 1"
4726 PL/pgSQL function nested_planner(integer) line 12 at EXECUTE statement
4736 --------------------------------------
4740 Hash Cond: (t_1.c1 = t_2.c1)
4741 -> Seq Scan on t1 t_1
4743 -> Seq Scan on t2 t_2