CREATE EXTENSION pg_hint_plan;
----
----- No. A-5-1 comment pattarn
+---- No. A-5-1 comment pattern
----
-- No. A-5-1-1
EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
-- No. A-5-1-3
---+SeqScan(t1)
+/*SeqScan(t1)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
-- No. A-5-1-4
EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
-- No. A-5-1-5
--- +SeqScan(t1)
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
-
--- No. A-5-1-6
---SeqScan(t1)
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
-
--- No. A-5-1-7
-/*+SeqScan(t1) /* nest comment */ */
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
-
--- No. A-5-1-8
-/* +SeqScan(t1) /* nest comment */ */
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
-
--- No. A-5-1-9
-/*SeqScan(t1) /* nest comment */ */
+/* /*+SeqScan(t1)*/ */
EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
----
EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
-- No. A-5-2-2
-EXPLAIN (COSTS false) SELECT c1 /*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
+EXPLAIN (COSTS false) SELECT c1, c2 AS c_2 /*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
-- No. A-5-2-3
EXPLAIN (COSTS false) SELECT c1 AS "c1"/*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
-- No. A-5-2-4
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
EXPLAIN (COSTS false) SELECT * /*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
----
---- No. A-6-1 hint's table definition
----
+SET pg_hint_plan.enable_hint_table TO on;
+-- No. A-6-1-1
+\d hint_plan.hints
+
----
---- No. A-6-2 search condition
----
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+-- No. A-6-2-1
+INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
+ VALUES (
+ 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
+ '',
+ 'SeqScan(t1)');
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+
+-- No. A-6-2-2
+INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
+ VALUES (
+ 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
+ 'psql',
+ 'BitmapScan(t1)');
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+TRUNCATE hint_plan.hints;
+
+-- No. A-6-2-3
+INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
+ VALUES (
+ 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
+ 'dummy_application_name',
+ 'SeqScan(t1)'
+);
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+TRUNCATE hint_plan.hints;
+
+-- No. A-6-2-4
+INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
+ VALUES (
+ 'EXPLAIN (COSTS false) SELECT * FROM s1.t1;',
+ '',
+ 'SeqScan(t1)'
+);
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+TRUNCATE hint_plan.hints;
----
---- No. A-6-3 number of constant
----
+-- No. A-6-3-1
+INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
+ VALUES (
+ 'EXPLAIN (COSTS false) SELECT c1 FROM s1.t1;',
+ '',
+ 'SeqScan(t1)'
+);
+EXPLAIN (COSTS false) SELECT c1 FROM s1.t1;
+TRUNCATE hint_plan.hints;
+
+-- No. A-6-3-2
+INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
+ VALUES (
+ 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
+ '',
+ 'SeqScan(t1)'
+);
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+TRUNCATE hint_plan.hints;
+
+-- No. A-6-3-3
+INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
+ VALUES (
+ 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ? OR t1.c1 = ?;',
+ '',
+ 'SeqScan(t1)'
+);
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 OR t1.c1 = 0;
+TRUNCATE hint_plan.hints;
+SET pg_hint_plan.enable_hint_table TO off;
+
----
---- No. A-7-2 hint delimiter
----
-- No. A-9-2-3
/*+SeqScan(()*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(" WHERE "(".c1 = 1;
-/*+SeqScan(((()*/
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(((" WHERE "(((".c1 = 1;
/*+SeqScan("(")*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(" WHERE "(".c1 = 1;
-/*+SeqScan("(((")*/
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(((" WHERE "(((".c1 = 1;
-- No. A-7-3-4
-- No. A-9-2-4
Setあ" WHERE "tT()""
Setあ".c1 = 1;
+-- No. A-7-3-13
+-- No. A-9-2-13
+/*+SeqScan(a123456789b123456789c123456789d123456789e123456789f123)*/
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 "123456789012345678901234567890123456789012345678901234" WHERE "123456789012345678901234567890123456789012345678901234".c1 = 1;
+
----
---- No. A-7-4 hint parse error
----
---- No. A-8-5 original GUC parameter pg_hint_plan.enable_hint_table
----
+INSERT INTO hint_plan.hints (norm_query_string, application_name, hints)
+ VALUES (
+ 'EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = ?;',
+ '',
+ 'SeqScan(t1)');
+
+-- No. A-8-5-1
+SET pg_hint_plan.enable_hint_table TO on;
+SHOW pg_hint_plan.enable_hint_table;
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+
+-- No. A-8-5-2
+SET pg_hint_plan.enable_hint_table TO off;
+SHOW pg_hint_plan.enable_hint_table;
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+
+-- No. A-8-5-3
+SET pg_hint_plan.enable_hint_table TO DEFAULT;
+SHOW pg_hint_plan.enable_hint_table;
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+
+-- No. A-8-5-4
+SET pg_hint_plan.enable_hint_table TO enable;
+SHOW pg_hint_plan.enable_hint_table;
+
+TRUNCATE hint_plan.hints;
+
----
---- No. A-9-1 parse error message output
----