OSDN Git Service

No.A-6の試験のPG9.1用予測結果を更新した。
[pghintplan/pg_hint_plan.git] / expected / ut-A-9.1.out
index f003be5..cee4bd2 100644 (file)
@@ -4,7 +4,19 @@ SET pg_hint_plan.debug_print TO on;
 SET client_min_messages TO LOG;
 SET search_path TO public;
 ----
----- No. A-5-1 hint format
+---- No.A-1-1 install
+---- No.A-2-1 uninstall
+----
+-- No.A-1-1-3
+CREATE EXTENSION pg_hint_plan;
+-- No.A-1-2-3
+DROP EXTENSION pg_hint_plan;
+-- No.A-1-1-4
+CREATE EXTENSION pg_hint_plan SCHEMA other_name;
+ERROR:  extension "pg_hint_plan" must be installed in schema "hint_plan"
+CREATE EXTENSION pg_hint_plan;
+----
+---- No. A-5-1 comment pattern
 ----
 -- No. A-5-1-1
 /*+SeqScan(t1)*/
@@ -101,8 +113,15 @@ EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 ---- No. A-5-2 hint position
 ----
 -- No. A-5-2-1
+EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
+          QUERY PLAN          
+------------------------------
+ Index Scan using t1_i1 on t1
+   Index Cond: (c1 = 1)
+(2 rows)
+
 /*+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;
 LOG:  pg_hint_plan:
 used hint:
 SeqScan(t1)
@@ -117,8 +136,54 @@ error hint:
 (2 rows)
 
 -- No. A-5-2-2
-/* normal comment */
-/*+SeqScan(t1)*/
+EXPLAIN (COSTS false) SELECT c1, c2 AS c_2 /*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
+LOG:  pg_hint_plan:
+used hint:
+SeqScan(t1)
+not used hint:
+duplication hint:
+error hint:
+
+     QUERY PLAN     
+--------------------
+ Seq Scan on t1
+   Filter: (c1 = 1)
+(2 rows)
+
+-- No. A-5-2-3
+EXPLAIN (COSTS false) SELECT c1 AS "c1"/*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
+          QUERY PLAN          
+------------------------------
+ Index Scan using t1_i1 on t1
+   Index Cond: (c1 = 1)
+(2 rows)
+
+-- No. A-5-2-4
+EXPLAIN (COSTS false) SELECT * /*+SeqScan(t1)*/ FROM s1.t1 WHERE t1.c1 = 1;
+          QUERY PLAN          
+------------------------------
+ Index Scan using t1_i1 on t1
+   Index Cond: (c1 = 1)
+(2 rows)
+
+----
+---- 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
+       Table "hint_plan.hints"
+      Column       | Type | Modifiers 
+-------------------+------+-----------
+ norm_query_string | text | not null
+ application_name  | text | not null
+ hints             | text | not null
+Indexes:
+    "hints_pkey" PRIMARY KEY, btree (norm_query_string, application_name)
+
+----
+---- No. A-6-2 search condition
+----
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
           QUERY PLAN          
 ------------------------------
@@ -126,16 +191,143 @@ EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
    Index Cond: (c1 = 1)
 (2 rows)
 
--- No. A-5-2-3
-EXPLAIN (COSTS false) SELECT /*+SeqScan(t1)*/ * FROM s1.t1 WHERE t1.c1 = 1;
+-- No. A-6-2-1
+INSERT INTO hint_plan.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;
+LOG:  pg_hint_plan:
+used hint:
+SeqScan(t1)
+not used hint:
+duplication hint:
+error hint:
+
+     QUERY PLAN     
+--------------------
+ Seq Scan on t1
+   Filter: (c1 = 1)
+(2 rows)
+
+-- No. A-6-2-2
+INSERT INTO hint_plan.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;
+LOG:  pg_hint_plan:
+used hint:
+BitmapScan(t1)
+not used hint:
+duplication hint:
+error hint:
+
+            QUERY PLAN            
+----------------------------------
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 = 1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 = 1)
+(4 rows)
+
+TRUNCATE hint_plan.hints;
+-- No. A-6-2-3
+INSERT INTO hint_plan.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;
+          QUERY PLAN          
+------------------------------
+ Index Scan using t1_i1 on t1
+   Index Cond: (c1 = 1)
+(2 rows)
+
+TRUNCATE hint_plan.hints;
+-- No. A-6-2-4
+INSERT INTO hint_plan.hints VALUES (
+       'EXPLAIN (COSTS false) SELECT * FROM s1.t1;',
+       '',
+       'SeqScan(t1)'
+);
+EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
           QUERY PLAN          
 ------------------------------
  Index Scan using t1_i1 on t1
    Index Cond: (c1 = 1)
 (2 rows)
 
+TRUNCATE hint_plan.hints;
+----
+---- No. A-6-3 number of constant
+----
+-- No. A-6-3-1
+INSERT INTO hint_plan.hints VALUES (
+       'EXPLAIN (COSTS false) SELECT c1 FROM s1.t1;',
+       '',
+       'SeqScan(t1)'
+);
+EXPLAIN (COSTS false) SELECT c1 FROM s1.t1;
+LOG:  pg_hint_plan:
+used hint:
+SeqScan(t1)
+not used hint:
+duplication hint:
+error hint:
+
+   QUERY PLAN   
+----------------
+ Seq Scan on t1
+(1 row)
+
+TRUNCATE hint_plan.hints;
+-- No. A-6-3-2
+INSERT INTO hint_plan.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;
+LOG:  pg_hint_plan:
+used hint:
+SeqScan(t1)
+not used hint:
+duplication hint:
+error hint:
+
+     QUERY PLAN     
+--------------------
+ Seq Scan on t1
+   Filter: (c1 = 1)
+(2 rows)
+
+TRUNCATE hint_plan.hints;
+-- No. A-6-3-3
+INSERT INTO hint_plan.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;
+LOG:  pg_hint_plan:
+used hint:
+SeqScan(t1)
+not used hint:
+duplication hint:
+error hint:
+
+            QUERY PLAN            
+----------------------------------
+ Seq Scan on t1
+   Filter: ((c1 = 1) OR (c1 = 0))
+(2 rows)
+
+TRUNCATE hint_plan.hints;
+SET pg_hint_plan.enable_hint_table TO off;
 ----
----- No. A-5-4 hint delimiter
+---- No. A-7-2 hint delimiter
 ----
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
           QUERY PLAN          
@@ -144,13 +336,13 @@ EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
    Index Cond: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-1
--- No. A-5-4-2
--- No. A-5-4-3
--- No. A-5-4-4
--- No. A-5-4-5
--- No. A-5-4-6
--- No. A-5-4-7
+-- No. A-7-2-1
+-- No. A-7-2-2
+-- No. A-7-2-3
+-- No. A-7-2-4
+-- No. A-7-2-5
+-- No. A-7-2-6
+-- No. A-7-2-7
 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -167,7 +359,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-8
