fix information_schema is not compatible with MySQL/MariaDB issue1365
This commit is contained in:
@ -672,18 +672,30 @@ int ObInfoSchemaColumnsTable::fill_row_cells(const ObString &database_name,
|
||||
break;
|
||||
}
|
||||
case CHARACTER_SET_NAME: {
|
||||
cells[cell_idx].set_varchar(common::ObCharset::charset_name(
|
||||
column_schema->get_charset_type()));
|
||||
cells[cell_idx].set_collation_type(ObCharset::get_default_collation(
|
||||
if(ob_is_varchar_char_type(column_schema->get_data_type(),column_schema->get_collation_type())
|
||||
|| ob_is_enum_or_set_type(column_schema->get_data_type())
|
||||
|| ob_is_text(column_schema->get_data_type(),column_schema->get_collation_type())){
|
||||
cells[cell_idx].set_varchar(common::ObCharset::charset_name(
|
||||
column_schema->get_charset_type()));
|
||||
cells[cell_idx].set_collation_type(ObCharset::get_default_collation(
|
||||
ObCharset::get_default_charset()));
|
||||
break;
|
||||
} else {
|
||||
cells[cell_idx].reset();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case COLLATION_NAME: {
|
||||
cells[cell_idx].set_varchar(common::ObCharset::collation_name(
|
||||
column_schema->get_collation_type()));
|
||||
cells[cell_idx].set_collation_type(ObCharset::get_default_collation(
|
||||
ObCharset::get_default_charset()));
|
||||
break;
|
||||
if(ob_is_varchar_char_type(column_schema->get_data_type(),column_schema->get_collation_type())
|
||||
|| ob_is_enum_or_set_type(column_schema->get_data_type())
|
||||
|| ob_is_text(column_schema->get_data_type(),column_schema->get_collation_type())){
|
||||
cells[cell_idx].set_varchar(common::ObCharset::collation_name(
|
||||
column_schema->get_collation_type()));
|
||||
cells[cell_idx].set_collation_type(ObCharset::get_default_collation(
|
||||
ObCharset::get_default_charset()));
|
||||
} else {
|
||||
cells[cell_idx].reset();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case COLUMN_TYPE: {
|
||||
int64_t pos = 0;
|
||||
|
@ -0,0 +1,54 @@
|
||||
use test;
|
||||
DROP TABLE numeric_table;
|
||||
create table numeric_table ( col1 INTEGER comment 'INTEGER', col2 INT comment 'INT', col3 SMALLINT, col4 TINYINT, col5 MEDIUMINT, col6 BIGINT, col7 DECIMAL comment 'DECIMAL', col8 NUMERIC comment 'NUMERIC', col9 FLOAT, col10 DOUBLE, col11 BIT ) DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;
|
||||
SELECT `TABLE_NAME`, `COLUMN_NAME`, `COLUMN_TYPE`, `COLUMN_COMMENT`,`IS_NULLABLE`, `COLUMN_KEY`, `COLUMN_DEFAULT`, `EXTRA`, `CHARACTER_SET_NAME`,`COLLATION_NAME`, NULL AS `GENERATION_EXPRESSION` FROM`INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME`= 'numeric_table' ORDER BY `ORDINAL_POSITION`;
|
||||
TABLE_NAME COLUMN_NAME COLUMN_TYPE COLUMN_COMMENT IS_NULLABLE COLUMN_KEY COLUMN_DEFAULT EXTRA CHARACTER_SET_NAME COLLATION_NAME GENERATION_EXPRESSION
|
||||
numeric_table col1 int(11) INTEGER YES NULL NULL NULL NULL
|
||||
numeric_table col2 int(11) INT YES NULL NULL NULL NULL
|
||||
numeric_table col3 smallint(6) YES NULL NULL NULL NULL
|
||||
numeric_table col4 tinyint(4) YES NULL NULL NULL NULL
|
||||
numeric_table col5 mediumint(9) YES NULL NULL NULL NULL
|
||||
numeric_table col6 bigint(20) YES NULL NULL NULL NULL
|
||||
numeric_table col7 decimal(10,0) DECIMAL YES NULL NULL NULL NULL
|
||||
numeric_table col8 decimal(10,0) NUMERIC YES NULL NULL NULL NULL
|
||||
numeric_table col9 float YES NULL NULL NULL NULL
|
||||
numeric_table col10 double YES NULL NULL NULL NULL
|
||||
numeric_table col11 bit(1) YES NULL NULL NULL NULL
|
||||
DROP TABLE date_type_table;
|
||||
create table date_type_table ( col1 DATE COMMENT 'DATE', col2 TIME COMMENT 'TIME', col3 DATETIME COMMENT 'DATETIME', col4 TIMESTAMP COMMENT 'TIMESTAMP', col5 YEAR COMMENT 'YEAR' )DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;
|
||||
SELECT `TABLE_NAME`, `COLUMN_NAME`, `COLUMN_TYPE`, `COLUMN_COMMENT`, `IS_NULLABLE`, `COLUMN_KEY`, `COLUMN_DEFAULT`, `EXTRA`, `CHARACTER_SET_NAME`, `COLLATION_NAME`, NULL AS `GENERATION_EXPRESSION` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME` = 'date_type_table' ORDER BY `ORDINAL_POSITION`;
|
||||
TABLE_NAME COLUMN_NAME COLUMN_TYPE COLUMN_COMMENT IS_NULLABLE COLUMN_KEY COLUMN_DEFAULT EXTRA CHARACTER_SET_NAME COLLATION_NAME GENERATION_EXPRESSION
|
||||
date_type_table col1 date DATE YES NULL NULL NULL NULL
|
||||
date_type_table col2 time TIME YES NULL NULL NULL NULL
|
||||
date_type_table col3 datetime DATETIME YES NULL NULL NULL NULL
|
||||
date_type_table col4 timestamp TIMESTAMP YES NULL NULL NULL NULL
|
||||
date_type_table col5 year(4) YEAR YES NULL NULL NULL NULL
|
||||
DROP TABLE string_table;
|
||||
create table string_table( col1 CHAR(1) COMMENT 'CHAR', col2 VARCHAR(2) COMMENT 'VARCHAR', col3 BINARY(2) COMMENT 'BINARY', col4 VARBINARY(2) COMMENT 'VARBINARY', col5 BLOB COMMENT 'BLOB', col6 TEXT COMMENT 'TEXT', col7 ENUM('a', 'b', 'c', 'd') COMMENT 'ENUM', col8 SET('a', 'b', 'c', 'd') COMMENT 'SET' )DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;
|
||||
SELECT `TABLE_NAME`, `COLUMN_NAME`, `COLUMN_TYPE`, `COLUMN_COMMENT`, `IS_NULLABLE`, `COLUMN_KEY`, `COLUMN_DEFAULT`, `EXTRA`, `CHARACTER_SET_NAME`, `COLLATION_NAME`, NULL AS `GENERATION_EXPRESSION` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME` = 'string_table' ORDER BY `ORDINAL_POSITION`;
|
||||
TABLE_NAME COLUMN_NAME COLUMN_TYPE COLUMN_COMMENT IS_NULLABLE COLUMN_KEY COLUMN_DEFAULT EXTRA CHARACTER_SET_NAME COLLATION_NAME GENERATION_EXPRESSION
|
||||
string_table col1 char(1) CHAR YES NULL utf8mb4 utf8mb4_bin NULL
|
||||
string_table col2 varchar(2) VARCHAR YES NULL utf8mb4 utf8mb4_bin NULL
|
||||
string_table col3 binary(2) BINARY YES NULL NULL NULL NULL
|
||||
string_table col4 varbinary(2) VARBINARY YES NULL NULL NULL NULL
|
||||
string_table col5 blob BLOB YES NULL NULL NULL NULL
|
||||
string_table col6 text TEXT YES NULL utf8mb4 utf8mb4_bin NULL
|
||||
string_table col7 enum('a','b','c','d') ENUM YES NULL utf8mb4 utf8mb4_bin NULL
|
||||
string_table col8 set('a','b','c','d') SET YES NULL utf8mb4 utf8mb4_bin NULL
|
||||
DROP TABLE spatial_type_table;
|
||||
create table spatial_type_table( col1 GEOMETRY COMMENT 'GEOMETRY', col2 POINT COMMENT'POINT', col3 LINESTRING COMMENT 'LINESTRING', col4 POLYGON COMMENT 'POLYGON', col5 MULTIPOINT COMMENT 'MULTIPOINT', col6 MULTILINESTRING COMMENT 'COMMENT', col7 MULTIPOLYGON COMMENT 'MULTIPOLYGON', col8 GEOMETRYCOLLECTION COMMENT 'GEOMETRYCOLLECTION' ) DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;
|
||||
SELECT `TABLE_NAME`, `COLUMN_NAME`, `COLUMN_TYPE`, `COLUMN_COMMENT`, `IS_NULLABLE`, `COLUMN_KEY`, `COLUMN_DEFAULT`, `EXTRA`, `CHARACTER_SET_NAME`, `COLLATION_NAME`, NULL AS `GENERATION_EXPRESSION` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME` = 'spatial_type_table' ORDER BY `ORDINAL_POSITION`;
|
||||
TABLE_NAME COLUMN_NAME COLUMN_TYPE COLUMN_COMMENT IS_NULLABLE COLUMN_KEY COLUMN_DEFAULT EXTRA CHARACTER_SET_NAME COLLATION_NAME GENERATION_EXPRESSION
|
||||
spatial_type_table col1 geometry GEOMETRY YES NULL NULL NULL NULL
|
||||
spatial_type_table col2 point POINT YES NULL NULL NULL NULL
|
||||
spatial_type_table col3 linestring LINESTRING YES NULL NULL NULL NULL
|
||||
spatial_type_table col4 polygon POLYGON YES NULL NULL NULL NULL
|
||||
spatial_type_table col5 multipoint MULTIPOINT YES NULL NULL NULL NULL
|
||||
spatial_type_table col6 multilinestring COMMENT YES NULL NULL NULL NULL
|
||||
spatial_type_table col7 multipolygon MULTIPOLYGON YES NULL NULL NULL NULL
|
||||
spatial_type_table col8 geomcollection GEOMETRYCOLLECTION YES NULL NULL NULL NULL
|
||||
DROP TABLE json_type_table;
|
||||
CREATE TABLE json_type_table (jdoc JSON) DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;
|
||||
SELECT `TABLE_NAME`, `COLUMN_NAME`, `COLUMN_TYPE`, `COLUMN_COMMENT`, `IS_NULLABLE`, `COLUMN_KEY`, `COLUMN_DEFAULT`, `EXTRA`, `CHARACTER_SET_NAME`, `COLLATION_NAME`, NULL AS `GENERATION_EXPRESSION` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME` = 'json_type_table' ORDER BY `ORDINAL_POSITION`;
|
||||
TABLE_NAME COLUMN_NAME COLUMN_TYPE COLUMN_COMMENT IS_NULLABLE COLUMN_KEY COLUMN_DEFAULT EXTRA CHARACTER_SET_NAME COLLATION_NAME GENERATION_EXPRESSION
|
||||
json_type_table jdoc json YES NULL NULL NULL NULL
|
@ -0,0 +1,30 @@
|
||||
use test;
|
||||
--disable_warnings
|
||||
DROP TABLE numeric_table;
|
||||
--enable_warnings
|
||||
create table numeric_table ( col1 INTEGER comment 'INTEGER', col2 INT comment 'INT', col3 SMALLINT, col4 TINYINT, col5 MEDIUMINT, col6 BIGINT, col7 DECIMAL comment 'DECIMAL', col8 NUMERIC comment 'NUMERIC', col9 FLOAT, col10 DOUBLE, col11 BIT ) DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;
|
||||
SELECT `TABLE_NAME`, `COLUMN_NAME`, `COLUMN_TYPE`, `COLUMN_COMMENT`,`IS_NULLABLE`, `COLUMN_KEY`, `COLUMN_DEFAULT`, `EXTRA`, `CHARACTER_SET_NAME`,`COLLATION_NAME`, NULL AS `GENERATION_EXPRESSION` FROM`INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME`= 'numeric_table' ORDER BY `ORDINAL_POSITION`;
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE date_type_table;
|
||||
--enable_warnings
|
||||
create table date_type_table ( col1 DATE COMMENT 'DATE', col2 TIME COMMENT 'TIME', col3 DATETIME COMMENT 'DATETIME', col4 TIMESTAMP COMMENT 'TIMESTAMP', col5 YEAR COMMENT 'YEAR' )DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;
|
||||
SELECT `TABLE_NAME`, `COLUMN_NAME`, `COLUMN_TYPE`, `COLUMN_COMMENT`, `IS_NULLABLE`, `COLUMN_KEY`, `COLUMN_DEFAULT`, `EXTRA`, `CHARACTER_SET_NAME`, `COLLATION_NAME`, NULL AS `GENERATION_EXPRESSION` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME` = 'date_type_table' ORDER BY `ORDINAL_POSITION`;
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE string_table;
|
||||
--enable_warnings
|
||||
create table string_table( col1 CHAR(1) COMMENT 'CHAR', col2 VARCHAR(2) COMMENT 'VARCHAR', col3 BINARY(2) COMMENT 'BINARY', col4 VARBINARY(2) COMMENT 'VARBINARY', col5 BLOB COMMENT 'BLOB', col6 TEXT COMMENT 'TEXT', col7 ENUM('a', 'b', 'c', 'd') COMMENT 'ENUM', col8 SET('a', 'b', 'c', 'd') COMMENT 'SET' )DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;
|
||||
SELECT `TABLE_NAME`, `COLUMN_NAME`, `COLUMN_TYPE`, `COLUMN_COMMENT`, `IS_NULLABLE`, `COLUMN_KEY`, `COLUMN_DEFAULT`, `EXTRA`, `CHARACTER_SET_NAME`, `COLLATION_NAME`, NULL AS `GENERATION_EXPRESSION` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME` = 'string_table' ORDER BY `ORDINAL_POSITION`;
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE spatial_type_table;
|
||||
--enable_warnings
|
||||
create table spatial_type_table( col1 GEOMETRY COMMENT 'GEOMETRY', col2 POINT COMMENT'POINT', col3 LINESTRING COMMENT 'LINESTRING', col4 POLYGON COMMENT 'POLYGON', col5 MULTIPOINT COMMENT 'MULTIPOINT', col6 MULTILINESTRING COMMENT 'COMMENT', col7 MULTIPOLYGON COMMENT 'MULTIPOLYGON', col8 GEOMETRYCOLLECTION COMMENT 'GEOMETRYCOLLECTION' ) DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;
|
||||
SELECT `TABLE_NAME`, `COLUMN_NAME`, `COLUMN_TYPE`, `COLUMN_COMMENT`, `IS_NULLABLE`, `COLUMN_KEY`, `COLUMN_DEFAULT`, `EXTRA`, `CHARACTER_SET_NAME`, `COLLATION_NAME`, NULL AS `GENERATION_EXPRESSION` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME` = 'spatial_type_table' ORDER BY `ORDINAL_POSITION`;
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE json_type_table;
|
||||
--enable_warnings
|
||||
CREATE TABLE json_type_table (jdoc JSON) DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;
|
||||
SELECT `TABLE_NAME`, `COLUMN_NAME`, `COLUMN_TYPE`, `COLUMN_COMMENT`, `IS_NULLABLE`, `COLUMN_KEY`, `COLUMN_DEFAULT`, `EXTRA`, `CHARACTER_SET_NAME`, `COLLATION_NAME`, NULL AS `GENERATION_EXPRESSION` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME` = 'json_type_table' ORDER BY `ORDINAL_POSITION`;
|
Reference in New Issue
Block a user