mirror of
https://github.com/postgres/postgres.git
synced 2026-07-15 12:51:05 -04:00
Split CREATE STATISTICS error reasons out into errdetails
Some errmsgs in statscmds.c were phrased as "...cannot be used because...". Put the reasons into errdetails. While at it, switch from passive voice to "cannot create..." for the errmsg. Author: Yugo Nagata <nagata@sraoss.co.jp> Suggested-by: John Naylor <johncnaylorls@gmail.com> Discussion: https://postgr.es/m/CANWCAZaZeX0omWNh_ZbD_JVujzYQdRUW8UZOQ4dWh9Sg7OcAow@mail.gmail.com
This commit is contained in:
parent
3284e3f63c
commit
51098839cf
2 changed files with 13 additions and 7 deletions
|
|
@ -280,8 +280,10 @@ CreateStatistics(CreateStatsStmt *stmt, bool check_rights)
|
|||
if (type->lt_opr == InvalidOid)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("column \"%s\" cannot be used in multivariate statistics because its type %s has no default btree operator class",
|
||||
attname, format_type_be(attForm->atttypid))));
|
||||
errmsg("cannot create multivariate statistics on column \"%s\"",
|
||||
attname),
|
||||
errdetail("The type %s has no default btree operator class.",
|
||||
format_type_be(attForm->atttypid))));
|
||||
}
|
||||
|
||||
/* Treat virtual generated columns as expressions */
|
||||
|
|
@ -325,8 +327,10 @@ CreateStatistics(CreateStatsStmt *stmt, bool check_rights)
|
|||
if (type->lt_opr == InvalidOid)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("column \"%s\" cannot be used in multivariate statistics because its type %s has no default btree operator class",
|
||||
get_attname(relid, var->varattno, false), format_type_be(var->vartype))));
|
||||
errmsg("cannot create multivariate statistics on column \"%s\"",
|
||||
get_attname(relid, var->varattno, false)),
|
||||
errdetail("The type %s has no default btree operator class.",
|
||||
format_type_be(var->vartype))));
|
||||
}
|
||||
|
||||
/* Treat virtual generated columns as expressions */
|
||||
|
|
@ -375,8 +379,9 @@ CreateStatistics(CreateStatsStmt *stmt, bool check_rights)
|
|||
if (type->lt_opr == InvalidOid)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("expression cannot be used in multivariate statistics because its type %s has no default btree operator class",
|
||||
format_type_be(atttype))));
|
||||
errmsg("cannot create multivariate statistics on this expression"),
|
||||
errdetail("The type %s has no default btree operator class.",
|
||||
format_type_be(atttype))));
|
||||
}
|
||||
|
||||
stxexprs = lappend(stxexprs, expr);
|
||||
|
|
|
|||
|
|
@ -99,7 +99,8 @@ CREATE STATISTICS tst (ndistinct) ON (y + z) FROM ext_stats_test;
|
|||
ERROR: cannot specify statistics kinds when building univariate statistics
|
||||
-- multivariate statistics without a less-than operator not supported
|
||||
CREATE STATISTICS tst (ndistinct) ON x, w from ext_stats_test;
|
||||
ERROR: column "w" cannot be used in multivariate statistics because its type xid has no default btree operator class
|
||||
ERROR: cannot create multivariate statistics on column "w"
|
||||
DETAIL: The type xid has no default btree operator class.
|
||||
DROP TABLE ext_stats_test;
|
||||
-- Ensure stats are dropped sanely, and test IF NOT EXISTS while at it
|
||||
CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER);
|
||||
|
|
|
|||
Loading…
Reference in a new issue