diff --git a/src/common/backend/catalog/namespace.cpp b/src/common/backend/catalog/namespace.cpp index a60c28ebf..70e1bd455 100644 --- a/src/common/backend/catalog/namespace.cpp +++ b/src/common/backend/catalog/namespace.cpp @@ -3413,20 +3413,14 @@ void CheckSetNamespace(Oid oldNspOid, Oid nspOid, Oid classid, Oid objid) ereport( ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot move objects into or out of TOAST schema"))); - /*disallow set into cstore schema*/ - if (nspOid == CSTORE_NAMESPACE) - ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot move objects into CSTORE schema"))); - if (nspOid == PG_CATALOG_NAMESPACE) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot move objects into system schema"))); - /* disallow set into dbe_perf schema */ - if (nspOid == PG_DBEPERF_NAMESPACE) - ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot move objects into dbe_perf schema"))); - - /* disallow set into snapshot schema */ - if (nspOid == PG_SNAPSHOT_NAMESPACE) - ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot move objects into snapshot schema"))); + /* disallow user to set table into system schema */ + if (IsSysSchema(nspOid)) { + ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot move objects into %s schema", get_namespace_name(nspOid)))); + } } /* diff --git a/src/test/regress/input/prevent_table_in_sys_schema.source b/src/test/regress/input/prevent_table_in_sys_schema.source new file mode 100644 index 000000000..ea1a73f5a --- /dev/null +++ b/src/test/regress/input/prevent_table_in_sys_schema.source @@ -0,0 +1,23 @@ +create table t2(a int); +alter table t2 set schema blockchain; +create table t2(a int); +alter table t2 set schema cstore; +create table t2(a int); +alter table t2 set schema db4ai; +create table t2(a int); +alter table t2 set schema dbe_perf; +create table t2(a int); +alter table t2 set schema dbe_pldebugger; +create table t2(a int); +alter table t2 set schema dbe_pldeveloper; +create table t2(a int); +alter table t2 set schema dbe_sql_util; +create table t2(a int); +alter table t2 set schema pkg_service; +create table t2(a int); +alter table t2 set schema snapshot; +create table t2(a int); +alter table t2 set schema sqladvisor; +create table t2(a int); +create schema user_schema; +alter table t2 set schema user_schema; \ No newline at end of file diff --git a/src/test/regress/output/prevent_table_in_sys_schema.source b/src/test/regress/output/prevent_table_in_sys_schema.source new file mode 100644 index 000000000..1a456da2e --- /dev/null +++ b/src/test/regress/output/prevent_table_in_sys_schema.source @@ -0,0 +1,53 @@ +create table t2(a int); +alter table t2 set schema blockchain; +ERROR: cannot move objects into blockchain schema +create table t2(a int); +--?.* +--?.* +alter table t2 set schema cstore; +ERROR: cannot move objects into cstore schema +create table t2(a int); +--?.* +--?.* +alter table t2 set schema db4ai; +ERROR: cannot move objects into db4ai schema +create table t2(a int); +--?.* +--?.* +alter table t2 set schema dbe_perf; +ERROR: cannot move objects into dbe_perf schema +create table t2(a int); +--?.* +--?.* +alter table t2 set schema dbe_pldebugger; +ERROR: cannot move objects into dbe_pldebugger schema +create table t2(a int); +--?.* +--?.* +alter table t2 set schema dbe_pldeveloper; +ERROR: cannot move objects into dbe_pldeveloper schema +create table t2(a int); +--?.* +--?.* +alter table t2 set schema dbe_sql_util; +ERROR: cannot move objects into dbe_sql_util schema +create table t2(a int); +--?.* +--?.* +alter table t2 set schema pkg_service; +ERROR: cannot move objects into pkg_service schema +create table t2(a int); +--?.* +--?.* +alter table t2 set schema snapshot; +ERROR: cannot move objects into snapshot schema +create table t2(a int); +--?.* +--?.* +alter table t2 set schema sqladvisor; +ERROR: cannot move objects into sqladvisor schema +create table t2(a int); +--?.* +--?.* +create schema user_schema; +alter table t2 set schema user_schema; diff --git a/src/test/regress/parallel_schedule0 b/src/test/regress/parallel_schedule0 index 011c19da7..2c1ee7179 100644 --- a/src/test/regress/parallel_schedule0 +++ b/src/test/regress/parallel_schedule0 @@ -1043,9 +1043,8 @@ test: dolphin_guc_config test: row_count_function # show_warnings -test: show_warnings +test: show_warnings prevent_table_in_sys_schema # partition expression key test: partition_expr_key test: alter_foreign_schema -