+-- No. A-7-2-8
 /*+ Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -184,7 +376,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-9
+-- No. A-7-2-9
 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off") */
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -201,7 +393,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-10
+-- No. A-7-2-10
 /*+ Set (enable_indexscan"off") Set (enable_bitmapscan"off")*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -218,7 +410,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-11
+-- No. A-7-2-11
 /*+Set ( enable_indexscan"off")Set ( enable_bitmapscan"off")*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -235,7 +427,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-12
+-- No. A-7-2-12
 /*+Set(enable_indexscan"off" ) Set(enable_bitmapscan"off" ) */
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -252,7 +444,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-13
+-- No. A-7-2-13
 /*+Set( enable_indexscan "off" )Set( enable_bitmapscan "off" )*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -269,7 +461,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-14
+-- No. A-7-2-14
 /*+ Set ( enable_indexscan "off" ) Set ( enable_bitmapscan "off" ) */
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -286,7 +478,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-15
+-- No. A-7-2-15
 /*+    Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -303,7 +495,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-16
+-- No. A-7-2-16
 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")       */
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -320,7 +512,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-17
+-- No. A-7-2-17
 /*+    Set     (enable_indexscan"off") Set     (enable_bitmapscan"off")*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -337,7 +529,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-18
+-- No. A-7-2-18
 /*+Set (       enable_indexscan"off")Set       (       enable_bitmapscan"off")*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -354,7 +546,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-19
+-- No. A-7-2-19
 /*+Set(enable_indexscan"off"   )       Set(enable_bitmapscan"off"      )       */
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -371,7 +563,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-20
+-- No. A-7-2-20
 /*+Set(        enable_indexscan        "off"   )Set(   enable_bitmapscan       "off"   )*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -388,7 +580,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-21
+-- No. A-7-2-21
 /*+    Set     (       enable_indexscan        "off"   )       Set     (       enable_bitmapscan       "off"   )       */
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -405,7 +597,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-22
+-- No. A-7-2-22
 /*+
 Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
@@ -423,7 +615,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-23
+-- No. A-7-2-23
 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")
 */
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
@@ -441,7 +633,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-24
+-- No. A-7-2-24
 /*+
 Set
 (enable_indexscan"off")
@@ -462,7 +654,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-25
+-- No. A-7-2-25
 /*+Set
 (
 enable_indexscan"off")Set
@@ -483,7 +675,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-26
+-- No. A-7-2-26
 /*+Set(enable_indexscan"off"
 )
 Set(enable_bitmapscan"off"
@@ -504,7 +696,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-27
+-- No. A-7-2-27
 /*+Set(
 enable_indexscan
 "off"
@@ -527,7 +719,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-28
+-- No. A-7-2-28
 /*+
 Set
 (
@@ -555,7 +747,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-29
+-- No. A-7-2-29
 /*+    
         Set(enable_indexscan"off")Set(enable_bitmapscan"off")*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
@@ -573,7 +765,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-30
+-- No. A-7-2-30
 /*+Set(enable_indexscan"off")Set(enable_bitmapscan"off")       
         */
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
@@ -591,7 +783,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-31
+-- No. A-7-2-31
 /*+    
         Set    
         (enable_indexscan"off")        
@@ -612,7 +804,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-32
+-- No. A-7-2-32
 /*+Set         
         (      
         enable_indexscan"off")Set      
@@ -633,7 +825,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-33
+-- No. A-7-2-33
 /*+Set(enable_indexscan"off"   
         )      
         Set(enable_bitmapscan"off"     
@@ -654,7 +846,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-34
+-- No. A-7-2-34
 /*+Set(        
         enable_indexscan       
         "off"  
@@ -677,7 +869,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-4-35
+-- No. A-7-2-35
 /*+    
         Set    
         (      
@@ -706,11 +898,11 @@ error hint:
 (2 rows)
 
 ----
----- No. A-5-5 hint object pattern
----- No. A-7-2 message object pattern
+---- No. A-7-3 hint object pattern
+---- No. A-9-2 message object pattern
 ----
--- No. A-5-5-1
--- No. A-7-2-1
+-- No. A-7-3-1
+-- No. A-9-2-1
 /*+SeqScan(t)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 t WHERE t.c1 = 1;
 LOG:  pg_hint_plan:
@@ -771,8 +963,8 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-5-2
--- No. A-7-2-2
+-- No. A-7-3-2
+-- No. A-9-2-2
 /*+SeqScan(T)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "T" WHERE "T".c1 = 1;
 LOG:  pg_hint_plan:
@@ -833,8 +1025,8 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-5-3
--- No. A-7-2-3
+-- No. A-7-3-3
+-- No. A-9-2-3
 /*+SeqScan(()*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(" WHERE "(".c1 = 1;
 LOG:  pg_hint_plan:
@@ -895,12 +1087,21 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-5-4
--- No. A-7-2-4
+-- No. A-7-3-4
+-- No. A-9-2-4
 /*+SeqScan())*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ")" WHERE ")".c1 = 1;
-INFO:  hint syntax error at or near "))"
-DETAIL:  Relation name is necessary.
+INFO:  hint syntax error at or near ")"
+DETAIL:  SeqScan hint requires a relation.
+INFO:  hint syntax error at or near ")"
+DETAIL:  Unrecognized hint keyword ")".
+LOG:  pg_hint_plan:
+used hint:
+not used hint:
+duplication hint:
+error hint:
+SeqScan()
+
             QUERY PLAN            
 ----------------------------------
  Index Scan using t1_i1 on t1 ")"
@@ -937,12 +1138,12 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-5-5
--- No. A-7-2-5
+-- No. A-7-3-5
+-- No. A-9-2-5
 /*+SeqScan(")*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 """" WHERE """".c1 = 1;
 INFO:  hint syntax error at or near ""
-DETAIL:  Unterminated quoted relation name.
+DETAIL:  Unterminated quoted string.
             QUERY PLAN             
 -----------------------------------
  Index Scan using t1_i1 on t1 """"
@@ -979,12 +1180,19 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-5-6
--- No. A-7-2-6
+-- No. A-7-3-6
+-- No. A-9-2-6
 /*+SeqScan( )*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
-INFO:  hint syntax error at or near ")"
-DETAIL:  Relation name is necessary.
+INFO:  hint syntax error at or near ""
+DETAIL:  SeqScan hint requires a relation.
+LOG:  pg_hint_plan:
+used hint:
+not used hint:
+duplication hint:
+error hint:
+SeqScan()
+
             QUERY PLAN            
 ----------------------------------
  Index Scan using t1_i1 on t1 " "
@@ -1021,12 +1229,19 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-5-7
--- No. A-7-2-7
+-- No. A-7-3-7
+-- No. A-9-2-7
 /*+SeqScan(    )*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "    " WHERE "       ".c1 = 1;
-INFO:  hint syntax error at or near ")"
-DETAIL:  Relation name is necessary.
+INFO:  hint syntax error at or near ""
+DETAIL:  SeqScan hint requires a relation.
+LOG:  pg_hint_plan:
+used hint:
+not used hint:
+duplication hint:
+error hint:
+SeqScan()
+
             QUERY PLAN             
 -----------------------------------
  Index Scan using t1_i1 on t1 "  "
@@ -1063,15 +1278,22 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-5-8
--- No. A-7-2-8
+-- No. A-7-3-8
+-- No. A-9-2-8
 /*+SeqScan(
 )*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "
 " WHERE "
 ".c1 = 1;
-INFO:  hint syntax error at or near ")"
-DETAIL:  Relation name is necessary.
+INFO:  hint syntax error at or near ""
+DETAIL:  SeqScan hint requires a relation.
+LOG:  pg_hint_plan:
+used hint:
+not used hint:
+duplication hint:
+error hint:
+SeqScan()
+
            QUERY PLAN           
 --------------------------------
  Index Scan using t1_i1 on t1 "
@@ -1129,8 +1351,8 @@ error hint:
    Filter: (c1 = 1)
 (5 rows)
 
--- No. A-5-5-9
--- No. A-7-2-9
+-- No. A-7-3-9
+-- No. A-9-2-9
 /*+SeqScan(Set)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "Set" WHERE "Set".c1 = 1;
 LOG:  pg_hint_plan:
@@ -1176,8 +1398,8 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-5-10
--- No. A-7-2-10
+-- No. A-7-3-10
+-- No. A-9-2-10
 /*+SeqScan(あ)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 あ WHERE あ.c1 = 1;
 LOG:  pg_hint_plan:
@@ -1238,8 +1460,8 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-5-5-11
--- No. A-7-2-11
+-- No. A-7-3-11
+-- No. A-9-2-11
 /*+SeqScan(/**/)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**/" WHERE "/**/".c1 = 1;
 INFO:  hint syntax error at or near "/**/)*/
@@ -1262,8 +1484,8 @@ DETAIL:  Nested block comments are not supported.
    Index Cond: (c1 = 1)
 (2 rows)
 
--- No. A-5-5-12
--- No. A-7-2-12
+-- No. A-7-3-12
+-- No. A-9-2-12
 /*+SeqScan("tT()""     
 Set/**/あ")*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""      
@@ -1303,9 +1525,9 @@ error hint:
 (3 rows)
 
 ----
----- No. A-5-6 hint parse error
+---- No. A-7-4 hint parse error
 ----
