summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTomas Vondra2017-07-12 16:41:51 +0000
committerTomas Vondra2017-07-12 16:41:51 +0000
commita0f550b412fb208ea6722ed0c81f299e1d3e507f (patch)
tree5519f7b7916eeeaaa82b96e44f2766a1cb2c5d93 /src
parent93cbab90b0c6fc3fc4aa515b93057127c0ee8a1b (diff)
Resolve most failures in stats_ext regression tests
This addresses simple failures in stats_ext regression tests, namely: 1) Failure to drop column that happens to be a distribution key of the table (picked automatically by CREATE TABLE). Resolved by explicitly distributing the table by another columns. 2) Commenting out DDL on FDWs, which are unsupported in Postgres-XL, and we already have this covered by plenty of other tests. 3) Commenting out a DO block, checking that we can't create statistics on a TOAST table. The error message will vary depending on what OID is assigned to the TOAST table. There's no nice way to catch that error in Postgres-XL, due to missing support for subtransactions. 4) Accept trivial plan changes, that simply add Remote Subquery into the plan, or ship the whole query to the nodes (Fast Query Execution). There additional plan changes that change the plans in other ways, but those need more investigation and are not accepted by this commit.
Diffstat (limited to 'src')
-rw-r--r--src/test/regress/expected/stats_ext.out338
-rw-r--r--src/test/regress/sql/stats_ext.sql34
2 files changed, 206 insertions, 166 deletions
diff --git a/src/test/regress/expected/stats_ext.out b/src/test/regress/expected/stats_ext.out
index 085dce7fd7..637e4961f0 100644
--- a/src/test/regress/expected/stats_ext.out
+++ b/src/test/regress/expected/stats_ext.out
@@ -31,7 +31,7 @@ ERROR: only simple column references are allowed in CREATE STATISTICS
CREATE STATISTICS tst (unrecognized) ON relname, relnatts FROM pg_class;
ERROR: unrecognized statistic type "unrecognized"
-- Ensure stats are dropped sanely, and test IF NOT EXISTS while at it
-CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER);
+CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER) DISTRIBUTE BY HASH(c);
CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1;
CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1;
NOTICE: statistics object "ab1_a_b_stats" already exists, skipping
@@ -94,9 +94,9 @@ CREATE SEQUENCE tststats.s;
CREATE VIEW tststats.v AS SELECT * FROM tststats.t;
CREATE MATERIALIZED VIEW tststats.mv AS SELECT * FROM tststats.t;
CREATE TYPE tststats.ty AS (a int, b int, c text);
-CREATE FOREIGN DATA WRAPPER extstats_dummy_fdw;
-CREATE SERVER extstats_dummy_srv FOREIGN DATA WRAPPER extstats_dummy_fdw;
-CREATE FOREIGN TABLE tststats.f (a int, b int, c text) SERVER extstats_dummy_srv;
+-- CREATE FOREIGN DATA WRAPPER extstats_dummy_fdw;
+-- CREATE SERVER extstats_dummy_srv FOREIGN DATA WRAPPER extstats_dummy_fdw;
+-- CREATE FOREIGN TABLE tststats.f (a int, b int, c text) SERVER extstats_dummy_srv;
CREATE TABLE tststats.pt (a int, b int, c text) PARTITION BY RANGE (a, b);
CREATE TABLE tststats.pt1 PARTITION OF tststats.pt FOR VALUES FROM (-10, -10) TO (10, 10);
CREATE STATISTICS tststats.s1 ON a, b FROM tststats.t;
@@ -109,22 +109,24 @@ ERROR: relation "v" is not a table, foreign table, or materialized view
CREATE STATISTICS tststats.s5 ON a, b FROM tststats.mv;
CREATE STATISTICS tststats.s6 ON a, b FROM tststats.ty;
ERROR: relation "ty" is not a table, foreign table, or materialized view
-CREATE STATISTICS tststats.s7 ON a, b FROM tststats.f;
+-- CREATE STATISTICS tststats.s7 ON a, b FROM tststats.f;
CREATE STATISTICS tststats.s8 ON a, b FROM tststats.pt;
CREATE STATISTICS tststats.s9 ON a, b FROM tststats.pt1;
-DO $$
-DECLARE
- relname text := reltoastrelid::regclass FROM pg_class WHERE oid = 'tststats.t'::regclass;
-BEGIN
- EXECUTE 'CREATE STATISTICS tststats.s10 ON a, b FROM ' || relname;
-EXCEPTION WHEN wrong_object_type THEN
- RAISE NOTICE 'stats on toast table not created';
-END;
-$$;
-NOTICE: stats on toast table not created
+-- commented out, because there's no good way to catch the error on XL
+-- (due to not supporting subtransactions), and the error message varies
+-- depending on OID of the toast table
+-- DO $$
+-- DECLARE
+-- relname text := reltoastrelid::regclass FROM pg_class WHERE oid = 'tststats.t'::regclass;
+-- BEGIN
+-- EXECUTE 'CREATE STATISTICS tststats.s10 ON a, b FROM ' || relname;
+-- EXCEPTION WHEN wrong_object_type THEN
+-- RAISE NOTICE 'stats on toast table not created';
+-- END;
+-- $$;
SET client_min_messages TO warning;
DROP SCHEMA tststats CASCADE;
-DROP FOREIGN DATA WRAPPER extstats_dummy_fdw CASCADE;
+-- DROP FOREIGN DATA WRAPPER extstats_dummy_fdw CASCADE;
RESET client_min_messages;
-- n-distinct tests
CREATE TABLE ndistinct (
@@ -144,58 +146,63 @@ ANALYZE ndistinct;
-- Group Aggregate, due to over-estimate of the number of groups
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY a, b;
- QUERY PLAN
------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
GroupAggregate
Group Key: a, b
- -> Sort
- Sort Key: a, b
- -> Seq Scan on ndistinct
-(5 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Sort
+ Sort Key: a, b
+ -> Seq Scan on ndistinct
+(6 rows)
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY b, c;
- QUERY PLAN
------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
GroupAggregate
Group Key: b, c
- -> Sort
- Sort Key: b, c
- -> Seq Scan on ndistinct
-(5 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Sort
+ Sort Key: b, c
+ -> Seq Scan on ndistinct
+(6 rows)
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c;
- QUERY PLAN
------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
GroupAggregate
Group Key: a, b, c
- -> Sort
- Sort Key: a, b, c
- -> Seq Scan on ndistinct
-(5 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Sort
+ Sort Key: a, b, c
+ -> Seq Scan on ndistinct
+(6 rows)
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c, d;
- QUERY PLAN
------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
GroupAggregate
Group Key: a, b, c, d
- -> Sort
- Sort Key: a, b, c, d
- -> Seq Scan on ndistinct
-(5 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Sort
+ Sort Key: a, b, c, d
+ -> Seq Scan on ndistinct
+(6 rows)
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY b, c, d;
- QUERY PLAN
------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
GroupAggregate
Group Key: b, c, d
- -> Sort
- Sort Key: b, c, d
- -> Seq Scan on ndistinct
-(5 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Sort
+ Sort Key: b, c, d
+ -> Seq Scan on ndistinct
+(6 rows)
-- correct command
CREATE STATISTICS s10 ON a, b, c FROM ndistinct;
@@ -239,25 +246,27 @@ EXPLAIN (COSTS off)
-- by the statistic and while it's NULL-only we assume 200 values for it
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c, d;
- QUERY PLAN
------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
GroupAggregate
Group Key: a, b, c, d
- -> Sort
- Sort Key: a, b, c, d
- -> Seq Scan on ndistinct
-(5 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Sort
+ Sort Key: a, b, c, d
+ -> Seq Scan on ndistinct
+(6 rows)
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY b, c, d;
- QUERY PLAN
------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
GroupAggregate
Group Key: b, c, d
- -> Sort
- Sort Key: b, c, d
- -> Seq Scan on ndistinct
-(5 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Sort
+ Sort Key: b, c, d
+ -> Seq Scan on ndistinct
+(6 rows)
TRUNCATE TABLE ndistinct;
-- under-estimates when using only per-column statistics
@@ -309,21 +318,23 @@ EXPLAIN (COSTS off)
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY b, c, d;
- QUERY PLAN
------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
HashAggregate
Group Key: b, c, d
- -> Seq Scan on ndistinct
-(3 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Seq Scan on ndistinct
+(4 rows)
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY a, d;
- QUERY PLAN
------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
HashAggregate
Group Key: a, d
- -> Seq Scan on ndistinct
-(3 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Seq Scan on ndistinct
+(4 rows)
DROP STATISTICS s10;
SELECT stxkind, stxndistinct
@@ -336,48 +347,53 @@ SELECT stxkind, stxndistinct
-- due to under-estimates
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY a, b;
- QUERY PLAN
------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
HashAggregate
Group Key: a, b
- -> Seq Scan on ndistinct
-(3 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Seq Scan on ndistinct
+(4 rows)
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c;
- QUERY PLAN
------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
HashAggregate
Group Key: a, b, c
- -> Seq Scan on ndistinct
-(3 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Seq Scan on ndistinct
+(4 rows)
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c, d;
- QUERY PLAN
------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
HashAggregate
Group Key: a, b, c, d
- -> Seq Scan on ndistinct
-(3 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Seq Scan on ndistinct
+(4 rows)
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY b, c, d;
- QUERY PLAN
------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
HashAggregate
Group Key: b, c, d
- -> Seq Scan on ndistinct
-(3 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Seq Scan on ndistinct
+(4 rows)
EXPLAIN (COSTS off)
SELECT COUNT(*) FROM ndistinct GROUP BY a, d;
- QUERY PLAN
------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
HashAggregate
Group Key: a, d
- -> Seq Scan on ndistinct
-(3 rows)
+ -> Remote Subquery Scan on all (datanode_1,datanode_2)
+ -> Seq Scan on ndistinct
+(4 rows)
-- functional dependencies tests
CREATE TABLE functional_dependencies (
@@ -398,42 +414,50 @@ INSERT INTO functional_dependencies (a, b, c, filler1)
ANALYZE functional_dependencies;
EXPLAIN (COSTS OFF)
SELECT * FROM functional_dependencies WHERE a = 1 AND b = '1';
- QUERY PLAN
----------------------------------------------------
- Bitmap Heap Scan on functional_dependencies
- Recheck Cond: ((a = 1) AND (b = '1'::text))
- -> Bitmap Index Scan on fdeps_abc_idx
- Index Cond: ((a = 1) AND (b = '1'::text))
-(4 rows)
+ QUERY PLAN
+---------------------------------------------------------
+ Remote Fast Query Execution
+ Node/s: datanode_1, datanode_2
+ -> Bitmap Heap Scan on functional_dependencies
+ Recheck Cond: ((a = 1) AND (b = '1'::text))
+ -> Bitmap Index Scan on fdeps_abc_idx
+ Index Cond: ((a = 1) AND (b = '1'::text))
+(6 rows)
EXPLAIN (COSTS OFF)
SELECT * FROM functional_dependencies WHERE a = 1 AND b = '1' AND c = 1;
- QUERY PLAN
------------------------------------------------------------
- Index Scan using fdeps_abc_idx on functional_dependencies
- Index Cond: ((a = 1) AND (b = '1'::text) AND (c = 1))
-(2 rows)
+ QUERY PLAN
+-----------------------------------------------------------------
+ Remote Fast Query Execution
+ Node/s: datanode_1, datanode_2
+ -> Index Scan using fdeps_abc_idx on functional_dependencies
+ Index Cond: ((a = 1) AND (b = '1'::text) AND (c = 1))
+(4 rows)
-- create statistics
CREATE STATISTICS func_deps_stat (dependencies) ON a, b, c FROM functional_dependencies;
ANALYZE functional_dependencies;
EXPLAIN (COSTS OFF)
SELECT * FROM functional_dependencies WHERE a = 1 AND b = '1';
- QUERY PLAN
----------------------------------------------------
- Bitmap Heap Scan on functional_dependencies
- Recheck Cond: ((a = 1) AND (b = '1'::text))
- -> Bitmap Index Scan on fdeps_abc_idx
- Index Cond: ((a = 1) AND (b = '1'::text))
-(4 rows)
+ QUERY PLAN
+---------------------------------------------------------
+ Remote Fast Query Execution
+ Node/s: datanode_1, datanode_2
+ -> Bitmap Heap Scan on functional_dependencies
+ Recheck Cond: ((a = 1) AND (b = '1'::text))
+ -> Bitmap Index Scan on fdeps_abc_idx
+ Index Cond: ((a = 1) AND (b = '1'::text))
+(6 rows)
EXPLAIN (COSTS OFF)
SELECT * FROM functional_dependencies WHERE a = 1 AND b = '1' AND c = 1;
- QUERY PLAN
------------------------------------------------------------
- Index Scan using fdeps_abc_idx on functional_dependencies
- Index Cond: ((a = 1) AND (b = '1'::text) AND (c = 1))
-(2 rows)
+ QUERY PLAN
+-----------------------------------------------------------------
+ Remote Fast Query Execution
+ Node/s: datanode_1, datanode_2
+ -> Index Scan using fdeps_abc_idx on functional_dependencies
+ Index Cond: ((a = 1) AND (b = '1'::text) AND (c = 1))
+(4 rows)
-- a => b, a => c, b => c
TRUNCATE functional_dependencies;
@@ -443,67 +467,79 @@ INSERT INTO functional_dependencies (a, b, c, filler1)
ANALYZE functional_dependencies;
EXPLAIN (COSTS OFF)
SELECT * FROM functional_dependencies WHERE a = 1 AND b = '1';
- QUERY PLAN
------------------------------------------------------------
- Index Scan using fdeps_abc_idx on functional_dependencies
- Index Cond: ((a = 1) AND (b = '1'::text))
-(2 rows)
+ QUERY PLAN
+-----------------------------------------------------------------
+ Remote Fast Query Execution
+ Node/s: datanode_1, datanode_2
+ -> Index Scan using fdeps_abc_idx on functional_dependencies
+ Index Cond: ((a = 1) AND (b = '1'::text))
+(4 rows)
EXPLAIN (COSTS OFF)
SELECT * FROM functional_dependencies WHERE a = 1 AND b = '1' AND c = 1;
- QUERY PLAN
------------------------------------------------------------
- Index Scan using fdeps_abc_idx on functional_dependencies
- Index Cond: ((a = 1) AND (b = '1'::text) AND (c = 1))
-(2 rows)
+ QUERY PLAN
+-----------------------------------------------------------------
+ Remote Fast Query Execution
+ Node/s: datanode_1, datanode_2
+ -> Index Scan using fdeps_abc_idx on functional_dependencies
+ Index Cond: ((a = 1) AND (b = '1'::text) AND (c = 1))
+(4 rows)
-- create statistics
CREATE STATISTICS func_deps_stat (dependencies) ON a, b, c FROM functional_dependencies;
ANALYZE functional_dependencies;
EXPLAIN (COSTS OFF)
SELECT * FROM functional_dependencies WHERE a = 1 AND b = '1';
- QUERY PLAN
----------------------------------------------------
- Bitmap Heap Scan on functional_dependencies
- Recheck Cond: ((a = 1) AND (b = '1'::text))
- -> Bitmap Index Scan on fdeps_abc_idx
- Index Cond: ((a = 1) AND (b = '1'::text))
-(4 rows)
+ QUERY PLAN
+---------------------------------------------------------
+ Remote Fast Query Execution
+ Node/s: datanode_1, datanode_2
+ -> Bitmap Heap Scan on functional_dependencies
+ Recheck Cond: ((a = 1) AND (b = '1'::text))
+ -> Bitmap Index Scan on fdeps_abc_idx
+ Index Cond: ((a = 1) AND (b = '1'::text))
+(6 rows)
EXPLAIN (COSTS OFF)
SELECT * FROM functional_dependencies WHERE a = 1 AND b = '1' AND c = 1;
- QUERY PLAN
----------------------------------------------------
- Bitmap Heap Scan on functional_dependencies
- Recheck Cond: ((a = 1) AND (b = '1'::text))
- Filter: (c = 1)
- -> Bitmap Index Scan on fdeps_ab_idx
- Index Cond: ((a = 1) AND (b = '1'::text))
-(5 rows)
+ QUERY PLAN
+---------------------------------------------------------
+ Remote Fast Query Execution
+ Node/s: datanode_1, datanode_2
+ -> Bitmap Heap Scan on functional_dependencies
+ Recheck Cond: ((a = 1) AND (b = '1'::text))
+ Filter: (c = 1)
+ -> Bitmap Index Scan on fdeps_ab_idx
+ Index Cond: ((a = 1) AND (b = '1'::text))
+(7 rows)
-- check change of column type doesn't break it
ALTER TABLE functional_dependencies ALTER COLUMN c TYPE numeric;
EXPLAIN (COSTS OFF)
SELECT * FROM functional_dependencies WHERE a = 1 AND b = '1' AND c = 1;
- QUERY PLAN
----------------------------------------------------
- Bitmap Heap Scan on functional_dependencies
- Recheck Cond: ((a = 1) AND (b = '1'::text))
- Filter: (c = '1'::numeric)
- -> Bitmap Index Scan on fdeps_ab_idx
- Index Cond: ((a = 1) AND (b = '1'::text))
-(5 rows)
+ QUERY PLAN
+---------------------------------------------------------
+ Remote Fast Query Execution
+ Node/s: datanode_1, datanode_2
+ -> Bitmap Heap Scan on functional_dependencies
+ Recheck Cond: ((a = 1) AND (b = '1'::text))
+ Filter: (c = '1'::numeric)
+ -> Bitmap Index Scan on fdeps_ab_idx
+ Index Cond: ((a = 1) AND (b = '1'::text))
+(7 rows)
ANALYZE functional_dependencies;
EXPLAIN (COSTS OFF)
SELECT * FROM functional_dependencies WHERE a = 1 AND b = '1' AND c = 1;
- QUERY PLAN
----------------------------------------------------
- Bitmap Heap Scan on functional_dependencies
- Recheck Cond: ((a = 1) AND (b = '1'::text))
- Filter: (c = '1'::numeric)
- -> Bitmap Index Scan on fdeps_ab_idx
- Index Cond: ((a = 1) AND (b = '1'::text))
-(5 rows)
+ QUERY PLAN
+---------------------------------------------------------
+ Remote Fast Query Execution
+ Node/s: datanode_1, datanode_2
+ -> Bitmap Heap Scan on functional_dependencies
+ Recheck Cond: ((a = 1) AND (b = '1'::text))
+ Filter: (c = '1'::numeric)
+ -> Bitmap Index Scan on fdeps_ab_idx
+ Index Cond: ((a = 1) AND (b = '1'::text))
+(7 rows)
RESET random_page_cost;
diff --git a/src/test/regress/sql/stats_ext.sql b/src/test/regress/sql/stats_ext.sql
index d1ff3a8583..2a02f8e0ac 100644
--- a/src/test/regress/sql/stats_ext.sql
+++ b/src/test/regress/sql/stats_ext.sql
@@ -19,7 +19,7 @@ CREATE STATISTICS tst ON (relpages, reltuples) FROM pg_class;
CREATE STATISTICS tst (unrecognized) ON relname, relnatts FROM pg_class;
-- Ensure stats are dropped sanely, and test IF NOT EXISTS while at it
-CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER);
+CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER) DISTRIBUTE BY HASH(c);
CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1;
CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1;
DROP STATISTICS ab1_a_b_stats;
@@ -64,9 +64,9 @@ CREATE SEQUENCE tststats.s;
CREATE VIEW tststats.v AS SELECT * FROM tststats.t;
CREATE MATERIALIZED VIEW tststats.mv AS SELECT * FROM tststats.t;
CREATE TYPE tststats.ty AS (a int, b int, c text);
-CREATE FOREIGN DATA WRAPPER extstats_dummy_fdw;
-CREATE SERVER extstats_dummy_srv FOREIGN DATA WRAPPER extstats_dummy_fdw;
-CREATE FOREIGN TABLE tststats.f (a int, b int, c text) SERVER extstats_dummy_srv;
+-- CREATE FOREIGN DATA WRAPPER extstats_dummy_fdw;
+-- CREATE SERVER extstats_dummy_srv FOREIGN DATA WRAPPER extstats_dummy_fdw;
+-- CREATE FOREIGN TABLE tststats.f (a int, b int, c text) SERVER extstats_dummy_srv;
CREATE TABLE tststats.pt (a int, b int, c text) PARTITION BY RANGE (a, b);
CREATE TABLE tststats.pt1 PARTITION OF tststats.pt FOR VALUES FROM (-10, -10) TO (10, 10);
@@ -76,22 +76,26 @@ CREATE STATISTICS tststats.s3 ON a, b FROM tststats.s;
CREATE STATISTICS tststats.s4 ON a, b FROM tststats.v;
CREATE STATISTICS tststats.s5 ON a, b FROM tststats.mv;
CREATE STATISTICS tststats.s6 ON a, b FROM tststats.ty;
-CREATE STATISTICS tststats.s7 ON a, b FROM tststats.f;
+-- CREATE STATISTICS tststats.s7 ON a, b FROM tststats.f;
CREATE STATISTICS tststats.s8 ON a, b FROM tststats.pt;
CREATE STATISTICS tststats.s9 ON a, b FROM tststats.pt1;
-DO $$
-DECLARE
- relname text := reltoastrelid::regclass FROM pg_class WHERE oid = 'tststats.t'::regclass;
-BEGIN
- EXECUTE 'CREATE STATISTICS tststats.s10 ON a, b FROM ' || relname;
-EXCEPTION WHEN wrong_object_type THEN
- RAISE NOTICE 'stats on toast table not created';
-END;
-$$;
+
+-- commented out, because there's no good way to catch the error on XL
+-- (due to not supporting subtransactions), and the error message varies
+-- depending on OID of the toast table
+-- DO $$
+-- DECLARE
+-- relname text := reltoastrelid::regclass FROM pg_class WHERE oid = 'tststats.t'::regclass;
+-- BEGIN
+-- EXECUTE 'CREATE STATISTICS tststats.s10 ON a, b FROM ' || relname;
+-- EXCEPTION WHEN wrong_object_type THEN
+-- RAISE NOTICE 'stats on toast table not created';
+-- END;
+-- $$;
SET client_min_messages TO warning;
DROP SCHEMA tststats CASCADE;
-DROP FOREIGN DATA WRAPPER extstats_dummy_fdw CASCADE;
+-- DROP FOREIGN DATA WRAPPER extstats_dummy_fdw CASCADE;
RESET client_min_messages;
-- n-distinct tests