[CP] fix some mysql and information_schema not compat with mysql5.7

This commit is contained in:
18523270951@163.com
2023-10-16 04:09:17 +00:00
committed by ob-robot
parent 98b9115578
commit 4337f7c376
10 changed files with 124 additions and 64 deletions

View File

@ -538,9 +538,16 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const ObString &database_name,
casted_cell.reset(); casted_cell.reset();
const ObObj *res_cell = NULL; const ObObj *res_cell = NULL;
ObObj def_obj = column_schema->get_cur_default_value(); ObObj def_obj = column_schema->get_cur_default_value();
if (IS_DEFAULT_NOW_OBJ(def_obj)) { ObObjType column_type = ObMaxType;
const ObColumnSchemaV2 *tmp_column_schema = NULL;
if (OB_ISNULL(table_schema_) ||
OB_ISNULL(tmp_column_schema = table_schema_->get_column_schema(col_id))) {
ret = OB_ERR_UNEXPECTED;
SERVER_LOG(WARN, "table or column schema is null", KR(ret), KP(table_schema_), KP(tmp_column_schema));
} else if (FALSE_IT(column_type = tmp_column_schema->get_meta_type().get_type())) {
} else if (IS_DEFAULT_NOW_OBJ(def_obj)) {
ObObj def_now_obj; ObObj def_now_obj;
def_now_obj.set_varchar(ObString::make_string(N_UPPERCASE_CUR_TIMESTAMP)); def_now_obj.set_string(column_type, ObString::make_string(N_UPPERCASE_CUR_TIMESTAMP));
cells[cell_idx] = def_now_obj; cells[cell_idx] = def_now_obj;
} else if (def_obj.is_bit() || ob_is_enum_or_set_type(def_obj.get_type())) { } else if (def_obj.is_bit() || ob_is_enum_or_set_type(def_obj.get_type())) {
char *buf = NULL; char *buf = NULL;
@ -553,24 +560,24 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const ObString &database_name,
if (OB_FAIL(def_obj.print_varchar_literal(buf, buf_len, pos, TZ_INFO(session_)))) { if (OB_FAIL(def_obj.print_varchar_literal(buf, buf_len, pos, TZ_INFO(session_)))) {
SERVER_LOG(WARN, "fail to print varchar literal", K(ret), K(def_obj), K(buf_len), K(pos), K(buf)); SERVER_LOG(WARN, "fail to print varchar literal", K(ret), K(def_obj), K(buf_len), K(pos), K(buf));
} else { } else {
cells[cell_idx].set_varchar(ObString(static_cast<int32_t>(pos), buf)); cells[cell_idx].set_string(column_type, ObString(static_cast<int32_t>(pos), buf));
} }
} else { } else {
if (OB_FAIL(def_obj.print_plain_str_literal(column_schema->get_extended_type_info(), buf, buf_len, pos))) { if (OB_FAIL(def_obj.print_plain_str_literal(column_schema->get_extended_type_info(), buf, buf_len, pos))) {
SERVER_LOG(WARN, "fail to print plain str literal", KPC(column_schema), K(buf), K(buf_len), K(pos), K(ret)); SERVER_LOG(WARN, "fail to print plain str literal", KPC(column_schema), K(buf), K(buf_len), K(pos), K(ret));
} else { } else {
cells[cell_idx].set_varchar(ObString(static_cast<int32_t>(pos), buf)); cells[cell_idx].set_string(column_type, ObString(static_cast<int32_t>(pos), buf));
} }
} }
} else { } else {
if (OB_FAIL(ObObjCaster::to_type(ObVarcharType, cast_ctx, if (OB_FAIL(ObObjCaster::to_type(column_type, cast_ctx,
def_obj, def_obj,
casted_cell, res_cell))) { casted_cell, res_cell))) {
SERVER_LOG(WARN, "failed to cast to ObVarcharType object", SERVER_LOG(WARN, "failed to cast to object",
K(ret), K(def_obj)); K(ret), K(def_obj));
} else if (OB_ISNULL(res_cell)) { } else if (OB_ISNULL(res_cell)) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
SERVER_LOG(WARN, "succ to cast to ObVarcharType, but res_cell is NULL", SERVER_LOG(WARN, "succ to cast to object, but res_cell is NULL",
K(ret), K(def_obj)); K(ret), K(def_obj));
} else { } else {
cells[cell_idx] = *res_cell; cells[cell_idx] = *res_cell;
@ -591,7 +598,14 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const ObString &database_name,
break; break;
} }
case DATA_TYPE: { case DATA_TYPE: {
if (OB_FAIL(ob_sql_type_str(data_type_str_, ObObjType column_type = ObMaxType;
const ObColumnSchemaV2 *tmp_column_schema = NULL;
if (OB_ISNULL(table_schema_) ||
OB_ISNULL(tmp_column_schema = table_schema_->get_column_schema(col_id))) {
ret = OB_ERR_UNEXPECTED;
SERVER_LOG(WARN, "table or column schema is null", KR(ret), KP(table_schema_), KP(tmp_column_schema));
} else if (FALSE_IT(column_type = tmp_column_schema->get_meta_type().get_type())) {
} else if (OB_FAIL(ob_sql_type_str(data_type_str_,
column_type_str_len_, column_type_str_len_,
column_schema->get_data_type(), column_schema->get_data_type(),
column_schema->get_collation_type(), column_schema->get_collation_type(),
@ -600,7 +614,7 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const ObString &database_name,
} else { } else {
ObString type_val(column_type_str_len_, ObString type_val(column_type_str_len_,
static_cast<int32_t>(strlen(data_type_str_)),data_type_str_); static_cast<int32_t>(strlen(data_type_str_)),data_type_str_);
cells[cell_idx].set_varchar(type_val); cells[cell_idx].set_string(column_type, type_val);
cells[cell_idx].set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); cells[cell_idx].set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
} }
break; break;
@ -702,7 +716,14 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const ObString &database_name,
const ObLengthSemantics default_length_semantics = session_->get_local_nls_length_semantics(); const ObLengthSemantics default_length_semantics = session_->get_local_nls_length_semantics();
const uint64_t sub_type = column_schema->is_xmltype() ? const uint64_t sub_type = column_schema->is_xmltype() ?
column_schema->get_sub_data_type() : static_cast<uint64_t>(column_schema->get_geo_type()); column_schema->get_sub_data_type() : static_cast<uint64_t>(column_schema->get_geo_type());
if (OB_FAIL(get_type_str(column_schema->get_meta_type(), ObObjType column_type = ObMaxType;
const ObColumnSchemaV2 *tmp_column_schema = NULL;
if (OB_ISNULL(table_schema_) ||
OB_ISNULL(tmp_column_schema = table_schema_->get_column_schema(col_id))) {
ret = OB_ERR_UNEXPECTED;
SERVER_LOG(WARN, "table or column schema is null", KR(ret), KP(table_schema_), KP(tmp_column_schema));
} else if (FALSE_IT(column_type = tmp_column_schema->get_meta_type().get_type())) {
} else if (OB_FAIL(get_type_str(column_schema->get_meta_type(),
column_schema->get_accuracy(), column_schema->get_accuracy(),
column_schema->get_extended_type_info(), column_schema->get_extended_type_info(),
default_length_semantics, default_length_semantics,
@ -717,7 +738,7 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const ObString &database_name,
} }
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
ObString type_val(column_type_str_len_, static_cast<int32_t>(strlen(column_type_str_)),column_type_str_); ObString type_val(column_type_str_len_, static_cast<int32_t>(strlen(column_type_str_)),column_type_str_);
cells[cell_idx].set_varchar(type_val); cells[cell_idx].set_string(column_type, type_val);
cells[cell_idx].set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); cells[cell_idx].set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
} }
break; break;
@ -809,16 +830,32 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const ObString &database_name,
break; break;
} }
case COLUMN_COMMENT: { case COLUMN_COMMENT: {
cells[cell_idx].set_varchar(column_schema->get_comment_str()); ObObjType column_type = ObMaxType;
const ObColumnSchemaV2 *tmp_column_schema = NULL;
if (OB_ISNULL(table_schema_) ||
OB_ISNULL(tmp_column_schema = table_schema_->get_column_schema(col_id))) {
ret = OB_ERR_UNEXPECTED;
SERVER_LOG(WARN, "table or column schema is null", KR(ret), KP(table_schema_), KP(tmp_column_schema));
} else if (FALSE_IT(column_type = tmp_column_schema->get_meta_type().get_type())) {
} else {
cells[cell_idx].set_string(column_type, column_schema->get_comment_str());
cells[cell_idx].set_collation_type(ObCharset::get_default_collation( cells[cell_idx].set_collation_type(ObCharset::get_default_collation(
ObCharset::get_default_charset())); ObCharset::get_default_charset()));
}
break; break;
} }
case GENERATION_EXPRESSION: { case GENERATION_EXPRESSION: {
if (column_schema->is_generated_column()) { ObObjType column_type = ObMaxType;
cells[cell_idx].set_varchar(column_schema->get_orig_default_value().get_string()); const ObColumnSchemaV2 *tmp_column_schema = NULL;
if (OB_ISNULL(table_schema_) ||
OB_ISNULL(tmp_column_schema = table_schema_->get_column_schema(col_id))) {
ret = OB_ERR_UNEXPECTED;
SERVER_LOG(WARN, "table or column schema is null", KR(ret), KP(table_schema_), KP(tmp_column_schema));
} else if (FALSE_IT(column_type = tmp_column_schema->get_meta_type().get_type())) {
} else if (column_schema->is_generated_column()) {
cells[cell_idx].set_string(column_type, column_schema->get_orig_default_value().get_string());
} else { } else {
cells[cell_idx].set_varchar(""); cells[cell_idx].set_string(column_type, ObString(""));
} }
cells[cell_idx].set_collation_type(ObCharset::get_default_collation( cells[cell_idx].set_collation_type(ObCharset::get_default_collation(
ObCharset::get_default_charset())); ObCharset::get_default_charset()));
@ -942,11 +979,18 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const common::ObString &database_na
casted_cell.reset(); casted_cell.reset();
const ObObj *res_cell = NULL; const ObObj *res_cell = NULL;
ColumnItem column_item; ColumnItem column_item;
if (OB_FAIL(ObResolverUtils::resolve_default_value_and_expr_from_select_item(select_item, column_item, select_stmt))) { ObObjType column_type = ObMaxType;
const ObColumnSchemaV2 *tmp_column_schema = NULL;
if (OB_ISNULL(table_schema_) ||
OB_ISNULL(tmp_column_schema = table_schema_->get_column_schema(col_id))) {
ret = OB_ERR_UNEXPECTED;
SERVER_LOG(WARN, "table or column schema is null", KR(ret), KP(table_schema_), KP(tmp_column_schema));
} else if (FALSE_IT(column_type = tmp_column_schema->get_meta_type().get_type())) {
} else if (OB_FAIL(ObResolverUtils::resolve_default_value_and_expr_from_select_item(select_item, column_item, select_stmt))) {
SERVER_LOG(WARN, "failed to resolve default value", K(ret)); SERVER_LOG(WARN, "failed to resolve default value", K(ret));
} else if (IS_DEFAULT_NOW_OBJ(column_item.default_value_)) { } else if (IS_DEFAULT_NOW_OBJ(column_item.default_value_)) {
ObObj def_now_obj; ObObj def_now_obj;
def_now_obj.set_varchar(ObString::make_string(N_UPPERCASE_CUR_TIMESTAMP)); def_now_obj.set_string(column_type, ObString::make_string(N_UPPERCASE_CUR_TIMESTAMP));
cells[cell_idx] = def_now_obj; cells[cell_idx] = def_now_obj;
} else if (column_item.default_value_.is_bit() || ob_is_enum_or_set_type(column_item.default_value_.get_type())) { } else if (column_item.default_value_.is_bit() || ob_is_enum_or_set_type(column_item.default_value_.get_type())) {
char *buf = NULL; char *buf = NULL;
@ -959,7 +1003,7 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const common::ObString &database_na
if (OB_FAIL(column_item.default_value_.print_varchar_literal(buf, buf_len, pos, TZ_INFO(session_)))) { if (OB_FAIL(column_item.default_value_.print_varchar_literal(buf, buf_len, pos, TZ_INFO(session_)))) {
SERVER_LOG(WARN, "fail to print varchar literal", K(ret), K(column_item.default_value_), K(buf_len), K(pos), K(buf)); SERVER_LOG(WARN, "fail to print varchar literal", K(ret), K(column_item.default_value_), K(buf_len), K(pos), K(buf));
} else { } else {
cells[cell_idx].set_varchar(ObString(static_cast<int32_t>(pos), buf)); cells[cell_idx].set_string(column_type, ObString(static_cast<int32_t>(pos), buf));
} }
} else { } else {
ObArray<common::ObString> extended_type_info; ObArray<common::ObString> extended_type_info;
@ -969,18 +1013,18 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const common::ObString &database_na
} else if (OB_FAIL(column_item.default_value_.print_plain_str_literal(extended_type_info, buf, buf_len, pos))) { } else if (OB_FAIL(column_item.default_value_.print_plain_str_literal(extended_type_info, buf, buf_len, pos))) {
SERVER_LOG(WARN, "fail to print plain str literal", K(buf), K(buf_len), K(pos), K(ret)); SERVER_LOG(WARN, "fail to print plain str literal", K(buf), K(buf_len), K(pos), K(ret));
} else { } else {
cells[cell_idx].set_varchar(ObString(static_cast<int32_t>(pos), buf)); cells[cell_idx].set_string(column_type, ObString(static_cast<int32_t>(pos), buf));
} }
} }
} else { } else {
if (OB_FAIL(ObObjCaster::to_type(ObVarcharType, cast_ctx, if (OB_FAIL(ObObjCaster::to_type(column_type, cast_ctx,
column_item.default_value_, column_item.default_value_,
casted_cell, res_cell))) { casted_cell, res_cell))) {
SERVER_LOG(WARN, "failed to cast to ObVarcharType object", SERVER_LOG(WARN, "failed to cast to object",
K(ret), K(column_item.default_value_)); K(ret), K(column_item.default_value_));
} else if (OB_ISNULL(res_cell)) { } else if (OB_ISNULL(res_cell)) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
SERVER_LOG(WARN, "succ to cast to ObVarcharType, but res_cell is NULL", SERVER_LOG(WARN, "succ to cast to object, but res_cell is NULL",
K(ret), K(column_item.default_value_)); K(ret), K(column_item.default_value_));
} else { } else {
cells[cell_idx] = *res_cell; cells[cell_idx] = *res_cell;
@ -1006,7 +1050,14 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const common::ObString &database_na
ObString type_str(strlen(column_type_str_), column_type_str_); ObString type_str(strlen(column_type_str_), column_type_str_);
geo_sub_type = ObGeoTypeUtil::get_geo_type_by_name(type_str); geo_sub_type = ObGeoTypeUtil::get_geo_type_by_name(type_str);
} }
if (OB_FAIL(ob_sql_type_str(data_type_str_, ObObjType column_type = ObMaxType;
const ObColumnSchemaV2 *tmp_column_schema = NULL;
if (OB_ISNULL(table_schema_) ||
OB_ISNULL(tmp_column_schema = table_schema_->get_column_schema(col_id))) {
ret = OB_ERR_UNEXPECTED;
SERVER_LOG(WARN, "table or column schema is null", KR(ret), KP(table_schema_), KP(tmp_column_schema));
} else if (FALSE_IT(column_type = tmp_column_schema->get_meta_type().get_type())) {
} else if (OB_FAIL(ob_sql_type_str(data_type_str_,
column_type_str_len_, column_type_str_len_,
column_attributes.result_type_.get_type(), column_attributes.result_type_.get_type(),
ObCharset::get_default_collation(ObCharset::get_default_charset()), ObCharset::get_default_collation(ObCharset::get_default_charset()),
@ -1015,7 +1066,7 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const common::ObString &database_na
} else { } else {
ObString type_val(column_type_str_len_, ObString type_val(column_type_str_len_,
static_cast<int32_t>(strlen(data_type_str_)),data_type_str_); static_cast<int32_t>(strlen(data_type_str_)),data_type_str_);
cells[cell_idx].set_varchar(type_val); cells[cell_idx].set_string(column_type, type_val);
cells[cell_idx].set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); cells[cell_idx].set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
} }
break; break;
@ -1099,9 +1150,18 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const common::ObString &database_na
break; break;
} }
case COLUMN_TYPE: { case COLUMN_TYPE: {
ObObjType column_type = ObMaxType;
const ObColumnSchemaV2 *tmp_column_schema = NULL;
if (OB_ISNULL(table_schema_) ||
OB_ISNULL(tmp_column_schema = table_schema_->get_column_schema(col_id))) {
ret = OB_ERR_UNEXPECTED;
SERVER_LOG(WARN, "table or column schema is null", KR(ret), KP(table_schema_), KP(tmp_column_schema));
} else if (FALSE_IT(column_type = tmp_column_schema->get_meta_type().get_type())) {
} else {
ObString type_val(column_type_str_len_, static_cast<int32_t>(strlen(column_type_str_)),column_type_str_); ObString type_val(column_type_str_len_, static_cast<int32_t>(strlen(column_type_str_)),column_type_str_);
cells[cell_idx].set_varchar(type_val); cells[cell_idx].set_string(column_type, type_val);
cells[cell_idx].set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); cells[cell_idx].set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
}
break; break;
} }
case COLUMN_KEY: { case COLUMN_KEY: {

View File

@ -114,7 +114,7 @@ int ObMySQLDBTable::inner_get_next_row(common::ObNewRow *&row)
EXIST_PRIV_CASE(CREATE); EXIST_PRIV_CASE(CREATE);
EXIST_PRIV_CASE(DROP); EXIST_PRIV_CASE(DROP);
EXIST_PRIV_CASE(GRANT); EXIST_PRIV_CASE(GRANT);
NO_EXIST_PRIV_CASE(REFERENCE); NO_EXIST_PRIV_CASE(REFERENCES);
EXIST_PRIV_CASE(INDEX); EXIST_PRIV_CASE(INDEX);
EXIST_PRIV_CASE(ALTER); EXIST_PRIV_CASE(ALTER);
NO_EXIST_PRIV_CASE(CREATE_TMP_TABLE); NO_EXIST_PRIV_CASE(CREATE_TMP_TABLE);

View File

@ -43,7 +43,7 @@ private:
CREATE_PRIV, CREATE_PRIV,
DROP_PRIV, DROP_PRIV,
GRANT_PRIV, GRANT_PRIV,
REFERENCE_PRIV, REFERENCES_PRIV,
INDEX_PRIV, INDEX_PRIV,
ALTER_PRIV, ALTER_PRIV,
CREATE_TMP_TABLE_PRIV, CREATE_TMP_TABLE_PRIV,

View File

@ -128,7 +128,7 @@ int ObMySQLUserTable::inner_get_next_row(common::ObNewRow *&row)
EXIST_PRIV_CASE(PROCESS); EXIST_PRIV_CASE(PROCESS);
EXIST_PRIV_CASE(FILE); EXIST_PRIV_CASE(FILE);
EXIST_PRIV_CASE(GRANT); EXIST_PRIV_CASE(GRANT);
NO_EXIST_PRIV_CASE(REFERENCE); NO_EXIST_PRIV_CASE(REFERENCES);
EXIST_PRIV_CASE(INDEX); EXIST_PRIV_CASE(INDEX);
EXIST_PRIV_CASE(ALTER); EXIST_PRIV_CASE(ALTER);
EXIST_PRIV_CASE(SHOW_DB); EXIST_PRIV_CASE(SHOW_DB);

View File

@ -41,7 +41,7 @@ private:
PROCESS_PRIV, PROCESS_PRIV,
FILE_PRIV, FILE_PRIV,
GRANT_PRIV, GRANT_PRIV,
REFERENCE_PRIV, REFERENCES_PRIV,
INDEX_PRIV, INDEX_PRIV,
ALTER_PRIV, ALTER_PRIV,
SHOW_DB_PRIV, SHOW_DB_PRIV,

View File

@ -516,7 +516,7 @@ int ObInnerTableSchema::user_schema(ObTableSchema &table_schema)
} }
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
ADD_COLUMN_SCHEMA("reference_priv", //column_name ADD_COLUMN_SCHEMA("references_priv", //column_name
++column_id, //column_id ++column_id, //column_id
0, //rowkey_id 0, //rowkey_id
0, //index_id 0, //index_id
@ -1222,7 +1222,7 @@ int ObInnerTableSchema::db_schema(ObTableSchema &table_schema)
} }
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
ADD_COLUMN_SCHEMA("reference_priv", //column_name ADD_COLUMN_SCHEMA("references_priv", //column_name
++column_id, //column_id ++column_id, //column_id
0, //rowkey_id 0, //rowkey_id
0, //index_id 0, //index_id
@ -2112,7 +2112,7 @@ int ObInnerTableSchema::proc_schema(ObTableSchema &table_schema)
} }
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
ADD_COLUMN_SCHEMA("collation_database", //column_name ADD_COLUMN_SCHEMA("db_collation", //column_name
++column_id, //column_id ++column_id, //column_id
0, //rowkey_id 0, //rowkey_id
0, //index_id 0, //index_id

View File

@ -9560,9 +9560,9 @@ int ObInnerTableSchema::all_virtual_information_columns_schema(ObTableSchema &ta
0, //rowkey_id 0, //rowkey_id
0, //index_id 0, //index_id
0, //part_key_pos 0, //part_key_pos
ObVarcharType, //column_type ObLongTextType, //column_type
CS_TYPE_INVALID, //column_collation_type CS_TYPE_INVALID, //column_collation_type
OB_MAX_DEFAULT_VALUE_LENGTH, //column_length 0, //column_length
-1, //column_precision -1, //column_precision
-1, //column_scale -1, //column_scale
true, //is_nullable true, //is_nullable
@ -9590,15 +9590,15 @@ int ObInnerTableSchema::all_virtual_information_columns_schema(ObTableSchema &ta
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
ObObj data_type_default; ObObj data_type_default;
data_type_default.set_varchar(ObString::make_string("")); data_type_default.set_lob_value(ObLongTextType, "", static_cast<int32_t>(strlen("")));
ADD_COLUMN_SCHEMA_T("DATA_TYPE", //column_name ADD_COLUMN_SCHEMA_T("DATA_TYPE", //column_name
++column_id, //column_id ++column_id, //column_id
0, //rowkey_id 0, //rowkey_id
0, //index_id 0, //index_id
0, //part_key_pos 0, //part_key_pos
ObVarcharType, //column_type ObLongTextType, //column_type
CS_TYPE_INVALID, //column_collation_type CS_TYPE_INVALID, //column_collation_type
OB_MAX_VARCHAR_LENGTH, //column_length 0, //column_length
-1, //column_precision -1, //column_precision
-1, //column_scale -1, //column_scale
false, //is_nullable false, //is_nullable
@ -9718,9 +9718,9 @@ int ObInnerTableSchema::all_virtual_information_columns_schema(ObTableSchema &ta
0, //rowkey_id 0, //rowkey_id
0, //index_id 0, //index_id
0, //part_key_pos 0, //part_key_pos
ObVarcharType, //column_type ObLongTextType, //column_type
CS_TYPE_INVALID, //column_collation_type CS_TYPE_INVALID, //column_collation_type
OB_MAX_VARCHAR_LENGTH, //column_length 0, //column_length
-1, //column_precision -1, //column_precision
-1, //column_scale -1, //column_scale
false, //is_nullable false, //is_nullable
@ -9786,15 +9786,15 @@ int ObInnerTableSchema::all_virtual_information_columns_schema(ObTableSchema &ta
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
ObObj column_comment_default; ObObj column_comment_default;
column_comment_default.set_varchar(ObString::make_string("")); column_comment_default.set_lob_value(ObLongTextType, "", static_cast<int32_t>(strlen("")));
ADD_COLUMN_SCHEMA_T("COLUMN_COMMENT", //column_name ADD_COLUMN_SCHEMA_T("COLUMN_COMMENT", //column_name
++column_id, //column_id ++column_id, //column_id
0, //rowkey_id 0, //rowkey_id
0, //index_id 0, //index_id
0, //part_key_pos 0, //part_key_pos
ObVarcharType, //column_type ObLongTextType, //column_type
CS_TYPE_INVALID, //column_collation_type CS_TYPE_INVALID, //column_collation_type
MAX_COLUMN_COMMENT_LENGTH, //column_length 0, //column_length
-1, //column_precision -1, //column_precision
-1, //column_scale -1, //column_scale
false, //is_nullable false, //is_nullable
@ -9805,15 +9805,15 @@ int ObInnerTableSchema::all_virtual_information_columns_schema(ObTableSchema &ta
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
ObObj generation_expression_default; ObObj generation_expression_default;
generation_expression_default.set_varchar(ObString::make_string("")); generation_expression_default.set_lob_value(ObLongTextType, "", static_cast<int32_t>(strlen("")));
ADD_COLUMN_SCHEMA_T("GENERATION_EXPRESSION", //column_name ADD_COLUMN_SCHEMA_T("GENERATION_EXPRESSION", //column_name
++column_id, //column_id ++column_id, //column_id
0, //rowkey_id 0, //rowkey_id
0, //index_id 0, //index_id
0, //part_key_pos 0, //part_key_pos
ObVarcharType, //column_type ObLongTextType, //column_type
CS_TYPE_INVALID, //column_collation_type CS_TYPE_INVALID, //column_collation_type
OB_MAX_DEFAULT_VALUE_LENGTH, //column_length 0, //column_length
-1, //column_precision -1, //column_precision
-1, //column_scale -1, //column_scale
false, //is_nullable false, //is_nullable

File diff suppressed because one or more lines are too long

View File

@ -9089,7 +9089,7 @@ def_table_schema(
('process_priv', 'varchar:1'), ('process_priv', 'varchar:1'),
('file_priv', 'varchar:1'), ('file_priv', 'varchar:1'),
('grant_priv', 'varchar:1'), ('grant_priv', 'varchar:1'),
('reference_priv', 'varchar:1'), ('references_priv', 'varchar:1'),
('index_priv', 'varchar:1'), ('index_priv', 'varchar:1'),
('alter_priv', 'varchar:1'), ('alter_priv', 'varchar:1'),
('show_db_priv', 'varchar:1'), ('show_db_priv', 'varchar:1'),
@ -9146,7 +9146,7 @@ def_table_schema(
('create_priv', 'varchar:1'), ('create_priv', 'varchar:1'),
('drop_priv', 'varchar:1'), ('drop_priv', 'varchar:1'),
('grant_priv', 'varchar:1'), ('grant_priv', 'varchar:1'),
('reference_priv', 'varchar:1'), ('references_priv', 'varchar:1'),
('index_priv', 'varchar:1'), ('index_priv', 'varchar:1'),
('alter_priv', 'varchar:1'), ('alter_priv', 'varchar:1'),
('create_tmp_table_priv', 'varchar:1'), ('create_tmp_table_priv', 'varchar:1'),
@ -9235,7 +9235,7 @@ def_table_schema(
('comment', 'varchar:OB_MAX_VARCHAR_LENGTH', 'false', ''), ('comment', 'varchar:OB_MAX_VARCHAR_LENGTH', 'false', ''),
('character_set_client', 'varchar:MAX_CHARSET_LENGTH'), ('character_set_client', 'varchar:MAX_CHARSET_LENGTH'),
('collation_connection', 'varchar:MAX_CHARSET_LENGTH'), ('collation_connection', 'varchar:MAX_CHARSET_LENGTH'),
('collation_database', 'varchar:MAX_CHARSET_LENGTH'), ('db_collation', 'varchar:MAX_CHARSET_LENGTH'),
('body_utf8', 'varchar:OB_MAX_VARCHAR_LENGTH'), ('body_utf8', 'varchar:OB_MAX_VARCHAR_LENGTH'),
], ],
) )
@ -9987,9 +9987,9 @@ def_table_schema(
('TABLE_CATALOG', 'varchar:MAX_TABLE_CATALOG_LENGTH', 'false', ''), ('TABLE_CATALOG', 'varchar:MAX_TABLE_CATALOG_LENGTH', 'false', ''),
('COLUMN_NAME', 'varchar:OB_MAX_COLUMN_NAME_LENGTH', 'false', ''), ('COLUMN_NAME', 'varchar:OB_MAX_COLUMN_NAME_LENGTH', 'false', ''),
('ORDINAL_POSITION', 'uint', 'false', '0'), ('ORDINAL_POSITION', 'uint', 'false', '0'),
('COLUMN_DEFAULT', 'varchar:OB_MAX_DEFAULT_VALUE_LENGTH', 'true'), ('COLUMN_DEFAULT', 'longtext', 'true'),
('IS_NULLABLE', 'varchar:COLUMN_NULLABLE_LENGTH', 'false', ''), ('IS_NULLABLE', 'varchar:COLUMN_NULLABLE_LENGTH', 'false', ''),
('DATA_TYPE', 'varchar:OB_MAX_VARCHAR_LENGTH', 'false', ''), ('DATA_TYPE', 'longtext', 'false', ''),
('CHARACTER_MAXIMUM_LENGTH', 'uint', 'true'), ('CHARACTER_MAXIMUM_LENGTH', 'uint', 'true'),
('CHARACTER_OCTET_LENGTH', 'uint', 'true'), ('CHARACTER_OCTET_LENGTH', 'uint', 'true'),
('NUMERIC_PRECISION', 'uint', 'true'), ('NUMERIC_PRECISION', 'uint', 'true'),
@ -9997,12 +9997,12 @@ def_table_schema(
('DATETIME_PRECISION', 'uint', 'true'), ('DATETIME_PRECISION', 'uint', 'true'),
('CHARACTER_SET_NAME', 'varchar:MAX_CHARSET_LENGTH', 'true'), ('CHARACTER_SET_NAME', 'varchar:MAX_CHARSET_LENGTH', 'true'),
('COLLATION_NAME', 'varchar:MAX_COLLATION_LENGTH', 'true'), ('COLLATION_NAME', 'varchar:MAX_COLLATION_LENGTH', 'true'),
('COLUMN_TYPE', 'varchar:OB_MAX_VARCHAR_LENGTH'), ('COLUMN_TYPE', 'longtext'),
('COLUMN_KEY', 'varchar:MAX_COLUMN_KEY_LENGTH', 'false', ''), ('COLUMN_KEY', 'varchar:MAX_COLUMN_KEY_LENGTH', 'false', ''),
('EXTRA', 'varchar:COLUMN_EXTRA_LENGTH', 'false', ''), ('EXTRA', 'varchar:COLUMN_EXTRA_LENGTH', 'false', ''),
('PRIVILEGES', 'varchar:MAX_COLUMN_PRIVILEGE_LENGTH', 'false', ''), ('PRIVILEGES', 'varchar:MAX_COLUMN_PRIVILEGE_LENGTH', 'false', ''),
('COLUMN_COMMENT', 'varchar:MAX_COLUMN_COMMENT_LENGTH', 'false', ''), ('COLUMN_COMMENT', 'longtext', 'false', ''),
('GENERATION_EXPRESSION', 'varchar:OB_MAX_DEFAULT_VALUE_LENGTH', 'false', '') ('GENERATION_EXPRESSION', 'longtext', 'false', '')
], ],
) )
@ -14187,7 +14187,7 @@ def_table_schema(
CAST(mp.DEFINER AS CHAR(93)) as DEFINER, CAST(mp.DEFINER AS CHAR(93)) as DEFINER,
CAST(mp.CHARACTER_SET_CLIENT AS CHAR(32)) as CHARACTER_SET_CLIENT, CAST(mp.CHARACTER_SET_CLIENT AS CHAR(32)) as CHARACTER_SET_CLIENT,
CAST(mp.COLLATION_CONNECTION AS CHAR(32)) as COLLATION_CONNECTION, CAST(mp.COLLATION_CONNECTION AS CHAR(32)) as COLLATION_CONNECTION,
CAST(mp.collation_database AS CHAR(32)) as DATABASE_COLLATION CAST(mp.db_collation AS CHAR(32)) as DATABASE_COLLATION
from from
mysql.proc as mp mysql.proc as mp
join oceanbase.__all_database a join oceanbase.__all_database a

View File

@ -24,9 +24,9 @@ TABLE_SCHEMA varchar(128) NO NULL
TABLE_NAME varchar(256) NO NULL TABLE_NAME varchar(256) NO NULL
COLUMN_NAME varchar(128) NO COLUMN_NAME varchar(128) NO
ORDINAL_POSITION bigint(20) unsigned NO ORDINAL_POSITION bigint(20) unsigned NO
COLUMN_DEFAULT varchar(262144) YES NULL COLUMN_DEFAULT longtext YES NULL
IS_NULLABLE varchar(4) NO IS_NULLABLE varchar(4) NO
DATA_TYPE varchar(1048576) NO DATA_TYPE longtext NO
CHARACTER_MAXIMUM_LENGTH bigint(20) unsigned YES NULL CHARACTER_MAXIMUM_LENGTH bigint(20) unsigned YES NULL
CHARACTER_OCTET_LENGTH bigint(20) unsigned YES NULL CHARACTER_OCTET_LENGTH bigint(20) unsigned YES NULL
NUMERIC_PRECISION bigint(20) unsigned YES NULL NUMERIC_PRECISION bigint(20) unsigned YES NULL
@ -34,12 +34,12 @@ NUMERIC_SCALE bigint(20) unsigned YES NULL
DATETIME_PRECISION bigint(20) unsigned YES NULL DATETIME_PRECISION bigint(20) unsigned YES NULL
CHARACTER_SET_NAME varchar(128) YES NULL CHARACTER_SET_NAME varchar(128) YES NULL
COLLATION_NAME varchar(128) YES NULL COLLATION_NAME varchar(128) YES NULL
COLUMN_TYPE varchar(1048576) NO NULL COLUMN_TYPE longtext NO NULL
COLUMN_KEY varchar(3) NO COLUMN_KEY varchar(3) NO
EXTRA varchar(4096) NO EXTRA varchar(4096) NO
PRIVILEGES varchar(200) NO PRIVILEGES varchar(200) NO
COLUMN_COMMENT varchar(2048) NO COLUMN_COMMENT longtext NO
GENERATION_EXPRESSION varchar(262144) NO GENERATION_EXPRESSION longtext NO
desc global_status; desc global_status;
Field Type Null Key Default Extra Field Type Null Key Default Extra
VARIABLE_NAME varchar(128) NO VARIABLE_NAME varchar(128) NO