--- No. A-5-6-1
+-- No. A-7-4-1
 /*+Set(enable_indexscan off)Set enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 INFO:  hint syntax error at or near "enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
@@ -1325,31 +1547,31 @@ error hint:
          Index Cond: (c1 = 1)
 (4 rows)
 
--- No. A-5-6-2
+-- No. A-7-4-2
 /*+Set(enable_indexscan off)Set(enable_tidscan off Set(enable_bitmapscan off)SeqScan(t1)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
-INFO:  hint syntax error at or near "Set(enable_bitmapscan off)SeqScan(t1)"
-DETAIL:  Closing parenthesis is necessary.
+INFO:  hint syntax error at or near "Set(enable_tidscan off Set(enable_bitmapscan off)SeqScan(t1)"
+DETAIL:  Set hint requires name and value of GUC parameter.
 LOG:  pg_hint_plan:
 used hint:
+SeqScan(t1)
 Set(enable_indexscan off)
 not used hint:
 duplication hint:
 error hint:
+Set(enable_tidscan off Set(enable_bitmapscan off)
 
-            QUERY PLAN            
-----------------------------------
- Bitmap Heap Scan on t1
-   Recheck Cond: (c1 = 1)
-   ->  Bitmap Index Scan on t1_i1
-         Index Cond: (c1 = 1)
-(4 rows)
+     QUERY PLAN     
+--------------------
+ Seq Scan on t1
+   Filter: (c1 = 1)
+(2 rows)
 
--- No. A-5-6-3
+-- No. A-7-4-3
 /*+Set(enable_indexscan off)Set(enable_tidscan "off)Set(enable_bitmapscan off)SeqScan(t1)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 INFO:  hint syntax error at or near ""
-DETAIL:  Unterminated quoted parameter value.
+DETAIL:  Unterminated quoted string.
 LOG:  pg_hint_plan:
 used hint:
 Set(enable_indexscan off)
@@ -1365,11 +1587,11 @@ error hint:
          Index Cond: (c1 = 1)
 (4 rows)
 
--- No. A-5-6-4
+-- No. A-7-4-4
 /*+Set(enable_indexscan off)SeqScan("")Set(enable_bitmapscan off)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 INFO:  hint syntax error at or near ")Set(enable_bitmapscan off)"
-DETAIL:  Relation name is necessary.
+DETAIL:  Zero-length delimited string.
 LOG:  pg_hint_plan:
 used hint:
 Set(enable_indexscan off)
@@ -1385,7 +1607,7 @@ error hint:
          Index Cond: (c1 = 1)
 (4 rows)
 
--- No. A-5-6-5
+-- No. A-7-4-5
 /*+Set(enable_indexscan off)NoSet(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 INFO:  hint syntax error at or near "NoSet(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
@@ -1405,7 +1627,7 @@ error hint:
          Index Cond: (c1 = 1)
 (4 rows)
 
--- No. A-5-6-6
+-- No. A-7-4-6
 /*+Set(enable_indexscan off)"Set"(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 INFO:  hint syntax error at or near ""Set"(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
@@ -1425,7 +1647,7 @@ error hint:
          Index Cond: (c1 = 1)
 (4 rows)
 
--- No. A-5-6-7
+-- No. A-7-4-7
 /*+Set(enable_indexscan off)Set(enable_tidscan /* value */off)Set(enable_bitmapscan off)SeqScan(t1)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 INFO:  hint syntax error at or near "/* value */off)Set(enable_bitmapscan off)SeqScan(t1)*/
@@ -1438,9 +1660,9 @@ DETAIL:  Nested block comments are not supported.
 (2 rows)
 
 ----
----- No. A-6-1 original GUC parameter
+---- No. A-8-1 original GUC parameter
 ----
--- No. A-6-1-1
+-- No. A-8-1-1
 SET ROLE super_user;
 SET pg_hint_plan.debug_print TO off;
 SHOW pg_hint_plan.enable_hint;
@@ -1503,7 +1725,7 @@ SHOW pg_hint_plan.parse_messages;
  info
 (1 row)
 
--- No. A-6-1-2
+-- No. A-8-1-2
 SET ROLE normal_user;
 SHOW pg_hint_plan.enable_hint;
  pg_hint_plan.enable_hint 
@@ -1567,9 +1789,9 @@ SHOW pg_hint_plan.parse_messages;
 
 RESET ROLE;
 ----
----- No. A-6-2 original GUC parameter pg_hint_plan.enable_hint
+---- No. A-8-2 original GUC parameter pg_hint_plan.enable_hint
 ----
--- No. A-6-2-1
+-- No. A-8-2-1
 SET pg_hint_plan.enable_hint TO on;
 SHOW pg_hint_plan.enable_hint;
  pg_hint_plan.enable_hint 
@@ -1587,7 +1809,7 @@ EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
          Index Cond: (c1 = 1)
 (4 rows)
 
--- No. A-6-2-2
+-- No. A-8-2-2
 SET pg_hint_plan.enable_hint TO off;
 SHOW pg_hint_plan.enable_hint;
  pg_hint_plan.enable_hint 
@@ -1603,7 +1825,7 @@ EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
    Index Cond: (c1 = 1)
 (2 rows)
 
--- No. A-6-2-3
+-- No. A-8-2-3
 SET pg_hint_plan.enable_hint TO DEFAULT;
 SHOW pg_hint_plan.enable_hint;
  pg_hint_plan.enable_hint 
@@ -1621,7 +1843,7 @@ EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
          Index Cond: (c1 = 1)
 (4 rows)
 
--- No. A-6-2-4
+-- No. A-8-2-4
 SET pg_hint_plan.enable_hint TO enable;
 ERROR:  parameter "pg_hint_plan.enable_hint" requires a Boolean value
 SHOW pg_hint_plan.enable_hint;
@@ -1631,9 +1853,9 @@ SHOW pg_hint_plan.enable_hint;
 (1 row)
 
 ----
----- No. A-6-3 original GUC parameter pg_hint_plan.debug_print
+---- No. A-8-3 original GUC parameter pg_hint_plan.debug_print
 ----
--- No. A-6-3-1
+-- No. A-8-3-1
 SET pg_hint_plan.debug_print TO on;
 SHOW pg_hint_plan.debug_print;
  pg_hint_plan.debug_print 
@@ -1658,7 +1880,7 @@ error hint:
          Index Cond: (c1 = 1)
 (4 rows)
 
--- No. A-6-3-2
+-- No. A-8-3-2
 SET pg_hint_plan.debug_print TO off;
 SHOW pg_hint_plan.debug_print;
  pg_hint_plan.debug_print 
@@ -1676,7 +1898,7 @@ EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
          Index Cond: (c1 = 1)
 (4 rows)
 
--- No. A-6-3-3
+-- No. A-8-3-3
 SET pg_hint_plan.debug_print TO DEFAULT;
 SHOW pg_hint_plan.debug_print;
  pg_hint_plan.debug_print 
@@ -1694,7 +1916,7 @@ EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
          Index Cond: (c1 = 1)
 (4 rows)
 
--- No. A-6-3-4
+-- No. A-8-3-4
 SET pg_hint_plan.debug_print TO enable;
 ERROR:  parameter "pg_hint_plan.debug_print" requires a Boolean value
 SHOW pg_hint_plan.debug_print;
@@ -1704,13 +1926,13 @@ SHOW pg_hint_plan.debug_print;
 (1 row)
 
 ----
----- No. A-6-4 original GUC parameter pg_hint_plan.parse_messages
+---- No. A-8-4 original GUC parameter pg_hint_plan.parse_messages
 ----
 SET client_min_messages TO debug5;
 DEBUG:  CommitTransactionCommand
 DEBUG:  CommitTransaction
 DEBUG:  name: unnamed; blockState:       STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children: 
--- No. A-6-4-1
+-- No. A-8-4-1
 SET pg_hint_plan.parse_messages TO debug5;
 DEBUG:  StartTransactionCommand
 DEBUG:  StartTransaction
@@ -1766,7 +1988,7 @@ DEBUG:  name: unnamed; blockState:       STARTED; state: INPROGR, xid/subid/cid:
         1
 (1 row)
 
--- No. A-6-4-2
+-- No. A-8-4-2
 SET pg_hint_plan.parse_messages TO debug4;
 DEBUG:  StartTransactionCommand
 DEBUG:  StartTransaction
@@ -1822,7 +2044,7 @@ DEBUG:  name: unnamed; blockState:       STARTED; state: INPROGR, xid/subid/cid:
         1
 (1 row)
 
--- No. A-6-4-3
+-- No. A-8-4-3
 SET pg_hint_plan.parse_messages TO debug3;
 DEBUG:  StartTransactionCommand
 DEBUG:  StartTransaction
@@ -1869,7 +2091,7 @@ DEBUG:  ProcessUtility
         1
 (1 row)
 
--- No. A-6-4-4
+-- No. A-8-4-4
 SET pg_hint_plan.parse_messages TO debug2;
 SHOW pg_hint_plan.parse_messages;
  pg_hint_plan.parse_messages 
@@ -1892,7 +2114,7 @@ SET client_min_messages TO debug1;
         1
 (1 row)
 
--- No. A-6-4-5
+-- No. A-8-4-5
 SET pg_hint_plan.parse_messages TO debug1;
 SHOW pg_hint_plan.parse_messages;
  pg_hint_plan.parse_messages 
@@ -1915,7 +2137,7 @@ SET client_min_messages TO log;
         1
 (1 row)
 
