【 使用环境 】生产环境
【 OB or 其他组件 】OceanBase4.2.5.1 OceanBase4.2.5.2
【 使用版本 】社区版
【问题描述】同一个SQL在4.2.5.2版本执行成功,在4.2.5.1执行失败,目前怀疑是4.2.5.1版本的BUG
【复现路径】
【附件及日志】SQL文本如下
select
TABLE_SCHEMA,
null,
TABLE_NAME,
COLUMN_NAME,
case
when UPPER(DATA_TYPE)= 'DECIMAL' then 3
when UPPER(DATA_TYPE)= 'DECIMAL UNSIGNED' then 3
when UPPER(DATA_TYPE)= 'TINYINT' then
case
when LOCATE('ZEROFILL', UPPER(COLUMN_TYPE)) = 0
and LOCATE('UNSIGNED', UPPER(COLUMN_TYPE)) = 0
and LOCATE('(1)', COLUMN_TYPE) != 0 then -7
else -6
end
when UPPER(DATA_TYPE)= 'TINYINT UNSIGNED' then
case
when LOCATE('ZEROFILL', UPPER(COLUMN_TYPE)) = 0
and LOCATE('UNSIGNED', UPPER(COLUMN_TYPE)) = 0
and LOCATE('(1)', COLUMN_TYPE) != 0 then -7
else -6
end
when UPPER(DATA_TYPE)= 'BOOLEAN' then 16
when UPPER(DATA_TYPE)= 'SMALLINT' then 5
when UPPER(DATA_TYPE)= 'SMALLINT UNSIGNED' then 5
when UPPER(DATA_TYPE)= 'INT' then 4
when UPPER(DATA_TYPE)= 'INT UNSIGNED' then 4
when UPPER(DATA_TYPE)= 'FLOAT' then 7
when UPPER(DATA_TYPE)= 'FLOAT UNSIGNED' then 7
when UPPER(DATA_TYPE)= 'DOUBLE' then 8
when UPPER(DATA_TYPE)= 'DOUBLE UNSIGNED' then 8
when UPPER(DATA_TYPE)= 'NULL' then 0
when UPPER(DATA_TYPE)= 'TIMESTAMP' then 93
when UPPER(DATA_TYPE)= 'BIGINT' then -5
when UPPER(DATA_TYPE)= 'BIGINT UNSIGNED' then -5
when UPPER(DATA_TYPE)= 'MEDIUMINT' then 4
when UPPER(DATA_TYPE)= 'MEDIUMINT UNSIGNED' then 4
when UPPER(DATA_TYPE)= 'DATE' then 91
when UPPER(DATA_TYPE)= 'TIME' then 92
when UPPER(DATA_TYPE)= 'DATETIME' then 93
when UPPER(DATA_TYPE)= 'YEAR' then 91
when UPPER(DATA_TYPE)= 'VARCHAR' then 12
when UPPER(DATA_TYPE)= 'VARBINARY' then -3
when UPPER(DATA_TYPE)= 'BIT' then -7
when UPPER(DATA_TYPE)= 'JSON' then -1
when UPPER(DATA_TYPE)= 'ENUM' then 1
when UPPER(DATA_TYPE)= 'SET' then 1
when UPPER(DATA_TYPE)= 'TINYBLOB' then -3
when UPPER(DATA_TYPE)= 'TINYTEXT' then 12
when UPPER(DATA_TYPE)= 'MEDIUMBLOB' then -4
when UPPER(DATA_TYPE)= 'MEDIUMTEXT' then -1
when UPPER(DATA_TYPE)= 'LONGBLOB' then -4
when UPPER(DATA_TYPE)= 'LONGTEXT' then -1
when UPPER(DATA_TYPE)= 'BLOB' then -4
when UPPER(DATA_TYPE)= 'TEXT' then -1
when UPPER(DATA_TYPE)= 'CHAR' then 1
when UPPER(DATA_TYPE)= 'BINARY' then -2
when UPPER(DATA_TYPE)= 'GEOMETRY' then -2
when UPPER(DATA_TYPE)= 'UNKNOWN' then 1111
when UPPER(DATA_TYPE)= 'POINT' then -2
when UPPER(DATA_TYPE)= 'LINESTRING' then -2
when UPPER(DATA_TYPE)= 'POLYGON' then -2
when UPPER(DATA_TYPE)= 'MULTIPOINT' then -2
when UPPER(DATA_TYPE)= 'MULTILINESTRING' then -2
when UPPER(DATA_TYPE)= 'MULTIPOLYGON' then -2
when UPPER(DATA_TYPE)= 'GEOMETRYCOLLECTION' then -2
when UPPER(DATA_TYPE)= 'GEOMCOLLECTION' then -2
else 1111
end as DATA_TYPE,
UPPER(case when UPPER(DATA_TYPE)= 'TINYINT' then case when LOCATE('ZEROFILL', UPPER(COLUMN_TYPE)) = 0 and LOCATE('UNSIGNED', UPPER(COLUMN_TYPE)) = 0 and LOCATE('(1)', COLUMN_TYPE) != 0 then 'BIT' when LOCATE('UNSIGNED', UPPER(COLUMN_TYPE)) != 0 and LOCATE('UNSIGNED', UPPER(DATA_TYPE)) = 0 then 'TINYINT UNSIGNED' else DATA_TYPE end when LOCATE('UNSIGNED', UPPER(COLUMN_TYPE)) != 0 and LOCATE('UNSIGNED', UPPER(DATA_TYPE)) = 0 and LOCATE('SET', UPPER(DATA_TYPE)) <> 1 and LOCATE('ENUM', UPPER(DATA_TYPE)) <> 1 then CONCAT(DATA_TYPE, ' UNSIGNED') when UPPER(DATA_TYPE)= 'POINT' then 'GEOMETRY' when UPPER(DATA_TYPE)= 'LINESTRING' then 'GEOMETRY' when UPPER(DATA_TYPE)= 'POLYGON' then 'GEOMETRY' when UPPER(DATA_TYPE)= 'MULTIPOINT' then 'GEOMETRY' when UPPER(DATA_TYPE)= 'MULTILINESTRING' then 'GEOMETRY' when UPPER(DATA_TYPE)= 'MULTIPOLYGON' then 'GEOMETRY' when UPPER(DATA_TYPE)= 'GEOMETRYCOLLECTION' then 'GEOMETRY' when UPPER(DATA_TYPE)= 'GEOMCOLLECTION' then 'GEOMETRY' else UPPER(DATA_TYPE) end) as TYPE_NAME,
UPPER(case when UPPER(DATA_TYPE)= 'DATE' then 10 when UPPER(DATA_TYPE)= 'TIME' then 8 +(case when DATETIME_PRECISION>0 then DATETIME_PRECISION + 1 else DATETIME_PRECISION end) when UPPER(DATA_TYPE)= 'DATETIME' or UPPER(DATA_TYPE)= 'TIMESTAMP' then 19 +(case when DATETIME_PRECISION>0 then DATETIME_PRECISION + 1 else DATETIME_PRECISION end) when UPPER(DATA_TYPE)= 'YEAR' then 4 when UPPER(DATA_TYPE)= 'TINYINT' and LOCATE('ZEROFILL', UPPER(COLUMN_TYPE)) = 0 and LOCATE('UNSIGNED', UPPER(COLUMN_TYPE)) = 0 and LOCATE('(1)', COLUMN_TYPE) != 0 then 1 when UPPER(DATA_TYPE)= 'MEDIUMINT' and LOCATE('UNSIGNED', UPPER(COLUMN_TYPE)) != 0 then 8 when UPPER(DATA_TYPE)= 'JSON' then 1073741824 when UPPER(DATA_TYPE)= 'GEOMETRY' then 65535 when UPPER(DATA_TYPE)= 'POINT' then 65535 when UPPER(DATA_TYPE)= 'LINESTRING' then 65535 when UPPER(DATA_TYPE)= 'POLYGON' then 65535 when UPPER(DATA_TYPE)= 'MULTIPOINT' then 65535 when UPPER(DATA_TYPE)= 'MULTILINESTRING' then 65535 when UPPER(DATA_TYPE)= 'MULTIPOLYGON' then 65535 when UPPER(DATA_TYPE)= 'GEOMETRYCOLLECTION' then 65535 when UPPER(DATA_TYPE)= 'GEOMCOLLECTION' then 65535 when CHARACTER_MAXIMUM_LENGTH is null then NUMERIC_PRECISION when CHARACTER_MAXIMUM_LENGTH > 2147483647 then 2147483647 else CHARACTER_MAXIMUM_LENGTH end) as COLUMN_SIZE,
65535 as BUFFER_LENGTH,
UPPER(case when UPPER(DATA_TYPE)= 'DECIMAL' then NUMERIC_SCALE when UPPER(DATA_TYPE)= 'FLOAT' or UPPER(DATA_TYPE)= 'DOUBLE' then case when NUMERIC_SCALE is null then 0 else NUMERIC_SCALE end else null end) as DECIMAL_DIGITS,
10 as NUM_PREC_RADIX,
case
when IS_NULLABLE = 'NO' then 0
else
case
when IS_NULLABLE = 'YES' then 1
else 2
end
end as NULLABLE,
COLUMN_COMMENT as REMARKS,
COLUMN_DEFAULT as COLUMN_DEF,
0 as SQL_DATA_TYPE,
0 as SQL_DATETIME_SUB,
case
when CHARACTER_OCTET_LENGTH > 2147483647 then 2147483647
else CHARACTER_OCTET_LENGTH
end as CHAR_OCTET_LENGTH,
ORDINAL_POSITION,
IS_NULLABLE,
null as SCOPE_CATALOG,
null as SCOPE_SCHEMA,
null as SCOPE_TABLE,
null as SOURCE_DATA_TYPE,
if (EXTRA like '%auto_increment%',
'YES',
'NO') as IS_AUTOINCREMENT,
if (EXTRA like '%GENERATED%',
'YES',
'NO') as IS_GENERATEDCOLUMN
from
INFORMATION_SCHEMA.COLUMNS
where
TABLE_SCHEMA = 'shenbi_uabc'
and TABLE_NAME like 'form_entity'
order by
TABLE_SCHEMA,
TABLE_NAME,
ORDINAL_POSITION
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!