diff --git a/src/sql/resolver/ddl/ob_create_table_resolver.cpp b/src/sql/resolver/ddl/ob_create_table_resolver.cpp index 3cb447d4b..735d6c5a1 100644 --- a/src/sql/resolver/ddl/ob_create_table_resolver.cpp +++ b/src/sql/resolver/ddl/ob_create_table_resolver.cpp @@ -3387,95 +3387,6 @@ int ObCreateTableResolver::resolve_table_charset_info(const ParseNode *node) { return ret; } -/* -* only when default columns store is column_store -* have to add each column group -*/ -int ObCreateTableResolver::resolve_column_group(const ParseNode *cg_node) -{ - int ret = OB_SUCCESS; - ObCreateTableStmt *create_table_stmt = static_cast(stmt_); - ObArray column_ids; // not include virtual column - uint64_t compat_version = 0; - ObTableStoreType table_store_type = OB_TABLE_STORE_INVALID; - - if (OB_ISNULL(create_table_stmt)) { - ret = OB_ERR_UNEXPECTED; - SQL_RESV_LOG(WARN, "create_table_stmt should not be null", KR(ret)); - } else { - ObTableSchema &table_schema = create_table_stmt->get_create_table_arg().schema_; - const uint64_t tenant_id = table_schema.get_tenant_id(); - const int64_t column_cnt = table_schema.get_column_count(); - if (OB_FAIL(column_ids.reserve(column_cnt))) { - LOG_WARN("fail to reserve", KR(ret), K(column_cnt)); - } else if (OB_FAIL(GET_MIN_DATA_VERSION(tenant_id, compat_version))) { - LOG_WARN("fail to get min data version", KR(ret), K(tenant_id)); - } else if (!(compat_version >= DATA_VERSION_4_3_0_0)) { - if (OB_NOT_NULL(cg_node) && (T_COLUMN_GROUP == cg_node->type_)) { - ret = OB_NOT_SUPPORTED; - LOG_WARN("can't support column store if version less than 4_1_0_0", KR(ret), K(compat_version)); - } - } else { - table_schema.set_column_store(true); - bool is_each_cg_exist = false; - if (OB_NOT_NULL(cg_node)) { - if (OB_FAIL(parse_column_group(cg_node, table_schema, table_schema))) { - LOG_WARN("fail to parse column group", K(ret)); - } - } - - /* build column group when cg node is null && tenant cg valid*/ - ObTenantConfigGuard tenant_config(TENANT_CONF(session_info_->get_effective_tenant_id())); - if (OB_FAIL(ret)) { - } else if ( OB_LIKELY(tenant_config.is_valid()) && nullptr == cg_node) { - /* force to build each cg*/ - if (!ObSchemaUtils::can_add_column_group(table_schema)) { - } else if (OB_FAIL(ObTableStoreFormat::find_table_store_type( - tenant_config->default_table_store_format.get_value_string(), - table_store_type))) { - LOG_WARN("fail to get table store format", K(ret), K(table_store_type)); - } else if (ObTableStoreFormat::is_with_column(table_store_type)) { - /* for default is column store, must add each column group*/ - if (OB_FAIL(ObSchemaUtils::build_add_each_column_group(table_schema, table_schema))) { - LOG_WARN("fail to add each column group", K(ret)); - } - } - - /* force to build all cg*/ - ObColumnGroupSchema all_cg; - if (OB_FAIL(ret)) { - } else if (!ObSchemaUtils::can_add_column_group(table_schema)) { - } else if (ObTableStoreFormat::is_row_with_column_store(table_store_type)) { - if (OB_FAIL(ObSchemaUtils::build_all_column_group(table_schema, table_schema.get_tenant_id(), - table_schema.get_max_used_column_group_id() + 1, all_cg))) { - LOG_WARN("fail to add all column group", K(ret)); - } else if (OB_FAIL(table_schema.add_column_group(all_cg))) { - LOG_WARN("fail to build all column group", K(ret)); - } - } - } - - // add default_type column_group, build a empty and then use alter_deafult_cg - if (OB_SUCC(ret)) { - ObColumnGroupSchema tmp_cg; - column_ids.reuse(); - if (OB_FAIL(build_column_group(table_schema, ObColumnGroupType::DEFAULT_COLUMN_GROUP, - OB_DEFAULT_COLUMN_GROUP_NAME, column_ids, DEFAULT_TYPE_COLUMN_GROUP_ID, tmp_cg))) { - LOG_WARN("fail to build default type column_group", KR(ret), K(table_store_type), - "table_id", table_schema.get_table_id()); - } else if (OB_FAIL(table_schema.add_column_group(tmp_cg))) { - LOG_WARN("fail to add default column group", KR(ret), "table_id", table_schema.get_table_id()); - } else if (OB_FAIL(ObSchemaUtils::alter_rowkey_column_group(table_schema))) { - LOG_WARN("fail to adjust rowkey column group when add column group", K(ret)); - } else if (OB_FAIL(ObSchemaUtils::alter_default_column_group(table_schema))) { - LOG_WARN("fail to adjust default column group", K(ret)); - } - } - } - } - return ret; -} - int ObCreateTableResolver::resolve_auto_partition(const ParseNode *partition_node) { int ret = OB_SUCCESS; diff --git a/src/sql/resolver/ddl/ob_create_table_resolver.h b/src/sql/resolver/ddl/ob_create_table_resolver.h index 60934d1d3..b25b7a0ec 100644 --- a/src/sql/resolver/ddl/ob_create_table_resolver.h +++ b/src/sql/resolver/ddl/ob_create_table_resolver.h @@ -133,11 +133,8 @@ private: int check_external_table_generated_partition_column_sanity(ObTableSchema &table_schema, ObRawExpr *dependant_expr, ObIArray &external_part_idx); typedef common::hash::ObPlacementHashSet VPColumnIdHashSet; uint64_t gen_column_group_id(); - int resolve_column_group(const ParseNode *cg_node); - int add_inner_index_for_heap_gtt(); int check_max_row_data_length(const ObTableSchema &table_schema); - int create_default_partition_for_table(ObTableSchema &table_schema); int set_default_micro_index_clustered_(share::schema::ObTableSchema &table_schema); diff --git a/src/sql/resolver/ddl/ob_create_table_resolver_base.h b/src/sql/resolver/ddl/ob_create_table_resolver_base.h index 4ed1f4031..5a9712433 100644 --- a/src/sql/resolver/ddl/ob_create_table_resolver_base.h +++ b/src/sql/resolver/ddl/ob_create_table_resolver_base.h @@ -46,7 +46,7 @@ protected: int resolve_column_group_helper(const ParseNode *cg_node, ObTableSchema &table_schema); // check this type of table_schema should build column_group or not uint64_t gen_column_group_id(); - int resolve_column_group(const ParseNode *cg_node); + virtual int resolve_column_group(const ParseNode *cg_node) final; protected: uint64_t cur_column_group_id_; };