--- No. A-6-4-6
+-- No. A-8-4-6
 SET pg_hint_plan.parse_messages TO log;
 SHOW pg_hint_plan.parse_messages;
  pg_hint_plan.parse_messages 
@@ -1938,7 +2160,7 @@ SET client_min_messages TO info;
         1
 (1 row)
 
--- No. A-6-4-7
+-- No. A-8-4-7
 SET pg_hint_plan.parse_messages TO info;
 SHOW pg_hint_plan.parse_messages;
  pg_hint_plan.parse_messages 
@@ -1963,7 +2185,7 @@ DETAIL:  Opening parenthesis is necessary.
         1
 (1 row)
 
--- No. A-6-4-8
+-- No. A-8-4-8
 SET pg_hint_plan.parse_messages TO notice;
 SHOW pg_hint_plan.parse_messages;
  pg_hint_plan.parse_messages 
@@ -1986,7 +2208,7 @@ SET client_min_messages TO warning;
         1
 (1 row)
 
--- No. A-6-4-9
+-- No. A-8-4-9
 SET pg_hint_plan.parse_messages TO warning;
 SHOW pg_hint_plan.parse_messages;
  pg_hint_plan.parse_messages 
@@ -2009,7 +2231,7 @@ SET client_min_messages TO error;
         1
 (1 row)
 
--- No. A-6-4-10
+-- No. A-8-4-10
 SET pg_hint_plan.parse_messages TO error;
 SHOW pg_hint_plan.parse_messages;
  pg_hint_plan.parse_messages 
@@ -2022,7 +2244,7 @@ ERROR:  hint syntax error at or near ""
 DETAIL:  Opening parenthesis is necessary.
 SET client_min_messages TO fatal;
 /*+Set*/SELECT 1;
--- No. A-6-4-11
+-- No. A-8-4-11
 RESET client_min_messages;
 SET pg_hint_plan.parse_messages TO DEFAULT;
 SHOW pg_hint_plan.parse_messages;
@@ -2039,7 +2261,7 @@ DETAIL:  Opening parenthesis is necessary.
         1
 (1 row)
 
--- No. A-6-4-12
+-- No. A-8-4-12
 SET pg_hint_plan.parse_messages TO fatal;
 ERROR:  invalid value for parameter "pg_hint_plan.parse_messages": "fatal"
 HINT:  Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
@@ -2049,7 +2271,7 @@ SHOW pg_hint_plan.parse_messages;
  info
 (1 row)
 
--- No. A-6-4-13
+-- No. A-8-4-13
 SET pg_hint_plan.parse_messages TO panic;
 ERROR:  invalid value for parameter "pg_hint_plan.parse_messages": "panic"
 HINT:  Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
@@ -2059,7 +2281,7 @@ SHOW pg_hint_plan.parse_messages;
  info
 (1 row)
 
--- No. A-6-4-14
+-- No. A-8-4-14
 SET pg_hint_plan.parse_messages TO on;
 ERROR:  invalid value for parameter "pg_hint_plan.parse_messages": "on"
 HINT:  Available values: debug5, debug4, debug3, debug2, debug1, log, info, notice, warning, error.
@@ -2070,9 +2292,21 @@ SHOW pg_hint_plan.parse_messages;
 (1 row)
 
 ----
----- No. A-7-1 parse error message output
+---- No. A-8-5 original GUC parameter pg_hint_plan.enable_hint_table
+----
+
+-- No. A-8-5-1
+
+-- No. A-8-5-2
+
+-- No. A-8-5-3
+
+-- No. A-8-5-4
+
+----
+---- No. A-9-1 parse error message output
 ----
--- No. A-7-1-1
+-- No. A-9-1-1
 /*+"Set"(enable_indexscan on)*/SELECT 1;
 INFO:  hint syntax error at or near ""Set"(enable_indexscan on)"
 DETAIL:  Unrecognized hint keyword ""Set"".
@@ -2082,8 +2316,10 @@ DETAIL:  Unrecognized hint keyword ""Set"".
 (1 row)
 
 /*+Set()(enable_indexscan on)*/SELECT 1;
-INFO:  hint syntax error at or near ")(enable_indexscan on)"
-DETAIL:  Parameter name is necessary.
+INFO:  hint syntax error at or near "Set()(enable_indexscan on)"
+DETAIL:  Set hint requires name and value of GUC parameter.
+INFO:  hint syntax error at or near "(enable_indexscan on)"
+DETAIL:  Unrecognized hint keyword "".
  ?column? 
 ----------
         1
@@ -2098,11 +2334,11 @@ DETAIL:  Closing parenthesis is necessary.
 (1 row)
 
 ----
----- No. A-7-3 hint state output
+---- No. A-9-3 hint state output
 ----
 SET pg_hint_plan.debug_print TO on;
 SET client_min_messages TO LOG;
--- No. A-7-3-1
+-- No. A-9-3-1
 /*+SeqScan(t1)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -2118,7 +2354,7 @@ error hint:
    Filter: (c1 = 1)
 (2 rows)
 
--- No. A-7-3-2
+-- No. A-9-3-2
 /*+SeqScan(no_table)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -2134,7 +2370,7 @@ error hint:
    Index Cond: (c1 = 1)
 (2 rows)
 
--- No. A-7-3-3
+-- No. A-9-3-3
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
             QUERY PLAN             
 -----------------------------------
@@ -2210,7 +2446,7 @@ error hint:
    Filter: ((c1 = 1) AND (ctid = '(1,1)'::tid))
 (2 rows)
 
--- No. A-7-3-4
+-- No. A-9-3-4
 /*+Set(enable_indexscan enable)*/
 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 INFO:  parameter "enable_indexscan" requires a Boolean value
@@ -2228,7 +2464,7 @@ Set(enable_indexscan enable)
 (2 rows)
 
 ----
----- No. A-8-1 hint state output
+---- No. A-10-1 hint state output
 ----
 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 EXPLAIN (COSTS false) EXECUTE p1;
@@ -2283,8 +2519,8 @@ EXPLAIN (COSTS false) EXECUTE p1 (1000);
 (2 rows)
 
 DEALLOCATE p1;
--- No. A-8-1-1
--- No. A-8-1-2
+-- No. A-10-1-1
+-- No. A-10-1-2
 /*+SeqScan(t1)*/
 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -2407,8 +2643,8 @@ error hint:
 (4 rows)
 
 DEALLOCATE p1;
--- No. A-8-1-3
--- No. A-8-1-4
+-- No. A-10-1-3
+-- No. A-10-1-4
 /*+SeqScan(t1)*/
 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
@@ -2522,8 +2758,8 @@ error hint:
 (4 rows)
 
 DEALLOCATE p1;
--- No. A-8-1-5
--- No. A-8-1-6
+-- No. A-10-1-5
+-- No. A-10-1-6
 PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 /*+BitmapScan(t1)*/
 EXPLAIN (COSTS false) EXECUTE p1;
@@ -2597,48 +2833,28 @@ EXPLAIN (COSTS false) EXECUTE p1 (1000);
 (2 rows)
 
 DEALLOCATE p1;
-----
----- No. A-8-4 EXECUTE statement name error
-----
--- No. A-8-4-1
-EXECUTE p1;
-ERROR:  prepared statement "p1" does not exist
-SHOW pg_hint_plan.debug_print;
- pg_hint_plan.debug_print 
---------------------------
- on
-(1 row)
-
-----
----- No. A-9-5 EXECUTE statement name error
-----
--- No. A-9-5-1
-SELECT pg_stat_statements_reset();
- pg_stat_statements_reset 
---------------------------
-(1 row)
-
-SELECT * FROM s1.t1 WHERE t1.c1 = 1;
- c1 | c2 | c3 | c4 
-----+----+----+----
-  1 |  1 |  1 | 1
-(1 row)
-
-/*+Set(enable_seqscan off)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+-- No. A-10-1-9
+-- No. A-10-1-10
+/*+SeqScan(t1)*/
+PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
 used hint:
-Set(enable_seqscan off)
+SeqScan(t1)
 not used hint:
 duplication hint:
 error hint:
 
