support json type

This commit is contained in:
xj0
2022-02-08 14:58:13 +08:00
committed by LINxiansheng
parent 4b25bac8d0
commit e5f59ea074
241 changed files with 46116 additions and 749 deletions

View File

@ -134,6 +134,10 @@ int ObIndexBuilderUtil::add_shadow_pks(
} else if (ob_is_text_tc(const_data_column->get_data_type())) {
ret = OB_ERR_WRONG_KEY_COLUMN;
LOG_WARN("Unexpected lob column in shadow pk", "table_id", data_schema.get_table_id(), K(column_id), K(ret));
} else if (ob_is_json_tc(const_data_column->get_data_type())) {
ret = OB_ERR_JSON_USED_AS_KEY;
LOG_WARN("Unexpected json column in shadow pk", "table_id", data_schema.get_table_id(),
K(column_id), K(ret));
} else {
data_column = *const_data_column;
data_column.set_nullable(true);
@ -212,6 +216,14 @@ int ObIndexBuilderUtil::set_index_table_columns(const ObCreateIndexArg& arg, con
"column length",
sort_item.prefix_len_,
K(ret));
} else if (ob_is_json_tc(data_column->get_data_type())) {
ret = OB_ERR_JSON_USED_AS_KEY;
LOG_USER_ERROR(OB_ERR_JSON_USED_AS_KEY, sort_item.column_name_.length(), sort_item.column_name_.ptr());
LOG_WARN("JSON column cannot be used in key specification", "tenant_id", data_schema.get_tenant_id(),
"database_id", data_schema.get_database_id(),
"table_name", data_schema.get_table_name(),
"column name", sort_item.column_name_,
"column length", sort_item.prefix_len_, K(ret));
} else if (OB_FAIL(add_column(data_column,
is_index_column,
is_rowkey,
@ -270,6 +282,17 @@ int ObIndexBuilderUtil::set_index_table_columns(const ObCreateIndexArg& arg, con
data_column->get_order_in_rowkey(),
K(row_desc),
K(ret));
} else if (ob_is_json_tc(data_column->get_data_type())) {
ret = OB_ERR_JSON_USED_AS_KEY;
LOG_WARN("JSON column cannot be used in key specification.",
"data_column",
*data_column,
K(is_index_column),
K(is_rowkey),
"order_in_rowkey",
data_column->get_order_in_rowkey(),
K(row_desc),
K(ret));
} else if (OB_FAIL(add_column(data_column,
is_index_column,
is_rowkey,
@ -326,6 +349,19 @@ int ObIndexBuilderUtil::set_index_table_columns(const ObCreateIndexArg& arg, con
"column name",
arg.store_columns_.at(i),
K(ret));
} else if (ob_is_json_tc(data_column->get_data_type())) {
ret = OB_ERR_JSON_USED_AS_KEY;
LOG_USER_ERROR(OB_ERR_JSON_USED_AS_KEY, arg.store_columns_.at(i).length(), arg.store_columns_.at(i).ptr());
LOG_WARN("JSON column cannot be used in key specification.",
"tenant_id",
data_schema.get_tenant_id(),
"database_id",
data_schema.get_database_id(),
"table_name",
data_schema.get_table_name(),
"column name",
arg.store_columns_.at(i),
K(ret));
} else if (OB_FAIL(
add_column(data_column, is_index_column, is_rowkey, order_in_rowkey, row_desc, index_schema))) {
LOG_WARN("add_column failed",
@ -373,6 +409,20 @@ int ObIndexBuilderUtil::set_index_table_columns(const ObCreateIndexArg& arg, con
"column name",
arg.hidden_store_columns_.at(i),
K(ret));
} else if (ob_is_json_tc(data_column->get_data_type())) {
ret = OB_ERR_JSON_USED_AS_KEY;
LOG_USER_ERROR(
OB_ERR_JSON_USED_AS_KEY, arg.hidden_store_columns_.at(i).length(), arg.hidden_store_columns_.at(i).ptr());
LOG_WARN("JSON column '%.*s' cannot be used in key specification.",
"tenant_id",
data_schema.get_tenant_id(),
"database_id",
data_schema.get_database_id(),
"table_name",
data_schema.get_table_name(),
"column name",
arg.hidden_store_columns_.at(i),
K(ret));
} else if (OB_FAIL(add_column(
data_column, is_index_column, is_rowkey, order_in_rowkey, row_desc, index_schema, true))) {
LOG_WARN("add_column failed",