diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2020-11-15 16:10:48 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2020-11-15 16:10:48 -0500 |
commit | 4ac8ee9d4878dadccc2331d8d1b1769c97f4ebe9 (patch) | |
tree | 1fbe7fb893928fb273668e2ba2cf4ea54b99065e /src | |
parent | 2b77595085423970036afd6263046c5747534dd0 (diff) | |
download | postgresql-4ac8ee9d4878dadccc2331d8d1b1769c97f4ebe9.tar.gz postgresql-4ac8ee9d4878dadccc2331d8d1b1769c97f4ebe9.zip |
Fix fuzzy thinking about amcanmulticol versus amcaninclude.
These flags should be independent: in particular an index AM should
be able to say that it supports include columns without necessarily
supporting multiple key columns. The included-columns patch got
this wrong, possibly aided by the fact that it didn't bother to
update the documentation.
While here, clarify some text about amcanreturn, which was a little
vague about what should happen when amcanreturn reports that only
some of the index columns are returnable.
Noted while reviewing the SP-GiST included-columns patch, which
quite incorrectly (and unsafely) changed SP-GiST to claim
amcanmulticol = true as a workaround for this bug.
Backpatch to v11 where included columns were introduced.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/commands/indexcmds.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index b4b9256de9e..26fef9fc5fa 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -535,7 +535,7 @@ DefineIndex(Oid relationId, list_copy(stmt->indexIncludingParams)); numberOfAttributes = list_length(allIndexParams); - if (numberOfAttributes <= 0) + if (numberOfKeyAttributes <= 0) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), errmsg("must specify at least one column"))); @@ -758,7 +758,7 @@ DefineIndex(Oid relationId, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("access method \"%s\" does not support included columns", accessMethodName))); - if (numberOfAttributes > 1 && !amRoutine->amcanmulticol) + if (numberOfKeyAttributes > 1 && !amRoutine->amcanmulticol) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("access method \"%s\" does not support multicolumn indexes", |