- c1 | c2 | c3 | c4 
-----+----+----+----
-  1 |  1 |  1 | 1
-(1 row)
+/*+BitmapScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
+     QUERY PLAN     
+--------------------
+ Seq Scan on t1
+   Filter: (c1 = 1)
+(2 rows)
 
-/*+SeqScan(t1)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
+/*+BitmapScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
 LOG:  pg_hint_plan:
 used hint:
 SeqScan(t1)
@@ -2646,746 +2862,338 @@ not used hint:
 duplication hint:
 error hint:
 
- c1 | c2 | c3 | c4 
-----+----+----+----
-  1 |  1 |  1 | 1
-(1 row)
-
-SELECT s.query, s.calls
-  FROM public.pg_stat_statements s
-  JOIN pg_catalog.pg_database d
-    ON (s.dbid = d.oid)
- ORDER BY 1;
-                               query                               | calls 
--------------------------------------------------------------------+-------
- /*+SeqScan(t1)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;             |     1
- /*+Set(enable_seqscan off)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1; |     1
- SELECT * FROM s1.t1 WHERE t1.c1 = 1;                              |     1
- SELECT pg_stat_statements_reset();                                |     1
-(4 rows)
-
-----
----- No. A-10-1 duplicate hint
-----
--- No. A-10-1-1
-EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2, s1.t3, s1.t4 WHERE t1.ctid = '(1,1)' AND t1.c1 = t2.c1 AND t2.ctid = '(1,1)' AND t1.c1 = t3.c1 AND t3.ctid = '(1,1)' AND t1.c1 = t4.c1 AND t4.ctid = '(1,1)';
-                     QUERY PLAN                      
------------------------------------------------------
- Nested Loop
-   Join Filter: (t1.c1 = t4.c1)
-   ->  Nested Loop
-         Join Filter: (t1.c1 = t3.c1)
-         ->  Nested Loop
-               Join Filter: (t1.c1 = t2.c1)
-               ->  Tid Scan on t1
-                     TID Cond: (ctid = '(1,1)'::tid)
-               ->  Seq Scan on t2
-                     Filter: (ctid = '(1,1)'::tid)
-         ->  Tid Scan on t3
-               TID Cond: (ctid = '(1,1)'::tid)
-   ->  Tid Scan on t4
-         TID Cond: (ctid = '(1,1)'::tid)
-(14 rows)
-
-/*+
-Set(enable_tidscan aaa)
-Set(enable_tidscan on)
-Set(enable_tidscan off)
-SeqScan(t4)
-IndexScan(t4)
-BitmapScan(t4)
-TidScan(t4)
-NestLoop(t4 t3)
-MergeJoin(t4 t3)
-HashJoin(t4 t3)
-Leading(t2 t1 t4 t3)
-Leading(t1 t4 t3 t2)
-Leading(t4 t3 t2 t1)
-*/
-EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2, s1.t3, s1.t4 WHERE t1.ctid = '(1,1)' AND t1.c1 = t2.c1 AND t2.ctid = '(1,1)' AND t1.c1 = t3.c1 AND t3.ctid = '(1,1)' AND t1.c1 = t4.c1 AND t4.ctid = '(1,1)';
-INFO:  hint syntax error at or near "SeqScan(t4)
-IndexScan(t4)
-BitmapScan(t4)
-TidScan(t4)
-NestLoop(t4 t3)
-MergeJoin(t4 t3)
-HashJoin(t4 t3)
-Leading(t2 t1 t4 t3)
-Leading(t1 t4 t3 t2)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict scan method hint.
-INFO:  hint syntax error at or near "IndexScan(t4)
-BitmapScan(t4)
-TidScan(t4)
-NestLoop(t4 t3)
-MergeJoin(t4 t3)
-HashJoin(t4 t3)
-Leading(t2 t1 t4 t3)
-Leading(t1 t4 t3 t2)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict scan method hint.
-INFO:  hint syntax error at or near "BitmapScan(t4)
-TidScan(t4)
-NestLoop(t4 t3)
-MergeJoin(t4 t3)
-HashJoin(t4 t3)
-Leading(t2 t1 t4 t3)
-Leading(t1 t4 t3 t2)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict scan method hint.
-INFO:  hint syntax error at or near "NestLoop(t4 t3)
-MergeJoin(t4 t3)
-HashJoin(t4 t3)
-Leading(t2 t1 t4 t3)
-Leading(t1 t4 t3 t2)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict join method hint.
-INFO:  hint syntax error at or near "MergeJoin(t4 t3)
-HashJoin(t4 t3)
-Leading(t2 t1 t4 t3)
-Leading(t1 t4 t3 t2)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict join method hint.
-INFO:  hint syntax error at or near "Leading(t2 t1 t4 t3)
-Leading(t1 t4 t3 t2)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict leading hint.
-INFO:  hint syntax error at or near "Leading(t1 t4 t3 t2)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict leading hint.
-INFO:  hint syntax error at or near "Set(enable_tidscan aaa)
-Set(enable_tidscan on)
-Set(enable_tidscan off)
-SeqScan(t4)
-IndexScan(t4)
-BitmapScan(t4)
-TidScan(t4)
-NestLoop(t4 t3)
-MergeJoin(t4 t3)
-HashJoin(t4 t3)
-Leading(t2 t1 t4 t3)
-Leading(t1 t4 t3 t2)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict set hint.
-INFO:  hint syntax error at or near "Set(enable_tidscan on)
-Set(enable_tidscan off)
-SeqScan(t4)
-IndexScan(t4)
-BitmapScan(t4)
-TidScan(t4)
-NestLoop(t4 t3)
-MergeJoin(t4 t3)
-HashJoin(t4 t3)
-Leading(t2 t1 t4 t3)
-Leading(t1 t4 t3 t2)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict set hint.
-LOG:  pg_hint_plan:
-used hint:
-TidScan(t4)
-HashJoin(t3 t4)
-Leading(t4 t3 t2 t1)
-Set(enable_tidscan off)
-not used hint:
-duplication hint:
-SeqScan(t4)
-IndexScan(t4)
-BitmapScan(t4)
-NestLoop(t3 t4)
-MergeJoin(t3 t4)
-Leading(t2 t1 t4 t3)
-Leading(t1 t4 t3 t2)
-Set(enable_tidscan aaa)
-Set(enable_tidscan on)
-error hint:
-
-                        QUERY PLAN                         
------------------------------------------------------------
- Nested Loop
-   ->  Nested Loop
-         Join Filter: (t3.c1 = t2.c1)
-         ->  Hash Join
-               Hash Cond: (t3.c1 = t4.c1)
-               ->  Seq Scan on t3
-                     Filter: (ctid = '(1,1)'::tid)
-               ->  Hash
-                     ->  Tid Scan on t4
-                           TID Cond: (ctid = '(1,1)'::tid)
-         ->  Seq Scan on t2
-               Filter: (ctid = '(1,1)'::tid)
-   ->  Index Scan using t1_i1 on t1
-         Index Cond: (c1 = t2.c1)
-         Filter: (ctid = '(1,1)'::tid)
-(15 rows)
-
--- No. A-10-1-2
-EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2, s1.t3, s1.t4 WHERE t1.ctid = '(1,1)' AND t1.c1 = t2.c1 AND t2.ctid = '(1,1)' AND t1.c1 = t3.c1 AND t3.ctid = '(1,1)' AND t1.c1 = t4.c1 AND t4.ctid = '(1,1)';
-                     QUERY PLAN                      
------------------------------------------------------
- Nested Loop
-   Join Filter: (t1.c1 = t4.c1)
-   ->  Nested Loop
-         Join Filter: (t1.c1 = t3.c1)
-         ->  Nested Loop
-               Join Filter: (t1.c1 = t2.c1)
-               ->  Tid Scan on t1
-                     TID Cond: (ctid = '(1,1)'::tid)
-               ->  Seq Scan on t2
-                     Filter: (ctid = '(1,1)'::tid)
-         ->  Tid Scan on t3
-               TID Cond: (ctid = '(1,1)'::tid)
-   ->  Tid Scan on t4
-         TID Cond: (ctid = '(1,1)'::tid)
-(14 rows)
-
-/*+
-SeqScan(t4)
-Set(enable_tidscan aaa)
-IndexScan(t4)
-NestLoop(t4 t3)
-Leading(t2 t1 t4 t3)
-Set(enable_tidscan on)
-BitmapScan(t4)
-MergeJoin(t4 t3)
-Leading(t1 t4 t3 t2)
-Set(enable_tidscan off)
-TidScan(t4)
-HashJoin(t4 t3)
-Leading(t4 t3 t2 t1)
-*/
-EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2, s1.t3, s1.t4 WHERE t1.ctid = '(1,1)' AND t1.c1 = t2.c1 AND t2.ctid = '(1,1)' AND t1.c1 = t3.c1 AND t3.ctid = '(1,1)' AND t1.c1 = t4.c1 AND t4.ctid = '(1,1)';
-INFO:  hint syntax error at or near "SeqScan(t4)
-Set(enable_tidscan aaa)
-IndexScan(t4)
-NestLoop(t4 t3)
-Leading(t2 t1 t4 t3)
-Set(enable_tidscan on)
-BitmapScan(t4)
-MergeJoin(t4 t3)
-Leading(t1 t4 t3 t2)
-Set(enable_tidscan off)
-TidScan(t4)
-HashJoin(t4 t3)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict scan method hint.
-INFO:  hint syntax error at or near "IndexScan(t4)
-NestLoop(t4 t3)
-Leading(t2 t1 t4 t3)
-Set(enable_tidscan on)
-BitmapScan(t4)
-MergeJoin(t4 t3)
-Leading(t1 t4 t3 t2)
-Set(enable_tidscan off)
-TidScan(t4)
-HashJoin(t4 t3)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict scan method hint.
-INFO:  hint syntax error at or near "BitmapScan(t4)
-MergeJoin(t4 t3)
-Leading(t1 t4 t3 t2)
-Set(enable_tidscan off)
-TidScan(t4)
-HashJoin(t4 t3)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict scan method hint.
-INFO:  hint syntax error at or near "NestLoop(t4 t3)
-Leading(t2 t1 t4 t3)
-Set(enable_tidscan on)
-BitmapScan(t4)
-MergeJoin(t4 t3)
-Leading(t1 t4 t3 t2)
-Set(enable_tidscan off)
-TidScan(t4)
-HashJoin(t4 t3)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict join method hint.
-INFO:  hint syntax error at or near "MergeJoin(t4 t3)
-Leading(t1 t4 t3 t2)
-Set(enable_tidscan off)
-TidScan(t4)
-HashJoin(t4 t3)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict join method hint.
-INFO:  hint syntax error at or near "Leading(t2 t1 t4 t3)
-Set(enable_tidscan on)
-BitmapScan(t4)
-MergeJoin(t4 t3)
-Leading(t1 t4 t3 t2)
-Set(enable_tidscan off)
-TidScan(t4)
-HashJoin(t4 t3)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict leading hint.
-INFO:  hint syntax error at or near "Leading(t1 t4 t3 t2)
-Set(enable_tidscan off)
-TidScan(t4)
-HashJoin(t4 t3)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict leading hint.
-INFO:  hint syntax error at or near "Set(enable_tidscan aaa)
-IndexScan(t4)
-NestLoop(t4 t3)
-Leading(t2 t1 t4 t3)
-Set(enable_tidscan on)
-BitmapScan(t4)
-MergeJoin(t4 t3)
-Leading(t1 t4 t3 t2)
-Set(enable_tidscan off)
-TidScan(t4)
-HashJoin(t4 t3)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict set hint.
-INFO:  hint syntax error at or near "Set(enable_tidscan on)
-BitmapScan(t4)
-MergeJoin(t4 t3)
-Leading(t1 t4 t3 t2)
-Set(enable_tidscan off)
-TidScan(t4)
-HashJoin(t4 t3)
-Leading(t4 t3 t2 t1)
-"
-DETAIL:  Conflict set hint.
-LOG:  pg_hint_plan:
-used hint:
-TidScan(t4)
-HashJoin(t3 t4)
-Leading(t4 t3 t2 t1)
-Set(enable_tidscan off)
-not used hint:
-duplication hint:
-SeqScan(t4)
-IndexScan(t4)
-BitmapScan(t4)
-NestLoop(t3 t4)
-MergeJoin(t3 t4)
-Leading(t2 t1 t4 t3)
-Leading(t1 t4 t3 t2)
-Set(enable_tidscan aaa)
-Set(enable_tidscan on)
-error hint:
-
-                        QUERY PLAN                         
------------------------------------------------------------
- Nested Loop
-   ->  Nested Loop
-         Join Filter: (t3.c1 = t2.c1)
-         ->  Hash Join
-               Hash Cond: (t3.c1 = t4.c1)
-               ->  Seq Scan on t3
-                     Filter: (ctid = '(1,1)'::tid)
-               ->  Hash
-                     ->  Tid Scan on t4
-                           TID Cond: (ctid = '(1,1)'::tid)
-         ->  Seq Scan on t2
-               Filter: (ctid = '(1,1)'::tid)
-   ->  Index Scan using t1_i1 on t1
-         Index Cond: (c1 = t2.c1)
-         Filter: (ctid = '(1,1)'::tid)
-(15 rows)
-
-----
----- No. A-10-2 restrict query type
-----
--- No. A-10-2-1
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 FULL OUTER JOIN s1.t2 ON (t1.c1 = t2.c1);
-          QUERY PLAN          
-------------------------------
- Hash Full Join
-   Hash Cond: (t1.c1 = t2.c1)
-   ->  Seq Scan on t1
-   ->  Hash
-         ->  Seq Scan on t2
-(5 rows)
-
-/*+HashJoin(t1 t2)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 FULL OUTER JOIN s1.t2 ON (t1.c1 = t2.c1);
-LOG:  pg_hint_plan:
-used hint:
-HashJoin(t1 t2)
-not used hint:
-duplication hint:
-error hint:
-
-          QUERY PLAN          
-------------------------------
- Hash Full Join
-   Hash Cond: (t1.c1 = t2.c1)
-   ->  Seq Scan on t1
-   ->  Hash
-         ->  Seq Scan on t2
-(5 rows)
+     QUERY PLAN     
+--------------------
+ Seq Scan on t1
+   Filter: (c1 = 1)
+(2 rows)
 
-/*+MergeJoin(t1 t2)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 FULL OUTER JOIN s1.t2 ON (t1.c1 = t2.c1);
+DEALLOCATE p1;
+/*+BitmapScan(t1)*/
+PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
 LOG:  pg_hint_plan:
 used hint:
