mirror of
https://github.com/postgres/postgres.git
synced 2025-10-22 14:32:25 +03:00
Harden tableam against nonexistant / wrong kind of AMs.
Previously it was allowed to set default_table_access_method to an
empty string. That makes sense for default_tablespace, where that was
copied from, as it signals falling back to the database's default
tablespace. As there is no equivalent for table AMs, forbid that.
Also make sure to throw a usable error when creating a table using an
index AM, by using get_am_type_oid() to implement get_table_am_oid()
instead of a separate copy. Previously we'd error out only later, in
GetTableAmRoutine().
Thirdly remove GetTableAmRoutineByAmId() - it was only used in an
earlier version of 8586bf7ed8
.
Add tests for the above (some for index AMs as well).
This commit is contained in:
@@ -156,6 +156,7 @@ extern Datum transformGenericOptions(Oid catalogId,
|
||||
extern ObjectAddress CreateAccessMethod(CreateAmStmt *stmt);
|
||||
extern void RemoveAccessMethodById(Oid amOid);
|
||||
extern Oid get_index_am_oid(const char *amname, bool missing_ok);
|
||||
extern Oid get_table_am_oid(const char *amname, bool missing_ok);
|
||||
extern Oid get_am_oid(const char *amname, bool missing_ok);
|
||||
extern char *get_am_name(Oid amOid);
|
||||
|
||||
|
Reference in New Issue
Block a user