diff --git a/be/src/exec/schema_scanner/schema_columns_scanner.cpp b/be/src/exec/schema_scanner/schema_columns_scanner.cpp index b3fbb80caf7b39..f18fc526b0523b 100644 --- a/be/src/exec/schema_scanner/schema_columns_scanner.cpp +++ b/be/src/exec/schema_scanner/schema_columns_scanner.cpp @@ -93,6 +93,42 @@ Status SchemaColumnsScanner::start(RuntimeState *state) { return Status::OK(); } +//For compatibility with mysql the result of DATA_TYPE in information_schema.columns +std::string SchemaColumnsScanner::to_mysql_data_type_string(TColumnDesc &desc) { + switch (desc.columnType) { + case TPrimitiveType::BOOLEAN: + return "tinyint"; + case TPrimitiveType::TINYINT: + return "tinyint"; + case TPrimitiveType::SMALLINT: + return "smallint"; + case TPrimitiveType::INT: + return "int"; + case TPrimitiveType::BIGINT: + return "bigint"; + case TPrimitiveType::LARGEINT: + return "bigint unsinged"; + case TPrimitiveType::FLOAT: + return "float"; + case TPrimitiveType::DOUBLE: + return "double"; + case TPrimitiveType::VARCHAR: + return "varchar"; + case TPrimitiveType::CHAR: + return "char"; + case TPrimitiveType::DATE: + return "date"; + case TPrimitiveType::DATETIME: + return "datetime"; + case TPrimitiveType::DECIMALV2: + case TPrimitiveType::DECIMAL: { + return "decimal"; + } + default: + return "unknown"; + } +} + std::string SchemaColumnsScanner::type_to_string(TColumnDesc &desc) { switch (desc.columnType) { case TPrimitiveType::BOOLEAN: @@ -208,7 +244,7 @@ Status SchemaColumnsScanner::fill_one_row(Tuple *tuple, MemPool *pool) { { void *slot = tuple->get_slot(_tuple_desc->slots()[7]->tuple_offset()); StringValue* str_slot = reinterpret_cast(slot); - std::string buffer = type_to_string(_desc_result.columns[_column_index].columnDesc); + std::string buffer = to_mysql_data_type_string(_desc_result.columns[_column_index].columnDesc); str_slot->len = buffer.length(); str_slot->ptr = (char *)pool->allocate(str_slot->len); memcpy(str_slot->ptr, buffer.c_str(), str_slot->len); diff --git a/be/src/exec/schema_scanner/schema_columns_scanner.h b/be/src/exec/schema_scanner/schema_columns_scanner.h index c7c539670e0974..3ff0c14cb6a843 100644 --- a/be/src/exec/schema_scanner/schema_columns_scanner.h +++ b/be/src/exec/schema_scanner/schema_columns_scanner.h @@ -36,6 +36,7 @@ class SchemaColumnsScanner : public SchemaScanner { Status fill_one_row(Tuple *tuple, MemPool *pool); Status get_new_desc(); Status get_create_table(std::string *result); + std::string to_mysql_data_type_string(TColumnDesc &desc); std::string type_to_string(TColumnDesc &desc); int _db_index;