-MergeJoin(t1 t2)
+BitmapScan(t1)
 not used hint:
 duplication hint:
 error hint:
 
-             QUERY PLAN             
-------------------------------------
- Merge Full Join
-   Merge Cond: (t1.c1 = t2.c1)
  ->  Index Scan using t1_i1 on t1
-   ->  Sort
-         Sort Key: t2.c1
-         ->  Seq Scan on t2
-(6 rows)
+/*+SeqScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+            QUERY PLAN            
+----------------------------------
Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
-/*+NestLoop(t1 t2)*/
-EXPLAIN (COSTS true) SELECT * FROM s1.t1 FULL OUTER JOIN s1.t2 ON (t1.c1 = t2.c1);
-LOG:  pg_hint_plan:
-used hint:
-NestLoop(t1 t2)
-not used hint:
-duplication hint:
-error hint:
+/*+SeqScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+            QUERY PLAN            
+----------------------------------
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
-                                QUERY PLAN                                
---------------------------------------------------------------------------
- Hash Full Join  (cost=10000000003.25..10000000024.00 rows=1000 width=29)
-   Hash Cond: (t1.c1 = t2.c1)
-   ->  Seq Scan on t1  (cost=0.00..16.00 rows=1000 width=15)
-   ->  Hash  (cost=2.00..2.00 rows=100 width=14)
-         ->  Seq Scan on t2  (cost=0.00..2.00 rows=100 width=14)
-(5 rows)
+/*+SeqScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+            QUERY PLAN            
+----------------------------------
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
--- No. A-10-2-2
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 = 1 AND t1.ctid = '(1,1)';
-            QUERY PLAN             
------------------------------------
- Tid Scan on t1
-   TID Cond: (ctid = '(1,1)'::tid)
-   Filter: (c3 = 1)
-(3 rows)
+/*+SeqScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+            QUERY PLAN            
+----------------------------------
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
-/*+IndexScan(t1)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 = 1 AND t1.ctid = '(1,1)';
-LOG:  pg_hint_plan:
-used hint:
-IndexScan(t1)
-not used hint:
-duplication hint:
-error hint:
+/*+SeqScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+            QUERY PLAN            
+----------------------------------
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
-           QUERY PLAN            
----------------------------------
- Index Scan using t1_i on t1
-   Index Cond: (c3 = 1)
-   Filter: (ctid = '(1,1)'::tid)
-(3 rows)
+/*+SeqScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+            QUERY PLAN            
+----------------------------------
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
-/*+IndexScan(t1 t1_i)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 = 1 AND t1.ctid = '(1,1)';
+UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
+/*+SeqScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
 LOG:  pg_hint_plan:
 used hint:
-IndexScan(t1 t1_i)
+BitmapScan(t1)
 not used hint:
 duplication hint:
 error hint:
 
-           QUERY PLAN            
----------------------------------
- Index Scan using t1_i on t1
-   Index Cond: (c3 = 1)
-   Filter: (ctid = '(1,1)'::tid)
-(3 rows)
+            QUERY PLAN            
+----------------------------------
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
-/*+IndexScan(t1 t1_i1)*/
-EXPLAIN (COSTS true) SELECT * FROM s1.t1 WHERE t1.c3 = 1 AND t1.ctid = '(1,1)';
+DEALLOCATE p1;
+-- No. A-10-1-11
+-- No. A-10-1-12
+/*+SeqScan(t1)*/
+PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
 used hint:
