fix temporary table create table bug
This commit is contained in:
@ -329,7 +329,8 @@ int ObCreateTableResolver::set_temp_table_info(ObTableSchema &table_schema, Pars
|
|||||||
|
|
||||||
// 列定义添加(__session_id bigint, __session_create_time bigint), 如果用户表定义已经出现__session_id等后面解析时会报错...
|
// 列定义添加(__session_id bigint, __session_create_time bigint), 如果用户表定义已经出现__session_id等后面解析时会报错...
|
||||||
int ObCreateTableResolver::add_new_column_for_oracle_temp_table(ObTableSchema &table_schema,
|
int ObCreateTableResolver::add_new_column_for_oracle_temp_table(ObTableSchema &table_schema,
|
||||||
ObArray<ObColumnResolveStat> &stats)
|
ObArray<ObColumnResolveStat> &stats,
|
||||||
|
bool add_to_schema)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
ObColumnSchemaV2 column;
|
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_column_id(OB_HIDDEN_SESSION_ID_COLUMN_ID);
|
||||||
column.set_is_hidden(true);
|
column.set_is_hidden(true);
|
||||||
stat.column_id_ = column.get_column_id();
|
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));
|
SQL_RESV_LOG(WARN, "fail to add column", K(ret));
|
||||||
} else if (OB_FAIL(stats.push_back(stat))) {
|
} else if (OB_FAIL(stats.push_back(stat))) {
|
||||||
SQL_RESV_LOG(WARN, "fail to push back stat", K(ret));
|
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_column_id(OB_HIDDEN_SESS_CREATE_TIME_COLUMN_ID);
|
||||||
column.set_is_hidden(true);
|
column.set_is_hidden(true);
|
||||||
stat.column_id_ = column.get_column_id();
|
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));
|
SQL_RESV_LOG(WARN, "fail to add column", K(ret));
|
||||||
} else if (OB_FAIL(stats.push_back(stat))) {
|
} else if (OB_FAIL(stats.push_back(stat))) {
|
||||||
SQL_RESV_LOG(WARN, "fail to push back stat", K(ret));
|
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())) {
|
if (OB_FAIL(add_hidden_tablet_seq_col())) {
|
||||||
SQL_RESV_LOG(WARN, "failed to add hidden primary key tablet seq", K(ret));
|
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<ObColumnResolveStat> 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)) {
|
if (OB_SUCC(ret)) {
|
||||||
|
|||||||
@ -118,7 +118,7 @@ private:
|
|||||||
ObArray<ObColumnResolveStat> &stats);
|
ObArray<ObColumnResolveStat> &stats);
|
||||||
static int check_same_substr_expr(ObRawExpr &left, ObRawExpr &right, bool &same);
|
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;
|
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<ObColumnResolveStat> &stats);
|
int add_new_column_for_oracle_temp_table(share::schema::ObTableSchema &table_schema, ObArray<ObColumnResolveStat> &stats, bool add_to_schema = true);
|
||||||
int add_new_indexkey_for_oracle_temp_table(const int32_t org_key_len);
|
int add_new_indexkey_for_oracle_temp_table(const int32_t org_key_len);
|
||||||
int add_pk_key_for_oracle_temp_table(ObArray<ObColumnResolveStat> &stats, int64_t &pk_data_length);
|
int add_pk_key_for_oracle_temp_table(ObArray<ObColumnResolveStat> &stats, int64_t &pk_data_length);
|
||||||
int set_partition_info_for_oracle_temp_table(share::schema::ObTableSchema &table_schema);
|
int set_partition_info_for_oracle_temp_table(share::schema::ObTableSchema &table_schema);
|
||||||
|
|||||||
Reference in New Issue
Block a user