diff --git a/src/backend/distributed/commands/alter_table.c b/src/backend/distributed/commands/alter_table.c index f1c05734c..e9739cae9 100644 --- a/src/backend/distributed/commands/alter_table.c +++ b/src/backend/distributed/commands/alter_table.c @@ -428,6 +428,11 @@ AlterDistributedTable(TableConversionParameters *params) TableConversionReturn * AlterTableSetAccessMethod(TableConversionParameters *params) { +#if PG_VERSION_NUM < PG_VERSION_12 + ereport(ERROR, (errmsg("table access methods are not supported " + "for Postgres versions earlier than 12"))); +#endif + EnsureRelationExists(params->relationId); EnsureTableOwner(params->relationId); diff --git a/src/test/regress/expected/alter_table_set_access_method.out b/src/test/regress/expected/alter_table_set_access_method.out index bd13798e1..bb20565f1 100644 --- a/src/test/regress/expected/alter_table_set_access_method.out +++ b/src/test/regress/expected/alter_table_set_access_method.out @@ -1,3 +1,17 @@ +-- test for Postgres version +-- should error before PG12 +CREATE TABLE alter_am_pg_version_table (a INT); +SELECT alter_table_set_access_method('alter_am_pg_version_table', 'columnar'); +NOTICE: creating a new table for public.alter_am_pg_version_table +NOTICE: Moving the data of public.alter_am_pg_version_table +NOTICE: Dropping the old public.alter_am_pg_version_table +NOTICE: Renaming the new table to public.alter_am_pg_version_table + alter_table_set_access_method +--------------------------------------------------------------------- + +(1 row) + +DROP TABLE alter_am_pg_version_table; SHOW server_version \gset SELECT substring(:'server_version', '\d+')::int > 11 AS server_version_above_eleven \gset diff --git a/src/test/regress/expected/alter_table_set_access_method_0.out b/src/test/regress/expected/alter_table_set_access_method_0.out index 9d92533f9..032e79aa7 100644 --- a/src/test/regress/expected/alter_table_set_access_method_0.out +++ b/src/test/regress/expected/alter_table_set_access_method_0.out @@ -1,3 +1,9 @@ +-- test for Postgres version +-- should error before PG12 +CREATE TABLE alter_am_pg_version_table (a INT); +SELECT alter_table_set_access_method('alter_am_pg_version_table', 'columnar'); +ERROR: table access methods are not supported for Postgres versions earlier than 12 +DROP TABLE alter_am_pg_version_table; SHOW server_version \gset SELECT substring(:'server_version', '\d+')::int > 11 AS server_version_above_eleven \gset diff --git a/src/test/regress/sql/alter_table_set_access_method.sql b/src/test/regress/sql/alter_table_set_access_method.sql index be895ad2e..02e3c6e1c 100644 --- a/src/test/regress/sql/alter_table_set_access_method.sql +++ b/src/test/regress/sql/alter_table_set_access_method.sql @@ -1,3 +1,9 @@ +-- test for Postgres version +-- should error before PG12 +CREATE TABLE alter_am_pg_version_table (a INT); +SELECT alter_table_set_access_method('alter_am_pg_version_table', 'columnar'); +DROP TABLE alter_am_pg_version_table; + SHOW server_version \gset SELECT substring(:'server_version', '\d+')::int > 11 AS server_version_above_eleven \gset