mirror of https://github.com/citusdata/citus.git
PG16 - Add GENERIC_PLAN option to EXPLAIN (#7141)
parent
c73ef405f5
commit
b8c493f2c4
|
@ -992,12 +992,18 @@ BuildRemoteExplainQuery(char *queryString, ExplainState *es)
|
||||||
appendStringInfo(explainQuery,
|
appendStringInfo(explainQuery,
|
||||||
"EXPLAIN (ANALYZE %s, VERBOSE %s, "
|
"EXPLAIN (ANALYZE %s, VERBOSE %s, "
|
||||||
"COSTS %s, BUFFERS %s, WAL %s, "
|
"COSTS %s, BUFFERS %s, WAL %s, "
|
||||||
|
#if PG_VERSION_NUM >= PG_VERSION_16
|
||||||
|
"GENERIC_PLAN %s, "
|
||||||
|
#endif
|
||||||
"TIMING %s, SUMMARY %s, FORMAT %s) %s",
|
"TIMING %s, SUMMARY %s, FORMAT %s) %s",
|
||||||
es->analyze ? "TRUE" : "FALSE",
|
es->analyze ? "TRUE" : "FALSE",
|
||||||
es->verbose ? "TRUE" : "FALSE",
|
es->verbose ? "TRUE" : "FALSE",
|
||||||
es->costs ? "TRUE" : "FALSE",
|
es->costs ? "TRUE" : "FALSE",
|
||||||
es->buffers ? "TRUE" : "FALSE",
|
es->buffers ? "TRUE" : "FALSE",
|
||||||
es->wal ? "TRUE" : "FALSE",
|
es->wal ? "TRUE" : "FALSE",
|
||||||
|
#if PG_VERSION_NUM >= PG_VERSION_16
|
||||||
|
es->generic ? "TRUE" : "FALSE",
|
||||||
|
#endif
|
||||||
es->timing ? "TRUE" : "FALSE",
|
es->timing ? "TRUE" : "FALSE",
|
||||||
es->summary ? "TRUE" : "FALSE",
|
es->summary ? "TRUE" : "FALSE",
|
||||||
formatStr,
|
formatStr,
|
||||||
|
|
|
@ -65,6 +65,46 @@ SET citus.log_remote_commands TO OFF;
|
||||||
-- only verifying it works and not printing log
|
-- only verifying it works and not printing log
|
||||||
-- remote commands because it can be flaky
|
-- remote commands because it can be flaky
|
||||||
VACUUM (ONLY_DATABASE_STATS);
|
VACUUM (ONLY_DATABASE_STATS);
|
||||||
|
-- New GENERIC_PLAN option in EXPLAIN
|
||||||
|
-- Relevant PG commit:
|
||||||
|
-- https://github.com/postgres/postgres/commit/3c05284
|
||||||
|
CREATE TABLE tenk1 (
|
||||||
|
unique1 int4,
|
||||||
|
unique2 int4,
|
||||||
|
thousand int4
|
||||||
|
);
|
||||||
|
SELECT create_distributed_table('tenk1', 'unique1');
|
||||||
|
create_distributed_table
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SET citus.log_remote_commands TO on;
|
||||||
|
EXPLAIN (GENERIC_PLAN) SELECT unique1 FROM tenk1 WHERE thousand = 1000;
|
||||||
|
NOTICE: issuing BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;SELECT assign_distributed_transaction_id(xx, xx, 'xxxxxxx');
|
||||||
|
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
|
||||||
|
NOTICE: issuing SAVEPOINT citus_explain_savepoint
|
||||||
|
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
|
||||||
|
NOTICE: issuing EXPLAIN (ANALYZE FALSE, VERBOSE FALSE, COSTS TRUE, BUFFERS FALSE, WAL FALSE, GENERIC_PLAN TRUE, TIMING FALSE, SUMMARY FALSE, FORMAT TEXT) SELECT unique1 FROM pg16.tenk1_950001 tenk1 WHERE (thousand OPERATOR(pg_catalog.=) 1000)
|
||||||
|
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
|
||||||
|
NOTICE: issuing ROLLBACK TO SAVEPOINT citus_explain_savepoint
|
||||||
|
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
|
||||||
|
NOTICE: issuing COMMIT
|
||||||
|
DETAIL: on server postgres@localhost:xxxxx connectionId: xxxxxxx
|
||||||
|
QUERY PLAN
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
Custom Scan (Citus Adaptive) (cost=0.00..0.00 rows=0 width=0)
|
||||||
|
Task Count: 1
|
||||||
|
Tasks Shown: All
|
||||||
|
-> Task
|
||||||
|
Node: host=localhost port=xxxxx dbname=regression
|
||||||
|
-> Seq Scan on tenk1_950001 tenk1 (cost=0.00..35.50 rows=10 width=4)
|
||||||
|
Filter: (thousand = 1000)
|
||||||
|
(7 rows)
|
||||||
|
|
||||||
|
EXPLAIN (GENERIC_PLAN, ANALYZE) SELECT unique1 FROM tenk1 WHERE thousand = 1000;
|
||||||
|
ERROR: EXPLAIN options ANALYZE and GENERIC_PLAN cannot be used together
|
||||||
|
SET citus.log_remote_commands TO off;
|
||||||
-- Proper error when creating statistics without a name on a Citus table
|
-- Proper error when creating statistics without a name on a Citus table
|
||||||
-- Relevant PG commit:
|
-- Relevant PG commit:
|
||||||
-- https://github.com/postgres/postgres/commit/624aa2a13bd02dd584bb0995c883b5b93b2152df
|
-- https://github.com/postgres/postgres/commit/624aa2a13bd02dd584bb0995c883b5b93b2152df
|
||||||
|
|
|
@ -45,6 +45,22 @@ SET citus.log_remote_commands TO OFF;
|
||||||
-- remote commands because it can be flaky
|
-- remote commands because it can be flaky
|
||||||
VACUUM (ONLY_DATABASE_STATS);
|
VACUUM (ONLY_DATABASE_STATS);
|
||||||
|
|
||||||
|
-- New GENERIC_PLAN option in EXPLAIN
|
||||||
|
-- Relevant PG commit:
|
||||||
|
-- https://github.com/postgres/postgres/commit/3c05284
|
||||||
|
|
||||||
|
CREATE TABLE tenk1 (
|
||||||
|
unique1 int4,
|
||||||
|
unique2 int4,
|
||||||
|
thousand int4
|
||||||
|
);
|
||||||
|
SELECT create_distributed_table('tenk1', 'unique1');
|
||||||
|
|
||||||
|
SET citus.log_remote_commands TO on;
|
||||||
|
EXPLAIN (GENERIC_PLAN) SELECT unique1 FROM tenk1 WHERE thousand = 1000;
|
||||||
|
EXPLAIN (GENERIC_PLAN, ANALYZE) SELECT unique1 FROM tenk1 WHERE thousand = 1000;
|
||||||
|
SET citus.log_remote_commands TO off;
|
||||||
|
|
||||||
-- Proper error when creating statistics without a name on a Citus table
|
-- Proper error when creating statistics without a name on a Citus table
|
||||||
-- Relevant PG commit:
|
-- Relevant PG commit:
|
||||||
-- https://github.com/postgres/postgres/commit/624aa2a13bd02dd584bb0995c883b5b93b2152df
|
-- https://github.com/postgres/postgres/commit/624aa2a13bd02dd584bb0995c883b5b93b2152df
|
||||||
|
|
Loading…
Reference in New Issue