Hi, Thomas Munro and Laurenz Albe. Since I didn't subscribe to the psql-hackers mailing list before this bug was raised, please forgive me for not being able to reply to this email by placing the email message below. https://www.postgresql.org/message-id/flat/e48a5d9a2d3d72985d61ee254314f5f5f5444a55.ca...@cybertec.at
I forbid to create indexes on whole-row expression in the following patch. I'd like to hear your opinions. -- Best Wishes, ywgrit
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index cd23ab3b25..e4451b1d36 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -572,9 +572,18 @@ DefineIndex(Oid relationId, Oid root_save_userid; int root_save_sec_context; int root_save_nestlevel; + ListCell *lc; root_save_nestlevel = NewGUCNestLevel(); + foreach (lc, stmt->indexParams) + { + IndexElem *ielem = castNode(IndexElem, lfirst(lc)); + if (IsA(ielem->expr, Var) && castNode(Var, ielem->expr)->varattno == 0) + ereport(ERROR, + (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("cannot create index on whole-row expression of table '%s'", ielem->indexcolname))); + } /* * Some callers need us to run with an empty default_tablespace; this is a * necessary hack to be able to reproduce catalog state accurately when