mirror of
https://github.com/postgres/postgres.git
synced 2025-06-17 17:02:08 +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:
@ -6504,14 +6504,21 @@ ATExecSetStatistics(Relation rel, const char *colName, int16 colNum, Node *newVa
|
||||
errmsg("cannot alter system column \"%s\"",
|
||||
colName)));
|
||||
|
||||
if ((rel->rd_rel->relkind == RELKIND_INDEX ||
|
||||
rel->rd_rel->relkind == RELKIND_PARTITIONED_INDEX) &&
|
||||
rel->rd_index->indkey.values[attnum - 1] != 0)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("cannot alter statistics on non-expression column \"%s\" of index \"%s\"",
|
||||
NameStr(attrtuple->attname), RelationGetRelationName(rel)),
|
||||
errhint("Alter statistics on table column instead.")));
|
||||
if (rel->rd_rel->relkind == RELKIND_INDEX ||
|
||||
rel->rd_rel->relkind == RELKIND_PARTITIONED_INDEX)
|
||||
{
|
||||
if (attnum > rel->rd_index->indnkeyatts)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("cannot alter statistics on included column \"%s\" of index \"%s\"",
|
||||
NameStr(attrtuple->attname), RelationGetRelationName(rel))));
|
||||
else if (rel->rd_index->indkey.values[attnum - 1] != 0)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("cannot alter statistics on non-expression column \"%s\" of index \"%s\"",
|
||||
NameStr(attrtuple->attname), RelationGetRelationName(rel)),
|
||||
errhint("Alter statistics on table column instead.")));
|
||||
}
|
||||
|
||||
attrtuple->attstattarget = newtarget;
|
||||
|
||||
|
Reference in New Issue
Block a user