From 53aff20b87452be4c9ee32c0a85afb77b5ba0c20 Mon Sep 17 00:00:00 2001 From: obdev Date: Tue, 7 Feb 2023 17:53:32 +0800 Subject: [PATCH] report error when modify primary key nullable --- src/rootserver/ob_ddl_service.cpp | 1 + src/sql/resolver/ddl/ob_alter_table_resolver.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/rootserver/ob_ddl_service.cpp b/src/rootserver/ob_ddl_service.cpp index c030b577d2..cc2e98c741 100644 --- a/src/rootserver/ob_ddl_service.cpp +++ b/src/rootserver/ob_ddl_service.cpp @@ -6965,6 +6965,7 @@ int ObDDLService::fill_new_column_attributes( if (!is_oracle_mode() || alter_column_schema.is_set_default_) { new_column_schema.set_cur_default_value(alter_column_schema.get_cur_default_value()); } + new_column_schema.set_zero_fill(alter_column_schema.is_zero_fill()); new_column_schema.set_is_hidden(alter_column_schema.is_hidden()); new_column_schema.set_nullable(alter_column_schema.is_nullable()); new_column_schema.set_autoincrement(alter_column_schema.is_autoincrement()); diff --git a/src/sql/resolver/ddl/ob_alter_table_resolver.cpp b/src/sql/resolver/ddl/ob_alter_table_resolver.cpp index bceee9a5db..26edf40093 100644 --- a/src/sql/resolver/ddl/ob_alter_table_resolver.cpp +++ b/src/sql/resolver/ddl/ob_alter_table_resolver.cpp @@ -4676,6 +4676,10 @@ int ObAlterTableResolver::resolve_change_column(const ParseNode &node) && alter_column_schema.get_cur_default_value().is_null()) { ret = OB_ERR_PRIMARY_CANT_HAVE_NULL; LOG_USER_ERROR(OB_ERR_PRIMARY_CANT_HAVE_NULL); + } else if (0 != origin_col_schema->get_rowkey_position() + && alter_column_schema.is_set_nullable_) { + ret = OB_ERR_PRIMARY_CANT_HAVE_NULL; + LOG_WARN("can't set primary key nullable", K(ret)); } else if (ObGeometryType == origin_col_schema->get_data_type() && origin_col_schema->get_geo_type() != alter_column_schema.get_geo_type()) { ret = OB_NOT_SUPPORTED; @@ -4934,6 +4938,10 @@ int ObAlterTableResolver::resolve_modify_column(const ParseNode &node, && alter_column_schema.get_cur_default_value().is_null()) { ret = OB_ERR_PRIMARY_CANT_HAVE_NULL; LOG_USER_ERROR(OB_ERR_PRIMARY_CANT_HAVE_NULL); + } else if (0 != origin_col_schema->get_rowkey_position() + && alter_column_schema.is_set_nullable_) { + ret = OB_ERR_PRIMARY_CANT_HAVE_NULL; + LOG_WARN("can't set primary key nullable", K(ret)); } else if (ObGeometryType == origin_col_schema->get_data_type() && origin_col_schema->get_geo_type() != alter_column_schema.get_geo_type()) { ret = OB_NOT_SUPPORTED;