-IndexScan(t1 t1_i1)
+SeqScan(t1)
 not used hint:
 duplication hint:
 error hint:
 
-                              QUERY PLAN                               
------------------------------------------------------------------------
- Tid Scan on t1  (cost=10000000000.00..10000000004.02 rows=1 width=15)
-   TID Cond: (ctid = '(1,1)'::tid)
-   Filter: (c3 = 1)
-(3 rows)
-
--- No. A-10-2-3
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
-          QUERY PLAN          
-------------------------------
- Index Scan using t1_i1 on t1
-   Index Cond: (c1 = 1)
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
+     QUERY PLAN     
+--------------------
+ Seq Scan on t1
+   Filter: (c1 = 1)
 (2 rows)
 
-/*+TidScan(t1)*/
-EXPLAIN (COSTS true) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
 LOG:  pg_hint_plan:
 used hint:
-TidScan(t1)
+SeqScan(t1)
 not used hint:
 duplication hint:
 error hint:
 
-                              QUERY PLAN                               
------------------------------------------------------------------------
- Seq Scan on t1  (cost=10000000000.00..10000000018.50 rows=1 width=15)
+     QUERY PLAN     
+--------------------
+ Seq Scan on t1
    Filter: (c1 = 1)
 (2 rows)
 
-/*+TidScan(t1)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
+DEALLOCATE p1;
+/*+BitmapScan(t1)*/
+PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
 LOG:  pg_hint_plan:
 used hint:
-TidScan(t1)
+BitmapScan(t1)
 not used hint:
 duplication hint:
 error hint:
 
-            QUERY PLAN             
------------------------------------
- Tid Scan on t1
-   TID Cond: (ctid = '(1,1)'::tid)
-   Filter: (c1 = 1)
-(3 rows)
-
-----
----- No. A-10-3 VIEW, RULE multi specified
-----
--- No. A-10-3-1
-EXPLAIN (COSTS false) SELECT * FROM s1.v1 v1, s1.v1 v2 WHERE v1.c1 = v2.c1;
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
             QUERY PLAN            
 ----------------------------------
- Hash Join
-   Hash Cond: (v1t1.c1 = v1t1.c1)
-   ->  Seq Scan on t1 v1t1
-   ->  Hash
-         ->  Seq Scan on t1 v1t1
-(5 rows)
-
-/*+Leading(v1t1 v1t1)HashJoin(v1t1 v1t1)BitmapScan(v1t1)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.v1 v1, s1.v1 v2 WHERE v1.c1 = v2.c1;
-INFO:  hint syntax error at or near "HashJoin(v1t1 v1t1)BitmapScan(v1t1)"
-DETAIL:  Relation name "v1t1" is ambiguous.
-INFO:  hint syntax error at or near "Leading(v1t1 v1t1)HashJoin(v1t1 v1t1)BitmapScan(v1t1)"
-DETAIL:  Relation name "v1t1" is ambiguous.
-LOG:  pg_hint_plan:
-used hint:
-BitmapScan(v1t1)
-not used hint:
-Leading(v1t1 v1t1)
-duplication hint:
-error hint:
-HashJoin(v1t1 v1t1)
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
-                QUERY PLAN                
-------------------------------------------
- Nested Loop
-   ->  Index Scan using t1_i1 on t1 v1t1
-   ->  Bitmap Heap Scan on t1 v1t1
-         Recheck Cond: (c1 = v1t1.c1)
-         ->  Bitmap Index Scan on t1_i1
-               Index Cond: (c1 = v1t1.c1)
-(6 rows)
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+            QUERY PLAN            
+----------------------------------
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
--- No. A-10-3-2
-EXPLAIN (COSTS false) SELECT * FROM s1.v1 v1, s1.v1_ v2 WHERE v1.c1 = v2.c1;
-            QUERY PLAN             
------------------------------------
- Hash Join
-   Hash Cond: (v1t1.c1 = v1t1_.c1)
-   ->  Seq Scan on t1 v1t1
-   ->  Hash
-         ->  Seq Scan on t1 v1t1_
-(5 rows)
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+            QUERY PLAN            
+----------------------------------
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
-/*+Leading(v1t1 v1t1_)NestLoop(v1t1 v1t1_)SeqScan(v1t1)BitmapScan(v1t1_)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.v1 v1, s1.v1_ v2 WHERE v1.c1 = v2.c1;
-LOG:  pg_hint_plan:
-used hint:
-SeqScan(v1t1)
-BitmapScan(v1t1_)
-NestLoop(v1t1 v1t1_)
-Leading(v1t1 v1t1_)
-not used hint:
-duplication hint:
-error hint:
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+            QUERY PLAN            
+----------------------------------
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
-                QUERY PLAN                
-------------------------------------------
- Nested Loop
-   ->  Seq Scan on t1 v1t1
-   ->  Bitmap Heap Scan on t1 v1t1_
-         Recheck Cond: (c1 = v1t1.c1)
-         ->  Bitmap Index Scan on t1_i1
-               Index Cond: (c1 = v1t1.c1)
-(6 rows)
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+            QUERY PLAN            
+----------------------------------
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
--- No. A-10-3-3
-EXPLAIN (COSTS false) SELECT * FROM s1.r4 t1, s1.r4 t2 WHERE t1.c1 = t2.c1;
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
             QUERY PLAN            
 ----------------------------------
- Hash Join
-   Hash Cond: (r4t1.c1 = r4t1.c1)
-   ->  Seq Scan on t1 r4t1
-   ->  Hash
-         ->  Seq Scan on t1 r4t1
-(5 rows)
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
-/*+Leading(r4t1 r4t1)HashJoin(r4t1 r4t1)BitmapScan(r4t1)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.r4 t1, s1.r4 t2 WHERE t1.c1 = t2.c1;
-INFO:  hint syntax error at or near "HashJoin(r4t1 r4t1)BitmapScan(r4t1)"
-DETAIL:  Relation name "r4t1" is ambiguous.
-INFO:  hint syntax error at or near "Leading(r4t1 r4t1)HashJoin(r4t1 r4t1)BitmapScan(r4t1)"
-DETAIL:  Relation name "r4t1" is ambiguous.
+UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
 LOG:  pg_hint_plan:
 used hint:
-BitmapScan(r4t1)
+BitmapScan(t1)
 not used hint:
-Leading(r4t1 r4t1)
 duplication hint:
 error hint:
-HashJoin(r4t1 r4t1)
 
-                QUERY PLAN                
-------------------------------------------
- Nested Loop
-   ->  Index Scan using t1_i1 on t1 r4t1
-   ->  Bitmap Heap Scan on t1 r4t1
-         Recheck Cond: (c1 = r4t1.c1)
-         ->  Bitmap Index Scan on t1_i1
-               Index Cond: (c1 = r4t1.c1)
-(6 rows)
-
--- No. A-10-3-4
-EXPLAIN (COSTS false) SELECT * FROM s1.r4 t1, s1.r5 t2 WHERE t1.c1 = t2.c1;
             QUERY PLAN            
 ----------------------------------
- Hash Join
-   Hash Cond: (r4t1.c1 = r5t1.c1)
-   ->  Seq Scan on t1 r4t1
-   ->  Hash
-         ->  Seq Scan on t1 r5t1
-(5 rows)
+ Bitmap Heap Scan on t1
+   Recheck Cond: (c1 < $1)
+   ->  Bitmap Index Scan on t1_i1
+         Index Cond: (c1 < $1)
+(4 rows)
 
-/*+Leading(r4t1 r5t1)NestLoop(r4t1 r5t1)SeqScan(r4t1)BitmapScan(r5t1)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.r4 t1, s1.r5 t2 WHERE t1.c1 = t2.c1;
-LOG:  pg_hint_plan:
-used hint:
-SeqScan(r4t1)
-BitmapScan(r5t1)
-NestLoop(r4t1 r5t1)
-Leading(r4t1 r5t1)
-not used hint:
-duplication hint:
-error hint:
+DEALLOCATE p1;
+-- No. A-10-1-13
+-- No. A-10-1-14
+PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+/*+BitmapScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
+          QUERY PLAN          
+------------------------------
+ Index Scan using t1_i1 on t1
+   Index Cond: (c1 = 1)
+(2 rows)
 
-                QUERY PLAN                
-------------------------------------------
- Nested Loop
-   ->  Seq Scan on t1 r4t1
-   ->  Bitmap Heap Scan on t1 r5t1
-         Recheck Cond: (c1 = r4t1.c1)
-         ->  Bitmap Index Scan on t1_i1
-               Index Cond: (c1 = r4t1.c1)
-(6 rows)
+UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
+/*+BitmapScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1;
+          QUERY PLAN          
+------------------------------
+ Index Scan using t1_i1 on t1
+   Index Cond: (c1 = 1)
+(2 rows)
 
-----
----- No. A-11-1 psql command
-----
-SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
- count 
--------
-     1
-(1 row)
+DEALLOCATE p1;
+PREPARE p1 AS SELECT * FROM s1.t1 WHERE t1.c1 < $1;
+/*+BitmapScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+     QUERY PLAN      
+---------------------
+ Seq Scan on t1
+   Filter: (c1 < $1)
+(2 rows)
 
-/*+SeqScan(t1)*/
-SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
-LOG:  pg_hint_plan:
-used hint:
-SeqScan(t1)
-not used hint:
-duplication hint:
-error hint:
+/*+BitmapScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+     QUERY PLAN      
+---------------------
+ Seq Scan on t1
+   Filter: (c1 < $1)
+(2 rows)
 
- count 
--------
-     1
-(1 row)
+/*+BitmapScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+     QUERY PLAN      
+---------------------
+ Seq Scan on t1
+   Filter: (c1 < $1)
+(2 rows)
 
--- No. A-11-1-4
-\set FETCH_COUNT 0
-/*+SeqScan(t1)*/
-SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
-LOG:  pg_hint_plan:
-used hint:
-SeqScan(t1)
-not used hint:
-duplication hint:
-error hint:
+/*+BitmapScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+     QUERY PLAN      
+---------------------
+ Seq Scan on t1
+   Filter: (c1 < $1)
+(2 rows)
 
- count 
--------
-     1
-(1 row)
+/*+BitmapScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+     QUERY PLAN      
+---------------------
+ Seq Scan on t1
+   Filter: (c1 < $1)
+(2 rows)
 
--- No. A-11-1-5
-\set FETCH_COUNT 1
-/*+SeqScan(t1)*/
-SELECT count(*) FROM s1.t1 WHERE t1.c1 = 1;
- count 
--------
-     1
+/*+BitmapScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+     QUERY PLAN      
+---------------------
+ Seq Scan on t1
+   Filter: (c1 < $1)
+(2 rows)
+
+UPDATE pg_catalog.pg_class SET relpages = relpages WHERE relname = 't1';
+/*+BitmapScan(t1)*/
+EXPLAIN (COSTS false) CREATE TABLE test AS EXECUTE p1 (1000);
+     QUERY PLAN      
+---------------------
+ Seq Scan on t1
+   Filter: (c1 < $1)
+(2 rows)
+
+DEALLOCATE p1;
+----
+---- No. A-10-4 EXECUTE statement name error
+----
+-- No. A-10-4-1
+EXECUTE p1;
+ERROR:  prepared statement "p1" does not exist
+SHOW pg_hint_plan.debug_print;
+ pg_hint_plan.debug_print 
+--------------------------
+ on
 (1 row)
 
