1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-15 19:21:59 +03:00

Fix ALTER TABLE...SET STATS error message for included columns

The existing error message was complaining that the column is not an
expression, which is not correct.  Introduce a suitable wording
variation and a test.

Co-authored-by: Yugo Nagata <nagata@sraoss.co.jp>
Discussion: https://postgr.es/m/20180628182803.e4632d5a.nagata@sraoss.co.jp
Reviewed-by: Álvaro Herrera <alvherre@alvh.no-ip.org>
This commit is contained in:
Alvaro Herrera
2018-07-16 20:00:24 -04:00
parent e353389d24
commit cb9db2ab06
3 changed files with 39 additions and 8 deletions

View File

@ -243,6 +243,20 @@ SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname;
----------
(0 rows)
DROP TABLE tbl;
/*
* 3.3 Test ALTER TABLE SET STATISTICS
*/
CREATE TABLE tbl (c1 int, c2 int);
CREATE INDEX tbl_idx ON tbl (c1, (c1+0)) INCLUDE (c2);
ALTER INDEX tbl_idx ALTER COLUMN 1 SET STATISTICS 1000;
ERROR: cannot alter statistics on non-expression column "c1" of index "tbl_idx"
HINT: Alter statistics on table column instead.
ALTER INDEX tbl_idx ALTER COLUMN 2 SET STATISTICS 1000;
ALTER INDEX tbl_idx ALTER COLUMN 3 SET STATISTICS 1000;
ERROR: cannot alter statistics on included column "c2" of index "tbl_idx"
ALTER INDEX tbl_idx ALTER COLUMN 4 SET STATISTICS 1000;
ERROR: column number 4 of relation "tbl_idx" does not exist
DROP TABLE tbl;
/*
* 4. CREATE INDEX CONCURRENTLY

View File

@ -137,6 +137,16 @@ ALTER TABLE tbl DROP COLUMN c1;
SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname;
DROP TABLE tbl;
/*
* 3.3 Test ALTER TABLE SET STATISTICS
*/
CREATE TABLE tbl (c1 int, c2 int);
CREATE INDEX tbl_idx ON tbl (c1, (c1+0)) INCLUDE (c2);
ALTER INDEX tbl_idx ALTER COLUMN 1 SET STATISTICS 1000;
ALTER INDEX tbl_idx ALTER COLUMN 2 SET STATISTICS 1000;
ALTER INDEX tbl_idx ALTER COLUMN 3 SET STATISTICS 1000;
ALTER INDEX tbl_idx ALTER COLUMN 4 SET STATISTICS 1000;
DROP TABLE tbl;
/*
* 4. CREATE INDEX CONCURRENTLY