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 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 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;
227 ----------------------------------
228 Bitmap Heap Scan on t1
229 Recheck Cond: (c1 = 1)
230 -> Bitmap Index Scan on t1_i1
234 TRUNCATE hint_plan.hints;
236 INSERT INTO hint_plan.hints VALUES (
237 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
238 'dummy_application_name',
241 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
243 ------------------------------
244 Index Scan using t1_i1 on t1
248 TRUNCATE hint_plan.hints;
250 INSERT INTO hint_plan.hints VALUES (
251 'EXPLAIN (COSTS false) SELECT * FROM s1.t1;',
255 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
257 ------------------------------
258 Index Scan using t1_i1 on t1
262 TRUNCATE hint_plan.hints;
264 ---- No. A-6-3 number of constant
267 INSERT INTO hint_plan.hints VALUES (
268 'EXPLAIN (COSTS false) SELECT c1 FROM s1.t1;',
272 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1;
285 TRUNCATE hint_plan.hints;
287 INSERT INTO hint_plan.hints VALUES (
288 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
292 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
306 TRUNCATE hint_plan.hints;
308 INSERT INTO hint_plan.hints VALUES (
309 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ? OR t1.c1 = ?;',
313 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 OR t1.c1 = 0;
322 ----------------------------------
324 Filter: ((c1 = 1) OR (c1 = 0))
327 TRUNCATE hint_plan.hints;
328 SET pg_hint_plan.enable_hint_table TO off;
330 ---- No. A-7-2 hint delimiter
332 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
334 ------------------------------
335 Index Scan using t1_i1 on t1
346 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
347 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
350 Set(enable_bitmapscan off)
351 Set(enable_indexscan off)
363 /*+ Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
364 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
367 Set(enable_bitmapscan off)
368 Set(enable_indexscan off)
380 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off") */
381 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
384 Set(enable_bitmapscan off)
385 Set(enable_indexscan off)
397 /*+ Set (enable_indexscan"off") Set (enable_bitmapscan"off")*/
398 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
401 Set(enable_bitmapscan off)
402 Set(enable_indexscan off)
414 /*+Set ( enable_indexscan"off")Set ( enable_bitmapscan"off")*/
415 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
418 Set(enable_bitmapscan off)
419 Set(enable_indexscan off)
431 /*+Set(enable_indexscan"off" ) Set(enable_bitmapscan"off" ) */
432 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
435 Set(enable_bitmapscan off)
436 Set(enable_indexscan off)
448 /*+Set( enable_indexscan "off" )Set( enable_bitmapscan "off" )*/
449 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
452 Set(enable_bitmapscan off)
453 Set(enable_indexscan off)
465 /*+ Set ( enable_indexscan "off" ) Set ( enable_bitmapscan "off" ) */
466 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
469 Set(enable_bitmapscan off)
470 Set(enable_indexscan off)
482 /*+ Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
483 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
486 Set(enable_bitmapscan off)
487 Set(enable_indexscan off)
499 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off") */
500 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
503 Set(enable_bitmapscan off)
504 Set(enable_indexscan off)
516 /*+ Set (enable_indexscan"off") Set (enable_bitmapscan"off")*/
517 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
520 Set(enable_bitmapscan off)
521 Set(enable_indexscan off)
533 /*+Set ( enable_indexscan"off")Set ( enable_bitmapscan"off")*/
534 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
537 Set(enable_bitmapscan off)
538 Set(enable_indexscan off)
550 /*+Set(enable_indexscan"off" ) Set(enable_bitmapscan"off" ) */
551 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
554 Set(enable_bitmapscan off)
555 Set(enable_indexscan off)
567 /*+Set( enable_indexscan "off" )Set( enable_bitmapscan "off" )*/
568 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
571 Set(enable_bitmapscan off)
572 Set(enable_indexscan off)
584 /*+ Set ( enable_indexscan "off" ) Set ( enable_bitmapscan "off" ) */
585 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
588 Set(enable_bitmapscan off)
589 Set(enable_indexscan off)
602 Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
603 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
606 Set(enable_bitmapscan off)
607 Set(enable_indexscan off)
619 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")
621 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
624 Set(enable_bitmapscan off)
625 Set(enable_indexscan off)
639 (enable_indexscan"off")
641 (enable_bitmapscan"off")*/
642 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
645 Set(enable_bitmapscan off)
646 Set(enable_indexscan off)
660 enable_indexscan"off")Set
662 enable_bitmapscan"off")*/
663 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
666 Set(enable_bitmapscan off)
667 Set(enable_indexscan off)
679 /*+Set(enable_indexscan"off"
681 Set(enable_bitmapscan"off"
684 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
687 Set(enable_bitmapscan off)
688 Set(enable_indexscan off)
707 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
710 Set(enable_bitmapscan off)
711 Set(enable_indexscan off)
735 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
738 Set(enable_bitmapscan off)
739 Set(enable_indexscan off)
752 Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
753 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
756 Set(enable_bitmapscan off)
757 Set(enable_indexscan off)
769 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")
771 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
774 Set(enable_bitmapscan off)
775 Set(enable_indexscan off)
789 (enable_indexscan"off")
791 (enable_bitmapscan"off")*/
792 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
795 Set(enable_bitmapscan off)
796 Set(enable_indexscan off)
810 enable_indexscan"off")Set
812 enable_bitmapscan"off")*/
813 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
816 Set(enable_bitmapscan off)
817 Set(enable_indexscan off)
829 /*+Set(enable_indexscan"off"
831 Set(enable_bitmapscan"off"
834 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
837 Set(enable_bitmapscan off)
838 Set(enable_indexscan off)
857 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
860 Set(enable_bitmapscan off)
861 Set(enable_indexscan off)
885 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
888 Set(enable_bitmapscan off)
889 Set(enable_indexscan off)
901 ---- No. A-7-3 hint object pattern
902 ---- No. A-9-2 message object pattern
907 EXPLAIN (COSTS false) SELECT * FROM s1.t1 t WHERE t.c1 = 1;
922 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;
969 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "T" WHERE "T".c1 = 1;
984 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "TTT" WHERE "TTT".c1 = 1;
993 ----------------------
999 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "T" WHERE "T".c1 = 1;
1008 --------------------
1014 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "TTT" WHERE "TTT".c1 = 1;
1023 ----------------------
1024 Seq Scan on t1 "TTT"
1031 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(" WHERE "(".c1 = 1;
1032 INFO: hint syntax error at or near "()"
1033 DETAIL: Zero-length delimited string.
1035 ----------------------------------
1036 Index Scan using t1_i1 on t1 "("
1037 Index Cond: (c1 = 1)
1041 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(" WHERE "(".c1 = 1;
1050 --------------------
1058 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ")" WHERE ")".c1 = 1;
1059 INFO: hint syntax error at or near ")"
1060 DETAIL: SeqScan hint requires a relation.
1061 INFO: hint syntax error at or near ")"
1062 DETAIL: Unrecognized hint keyword ")".
1071 ----------------------------------
1072 Index Scan using t1_i1 on t1 ")"
1073 Index Cond: (c1 = 1)
1077 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ")" WHERE ")".c1 = 1;
1086 --------------------
1092 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ")))" WHERE ")))".c1 = 1;
1101 ----------------------
1102 Seq Scan on t1 ")))"
1109 EXPLAIN (COSTS false) SELECT * FROM s1.t1 """" WHERE """".c1 = 1;
1110 INFO: hint syntax error at or near ""
1111 DETAIL: Unterminated quoted string.
1113 -----------------------------------
1114 Index Scan using t1_i1 on t1 """"
1115 Index Cond: (c1 = 1)
1119 EXPLAIN (COSTS false) SELECT * FROM s1.t1 """" WHERE """".c1 = 1;
1128 ---------------------
1133 /*+SeqScan("""""""")*/
1134 EXPLAIN (COSTS false) SELECT * FROM s1.t1 """""""" WHERE """""""".c1 = 1;
1143 -------------------------
1144 Seq Scan on t1 """"""""
1151 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1152 INFO: hint syntax error at or near ""
1153 DETAIL: SeqScan hint requires a relation.
1162 ----------------------------------
1163 Index Scan using t1_i1 on t1 " "
1164 Index Cond: (c1 = 1)
1168 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1177 --------------------
1183 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1192 ----------------------
1200 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1201 INFO: hint syntax error at or near ""
1202 DETAIL: SeqScan hint requires a relation.
1211 -----------------------------------
1212 Index Scan using t1_i1 on t1 " "
1213 Index Cond: (c1 = 1)
1217 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1226 ---------------------------
1232 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
1241 -------------------------------------------
1250 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "
1253 INFO: hint syntax error at or near ""
1254 DETAIL: SeqScan hint requires a relation.
1263 --------------------------------
1264 Index Scan using t1_i1 on t1 "
1266 Index Cond: (c1 = 1)
1271 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "
1283 --------------------
1293 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "
1311 --------------------
1322 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "Set" WHERE "Set".c1 = 1;
1331 ----------------------
1332 Seq Scan on t1 "Set"
1337 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "Set" WHERE "Set".c1 = 1;
1346 ----------------------
1347 Seq Scan on t1 "Set"
1351 /*+SeqScan("Set SeqScan Leading")*/
1352 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "Set SeqScan Leading" WHERE "Set SeqScan Leading".c1 = 1;
1355 SeqScan("Set SeqScan Leading")
1361 --------------------------------------
1362 Seq Scan on t1 "Set SeqScan Leading"
1369 EXPLAIN (COSTS false) SELECT * FROM s1.t1 あ WHERE あ.c1 = 1;
1378 ---------------------
1384 EXPLAIN (COSTS false) SELECT * FROM s1.t1 あいう WHERE あいう.c1 = 1;
1393 -------------------------
1394 Seq Scan on t1 "あいう"
1399 EXPLAIN (COSTS false) SELECT * FROM s1.t1 あ WHERE あ.c1 = 1;
1408 ---------------------
1414 EXPLAIN (COSTS false) SELECT * FROM s1.t1 あいう WHERE あいう.c1 = 1;
1423 -------------------------
1424 Seq Scan on t1 "あいう"
1431 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**/" WHERE "/**/".c1 = 1;
1432 INFO: hint syntax error at or near "/**/)*/
1433 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**/" WHERE "/**/".c1 = 1;"
1434 DETAIL: Nested block comments are not supported.
1436 -------------------------------------
1437 Index Scan using t1_i1 on t1 "/**/"
1438 Index Cond: (c1 = 1)
1441 /*+SeqScan(/**//**//**/)*/
1442 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**//**//**/" WHERE "/**//**//**/".c1 = 1;
1443 INFO: hint syntax error at or near "/**//**//**/)*/
1444 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**//**//**/" WHERE "/**//**//**/".c1 = 1;"
1445 DETAIL: Nested block comments are not supported.
1447 ---------------------------------------------
1448 Index Scan using t1_i1 on t1 "/**//**//**/"
1449 Index Cond: (c1 = 1)
1456 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""
1457 Set/**/あ" WHERE "tT()""
1459 INFO: hint syntax error at or near "/**/あ")*/
1460 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""
1461 Set/**/あ" WHERE "tT()""
1463 DETAIL: Nested block comments are not supported.
1465 ------------------------------------------
1466 Index Scan using t1_i1 on t1 "tT()""
1468 Index Cond: (c1 = 1)
1474 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""
1486 --------------------------
1487 Seq Scan on t1 "tT()""
1493 ---- No. A-7-4 hint parse error
1496 /*+Set(enable_indexscan off)Set enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
1497 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1498 INFO: hint syntax error at or near "enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
1499 DETAIL: Opening parenthesis is necessary.
1502 Set(enable_indexscan off)
1508 ----------------------------------
1509 Bitmap Heap Scan on t1
1510 Recheck Cond: (c1 = 1)
1511 -> Bitmap Index Scan on t1_i1
1512 Index Cond: (c1 = 1)
1516 /*+Set(enable_indexscan off)Set(enable_tidscan off Set(enable_bitmapscan off)SeqScan(t1)*/
1517 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1518 INFO: hint syntax error at or near "(enable_bitmapscan off)SeqScan(t1)"
1519 DETAIL: Zero-length delimited string.
1522 Set(enable_indexscan off)
1528 ----------------------------------
1529 Bitmap Heap Scan on t1
1530 Recheck Cond: (c1 = 1)
1531 -> Bitmap Index Scan on t1_i1
1532 Index Cond: (c1 = 1)
1536 /*+Set(enable_indexscan off)Set(enable_tidscan "off)Set(enable_bitmapscan off)SeqScan(t1)*/
1537 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1538 INFO: hint syntax error at or near ""
1539 DETAIL: Unterminated quoted string.
1542 Set(enable_indexscan off)
1548 ----------------------------------
1549 Bitmap Heap Scan on t1
1550 Recheck Cond: (c1 = 1)
1551 -> Bitmap Index Scan on t1_i1
1552 Index Cond: (c1 = 1)
1556 /*+Set(enable_indexscan off)SeqScan("")Set(enable_bitmapscan off)*/
1557 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1558 INFO: hint syntax error at or near ")Set(enable_bitmapscan off)"
1559 DETAIL: Zero-length delimited string.
1562 Set(enable_indexscan off)
1568 ----------------------------------
1569 Bitmap Heap Scan on t1
1570 Recheck Cond: (c1 = 1)
1571 -> Bitmap Index Scan on t1_i1
1572 Index Cond: (c1 = 1)
1576 /*+Set(enable_indexscan off)NoSet(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
1577 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1578 INFO: hint syntax error at or near "NoSet(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
1579 DETAIL: Unrecognized hint keyword "NoSet".
1582 Set(enable_indexscan off)
1588 ----------------------------------
1589 Bitmap Heap Scan on t1
1590 Recheck Cond: (c1 = 1)
1591 -> Bitmap Index Scan on t1_i1
1592 Index Cond: (c1 = 1)
1596 /*+Set(enable_indexscan off)"Set"(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
1597 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1598 INFO: hint syntax error at or near ""Set"(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
1599 DETAIL: Unrecognized hint keyword ""Set"".
1602 Set(enable_indexscan off)
1608 ----------------------------------
1609 Bitmap Heap Scan on t1
1610 Recheck Cond: (c1 = 1)
1611 -> Bitmap Index Scan on t1_i1
1612 Index Cond: (c1 = 1)
1616 /*+Set(enable_indexscan off)Set(enable_tidscan /* value */off)Set(enable_bitmapscan off)SeqScan(t1)*/
1617 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1618 INFO: hint syntax error at or near "/* value */off)Set(enable_bitmapscan off)SeqScan(t1)*/
1619 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;"
1620 DETAIL: Nested block comments are not supported.
1622 ------------------------------
1623 Index Scan using t1_i1 on t1
1624 Index Cond: (c1 = 1)
1628 ---- No. A-8-1 original GUC parameter
1631 SET ROLE super_user;
1632 SET pg_hint_plan.debug_print TO off;
1633 SHOW pg_hint_plan.enable_hint;
1634 pg_hint_plan.enable_hint
1635 --------------------------
1639 SHOW pg_hint_plan.debug_print;
1640 pg_hint_plan.debug_print
1641 --------------------------
1645 SHOW pg_hint_plan.parse_messages;
1646 pg_hint_plan.parse_messages
1647 -----------------------------
1651 SET pg_hint_plan.enable_hint TO off;
1652 SET pg_hint_plan.debug_print TO on;
1653 SET pg_hint_plan.parse_messages TO error;
1654 SHOW pg_hint_plan.enable_hint;
1655 pg_hint_plan.enable_hint
1656 --------------------------
1660 SHOW pg_hint_plan.debug_print;
1661 pg_hint_plan.debug_print
1662 --------------------------
1666 SHOW pg_hint_plan.parse_messages;
1667 pg_hint_plan.parse_messages
1668 -----------------------------
1672 RESET pg_hint_plan.enable_hint;
1673 RESET pg_hint_plan.debug_print;
1674 RESET pg_hint_plan.parse_messages;
1675 SHOW pg_hint_plan.enable_hint;
1676 pg_hint_plan.enable_hint
1677 --------------------------
1681 SHOW pg_hint_plan.debug_print;
1682 pg_hint_plan.debug_print
1683 --------------------------
1687 SHOW pg_hint_plan.parse_messages;
1688 pg_hint_plan.parse_messages
1689 -----------------------------
1694 SET ROLE normal_user;
1695 SHOW pg_hint_plan.enable_hint;
1696 pg_hint_plan.enable_hint
1697 --------------------------
1701 SHOW pg_hint_plan.debug_print;
1702 pg_hint_plan.debug_print
1703 --------------------------
1707 SHOW pg_hint_plan.parse_messages;
1708 pg_hint_plan.parse_messages
1709 -----------------------------
1713 SET pg_hint_plan.enable_hint TO off;
1714 SET pg_hint_plan.debug_print TO on;
1715 SET pg_hint_plan.parse_messages TO error;
1716 SHOW pg_hint_plan.enable_hint;
1717 pg_hint_plan.enable_hint
1718 --------------------------
1722 SHOW pg_hint_plan.debug_print;
1723 pg_hint_plan.debug_print
1724 --------------------------
1728 SHOW pg_hint_plan.parse_messages;
1729 pg_hint_plan.parse_messages
1730 -----------------------------
1734 RESET pg_hint_plan.enable_hint;
1735 RESET pg_hint_plan.debug_print;
1736 RESET pg_hint_plan.parse_messages;
1737 SHOW pg_hint_plan.enable_hint;
1738 pg_hint_plan.enable_hint
1739 --------------------------
1743 SHOW pg_hint_plan.debug_print;
1744 pg_hint_plan.debug_print
1745 --------------------------
1749 SHOW pg_hint_plan.parse_messages;
1750 pg_hint_plan.parse_messages
1751 -----------------------------
1757 ---- No. A-8-2 original GUC parameter pg_hint_plan.enable_hint
1760 SET pg_hint_plan.enable_hint TO on;
1761 SHOW pg_hint_plan.enable_hint;
1762 pg_hint_plan.enable_hint
1763 --------------------------
1767 /*+Set(enable_indexscan off)*/
1768 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1770 ----------------------------------
1771 Bitmap Heap Scan on t1
1772 Recheck Cond: (c1 = 1)
1773 -> Bitmap Index Scan on t1_i1
1774 Index Cond: (c1 = 1)
1778 SET pg_hint_plan.enable_hint TO off;
1779 SHOW pg_hint_plan.enable_hint;
1780 pg_hint_plan.enable_hint
1781 --------------------------
1785 /*+Set(enable_indexscan off)*/
1786 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1788 ------------------------------
1789 Index Scan using t1_i1 on t1
1790 Index Cond: (c1 = 1)
1794 SET pg_hint_plan.enable_hint TO DEFAULT;
1795 SHOW pg_hint_plan.enable_hint;
1796 pg_hint_plan.enable_hint
1797 --------------------------
1801 /*+Set(enable_indexscan off)*/
1802 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1804 ----------------------------------
1805 Bitmap Heap Scan on t1
1806 Recheck Cond: (c1 = 1)
1807 -> Bitmap Index Scan on t1_i1
1808 Index Cond: (c1 = 1)
1812 SET pg_hint_plan.enable_hint TO enable;
1813 ERROR: parameter "pg_hint_plan.enable_hint" requires a Boolean value
1814 SHOW pg_hint_plan.enable_hint;
1815 pg_hint_plan.enable_hint
1816 --------------------------
1821 ---- No. A-8-3 original GUC parameter pg_hint_plan.debug_print
1824 SET pg_hint_plan.debug_print TO on;
1825 SHOW pg_hint_plan.debug_print;
1826 pg_hint_plan.debug_print
1827 --------------------------
1831 /*+Set(enable_indexscan off)*/
1832 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1835 Set(enable_indexscan off)
1841 ----------------------------------
1842 Bitmap Heap Scan on t1
1843 Recheck Cond: (c1 = 1)
1844 -> Bitmap Index Scan on t1_i1
1845 Index Cond: (c1 = 1)
1849 SET pg_hint_plan.debug_print TO off;
1850 SHOW pg_hint_plan.debug_print;
1851 pg_hint_plan.debug_print
1852 --------------------------
1856 /*+Set(enable_indexscan off)*/
1857 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1859 ----------------------------------
1860 Bitmap Heap Scan on t1
1861 Recheck Cond: (c1 = 1)
1862 -> Bitmap Index Scan on t1_i1
1863 Index Cond: (c1 = 1)
1867 SET pg_hint_plan.debug_print TO DEFAULT;
1868 SHOW pg_hint_plan.debug_print;
1869 pg_hint_plan.debug_print
1870 --------------------------
1874 /*+Set(enable_indexscan off)*/
1875 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
1877 ----------------------------------
1878 Bitmap Heap Scan on t1
1879 Recheck Cond: (c1 = 1)
1880 -> Bitmap Index Scan on t1_i1
1881 Index Cond: (c1 = 1)
1885 SET pg_hint_plan.debug_print TO enable;
1886 ERROR: parameter "pg_hint_plan.debug_print" requires a Boolean value
1887 SHOW pg_hint_plan.debug_print;
1888 pg_hint_plan.debug_print
1889 --------------------------
1894 ---- No. A-8-4 original GUC parameter pg_hint_plan.parse_messages
1896 SET client_min_messages TO debug5;
1897 DEBUG: CommitTransactionCommand
1898 DEBUG: CommitTransaction
1899 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1901 SET pg_hint_plan.parse_messages TO debug5;
1902 DEBUG: StartTransactionCommand
1903 DEBUG: StartTransaction
1904 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1905 DEBUG: ProcessUtility
1906 DEBUG: CommitTransactionCommand
1907 DEBUG: CommitTransaction
1908 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1909 SHOW pg_hint_plan.parse_messages;
1910 DEBUG: StartTransactionCommand
1911 DEBUG: StartTransaction
1912 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1913 DEBUG: ProcessUtility
1914 DEBUG: CommitTransactionCommand
1915 DEBUG: CommitTransaction
1916 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1917 pg_hint_plan.parse_messages
1918 -----------------------------
1923 DEBUG: StartTransactionCommand
1924 DEBUG: StartTransaction
1925 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1926 DEBUG: hint syntax error at or near ""
1927 DETAIL: Opening parenthesis is necessary.
1928 DEBUG: CommitTransactionCommand
1929 DEBUG: CommitTransaction
1930 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1936 SET client_min_messages TO debug4;
1937 DEBUG: StartTransactionCommand
1938 DEBUG: StartTransaction
1939 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1940 DEBUG: ProcessUtility
1941 DEBUG: CommitTransactionCommand
1942 DEBUG: CommitTransaction
1943 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1945 DEBUG: StartTransactionCommand
1946 DEBUG: StartTransaction
1947 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1948 DEBUG: CommitTransactionCommand
1949 DEBUG: CommitTransaction
1950 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1957 SET pg_hint_plan.parse_messages TO debug4;
1958 DEBUG: StartTransactionCommand
1959 DEBUG: StartTransaction
1960 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1961 DEBUG: ProcessUtility
1962 DEBUG: CommitTransactionCommand
1963 DEBUG: CommitTransaction
1964 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1965 SHOW pg_hint_plan.parse_messages;
1966 DEBUG: StartTransactionCommand
1967 DEBUG: StartTransaction
1968 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1969 DEBUG: ProcessUtility
1970 DEBUG: CommitTransactionCommand
1971 DEBUG: CommitTransaction
1972 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1973 pg_hint_plan.parse_messages
1974 -----------------------------
1979 DEBUG: StartTransactionCommand
1980 DEBUG: StartTransaction
1981 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1982 DEBUG: hint syntax error at or near ""
1983 DETAIL: Opening parenthesis is necessary.
1984 DEBUG: CommitTransactionCommand
1985 DEBUG: CommitTransaction
1986 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1992 SET client_min_messages TO debug3;
1993 DEBUG: StartTransactionCommand
1994 DEBUG: StartTransaction
1995 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
1996 DEBUG: ProcessUtility
1997 DEBUG: CommitTransactionCommand
1998 DEBUG: CommitTransaction
1999 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2001 DEBUG: StartTransactionCommand
2002 DEBUG: StartTransaction
2003 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2004 DEBUG: CommitTransactionCommand
2005 DEBUG: CommitTransaction
2006 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2013 SET pg_hint_plan.parse_messages TO debug3;
2014 DEBUG: StartTransactionCommand
2015 DEBUG: StartTransaction
2016 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2017 DEBUG: ProcessUtility
2018 DEBUG: CommitTransactionCommand
2019 DEBUG: CommitTransaction
2020 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2021 SHOW pg_hint_plan.parse_messages;
2022 DEBUG: StartTransactionCommand
2023 DEBUG: StartTransaction
2024 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2025 DEBUG: ProcessUtility
2026 DEBUG: CommitTransactionCommand
2027 DEBUG: CommitTransaction
2028 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2029 pg_hint_plan.parse_messages
2030 -----------------------------
2035 DEBUG: StartTransactionCommand
2036 DEBUG: StartTransaction
2037 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2038 DEBUG: hint syntax error at or near ""
2039 DETAIL: Opening parenthesis is necessary.
2040 DEBUG: CommitTransactionCommand
2041 DEBUG: CommitTransaction
2042 DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2048 SET client_min_messages TO debug2;
2049 DEBUG: StartTransactionCommand
2050 DEBUG: StartTransaction
2051 DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2052 DEBUG: ProcessUtility
2060 SET pg_hint_plan.parse_messages TO debug2;
2061 SHOW pg_hint_plan.parse_messages;
2062 pg_hint_plan.parse_messages
2063 -----------------------------
2068 DEBUG: hint syntax error at or near ""
2069 DETAIL: Opening parenthesis is necessary.
2075 SET client_min_messages TO debug1;
2083 SET pg_hint_plan.parse_messages TO debug1;
2084 SHOW pg_hint_plan.parse_messages;
2085 pg_hint_plan.parse_messages
2086 -----------------------------
2091 DEBUG: hint syntax error at or near ""
2092 DETAIL: Opening parenthesis is necessary.
2098 SET client_min_messages TO log;
2106 SET pg_hint_plan.parse_messages TO log;
2107 SHOW pg_hint_plan.parse_messages;
2108 pg_hint_plan.parse_messages
2109 -----------------------------
2114 LOG: hint syntax error at or near ""
2115 DETAIL: Opening parenthesis is necessary.
2121 SET client_min_messages TO info;
2129 SET pg_hint_plan.parse_messages TO info;
2130 SHOW pg_hint_plan.parse_messages;
2131 pg_hint_plan.parse_messages
2132 -----------------------------
2137 INFO: hint syntax error at or near ""
2138 DETAIL: Opening parenthesis is necessary.
2144 SET client_min_messages TO notice;
2146 INFO: hint syntax error at or near ""
2147 DETAIL: Opening parenthesis is necessary.
2154 SET pg_hint_plan.parse_messages TO notice;
2155 SHOW pg_hint_plan.parse_messages;
2156 pg_hint_plan.parse_messages
2157 -----------------------------
2162 NOTICE: hint syntax error at or near ""
2163 DETAIL: Opening parenthesis is necessary.
2169 SET client_min_messages TO warning;
2177 SET pg_hint_plan.parse_messages TO warning;
2178 SHOW pg_hint_plan.parse_messages;
2179 pg_hint_plan.parse_messages
2180 -----------------------------
2185 WARNING: hint syntax error at or near ""
2186 DETAIL: Opening parenthesis is necessary.
2192 SET client_min_messages TO error;
2200 SET pg_hint_plan.parse_messages TO error;
2201 SHOW pg_hint_plan.parse_messages;
2202 pg_hint_plan.parse_messages
2203 -----------------------------
2208 ERROR: hint syntax error at or near ""
2209 DETAIL: Opening parenthesis is necessary.
2210 SET client_min_messages TO fatal;
2213 RESET client_min_messages;
2214 SET pg_hint_plan.parse_messages TO DEFAULT;
2215 SHOW pg_hint_plan.parse_messages;
2216 pg_hint_plan.parse_messages
2217 -----------------------------
2222 INFO: hint syntax error at or near ""
2223 DETAIL: Opening parenthesis is necessary.
2230 SET pg_hint_plan.parse_messages TO fatal;
2231 ERROR: invalid value for parameter "pg_hint_plan.parse_messages": "fatal"
2232 HINT: Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
2233 SHOW pg_hint_plan.parse_messages;
2234 pg_hint_plan.parse_messages
2235 -----------------------------
2240 SET pg_hint_plan.parse_messages TO panic;
2241 ERROR: invalid value for parameter "pg_hint_plan.parse_messages": "panic"
2242 HINT: Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
2243 SHOW pg_hint_plan.parse_messages;
2244 pg_hint_plan.parse_messages
2245 -----------------------------
2250 SET pg_hint_plan.parse_messages TO on;
2251 ERROR: invalid value for parameter "pg_hint_plan.parse_messages": "on"
2252 HINT: Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
2253 SHOW pg_hint_plan.parse_messages;
2254 pg_hint_plan.parse_messages
2255 -----------------------------
2260 ---- No. A-8-5 original GUC parameter pg_hint_plan.enable_hint_table
2262 INSERT INTO hint_plan.hints VALUES (
2263 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
2267 SET pg_hint_plan.enable_hint_table TO on;
2268 SHOW pg_hint_plan.enable_hint_table;
2269 pg_hint_plan.enable_hint_table
2270 --------------------------------
2274 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2276 --------------------
2282 SET pg_hint_plan.enable_hint_table TO off;
2283 SHOW pg_hint_plan.enable_hint_table;
2284 pg_hint_plan.enable_hint_table
2285 --------------------------------
2289 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2291 ------------------------------
2292 Index Scan using t1_i1 on t1
2293 Index Cond: (c1 = 1)
2297 SET pg_hint_plan.enable_hint_table TO DEFAULT;
2298 SHOW pg_hint_plan.enable_hint_table;
2299 pg_hint_plan.enable_hint_table
2300 --------------------------------
2304 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2306 ------------------------------
2307 Index Scan using t1_i1 on t1
2308 Index Cond: (c1 = 1)
2312 SET pg_hint_plan.enable_hint_table TO enable;
2313 ERROR: parameter "pg_hint_plan.enable_hint_table" requires a Boolean value
2314 SHOW pg_hint_plan.enable_hint_table;
2315 pg_hint_plan.enable_hint_table
2316 --------------------------------
2320 TRUNCATE hint_plan.hints;
2322 ---- No. A-9-1 parse error message output
2325 /*+"Set"(enable_indexscan on)*/SELECT 1;
2326 INFO: hint syntax error at or near ""Set"(enable_indexscan on)"
2327 DETAIL: Unrecognized hint keyword ""Set"".
2333 /*+Set()(enable_indexscan on)*/SELECT 1;
2334 INFO: hint syntax error at or near "Set()(enable_indexscan on)"
2335 DETAIL: Set hint requires name and value of GUC parameter.
2336 INFO: hint syntax error at or near "(enable_indexscan on)"
2337 DETAIL: Unrecognized hint keyword "".
2343 /*+Set(enable_indexscan on*/SELECT 1;
2344 INFO: hint syntax error at or near ""
2345 DETAIL: Closing parenthesis is necessary.
2352 ---- No. A-9-3 hint state output
2354 SET pg_hint_plan.debug_print TO on;
2355 SET client_min_messages TO LOG;
2358 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2367 --------------------
2373 /*+SeqScan(no_table)*/
2374 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2383 ------------------------------
2384 Index Scan using t1_i1 on t1
2385 Index Cond: (c1 = 1)
2389 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2391 -----------------------------------
2393 TID Cond: (ctid = '(1,1)'::tid)
2397 /*+TidScan(t1)BitmapScan(t1)*/
2398 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2399 INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)"
2400 DETAIL: Conflict scan method hint.
2410 ----------------------------------
2411 Bitmap Heap Scan on t1
2412 Recheck Cond: (c1 = 1)
2413 Filter: (ctid = '(1,1)'::tid)
2414 -> Bitmap Index Scan on t1_i1
2415 Index Cond: (c1 = 1)
2418 /*+TidScan(t1)BitmapScan(t1)IndexScan(t1)*/
2419 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2420 INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)IndexScan(t1)"
2421 DETAIL: Conflict scan method hint.
2422 INFO: hint syntax error at or near "BitmapScan(t1)IndexScan(t1)"
2423 DETAIL: Conflict scan method hint.
2434 ---------------------------------
2435 Index Scan using t1_i1 on t1
2436 Index Cond: (c1 = 1)
2437 Filter: (ctid = '(1,1)'::tid)
2440 /*+TidScan(t1)BitmapScan(t1)IndexScan(t1)SeqScan(t1)*/
2441 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
2442 INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)IndexScan(t1)SeqScan(t1)"
2443 DETAIL: Conflict scan method hint.
2444 INFO: hint syntax error at or near "BitmapScan(t1)IndexScan(t1)SeqScan(t1)"
2445 DETAIL: Conflict scan method hint.
2446 INFO: hint syntax error at or near "IndexScan(t1)SeqScan(t1)"
2447 DETAIL: Conflict scan method hint.
2459 ------------------------------------------------
2461 Filter: ((c1 = 1) AND (ctid = '(1,1)'::tid))
2465 /*+Set(enable_indexscan enable)*/
2466 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2467 INFO: parameter "enable_indexscan" requires a Boolean value
2473 Set(enable_indexscan enable)
2476 ------------------------------
2477 Index Scan using t1_i1 on t1
2478 Index Cond: (c1 = 1)
2482 ---- No. A-10-1 hint state output
2484 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2485 EXPLAIN (COSTS false) EXECUTE p1;
2487 ------------------------------
2488 Index Scan using t1_i1 on t1
2489 Index Cond: (c1 = 1)
2493 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
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 ---------------------
2522 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2524 ---------------------
2529 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2531 ---------------------
2540 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2549 EXPLAIN (COSTS false) EXECUTE p1;
2551 --------------------
2556 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2558 EXPLAIN (COSTS false) EXECUTE p1;
2567 --------------------
2574 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2583 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2585 ----------------------------------
2586 Bitmap Heap Scan on t1
2587 Recheck Cond: (c1 < $1)
2588 -> Bitmap Index Scan on t1_i1
2589 Index Cond: (c1 < $1)
2593 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2595 ----------------------------------
2596 Bitmap Heap Scan on t1
2597 Recheck Cond: (c1 < $1)
2598 -> Bitmap Index Scan on t1_i1
2599 Index Cond: (c1 < $1)
2603 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2605 ----------------------------------
2606 Bitmap Heap Scan on t1
2607 Recheck Cond: (c1 < $1)
2608 -> Bitmap Index Scan on t1_i1
2609 Index Cond: (c1 < $1)
2613 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2615 ----------------------------------
2616 Bitmap Heap Scan on t1
2617 Recheck Cond: (c1 < $1)
2618 -> Bitmap Index Scan on t1_i1
2619 Index Cond: (c1 < $1)
2623 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2625 ----------------------------------
2626 Bitmap Heap Scan on t1
2627 Recheck Cond: (c1 < $1)
2628 -> Bitmap Index Scan on t1_i1
2629 Index Cond: (c1 < $1)
2633 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2635 ----------------------------------
2636 Bitmap Heap Scan on t1
2637 Recheck Cond: (c1 < $1)
2638 -> Bitmap Index Scan on t1_i1
2639 Index Cond: (c1 < $1)
2642 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2644 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2653 ----------------------------------
2654 Bitmap Heap Scan on t1
2655 Recheck Cond: (c1 < $1)
2656 -> Bitmap Index Scan on t1_i1
2657 Index Cond: (c1 < $1)
2664 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2672 EXPLAIN (COSTS false) EXECUTE p1;
2674 --------------------
2679 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2680 EXPLAIN (COSTS false) EXECUTE p1;
2689 --------------------
2696 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2704 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2706 ----------------------------------
2707 Bitmap Heap Scan on t1
2708 Recheck Cond: (c1 < $1)
2709 -> Bitmap Index Scan on t1_i1
2710 Index Cond: (c1 < $1)
2713 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2715 ----------------------------------
2716 Bitmap Heap Scan on t1
2717 Recheck Cond: (c1 < $1)
2718 -> Bitmap Index Scan on t1_i1
2719 Index Cond: (c1 < $1)
2722 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2724 ----------------------------------
2725 Bitmap Heap Scan on t1
2726 Recheck Cond: (c1 < $1)
2727 -> Bitmap Index Scan on t1_i1
2728 Index Cond: (c1 < $1)
2731 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2733 ----------------------------------
2734 Bitmap Heap Scan on t1
2735 Recheck Cond: (c1 < $1)
2736 -> Bitmap Index Scan on t1_i1
2737 Index Cond: (c1 < $1)
2740 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2742 ----------------------------------
2743 Bitmap Heap Scan on t1
2744 Recheck Cond: (c1 < $1)
2745 -> Bitmap Index Scan on t1_i1
2746 Index Cond: (c1 < $1)
2749 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2751 ----------------------------------
2752 Bitmap Heap Scan on t1
2753 Recheck Cond: (c1 < $1)
2754 -> Bitmap Index Scan on t1_i1
2755 Index Cond: (c1 < $1)
2758 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2759 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2768 ----------------------------------
2769 Bitmap Heap Scan on t1
2770 Recheck Cond: (c1 < $1)
2771 -> Bitmap Index Scan on t1_i1
2772 Index Cond: (c1 < $1)
2778 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2780 EXPLAIN (COSTS false) EXECUTE p1;
2782 ------------------------------
2783 Index Scan using t1_i1 on t1
2784 Index Cond: (c1 = 1)
2787 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2789 EXPLAIN (COSTS false) EXECUTE p1;
2791 ------------------------------
2792 Index Scan using t1_i1 on t1
2793 Index Cond: (c1 = 1)
2797 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2799 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2801 ---------------------
2806 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2808 ---------------------
2813 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2815 ---------------------
2820 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2822 ---------------------
2827 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2829 ---------------------
2834 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2836 ---------------------
2841 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2843 EXPLAIN (COSTS false) EXECUTE p1 (1000);
2845 ---------------------
2854 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2863 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
2865 --------------------
2870 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2872 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
2881 --------------------
2888 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
2897 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2899 ----------------------------------
2900 Bitmap Heap Scan on t1
2901 Recheck Cond: (c1 < $1)
2902 -> Bitmap Index Scan on t1_i1
2903 Index Cond: (c1 < $1)
2907 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2909 ----------------------------------
2910 Bitmap Heap Scan on t1
2911 Recheck Cond: (c1 < $1)
2912 -> Bitmap Index Scan on t1_i1
2913 Index Cond: (c1 < $1)
2917 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2919 ----------------------------------
2920 Bitmap Heap Scan on t1
2921 Recheck Cond: (c1 < $1)
2922 -> Bitmap Index Scan on t1_i1
2923 Index Cond: (c1 < $1)
2927 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2929 ----------------------------------
2930 Bitmap Heap Scan on t1
2931 Recheck Cond: (c1 < $1)
2932 -> Bitmap Index Scan on t1_i1
2933 Index Cond: (c1 < $1)
2937 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2939 ----------------------------------
2940 Bitmap Heap Scan on t1
2941 Recheck Cond: (c1 < $1)
2942 -> Bitmap Index Scan on t1_i1
2943 Index Cond: (c1 < $1)
2947 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2949 ----------------------------------
2950 Bitmap Heap Scan on t1
2951 Recheck Cond: (c1 < $1)
2952 -> Bitmap Index Scan on t1_i1
2953 Index Cond: (c1 < $1)
2956 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2958 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
2967 ----------------------------------
2968 Bitmap Heap Scan on t1
2969 Recheck Cond: (c1 < $1)
2970 -> Bitmap Index Scan on t1_i1
2971 Index Cond: (c1 < $1)
2978 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
2986 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
2988 --------------------
2993 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
2994 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
3003 --------------------
3010 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
3018 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3020 ----------------------------------
3021 Bitmap Heap Scan on t1
3022 Recheck Cond: (c1 < $1)
3023 -> Bitmap Index Scan on t1_i1
3024 Index Cond: (c1 < $1)
3027 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3029 ----------------------------------
3030 Bitmap Heap Scan on t1
3031 Recheck Cond: (c1 < $1)
3032 -> Bitmap Index Scan on t1_i1
3033 Index Cond: (c1 < $1)
3036 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3038 ----------------------------------
3039 Bitmap Heap Scan on t1
3040 Recheck Cond: (c1 < $1)
3041 -> Bitmap Index Scan on t1_i1
3042 Index Cond: (c1 < $1)
3045 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3047 ----------------------------------
3048 Bitmap Heap Scan on t1
3049 Recheck Cond: (c1 < $1)
3050 -> Bitmap Index Scan on t1_i1
3051 Index Cond: (c1 < $1)
3054 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3056 ----------------------------------
3057 Bitmap Heap Scan on t1
3058 Recheck Cond: (c1 < $1)
3059 -> Bitmap Index Scan on t1_i1
3060 Index Cond: (c1 < $1)
3063 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3065 ----------------------------------
3066 Bitmap Heap Scan on t1
3067 Recheck Cond: (c1 < $1)
3068 -> Bitmap Index Scan on t1_i1
3069 Index Cond: (c1 < $1)
3072 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3073 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3082 ----------------------------------
3083 Bitmap Heap Scan on t1
3084 Recheck Cond: (c1 < $1)
3085 -> Bitmap Index Scan on t1_i1
3086 Index Cond: (c1 < $1)
3092 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3094 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
3096 ------------------------------
3097 Index Scan using t1_i1 on t1
3098 Index Cond: (c1 = 1)
3101 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3103 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
3105 ------------------------------
3106 Index Scan using t1_i1 on t1
3107 Index Cond: (c1 = 1)
3111 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
3113 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3115 ---------------------
3121 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3123 ---------------------
3129 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3131 ---------------------
3137 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3139 ---------------------
3145 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3147 ---------------------
3153 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3155 ---------------------
3160 UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
3162 EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
3164 ---------------------
3171 ---- No. A-10-4 EXECUTE statement name error
3175 ERROR: prepared statement "p1" does not exist
3176 SHOW pg_hint_plan.debug_print;
3177 pg_hint_plan.debug_print
3178 --------------------------
3183 ---- No. A-11-5 EXECUTE statement name error
3186 SELECT pg_stat_statements_reset();
3187 pg_stat_statements_reset
3188 --------------------------
3192 SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3198 /*+Set(enable_seqscan off)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3201 Set(enable_seqscan off)
3211 /*+SeqScan(t1)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
3224 SELECT s.query, s.calls
3225 FROM public.pg_stat_statements s
3226 JOIN pg_catalog.pg_database d
3230 -------------------------------------------------------------------+-------
3231 /*+SeqScan(t1)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1; | 1
3232 /*+Set(enable_seqscan off)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1; | 1
3233 SELECT * FROM s1.t1 WHERE t1.c1 = 1; | 1
3234 SELECT pg_stat_statements_reset(); | 1
3238 ---- No. A-12-1 reset of global variable of core at the error
3239 ---- No. A-12-2 reset of global variable of original at the error
3241 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3243 ------------------------------------
3245 Merge Cond: (t1.c1 = t2.c1)
3246 -> Index Scan using t1_i1 on t1
3252 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
3253 PREPARE p1 AS SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3254 INFO: hint syntax error at or near "NestLoop(t1 t1)"
3255 DETAIL: Relation name "t1" is duplicated.
3260 Set(enable_seqscan off)
3261 Set(geqo_threshold 100)
3267 EXPLAIN (COSTS false) EXECUTE p1;
3269 ------------------------------------
3271 Merge Cond: (t1.c1 = t2.c1)
3275 -> Index Scan using t2_i1 on t2
3280 SELECT name, setting FROM settings;
3282 ---------------------------+-----------
3285 geqo_generations | 0
3288 geqo_selection_bias | 2
3290 constraint_exclusion | partition
3291 cursor_tuple_fraction | 0.1
3292 default_statistics_target | 100
3293 from_collapse_limit | 8
3294 join_collapse_limit | 8
3295 cpu_index_tuple_cost | 0.005
3296 cpu_operator_cost | 0.0025
3297 cpu_tuple_cost | 0.01
3298 effective_cache_size | 16384
3299 random_page_cost | 4
3301 enable_bitmapscan | on
3303 enable_hashjoin | on
3304 enable_indexscan | on
3305 enable_material | on
3306 enable_mergejoin | on
3307 enable_nestloop | on
3311 client_min_messages | log
3314 SET pg_hint_plan.parse_messages TO error;
3315 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
3316 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3317 ERROR: hint syntax error at or near "NestLoop(t1 t1)"
3318 DETAIL: Relation name "t1" is duplicated.
3319 SELECT name, setting FROM settings;
3321 ---------------------------+-----------
3324 geqo_generations | 0
3327 geqo_selection_bias | 2
3329 constraint_exclusion | partition
3330 cursor_tuple_fraction | 0.1
3331 default_statistics_target | 100
3332 from_collapse_limit | 8
3333 join_collapse_limit | 8
3334 cpu_index_tuple_cost | 0.005
3335 cpu_operator_cost | 0.0025
3336 cpu_tuple_cost | 0.01
3337 effective_cache_size | 16384
3338 random_page_cost | 4
3340 enable_bitmapscan | on
3342 enable_hashjoin | on
3343 enable_indexscan | on
3344 enable_material | on
3345 enable_mergejoin | on
3346 enable_nestloop | on
3350 client_min_messages | log
3353 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)*/
3354 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3359 Set(enable_seqscan off)
3360 Set(geqo_threshold 100)
3366 ------------------------------------
3368 Merge Cond: (t1.c1 = t2.c1)
3372 -> Index Scan using t2_i1 on t2
3377 SELECT name, setting FROM settings;
3379 ---------------------------+-----------
3382 geqo_generations | 0
3385 geqo_selection_bias | 2
3387 constraint_exclusion | partition
3388 cursor_tuple_fraction | 0.1
3389 default_statistics_target | 100
3390 from_collapse_limit | 8
3391 join_collapse_limit | 8
3392 cpu_index_tuple_cost | 0.005
3393 cpu_operator_cost | 0.0025
3394 cpu_tuple_cost | 0.01
3395 effective_cache_size | 16384
3396 random_page_cost | 4
3398 enable_bitmapscan | on
3400 enable_hashjoin | on
3401 enable_indexscan | on
3402 enable_material | on
3403 enable_mergejoin | on
3404 enable_nestloop | on
3408 client_min_messages | log
3411 SET pg_hint_plan.parse_messages TO error;
3412 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
3413 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3414 ERROR: hint syntax error at or near "NestLoop(t1 t1)"
3415 DETAIL: Relation name "t1" is duplicated.
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_indexscan | on
3441 enable_material | on
3442 enable_mergejoin | on
3443 enable_nestloop | on
3447 client_min_messages | log
3450 EXPLAIN (COSTS false) EXECUTE p1;
3452 ------------------------------------
3454 Merge Cond: (t1.c1 = t2.c1)
3458 -> Index Scan using t2_i1 on t2
3463 SELECT name, setting FROM settings;
3465 ---------------------------+-----------
3468 geqo_generations | 0
3471 geqo_selection_bias | 2
3473 constraint_exclusion | partition
3474 cursor_tuple_fraction | 0.1
3475 default_statistics_target | 100
3476 from_collapse_limit | 8
3477 join_collapse_limit | 8
3478 cpu_index_tuple_cost | 0.005
3479 cpu_operator_cost | 0.0025
3480 cpu_tuple_cost | 0.01
3481 effective_cache_size | 16384
3482 random_page_cost | 4
3484 enable_bitmapscan | on
3486 enable_hashjoin | on
3487 enable_indexscan | on
3488 enable_material | on
3489 enable_mergejoin | on
3490 enable_nestloop | on
3494 client_min_messages | log
3497 SET pg_hint_plan.parse_messages TO error;
3498 EXPLAIN (COSTS false) EXECUTE p2;
3499 ERROR: prepared statement "p2" does not exist
3500 /*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)*/
3501 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3506 Set(enable_seqscan off)
3507 Set(geqo_threshold 100)
3513 ------------------------------------
3515 Merge Cond: (t1.c1 = t2.c1)
3519 -> Index Scan using t2_i1 on t2
3522 EXPLAIN (COSTS false) EXECUTE p1;
3524 ------------------------------------
3526 Merge Cond: (t1.c1 = t2.c1)
3530 -> Index Scan using t2_i1 on t2
3533 SELECT name, setting FROM settings;
3535 ---------------------------+-----------
3538 geqo_generations | 0
3541 geqo_selection_bias | 2
3543 constraint_exclusion | partition
3544 cursor_tuple_fraction | 0.1
3545 default_statistics_target | 100
3546 from_collapse_limit | 8
3547 join_collapse_limit | 8
3548 cpu_index_tuple_cost | 0.005
3549 cpu_operator_cost | 0.0025
3550 cpu_tuple_cost | 0.01
3551 effective_cache_size | 16384
3552 random_page_cost | 4
3554 enable_bitmapscan | on
3556 enable_hashjoin | on
3557 enable_indexscan | on
3558 enable_material | on
3559 enable_mergejoin | on
3560 enable_nestloop | on
3564 client_min_messages | log
3569 SELECT name, setting FROM settings;
3571 ---------------------------+-----------
3574 geqo_generations | 0
3577 geqo_selection_bias | 2
3579 constraint_exclusion | partition
3580 cursor_tuple_fraction | 0.1
3581 default_statistics_target | 100
3582 from_collapse_limit | 8
3583 join_collapse_limit | 8
3584 cpu_index_tuple_cost | 0.005
3585 cpu_operator_cost | 0.0025
3586 cpu_tuple_cost | 0.01
3587 effective_cache_size | 16384
3588 random_page_cost | 4
3590 enable_bitmapscan | on
3592 enable_hashjoin | on
3593 enable_indexscan | on
3594 enable_material | on
3595 enable_mergejoin | on
3596 enable_nestloop | on
3600 client_min_messages | log
3603 SET pg_hint_plan.parse_messages TO error;
3604 EXPLAIN (COSTS false) EXECUTE p2;
3605 ERROR: prepared statement "p2" does not exist
3606 EXPLAIN (COSTS false) EXECUTE p1;
3608 ------------------------------------
3610 Merge Cond: (t1.c1 = t2.c1)
3614 -> Index Scan using t2_i1 on t2
3617 SELECT name, setting FROM settings;
3619 ---------------------------+-----------
3622 geqo_generations | 0
3625 geqo_selection_bias | 2
3627 constraint_exclusion | partition
3628 cursor_tuple_fraction | 0.1
3629 default_statistics_target | 100
3630 from_collapse_limit | 8
3631 join_collapse_limit | 8
3632 cpu_index_tuple_cost | 0.005
3633 cpu_operator_cost | 0.0025
3634 cpu_tuple_cost | 0.01
3635 effective_cache_size | 16384
3636 random_page_cost | 4
3638 enable_bitmapscan | on
3640 enable_hashjoin | on
3641 enable_indexscan | on
3642 enable_material | on
3643 enable_mergejoin | on
3644 enable_nestloop | on
3648 client_min_messages | log
3652 SET pg_hint_plan.parse_messages TO LOG;
3654 ---- No. A-12-3 effective range of the hint
3656 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3658 ------------------------------------
3660 Merge Cond: (t1.c1 = t2.c1)
3661 -> Index Scan using t1_i1 on t1
3668 SET enable_indexscan TO off;
3669 SET enable_mergejoin TO off;
3670 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3672 ------------------------------
3674 Hash Cond: (t1.c1 = t2.c1)
3680 SELECT name, setting FROM settings;
3682 ---------------------------+-----------
3685 geqo_generations | 0
3688 geqo_selection_bias | 2
3690 constraint_exclusion | partition
3691 cursor_tuple_fraction | 0.1
3692 default_statistics_target | 100
3693 from_collapse_limit | 8
3694 join_collapse_limit | 8
3695 cpu_index_tuple_cost | 0.005
3696 cpu_operator_cost | 0.0025
3697 cpu_tuple_cost | 0.01
3698 effective_cache_size | 16384
3699 random_page_cost | 4
3701 enable_bitmapscan | on
3703 enable_hashjoin | on
3704 enable_indexscan | off
3705 enable_material | on
3706 enable_mergejoin | off
3707 enable_nestloop | on
3711 client_min_messages | log
3714 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
3715 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3721 Set(enable_indexscan on)
3722 Set(geqo_threshold 100)
3728 ------------------------------------
3730 Merge Cond: (t1.c1 = t2.c1)
3731 -> Index Scan using t1_i1 on t1
3732 -> Index Scan using t2_i1 on t2
3735 SELECT name, setting FROM settings;
3737 ---------------------------+-----------
3740 geqo_generations | 0
3743 geqo_selection_bias | 2
3745 constraint_exclusion | partition
3746 cursor_tuple_fraction | 0.1
3747 default_statistics_target | 100
3748 from_collapse_limit | 8
3749 join_collapse_limit | 8
3750 cpu_index_tuple_cost | 0.005
3751 cpu_operator_cost | 0.0025
3752 cpu_tuple_cost | 0.01
3753 effective_cache_size | 16384
3754 random_page_cost | 4
3756 enable_bitmapscan | on
3758 enable_hashjoin | on
3759 enable_indexscan | off
3760 enable_material | on
3761 enable_mergejoin | off
3762 enable_nestloop | on
3766 client_min_messages | log
3769 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3771 ------------------------------
3773 Hash Cond: (t1.c1 = t2.c1)
3780 SET enable_indexscan TO off;
3781 SET enable_mergejoin TO off;
3782 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3784 ------------------------------
3786 Hash Cond: (t1.c1 = t2.c1)
3792 SELECT name, setting FROM settings;
3794 ---------------------------+-----------
3797 geqo_generations | 0
3800 geqo_selection_bias | 2
3802 constraint_exclusion | partition
3803 cursor_tuple_fraction | 0.1
3804 default_statistics_target | 100
3805 from_collapse_limit | 8
3806 join_collapse_limit | 8
3807 cpu_index_tuple_cost | 0.005
3808 cpu_operator_cost | 0.0025
3809 cpu_tuple_cost | 0.01
3810 effective_cache_size | 16384
3811 random_page_cost | 4
3813 enable_bitmapscan | on
3815 enable_hashjoin | on
3816 enable_indexscan | off
3817 enable_material | on
3818 enable_mergejoin | off
3819 enable_nestloop | on
3823 client_min_messages | log
3827 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
3828 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3834 Set(enable_indexscan on)
3835 Set(geqo_threshold 100)
3841 ------------------------------------
3843 Merge Cond: (t1.c1 = t2.c1)
3844 -> Index Scan using t1_i1 on t1
3845 -> Index Scan using t2_i1 on t2
3850 SELECT name, setting FROM settings;
3852 ---------------------------+-----------
3855 geqo_generations | 0
3858 geqo_selection_bias | 2
3860 constraint_exclusion | partition
3861 cursor_tuple_fraction | 0.1
3862 default_statistics_target | 100
3863 from_collapse_limit | 8
3864 join_collapse_limit | 8
3865 cpu_index_tuple_cost | 0.005
3866 cpu_operator_cost | 0.0025
3867 cpu_tuple_cost | 0.01
3868 effective_cache_size | 16384
3869 random_page_cost | 4
3871 enable_bitmapscan | on
3873 enable_hashjoin | on
3874 enable_indexscan | off
3875 enable_material | on
3876 enable_mergejoin | off
3877 enable_nestloop | on
3881 client_min_messages | log
3884 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3886 ------------------------------
3888 Hash Cond: (t1.c1 = t2.c1)
3896 SET enable_indexscan TO off;
3897 SET enable_mergejoin TO off;
3898 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3900 ------------------------------
3902 Hash Cond: (t1.c1 = t2.c1)
3908 SELECT name, setting FROM settings;
3910 ---------------------------+-----------
3913 geqo_generations | 0
3916 geqo_selection_bias | 2
3918 constraint_exclusion | partition
3919 cursor_tuple_fraction | 0.1
3920 default_statistics_target | 100
3921 from_collapse_limit | 8
3922 join_collapse_limit | 8
3923 cpu_index_tuple_cost | 0.005
3924 cpu_operator_cost | 0.0025
3925 cpu_tuple_cost | 0.01
3926 effective_cache_size | 16384
3927 random_page_cost | 4
3929 enable_bitmapscan | on
3931 enable_hashjoin | on
3932 enable_indexscan | off
3933 enable_material | on
3934 enable_mergejoin | off
3935 enable_nestloop | on
3939 client_min_messages | log
3942 /*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
3943 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
3949 Set(enable_indexscan on)
3950 Set(geqo_threshold 100)
3956 ------------------------------------
3958 Merge Cond: (t1.c1 = t2.c1)
3959 -> Index Scan using t1_i1 on t1
3960 -> Index Scan using t2_i1 on t2
3964 SET enable_indexscan TO off;
3965 SET enable_mergejoin TO off;
3966 LOAD 'pg_hint_plan';
3967 SELECT name, setting FROM settings;
3969 ---------------------------+-----------
3972 geqo_generations | 0
3975 geqo_selection_bias | 2
3977 constraint_exclusion | partition
3978 cursor_tuple_fraction | 0.1
3979 default_statistics_target | 100
3980 from_collapse_limit | 8
3981 join_collapse_limit | 8
3982 cpu_index_tuple_cost | 0.005
3983 cpu_operator_cost | 0.0025
3984 cpu_tuple_cost | 0.01
3985 effective_cache_size | 16384
3986 random_page_cost | 4
3988 enable_bitmapscan | on
3990 enable_hashjoin | on
3991 enable_indexscan | off
3992 enable_material | on
3993 enable_mergejoin | off
3994 enable_nestloop | on
3998 client_min_messages | notice
4001 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
4003 ------------------------------
4005 Hash Cond: (t1.c1 = t2.c1)
4011 SET pg_hint_plan.enable_hint TO on;
4012 SET pg_hint_plan.debug_print TO on;
4013 SET client_min_messages TO LOG;
4014 SET search_path TO public;
4015 RESET enable_indexscan;
4016 RESET enable_mergejoin;
4018 ---- No. A-13 call planner recursively
4020 CREATE OR REPLACE FUNCTION nested_planner(cnt int) RETURNS int AS $$
4024 RAISE NOTICE 'nested_planner(%)', cnt;
4031 EXECUTE '/*+ IndexScan(t_1) */'
4032 ' SELECT nested_planner($1) FROM s1.t1 t_1'
4033 ' JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)'
4034 ' ORDER BY t_1.c1 LIMIT 1'
4035 INTO new_cnt USING cnt - 1;
4039 $$ LANGUAGE plpgsql IMMUTABLE;
4041 ---- No. A-13-2 use hint of main query
4044 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4045 NOTICE: nested_planner(1)
4047 ----------------------------------
4048 Index Scan using t1_i1 on t1 t_1
4052 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4053 NOTICE: nested_planner(1)
4062 --------------------------
4065 -> Seq Scan on t1 t_1
4069 ---- No. A-13-3 output number of times of debugging log
4072 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4073 NOTICE: nested_planner(1)
4075 ----------------------------------
4076 Index Scan using t1_i1 on t1 t_1
4080 EXPLAIN (COSTS false) SELECT nested_planner(1) FROM s1.t1 t_1 ORDER BY t_1.c1;
4081 NOTICE: nested_planner(1)
4090 ----------------------------------
4091 Index Scan using t1_i1 on t1 t_1
4095 EXPLAIN (COSTS false) SELECT nested_planner(2) FROM s1.t1 t_1 ORDER BY t_1.c1;
4096 NOTICE: nested_planner(2)
4097 NOTICE: nested_planner(1)
4098 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"
4099 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4101 ----------------------------------
4102 Index Scan using t1_i1 on t1 t_1
4106 EXPLAIN (COSTS false) SELECT nested_planner(2) FROM s1.t1 t_1 ORDER BY t_1.c1;
4107 NOTICE: nested_planner(2)
4108 NOTICE: nested_planner(1)
4109 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"
4110 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4118 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"
4119 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4128 ----------------------------------
4129 Index Scan using t1_i1 on t1 t_1
4133 EXPLAIN (COSTS false) SELECT nested_planner(5) FROM s1.t1 t_1 ORDER BY t_1.c1;
4134 NOTICE: nested_planner(5)
4135 NOTICE: nested_planner(4)
4136 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"
4137 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4138 NOTICE: nested_planner(3)
4139 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"
4140 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4141 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"
4142 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4143 NOTICE: nested_planner(2)
4144 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"
4145 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4146 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"
4147 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4148 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"
4149 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4150 NOTICE: nested_planner(1)
4151 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"
4152 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4153 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"
4154 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4155 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"
4156 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4157 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"
4158 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4160 ----------------------------------
4161 Index Scan using t1_i1 on t1 t_1
4165 EXPLAIN (COSTS false) SELECT nested_planner(5) FROM s1.t1 t_1 ORDER BY t_1.c1;
4166 NOTICE: nested_planner(5)
4167 NOTICE: nested_planner(4)
4168 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"
4169 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4170 NOTICE: nested_planner(3)
4171 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"
4172 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4173 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"
4174 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4175 NOTICE: nested_planner(2)
4176 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"
4177 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4178 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"
4179 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4180 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"
4181 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4182 NOTICE: nested_planner(1)
4183 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"
4184 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4185 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"
4186 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4187 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"
4188 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4189 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"
4190 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4198 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"
4199 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4200 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"
4201 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4202 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"
4203 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4204 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"
4205 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4213 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"
4214 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4215 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"
4216 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4217 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"
4218 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4226 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"
4227 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4228 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"
4229 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4237 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"
4238 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4247 ----------------------------------
4248 Index Scan using t1_i1 on t1 t_1
4252 ---- No. A-13-4 output of debugging log on hint status
4255 /*+HashJoin(t_1 t_2)*/
4256 EXPLAIN (COSTS false)
4257 SELECT nested_planner(2) FROM s1.t1 t_1
4258 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4260 NOTICE: nested_planner(2)
4261 NOTICE: nested_planner(1)
4262 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"
4263 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4271 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"
4272 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4281 --------------------------------------
4285 Hash Cond: (t_1.c1 = t_2.c1)
4286 -> Seq Scan on t1 t_1
4288 -> Seq Scan on t2 t_2
4292 /*+HashJoin(st_1 st_2)*/
4293 EXPLAIN (COSTS false)
4294 SELECT nested_planner(2) FROM s1.t1 st_1
4295 JOIN s1.t2 st_2 ON (st_1.c1 = st_2.c1)
4297 NOTICE: nested_planner(2)
4298 NOTICE: nested_planner(1)
4299 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"
4300 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4308 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"
4309 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4318 ----------------------------------------
4322 Hash Cond: (st_1.c1 = st_2.c1)
4323 -> Seq Scan on t1 st_1
4325 -> Seq Scan on t2 st_2
4329 /*+HashJoin(t_1 t_2)*/
4330 EXPLAIN (COSTS false)
4331 SELECT nested_planner(2) FROM s1.t1 st_1
4332 JOIN s1.t2 st_2 ON (st_1.c1 = st_2.c1)
4334 NOTICE: nested_planner(2)
4335 NOTICE: nested_planner(1)
4336 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"
4337 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4345 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"
4346 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4355 -----------------------------------------
4357 Merge Cond: (st_1.c1 = st_2.c1)
4358 -> Index Scan using t1_i1 on t1 st_1
4361 -> Seq Scan on t2 st_2
4365 /*+HashJoin(st_1 st_2)*/
4366 EXPLAIN (COSTS false)
4367 SELECT nested_planner(2) FROM s1.t1 t_1
4368 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4370 NOTICE: nested_planner(2)
4371 NOTICE: nested_planner(1)
4372 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"
4373 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4381 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"
4382 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4391 ----------------------------------------
4393 Merge Cond: (t_1.c1 = t_2.c1)
4394 -> Index Scan using t1_i1 on t1 t_1
4397 -> Seq Scan on t2 t_2
4401 /*+HashJoin(t_1 t_1)*/
4402 EXPLAIN (COSTS false)
4403 SELECT nested_planner(2) FROM s1.t1 t_1
4405 NOTICE: nested_planner(2)
4406 NOTICE: nested_planner(1)
4407 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"
4408 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4409 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4410 DETAIL: Relation name "t_1" is duplicated.
4411 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"
4412 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4420 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"
4421 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4430 ----------------------------------
4431 Index Scan using t1_i1 on t1 t_1
4435 CREATE OR REPLACE FUNCTION nested_planner_one_t(cnt int) RETURNS int AS $$
4439 RAISE NOTICE 'nested_planner_one_t(%)', cnt;
4445 EXECUTE '/*+ IndexScan(t_1) */'
4446 ' SELECT nested_planner_one_t($1) FROM s1.t1 t_1'
4447 ' ORDER BY t_1.c1 LIMIT 1'
4448 INTO new_cnt USING cnt - 1;
4452 $$ LANGUAGE plpgsql IMMUTABLE;
4453 EXPLAIN (COSTS false)
4454 SELECT nested_planner_one_t(2) FROM s1.t1 t_1
4455 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4457 NOTICE: nested_planner_one_t(2)
4458 NOTICE: nested_planner_one_t(1)
4459 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner_one_t($1) FROM s1.t1 t_1 ORDER BY t_1.c1 LIMIT 1"
4460 PL/pgSQL function "nested_planner_one_t" line 11 at EXECUTE statement
4462 ----------------------------------------
4464 Merge Cond: (t_1.c1 = t_2.c1)
4465 -> Index Scan using t1_i1 on t1 t_1
4468 -> Seq Scan on t2 t_2
4471 /*+HashJoin(t_1 t_1)*/
4472 EXPLAIN (COSTS false)
4473 SELECT nested_planner_one_t(2) FROM s1.t1 t_1
4474 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4476 NOTICE: nested_planner_one_t(2)
4477 NOTICE: nested_planner_one_t(1)
4478 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner_one_t($1) FROM s1.t1 t_1 ORDER BY t_1.c1 LIMIT 1"
4479 PL/pgSQL function "nested_planner_one_t" line 11 at EXECUTE statement
4487 CONTEXT: SQL statement "/*+ IndexScan(t_1) */ SELECT nested_planner_one_t($1) FROM s1.t1 t_1 ORDER BY t_1.c1 LIMIT 1"
4488 PL/pgSQL function "nested_planner_one_t" line 11 at EXECUTE statement
4489 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4490 DETAIL: Relation name "t_1" is duplicated.
4499 ----------------------------------------
4501 Merge Cond: (t_1.c1 = t_2.c1)
4502 -> Index Scan using t1_i1 on t1 t_1
4505 -> Seq Scan on t2 t_2
4508 DROP FUNCTION nested_planner_one_t(int);
4510 /*+HashJoin(t_1 t_1)*/
4511 EXPLAIN (COSTS false)
4512 SELECT nested_planner(2) FROM s1.t1 t_1
4513 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4515 NOTICE: nested_planner(2)
4516 NOTICE: nested_planner(1)
4517 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"
4518 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4519 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4520 DETAIL: Relation name "t_1" is duplicated.
4521 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"
4522 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4530 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"
4531 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4532 INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
4533 DETAIL: Relation name "t_1" is duplicated.
4542 ----------------------------------------
4544 Merge Cond: (t_1.c1 = t_2.c1)
4545 -> Index Scan using t1_i1 on t1 t_1
4548 -> Seq Scan on t2 t_2
4552 /*+MergeJoin(t_1 t_2)HashJoin(t_1 t_2)*/
4553 EXPLAIN (COSTS false)
4554 SELECT nested_planner(2) FROM s1.t1 t_1
4555 JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
4557 INFO: hint syntax error at or near "MergeJoin(t_1 t_2)HashJoin(t_1 t_2)"
4558 DETAIL: Conflict join method hint.
4559 NOTICE: nested_planner(2)
4560 INFO: hint syntax error at or near "MergeJoin(t_1 t_2)HashJoin(t_1 t_2)"
4561 DETAIL: Conflict join method hint.
4562 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"
4563 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4564 NOTICE: nested_planner(1)
4565 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"
4566 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4575 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"
4576 PL/pgSQL function "nested_planner" line 12 at EXECUTE statement
4586 --------------------------------------
4590 Hash Cond: (t_1.c1 = t_2.c1)
4591 -> Seq Scan on t1 t_1
4593 -> Seq Scan on t2 t_2