-\unset FETCH_COUNT
 ----
----- No. A-12-4 PL/pgSQL function
+---- No. A-11-5 EXECUTE statement name error
 ----
--- No. A-12-4-1
-CREATE OR REPLACE FUNCTION f1() RETURNS SETOF text LANGUAGE plpgsql AS $$
-DECLARE
-    r text;
-BEGIN
-    FOR r IN EXPLAIN SELECT c4 FROM s1.t1 WHERE t1.c1 = 1
-    LOOP
-        RETURN NEXT r; -- return current row of SELECT
-    END LOOP;
-    RETURN;
-END
-$$;
-SELECT f1();
-                               f1                               
-----------------------------------------------------------------
- Index Scan using t1_i1 on t1  (cost=0.00..8.27 rows=1 width=3)
-   Index Cond: (c1 = 1)
-(2 rows)
+-- No. A-11-5-1
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+(1 row)
 
-/*+SeqScan(t1)*/
-SELECT f1();
+SELECT * FROM s1.t1 WHERE t1.c1 = 1;
+ c1 | c2 | c3 | c4 
+----+----+----+----
+  1 |  1 |  1 | 1
+(1 row)
+
+/*+Set(enable_seqscan off)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
 used hint:
+Set(enable_seqscan off)
 not used hint:
-SeqScan(t1)
 duplication hint:
 error hint:
 
+ c1 | c2 | c3 | c4 
+----+----+----+----
+  1 |  1 |  1 | 1
+(1 row)
+
+/*+SeqScan(t1)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
 LOG:  pg_hint_plan:
 used hint:
 SeqScan(t1)
@@ -3393,31 +3201,23 @@ not used hint:
 duplication hint:
 error hint:
 
-CONTEXT:  PL/pgSQL function "f1" line 5 at FOR over SELECT rows
-                        f1                         
----------------------------------------------------
- Seq Scan on t1  (cost=0.00..18.50 rows=1 width=3)
-   Filter: (c1 = 1)
-(2 rows)
+ c1 | c2 | c3 | c4 
+----+----+----+----
+  1 |  1 |  1 | 1
+(1 row)
 
--- No. A-12-4-2
-/*+SeqScan(t1)*/CREATE OR REPLACE FUNCTION f1() RETURNS SETOF text LANGUAGE plpgsql AS $$
-DECLARE
-    r text;
-BEGIN
-    /*+SeqScan(t1)*/FOR r IN EXPLAIN /*+SeqScan(t1)*/SELECT c4 FROM s1.t1 WHERE t1.c1 = 1
-    LOOP
-        /*+SeqScan(t1)*/RETURN NEXT r; -- return current row of SELECT
-    END LOOP;
-    /*+SeqScan(t1)*/RETURN;
-END
-$$;
-SELECT f1();
-                               f1                               
-----------------------------------------------------------------
- Index Scan using t1_i1 on t1  (cost=0.00..8.27 rows=1 width=3)
-   Index Cond: (c1 = 1)
-(2 rows)
+SELECT s.query, s.calls
+  FROM public.pg_stat_statements s
+  JOIN pg_catalog.pg_database d
+    ON (s.dbid = d.oid)
+ ORDER BY 1;
+                               query                               | calls 
+-------------------------------------------------------------------+-------
+ /*+SeqScan(t1)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;             |     1
+ /*+Set(enable_seqscan off)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1; |     1
+ SELECT * FROM s1.t1 WHERE t1.c1 = 1;                              |     1
+ SELECT pg_stat_statements_reset();                                |     1
+(4 rows)
 
 ----
 ---- No. A-12-1 reset of global variable of core at the error
@@ -4146,6 +3946,8 @@ error hint:
 (4 rows)
 
 \connect
+SET enable_indexscan TO off;
+SET enable_mergejoin TO off;
 LOAD 'pg_hint_plan';
 SELECT name, setting FROM settings;
            name            |  setting  
@@ -4171,9 +3973,9 @@ SELECT name, setting FROM settings;
  enable_bitmapscan         | on
  enable_hashagg            | on
  enable_hashjoin           | on
- enable_indexscan          | on
+ enable_indexscan          | off
  enable_material           | on
- enable_mergejoin          | on
+ enable_mergejoin          | off
  enable_nestloop           | on
  enable_seqscan            | on
  enable_sort               | on
@@ -4182,20 +3984,21 @@ SELECT name, setting FROM settings;
 (29 rows)
 
 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
-             QUERY PLAN             
-------------------------------------
- Merge Join
-   Merge Cond: (t1.c1 = t2.c1)
-   ->  Index Scan using t1_i1 on t1
-   ->  Sort
-         Sort Key: t2.c1
+          QUERY PLAN          
+------------------------------
+ Hash Join
+   Hash Cond: (t1.c1 = t2.c1)
+   ->  Seq Scan on t1
+   ->  Hash
          ->  Seq Scan on t2
-(6 rows)
+(5 rows)
 
 SET pg_hint_plan.enable_hint TO on;
 SET pg_hint_plan.debug_print TO on;
 SET client_min_messages TO LOG;
 SET search_path TO public;
+RESET enable_indexscan;
+RESET enable_mergejoin;
 ----
 ---- No. A-13 call planner recursively
 ----