diff --git a/src/sql/resolver/ddl/ob_create_table_resolver.cpp b/src/sql/resolver/ddl/ob_create_table_resolver.cpp index b9364a6ab2..0d7f4da8ac 100644 --- a/src/sql/resolver/ddl/ob_create_table_resolver.cpp +++ b/src/sql/resolver/ddl/ob_create_table_resolver.cpp @@ -329,7 +329,8 @@ int ObCreateTableResolver::set_temp_table_info(ObTableSchema &table_schema, Pars // 列定义添加(__session_id bigint, __session_create_time bigint), 如果用户表定义已经出现__session_id等后面解析时会报错... int ObCreateTableResolver::add_new_column_for_oracle_temp_table(ObTableSchema &table_schema, - ObArray &stats) + ObArray &stats, + bool add_to_schema) { int ret = OB_SUCCESS; ObColumnSchemaV2 column; @@ -345,7 +346,7 @@ int ObCreateTableResolver::set_temp_table_info(ObTableSchema &table_schema, Pars column.set_column_id(OB_HIDDEN_SESSION_ID_COLUMN_ID); column.set_is_hidden(true); stat.column_id_ = column.get_column_id(); - if (OB_FAIL(table_schema.add_column(column))) { + if (add_to_schema && OB_FAIL(table_schema.add_column(column))) { SQL_RESV_LOG(WARN, "fail to add column", K(ret)); } else if (OB_FAIL(stats.push_back(stat))) { SQL_RESV_LOG(WARN, "fail to push back stat", K(ret)); @@ -356,7 +357,7 @@ int ObCreateTableResolver::set_temp_table_info(ObTableSchema &table_schema, Pars column.set_column_id(OB_HIDDEN_SESS_CREATE_TIME_COLUMN_ID); column.set_is_hidden(true); stat.column_id_ = column.get_column_id(); - if (OB_FAIL(table_schema.add_column(column))) { + if (add_to_schema && OB_FAIL(table_schema.add_column(column))) { SQL_RESV_LOG(WARN, "fail to add column", K(ret)); } else if (OB_FAIL(stats.push_back(stat))) { SQL_RESV_LOG(WARN, "fail to push back stat", K(ret)); @@ -717,6 +718,17 @@ int ObCreateTableResolver::resolve(const ParseNode &parse_tree) if (OB_FAIL(add_hidden_tablet_seq_col())) { SQL_RESV_LOG(WARN, "failed to add hidden primary key tablet seq", K(ret)); } + + if (OB_SUCC(ret) && is_oracle_temp_table_) { + ObTableSchema &table_schema = create_table_stmt->get_create_table_arg().schema_; + ObArray column_stat; + int64_t pk_data_length = 0; + if (OB_FAIL(add_new_column_for_oracle_temp_table(table_schema, column_stat, false))) { + LOG_WARN("fail to add column stat", K(ret)); + } else if (OB_FAIL(add_pk_key_for_oracle_temp_table(column_stat, pk_data_length))) { + LOG_WARN("fail to add pk for oracle temp table", K(ret)); + } + } } if (OB_SUCC(ret)) { diff --git a/src/sql/resolver/ddl/ob_create_table_resolver.h b/src/sql/resolver/ddl/ob_create_table_resolver.h index f81f3461a4..0716557357 100644 --- a/src/sql/resolver/ddl/ob_create_table_resolver.h +++ b/src/sql/resolver/ddl/ob_create_table_resolver.h @@ -118,7 +118,7 @@ private: ObArray &stats); static int check_same_substr_expr(ObRawExpr &left, ObRawExpr &right, bool &same); virtual int get_table_schema_for_check(share::schema::ObTableSchema &table_schema) override; - int add_new_column_for_oracle_temp_table(share::schema::ObTableSchema &table_schema, ObArray &stats); + int add_new_column_for_oracle_temp_table(share::schema::ObTableSchema &table_schema, ObArray &stats, bool add_to_schema = true); int add_new_indexkey_for_oracle_temp_table(const int32_t org_key_len); int add_pk_key_for_oracle_temp_table(ObArray &stats, int64_t &pk_data_length); int set_partition_info_for_oracle_temp_table(share::schema::ObTableSchema &table_schema);