-- No.A-1-2-3
DROP EXTENSION pg_hint_plan;
-- No.A-1-1-4
-CREATE EXTENSION pg_hint_plan SCHEMA other_name;
+CREATE SCHEMA other_schema;
+CREATE EXTENSION pg_hint_plan SCHEMA other_schema;
ERROR: extension "pg_hint_plan" must be installed in schema "hint_plan"
CREATE EXTENSION pg_hint_plan;
+DROP SCHEMA other_schema;
----
---- No. A-5-1 comment pattern
----
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
--------------------+---------+--------------------------------------------------------------
- id | integer | not null default nextval('hint_plan.hints_id_seq'::regclass)
- norm_query_string | text | not null
- application_name | text | not null
- hints | text | not null
+ Table "hint_plan.hints"
+ Column | Type | Collation | Nullable | Default
+-------------------+---------+-----------+----------+---------------------------------------------
+ id | integer | | not null | nextval('hint_plan.hints_id_seq'::regclass)
+ norm_query_string | text | | not null |
+ application_name | text | | not null |
+ hints | text | | not null |
Indexes:
"hints_pkey" PRIMARY KEY, btree (id)
"hints_norm_and_app" UNIQUE, btree (norm_query_string, application_name)
-- No. A-9-2-3
/*+SeqScan(()*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 "(" WHERE "(".c1 = 1;
-INFO: hint syntax error at or near "()"
+INFO: pg_hint_plan: hint syntax error at or near "()"
DETAIL: Zero-length delimited string.
QUERY PLAN
----------------------------------
-- No. A-9-2-4
/*+SeqScan())*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 ")" WHERE ")".c1 = 1;
-INFO: hint syntax error at or near ")"
+INFO: pg_hint_plan: hint syntax error at or near ")"
DETAIL: SeqScan hint requires a relation.
-INFO: hint syntax error at or near ")"
+INFO: pg_hint_plan: hint syntax error at or near ")"
DETAIL: Unrecognized hint keyword ")".
LOG: pg_hint_plan:
used hint:
-- No. A-9-2-5
/*+SeqScan(")*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 """" WHERE """".c1 = 1;
-INFO: hint syntax error at or near ""
+INFO: pg_hint_plan: hint syntax error at or near ""
DETAIL: Unterminated quoted string.
QUERY PLAN
-----------------------------------
-- No. A-9-2-6
/*+SeqScan( )*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
-INFO: hint syntax error at or near ""
+INFO: pg_hint_plan: hint syntax error at or near ""
DETAIL: SeqScan hint requires a relation.
LOG: pg_hint_plan:
used hint:
-- No. A-9-2-7
/*+SeqScan( )*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 " " WHERE " ".c1 = 1;
-INFO: hint syntax error at or near ""
+INFO: pg_hint_plan: hint syntax error at or near ""
DETAIL: SeqScan hint requires a relation.
LOG: pg_hint_plan:
used hint:
EXPLAIN (COSTS false) SELECT * FROM s1.t1 "
" WHERE "
".c1 = 1;
-INFO: hint syntax error at or near ""
+INFO: pg_hint_plan: hint syntax error at or near ""
DETAIL: SeqScan hint requires a relation.
LOG: pg_hint_plan:
used hint:
-- No. A-9-2-11
/*+SeqScan(/**/)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**/" WHERE "/**/".c1 = 1;
-INFO: hint syntax error at or near "/**/)*/
+INFO: pg_hint_plan: hint syntax error at or near "/**/)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**/" WHERE "/**/".c1 = 1;"
DETAIL: Nested block comments are not supported.
QUERY PLAN
/*+SeqScan(/**//**//**/)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**//**//**/" WHERE "/**//**//**/".c1 = 1;
-INFO: hint syntax error at or near "/**//**//**/)*/
+INFO: pg_hint_plan: hint syntax error at or near "/**//**//**/)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 "/**//**//**/" WHERE "/**//**//**/".c1 = 1;"
DETAIL: Nested block comments are not supported.
QUERY PLAN
EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""
Set/**/あ" WHERE "tT()""
Set/**/あ".c1 = 1;
-INFO: hint syntax error at or near "/**/あ")*/
+INFO: pg_hint_plan: hint syntax error at or near "/**/あ")*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 "tT()""
Set/**/あ" WHERE "tT()""
Set/**/あ".c1 = 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)"
+INFO: pg_hint_plan: hint syntax error at or near "enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
DETAIL: Opening parenthesis is necessary.
LOG: pg_hint_plan:
used hint:
-- 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 "(enable_bitmapscan off)SeqScan(t1)"
+INFO: pg_hint_plan: hint syntax error at or near "(enable_bitmapscan off)SeqScan(t1)"
DETAIL: Zero-length delimited string.
LOG: pg_hint_plan:
used hint:
-- 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 ""
+INFO: pg_hint_plan: hint syntax error at or near ""
DETAIL: Unterminated quoted string.
LOG: pg_hint_plan:
used hint:
-- 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)"
+INFO: pg_hint_plan: hint syntax error at or near ")Set(enable_bitmapscan off)"
DETAIL: Zero-length delimited string.
LOG: pg_hint_plan:
used hint:
-- 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)"
+INFO: pg_hint_plan: hint syntax error at or near "NoSet(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
DETAIL: Unrecognized hint keyword "NoSet".
LOG: pg_hint_plan:
used hint:
-- 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)"
+INFO: pg_hint_plan: hint syntax error at or near ""Set"(enable_tidscan off)Set(enable_bitmapscan off)SeqScan(t1)"
DETAIL: Unrecognized hint keyword ""Set"".
LOG: pg_hint_plan:
used hint:
-- 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)*/
+INFO: pg_hint_plan: hint syntax error at or near "/* value */off)Set(enable_bitmapscan off)SeqScan(t1)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;"
DETAIL: Nested block comments are not supported.
QUERY PLAN
----
---- No. A-8-1 original GUC parameter
----
+---- Don't test postgresql itself.
-- No. A-8-1-1
-SET ROLE super_user;
-SET pg_hint_plan.debug_print TO off;
-SHOW pg_hint_plan.enable_hint;
- pg_hint_plan.enable_hint
---------------------------
- on
-(1 row)
-
-SHOW pg_hint_plan.debug_print;
- pg_hint_plan.debug_print
---------------------------
- off
-(1 row)
-
-SHOW pg_hint_plan.parse_messages;
- pg_hint_plan.parse_messages
------------------------------
- info
-(1 row)
-
-SET pg_hint_plan.enable_hint TO off;
-SET pg_hint_plan.debug_print TO on;
-SET pg_hint_plan.parse_messages TO error;
-SHOW pg_hint_plan.enable_hint;
- pg_hint_plan.enable_hint
---------------------------
- off
-(1 row)
-
-SHOW pg_hint_plan.debug_print;
- pg_hint_plan.debug_print
---------------------------
- on
-(1 row)
-
-SHOW pg_hint_plan.parse_messages;
- pg_hint_plan.parse_messages
------------------------------
- error
-(1 row)
-
-RESET pg_hint_plan.enable_hint;
-RESET pg_hint_plan.debug_print;
-RESET pg_hint_plan.parse_messages;
-SHOW pg_hint_plan.enable_hint;
- pg_hint_plan.enable_hint
---------------------------
- on
-(1 row)
-
-SHOW pg_hint_plan.debug_print;
- pg_hint_plan.debug_print
---------------------------
- off
-(1 row)
-
-SHOW pg_hint_plan.parse_messages;
- pg_hint_plan.parse_messages
------------------------------
- info
-(1 row)
-
--- No. A-8-1-2
-SET ROLE normal_user;
-SHOW pg_hint_plan.enable_hint;
- pg_hint_plan.enable_hint
---------------------------
- on
-(1 row)
-
-SHOW pg_hint_plan.debug_print;
- pg_hint_plan.debug_print
---------------------------
- off
-(1 row)
-
-SHOW pg_hint_plan.parse_messages;
- pg_hint_plan.parse_messages
------------------------------
- info
-(1 row)
-
-SET pg_hint_plan.enable_hint TO off;
-SET pg_hint_plan.debug_print TO on;
-SET pg_hint_plan.parse_messages TO error;
-SHOW pg_hint_plan.enable_hint;
- pg_hint_plan.enable_hint
---------------------------
- off
-(1 row)
-
-SHOW pg_hint_plan.debug_print;
- pg_hint_plan.debug_print
---------------------------
- on
-(1 row)
-
-SHOW pg_hint_plan.parse_messages;
- pg_hint_plan.parse_messages
------------------------------
- error
-(1 row)
-
-RESET pg_hint_plan.enable_hint;
-RESET pg_hint_plan.debug_print;
-RESET pg_hint_plan.parse_messages;
-SHOW pg_hint_plan.enable_hint;
- pg_hint_plan.enable_hint
---------------------------
- on
-(1 row)
-
-SHOW pg_hint_plan.debug_print;
- pg_hint_plan.debug_print
---------------------------
- off
-(1 row)
-
-SHOW pg_hint_plan.parse_messages;
- pg_hint_plan.parse_messages
------------------------------
- info
-(1 row)
-
-RESET ROLE;
+-- SET ROLE super_user;
+-- SET pg_hint_plan.debug_print TO off;
+-- SHOW pg_hint_plan.enable_hint;
+-- SHOW pg_hint_plan.debug_print;
+-- SHOW pg_hint_plan.parse_messages;
+-- SET pg_hint_plan.enable_hint TO off;
+-- SET pg_hint_plan.debug_print TO on;
+-- SET pg_hint_plan.parse_messages TO error;
+-- SHOW pg_hint_plan.enable_hint;
+-- SHOW pg_hint_plan.debug_print;
+-- SHOW pg_hint_plan.parse_messages;
+-- RESET pg_hint_plan.enable_hint;
+-- RESET pg_hint_plan.debug_print;
+-- RESET pg_hint_plan.parse_messages;
+-- SHOW pg_hint_plan.enable_hint;
+-- SHOW pg_hint_plan.debug_print;
+-- SHOW pg_hint_plan.parse_messages;
+--
+-- -- No. A-8-1-2
+-- SET ROLE normal_user;
+-- SHOW pg_hint_plan.enable_hint;
+-- SHOW pg_hint_plan.debug_print;
+-- SHOW pg_hint_plan.parse_messages;
+-- SET pg_hint_plan.enable_hint TO off;
+-- SET pg_hint_plan.debug_print TO on;
+-- SET pg_hint_plan.parse_messages TO error;
+-- SHOW pg_hint_plan.enable_hint;
+-- SHOW pg_hint_plan.debug_print;
+-- SHOW pg_hint_plan.parse_messages;
+-- RESET pg_hint_plan.enable_hint;
+-- RESET pg_hint_plan.debug_print;
+-- RESET pg_hint_plan.parse_messages;
+-- SHOW pg_hint_plan.enable_hint;
+-- SHOW pg_hint_plan.debug_print;
+-- SHOW pg_hint_plan.parse_messages;
+--
+-- RESET ROLE;
----
---- No. A-8-2 original GUC parameter pg_hint_plan.enable_hint
----
-- No. A-8-2-1
+SET pg_hint_plan.debug_print TO off;
SET pg_hint_plan.enable_hint TO on;
SHOW pg_hint_plan.enable_hint;
pg_hint_plan.enable_hint
(2 rows)
-- No. A-8-2-3
-SET pg_hint_plan.enable_hint TO DEFAULT;
-SHOW pg_hint_plan.enable_hint;
- pg_hint_plan.enable_hint
---------------------------
- on
-(1 row)
-
-/*+Set(enable_indexscan off)*/
-EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
- QUERY PLAN
-----------------------------------
- Bitmap Heap Scan on t1
- Recheck Cond: (c1 = 1)
- -> Bitmap Index Scan on t1_i1
- Index Cond: (c1 = 1)
-(4 rows)
-
+-- Don't test PostgreSQL itself.
+-- SET pg_hint_plan.enable_hint TO DEFAULT;
+-- SHOW pg_hint_plan.enable_hint;
+-- /*+Set(enable_indexscan off)*/
+-- EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
-- No. A-8-2-4
-SET pg_hint_plan.enable_hint TO enable;
-ERROR: parameter "pg_hint_plan.enable_hint" requires a Boolean value
+-- Don't test PostgreSQL itself
+-- SET pg_hint_plan.enable_hint TO enable;
+-- SHOW pg_hint_plan.enable_hint;
+----
+---- No. A-8-3 original GUC parameter pg_hint_plan.debug_print
+----
+-- No. A-8-3-1
+SET pg_hint_plan.enable_hint TO on;
SHOW pg_hint_plan.enable_hint;
pg_hint_plan.enable_hint
--------------------------
on
(1 row)
-----
----- No. A-8-3 original GUC parameter pg_hint_plan.debug_print
-----
--- No. A-8-3-1
SET pg_hint_plan.debug_print TO on;
SHOW pg_hint_plan.debug_print;
pg_hint_plan.debug_print
-- No. A-8-3-4
SET pg_hint_plan.debug_print TO enable;
-ERROR: parameter "pg_hint_plan.debug_print" requires a Boolean value
+ERROR: invalid value for parameter "pg_hint_plan.debug_print": "enable"
+HINT: Available values: off, on, detailed, verbose.
SHOW pg_hint_plan.debug_print;
pg_hint_plan.debug_print
--------------------------
---- 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:
+DEBUG: CommitTransaction(1) name: unnamed; blockState: STARTED; state: INPROGRESS, xid/subid/cid: 0/1/0
-- No. A-8-4-1
SET pg_hint_plan.parse_messages TO debug5;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: ProcessUtility
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
+DEBUG: StartTransaction(1) name: unnamed; blockState: DEFAULT; state: INPROGRESS, xid/subid/cid: 0/1/0
+DEBUG: CommitTransaction(1) name: unnamed; blockState: STARTED; state: INPROGRESS, xid/subid/cid: 0/1/0
SHOW pg_hint_plan.parse_messages;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: ProcessUtility
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
+DEBUG: StartTransaction(1) name: unnamed; blockState: DEFAULT; state: INPROGRESS, xid/subid/cid: 0/1/0
+DEBUG: CommitTransaction(1) name: unnamed; blockState: STARTED; state: INPROGRESS, xid/subid/cid: 0/1/0
pg_hint_plan.parse_messages
-----------------------------
debug5
(1 row)
/*+Set*/SELECT 1;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: hint syntax error at or near ""
+DEBUG: StartTransaction(1) name: unnamed; blockState: DEFAULT; state: INPROGRESS, xid/subid/cid: 0/1/0
+DEBUG: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
+DEBUG: CommitTransaction(1) name: unnamed; blockState: STARTED; state: INPROGRESS, xid/subid/cid: 0/1/0
?column?
----------
1
(1 row)
SET client_min_messages TO debug4;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: ProcessUtility
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
+DEBUG: StartTransaction(1) name: unnamed; blockState: DEFAULT; state: INPROGRESS, xid/subid/cid: 0/1/0
/*+Set*/SELECT 1;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
?column?
----------
1
-- No. A-8-4-2
SET pg_hint_plan.parse_messages TO debug4;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: ProcessUtility
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
SHOW pg_hint_plan.parse_messages;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: ProcessUtility
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
pg_hint_plan.parse_messages
-----------------------------
debug4
(1 row)
/*+Set*/SELECT 1;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: hint syntax error at or near ""
+DEBUG: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
?column?
----------
1
(1 row)
SET client_min_messages TO debug3;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: ProcessUtility
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
/*+Set*/SELECT 1;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
?column?
----------
1
-- No. A-8-4-3
SET pg_hint_plan.parse_messages TO debug3;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: ProcessUtility
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
SHOW pg_hint_plan.parse_messages;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: ProcessUtility
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
pg_hint_plan.parse_messages
-----------------------------
debug3
(1 row)
/*+Set*/SELECT 1;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: hint syntax error at or near ""
+DEBUG: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
-DEBUG: CommitTransactionCommand
-DEBUG: CommitTransaction
-DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
?column?
----------
1
(1 row)
SET client_min_messages TO debug2;
-DEBUG: StartTransactionCommand
-DEBUG: StartTransaction
-DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
-DEBUG: ProcessUtility
/*+Set*/SELECT 1;
?column?
----------
(1 row)
/*+Set*/SELECT 1;
-DEBUG: hint syntax error at or near ""
+DEBUG: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
?column?
----------
(1 row)
/*+Set*/SELECT 1;
-DEBUG: hint syntax error at or near ""
+DEBUG: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
?column?
----------
(1 row)
/*+Set*/SELECT 1;
-LOG: hint syntax error at or near ""
+LOG: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
?column?
----------
(1 row)
/*+Set*/SELECT 1;
-INFO: hint syntax error at or near ""
+INFO: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
?column?
----------
SET client_min_messages TO notice;
/*+Set*/SELECT 1;
-INFO: hint syntax error at or near ""
+INFO: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
?column?
----------
(1 row)
/*+Set*/SELECT 1;
-NOTICE: hint syntax error at or near ""
+NOTICE: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
?column?
----------
(1 row)
/*+Set*/SELECT 1;
-WARNING: hint syntax error at or near ""
+WARNING: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
?column?
----------
(1 row)
/*+Set*/SELECT 1;
-ERROR: hint syntax error at or near ""
+ERROR: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
SET client_min_messages TO fatal;
/*+Set*/SELECT 1;
(1 row)
/*+Set*/SELECT 1;
-INFO: hint syntax error at or near ""
+INFO: pg_hint_plan: hint syntax error at or near ""
DETAIL: Opening parenthesis is necessary.
?column?
----------
----
-- No. A-9-1-1
/*+"Set"(enable_indexscan on)*/SELECT 1;
-INFO: hint syntax error at or near ""Set"(enable_indexscan on)"
+INFO: pg_hint_plan: hint syntax error at or near ""Set"(enable_indexscan on)"
DETAIL: Unrecognized hint keyword ""Set"".
?column?
----------
(1 row)
/*+Set()(enable_indexscan on)*/SELECT 1;
-INFO: hint syntax error at or near "Set()(enable_indexscan on)"
+INFO: pg_hint_plan: 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)"
+INFO: pg_hint_plan: hint syntax error at or near "(enable_indexscan on)"
DETAIL: Unrecognized hint keyword "".
?column?
----------
(1 row)
/*+Set(enable_indexscan on*/SELECT 1;
-INFO: hint syntax error at or near ""
+INFO: pg_hint_plan: hint syntax error at or near ""
DETAIL: Closing parenthesis is necessary.
?column?
----------
/*+TidScan(t1)BitmapScan(t1)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
-INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)"
+INFO: pg_hint_plan: hint syntax error at or near "TidScan(t1)BitmapScan(t1)"
DETAIL: Conflict scan method hint.
LOG: pg_hint_plan:
used hint:
/*+TidScan(t1)BitmapScan(t1)IndexScan(t1)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
-INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)IndexScan(t1)"
+INFO: pg_hint_plan: hint syntax error at or near "TidScan(t1)BitmapScan(t1)IndexScan(t1)"
DETAIL: Conflict scan method hint.
-INFO: hint syntax error at or near "BitmapScan(t1)IndexScan(t1)"
+INFO: pg_hint_plan: hint syntax error at or near "BitmapScan(t1)IndexScan(t1)"
DETAIL: Conflict scan method hint.
LOG: pg_hint_plan:
used hint:
/*+TidScan(t1)BitmapScan(t1)IndexScan(t1)SeqScan(t1)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
-INFO: hint syntax error at or near "TidScan(t1)BitmapScan(t1)IndexScan(t1)SeqScan(t1)"
+INFO: pg_hint_plan: hint syntax error at or near "TidScan(t1)BitmapScan(t1)IndexScan(t1)SeqScan(t1)"
DETAIL: Conflict scan method hint.
-INFO: hint syntax error at or near "BitmapScan(t1)IndexScan(t1)SeqScan(t1)"
+INFO: pg_hint_plan: hint syntax error at or near "BitmapScan(t1)IndexScan(t1)SeqScan(t1)"
DETAIL: Conflict scan method hint.
-INFO: hint syntax error at or near "IndexScan(t1)SeqScan(t1)"
+INFO: pg_hint_plan: hint syntax error at or near "IndexScan(t1)SeqScan(t1)"
DETAIL: Conflict scan method hint.
LOG: pg_hint_plan:
used hint:
ORDER BY 1;
query | calls
--------------------------------------+-------
- SELECT * FROM s1.t1 WHERE t1.c1 = ?; | 3
- SELECT pg_stat_statements_reset(); | 1
+ SELECT * FROM s1.t1 WHERE t1.c1 = $1 | 3
+ SELECT pg_stat_statements_reset() | 1
(2 rows)
----
/*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
PREPARE p1 AS SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
EXPLAIN (COSTS false) EXECUTE p1;
-INFO: hint syntax error at or near "NestLoop(t1 t1)"
+INFO: pg_hint_plan: hint syntax error at or near "NestLoop(t1 t1)"
DETAIL: Relation name "t1" is duplicated.
LOG: pg_hint_plan:
used hint:
-- No. A-12-1-1
-- No. A-12-2-1
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | on
- enable_material | on
- enable_mergejoin | on
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | on
+ enable_material | on
+ enable_mergejoin | on
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
SET pg_hint_plan.parse_messages TO error;
/*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
-ERROR: hint syntax error at or near "NestLoop(t1 t1)"
+ERROR: pg_hint_plan: hint syntax error at or near "NestLoop(t1 t1)"
DETAIL: Relation name "t1" is duplicated.
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | on
- enable_material | on
- enable_mergejoin | on
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | on
+ enable_material | on
+ enable_mergejoin | on
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
/*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
-- No. A-12-1-2
-- No. A-12-2-2
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | on
- enable_material | on
- enable_mergejoin | on
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | on
+ enable_material | on
+ enable_mergejoin | on
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
SET pg_hint_plan.parse_messages TO error;
/*+Set(enable_seqscan off)Set(geqo_threshold 100)SeqScan(t1)MergeJoin(t1 t2)NestLoop(t1 t1)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
-ERROR: hint syntax error at or near "NestLoop(t1 t1)"
+ERROR: pg_hint_plan: hint syntax error at or near "NestLoop(t1 t1)"
DETAIL: Relation name "t1" is duplicated.
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | on
- enable_material | on
- enable_mergejoin | on
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | on
+ enable_material | on
+ enable_mergejoin | on
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
EXPLAIN (COSTS false) EXECUTE p1;
QUERY PLAN
-- No. A-12-1-3
-- No. A-12-2-3
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | on
- enable_material | on
- enable_mergejoin | on
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | on
+ enable_material | on
+ enable_mergejoin | on
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
SET pg_hint_plan.parse_messages TO error;
EXPLAIN (COSTS false) EXECUTE p2;
(6 rows)
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | on
- enable_material | on
- enable_mergejoin | on
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | on
+ enable_material | on
+ enable_mergejoin | on
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
-- No. A-12-1-4
-- No. A-12-2-4
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | on
- enable_material | on
- enable_mergejoin | on
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | on
+ enable_material | on
+ enable_mergejoin | on
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
SET pg_hint_plan.parse_messages TO error;
EXPLAIN (COSTS false) EXECUTE p2;
(6 rows)
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | on
- enable_material | on
- enable_mergejoin | on
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | on
+ enable_material | on
+ enable_mergejoin | on
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
DEALLOCATE p1;
SET pg_hint_plan.parse_messages TO LOG;
(5 rows)
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | off
- enable_material | on
- enable_mergejoin | off
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | off
+ enable_material | on
+ enable_mergejoin | off
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
/*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
(4 rows)
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | off
- enable_material | on
- enable_mergejoin | off
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | off
+ enable_material | on
+ enable_mergejoin | off
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
QUERY PLAN
(5 rows)
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | off
- enable_material | on
- enable_mergejoin | off
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | off
+ enable_material | on
+ enable_mergejoin | off
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
BEGIN;
/*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
COMMIT;
BEGIN;
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | off
- enable_material | on
- enable_mergejoin | off
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | off
+ enable_material | on
+ enable_mergejoin | off
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
QUERY PLAN
(5 rows)
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | off
- enable_material | on
- enable_mergejoin | off
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | log
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | off
+ enable_material | on
+ enable_mergejoin | off
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | log
+(45 rows)
/*+Set(enable_indexscan on)Set(geqo_threshold 100)IndexScan(t2)MergeJoin(t1 t2)Leading(t2 t1)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
SET enable_mergejoin TO off;
LOAD 'pg_hint_plan';
SELECT name, setting FROM settings;
- name | setting
----------------------------+-----------
- geqo | on
- geqo_effort | 5
- geqo_generations | 0
- geqo_pool_size | 0
- geqo_seed | 0
- geqo_selection_bias | 2
- geqo_threshold | 12
- constraint_exclusion | partition
- cursor_tuple_fraction | 0.1
- default_statistics_target | 100
- from_collapse_limit | 8
- join_collapse_limit | 8
- cpu_index_tuple_cost | 0.005
- cpu_operator_cost | 0.0025
- cpu_tuple_cost | 0.01
- effective_cache_size | 16384
- random_page_cost | 4
- seq_page_cost | 1
- enable_bitmapscan | on
- enable_hashagg | on
- enable_hashjoin | on
- enable_indexonlyscan | on
- enable_indexscan | off
- enable_material | on
- enable_mergejoin | off
- enable_nestloop | on
- enable_seqscan | on
- enable_sort | on
- enable_tidscan | on
- client_min_messages | notice
-(30 rows)
+ name | setting
+--------------------------------+-----------
+ geqo | on
+ geqo_effort | 5
+ geqo_generations | 0
+ geqo_pool_size | 0
+ geqo_seed | 0
+ geqo_selection_bias | 2
+ geqo_threshold | 12
+ constraint_exclusion | partition
+ cursor_tuple_fraction | 0.1
+ default_statistics_target | 100
+ force_parallel_mode | off
+ from_collapse_limit | 8
+ jit | on
+ join_collapse_limit | 8
+ cpu_index_tuple_cost | 0.005
+ cpu_operator_cost | 0.0025
+ cpu_tuple_cost | 0.01
+ effective_cache_size | 16384
+ jit_above_cost | 100000
+ jit_inline_above_cost | 500000
+ jit_optimize_above_cost | 500000
+ min_parallel_index_scan_size | 64
+ min_parallel_table_scan_size | 1024
+ parallel_setup_cost | 1000
+ parallel_tuple_cost | 0.1
+ random_page_cost | 4
+ seq_page_cost | 1
+ enable_bitmapscan | on
+ enable_gathermerge | on
+ enable_hashagg | on
+ enable_hashjoin | on
+ enable_indexonlyscan | on
+ enable_indexscan | off
+ enable_material | on
+ enable_mergejoin | off
+ enable_nestloop | on
+ enable_parallel_append | on
+ enable_parallel_hash | on
+ enable_partition_pruning | on
+ enable_partitionwise_aggregate | off
+ enable_partitionwise_join | off
+ enable_seqscan | on
+ enable_sort | on
+ enable_tidscan | on
+ client_min_messages | notice
+(45 rows)
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
QUERY PLAN
EXPLAIN (COSTS false) SELECT nested_planner(2) FROM s1.t1 t_1 ORDER BY t_1.c1;
NOTICE: nested_planner(2)
NOTICE: nested_planner(1)
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
LOG: pg_hint_plan:
used hint:
IndexScan(t_1)
duplication hint:
error hint:
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
QUERY PLAN
---------------------------------------
Index Only Scan using t1_i1 on t1 t_1
EXPLAIN (COSTS false) SELECT nested_planner(2) FROM s1.t1 t_1 ORDER BY t_1.c1;
NOTICE: nested_planner(2)
NOTICE: nested_planner(1)
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
LOG: pg_hint_plan:
used hint:
IndexScan(t_1)
duplication hint:
error hint:
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
LOG: pg_hint_plan:
used hint:
not used hint:
(1 row)
--No.13-3-3
+--
+-- Redefine not to use cached plan
+--
+CREATE OR REPLACE FUNCTION nested_planner(cnt int) RETURNS int AS $$
+DECLARE
+ new_cnt int;
+BEGIN
+ RAISE NOTICE 'nested_planner(%)', cnt;
+
+ /* 再帰終了の判断 */
+ IF cnt <= 1 THEN
+ RETURN 0;
+ END IF;
+
+ SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 1) INTO new_cnt
+ FROM s1.t1 t_1
+ JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
+ ORDER BY t_1.c1 LIMIT 1;
+
+ RETURN new_cnt;
+END;
+$$ LANGUAGE plpgsql IMMUTABLE;
EXPLAIN (COSTS false) SELECT nested_planner(5) FROM s1.t1 t_1 ORDER BY t_1.c1;
NOTICE: nested_planner(5)
NOTICE: nested_planner(4)
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
NOTICE: nested_planner(3)
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
NOTICE: nested_planner(2)
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
NOTICE: nested_planner(1)
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
LOG: pg_hint_plan:
-used hint:
-IndexScan(t_1)
-not used hint:
-duplication hint:
-error hint:
-
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
+no hint
LOG: pg_hint_plan:
used hint:
IndexScan(t_1)
duplication hint:
error hint:
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
LOG: pg_hint_plan:
used hint:
IndexScan(t_1)
duplication hint:
error hint:
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
LOG: pg_hint_plan:
used hint:
IndexScan(t_1)
duplication hint:
error hint:
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
QUERY PLAN
---------------------------------------
Index Only Scan using t1_i1 on t1 t_1
/*+SeqScan(t_2)*/
EXPLAIN (COSTS false) SELECT nested_planner(5) FROM s1.t1 t_1 ORDER BY t_1.c1;
NOTICE: nested_planner(5)
-LOG: pg_hint_plan:
-used hint:
-IndexScan(t_1)
-not used hint:
-duplication hint:
-error hint:
-
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
NOTICE: nested_planner(4)
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
NOTICE: nested_planner(3)
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
NOTICE: nested_planner(2)
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
NOTICE: nested_planner(1)
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
LOG: pg_hint_plan:
used hint:
IndexScan(t_1)
duplication hint:
error hint:
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
LOG: pg_hint_plan:
used hint:
IndexScan(t_1)
duplication hint:
error hint:
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
LOG: pg_hint_plan:
used hint:
IndexScan(t_1)
duplication hint:
error hint:
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
-SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
LOG: pg_hint_plan:
used hint:
IndexScan(t_1)
duplication hint:
error hint:
-CONTEXT: SQL statement "SELECT /*+ IndexScan(t_1) */ nested_planner(cnt - 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"
-PL/pgSQL function nested_planner(integer) line 12 at SQL statement
LOG: pg_hint_plan:
used hint:
not used hint:
duplication hint:
error hint:
-CONTEXT: SQL function "recall_planner" during startup
LOG: pg_hint_plan:
used hint:
HashJoin(t_1 t_2)
duplication hint:
error hint:
-CONTEXT: SQL function "recall_planner" during startup
LOG: pg_hint_plan:
used hint:
HashJoin(st_1 st_2)
duplication hint:
error hint:
-CONTEXT: SQL function "recall_planner" during startup
LOG: pg_hint_plan:
used hint:
not used hint:
duplication hint:
error hint:
-CONTEXT: SQL function "recall_planner" during startup
LOG: pg_hint_plan:
used hint:
not used hint:
EXPLAIN (COSTS false)
SELECT recall_planner() FROM s1.t1 t_1
ORDER BY t_1.c1;
-INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
+INFO: pg_hint_plan: hint syntax error at or near "HashJoin(t_1 t_1)"
DETAIL: Relation name "t_1" is duplicated.
-CONTEXT: SQL function "recall_planner" during startup
LOG: pg_hint_plan:
used hint:
not used hint:
error hint:
HashJoin(t_1 t_1)
-CONTEXT: SQL function "recall_planner" during startup
LOG: pg_hint_plan:
used hint:
not used hint:
duplication hint:
error hint:
-CONTEXT: SQL function "recall_planner_one_t" during startup
-INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
+INFO: pg_hint_plan: hint syntax error at or near "HashJoin(t_1 t_1)"
DETAIL: Relation name "t_1" is duplicated.
LOG: pg_hint_plan:
used hint:
SELECT recall_planner() FROM s1.t1 t_1
JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
ORDER BY t_1.c1;
-INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
+INFO: pg_hint_plan: hint syntax error at or near "HashJoin(t_1 t_1)"
DETAIL: Relation name "t_1" is duplicated.
-CONTEXT: SQL function "recall_planner" during startup
LOG: pg_hint_plan:
used hint:
not used hint:
error hint:
HashJoin(t_1 t_1)
-CONTEXT: SQL function "recall_planner" during startup
-INFO: hint syntax error at or near "HashJoin(t_1 t_1)"
+INFO: pg_hint_plan: hint syntax error at or near "HashJoin(t_1 t_1)"
DETAIL: Relation name "t_1" is duplicated.
LOG: pg_hint_plan:
used hint:
SELECT recall_planner() FROM s1.t1 t_1
JOIN s1.t2 t_2 ON (t_1.c1 = t_2.c1)
ORDER BY t_1.c1;
-INFO: hint syntax error at or near "MergeJoin(t_1 t_2)HashJoin(t_1 t_2)"
+INFO: pg_hint_plan: hint syntax error at or near "MergeJoin(t_1 t_2)HashJoin(t_1 t_2)"
DETAIL: Conflict join method hint.
-INFO: hint syntax error at or near "MergeJoin(t_1 t_2)HashJoin(t_1 t_2)"
+INFO: pg_hint_plan: hint syntax error at or near "MergeJoin(t_1 t_2)HashJoin(t_1 t_2)"
DETAIL: Conflict join method hint.
-CONTEXT: SQL function "recall_planner" during startup
LOG: pg_hint_plan:
used hint:
HashJoin(t_1 t_2)
MergeJoin(t_1 t_2)
error hint:
-CONTEXT: SQL function "recall_planner" during startup
LOG: pg_hint_plan:
used hint:
HashJoin(t_1 t_2)