Merge pull request #56277 from rschu1ze/show-columns-connection-type

Make type names in `SHOW COLUMNS` dependent on connection type
This commit is contained in:
Robert Schulze 2023-11-06 16:24:27 +01:00 committed by GitHub
commit 5cfcf98d4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 376 additions and 403 deletions

View File

@ -3310,22 +3310,11 @@ Possible values:
Default value: `0`.
## use_mysql_types_in_show_columns {#use_mysql_types_in_show_columns}
Show the names of MySQL data types corresponding to ClickHouse data types in [SHOW COLUMNS](../../sql-reference/statements/show.md#show_columns).
Possible values:
- 0 - Show names of native ClickHouse data types.
- 1 - Show names of MySQL data types corresponding to ClickHouse data types.
Default value: `0`.
## mysql_map_string_to_text_in_show_columns {#mysql_map_string_to_text_in_show_columns}
When enabled, [String](../../sql-reference/data-types/string.md) ClickHouse data type will be displayed as `TEXT` in [SHOW COLUMNS](../../sql-reference/statements/show.md#show_columns).
Has effect only when [use_mysql_types_in_show_columns](#use_mysql_types_in_show_columns) is enabled.
Has an effect only when the connection is made through the MySQL wire protocol.
- 0 - Use `BLOB`.
- 1 - Use `TEXT`.
@ -3336,7 +3325,7 @@ Default value: `0`.
When enabled, [FixedString](../../sql-reference/data-types/fixedstring.md) ClickHouse data type will be displayed as `TEXT` in [SHOW COLUMNS](../../sql-reference/statements/show.md#show_columns).
Has effect only when [use_mysql_types_in_show_columns](#use_mysql_types_in_show_columns) is enabled.
Has an effect only when the connection is made through the MySQL wire protocol.
- 0 - Use `BLOB`.
- 1 - Use `TEXT`.

View File

@ -207,7 +207,7 @@ The optional keyword `FULL` causes the output to include the collation, comment
The statement produces a result table with the following structure:
- `field` - The name of the column (String)
- `type` - The column data type. If setting `[use_mysql_types_in_show_columns](../../operations/settings/settings.md#use_mysql_types_in_show_columns) = 1` (default: 0), then the equivalent type name in MySQL is shown. (String)
- `type` - The column data type. If the query was made through the MySQL wire protocol, then the equivalent type name in MySQL is shown. (String)
- `null` - `YES` if the column data type is Nullable, `NO` otherwise (String)
- `key` - `PRI` if the column is part of the primary key, `SOR` if the column is part of the sorting key, empty otherwise (String)
- `default` - Default expression of the column if it is of type `ALIAS`, `DEFAULT`, or `MATERIALIZED`, otherwise `NULL`. (Nullable(String))

View File

@ -208,9 +208,8 @@ class IColumn;
M(Bool, allow_experimental_inverted_index, false, "If it is set to true, allow to use experimental inverted index.", 0) \
\
M(UInt64, mysql_max_rows_to_insert, 65536, "The maximum number of rows in MySQL batch insertion of the MySQL storage engine", 0) \
M(Bool, use_mysql_types_in_show_columns, false, "Show native MySQL types in SHOW [FULL] COLUMNS", 0) \
M(Bool, mysql_map_string_to_text_in_show_columns, false, "If enabled, String type will be mapped to TEXT in SHOW [FULL] COLUMNS, BLOB otherwise. Will only take effect if use_mysql_types_in_show_columns is enabled too", 0) \
M(Bool, mysql_map_fixed_string_to_text_in_show_columns, false, "If enabled, FixedString type will be mapped to TEXT in SHOW [FULL] COLUMNS, BLOB otherwise. Will only take effect if use_mysql_types_in_show_columns is enabled too", 0) \
M(Bool, mysql_map_string_to_text_in_show_columns, false, "If enabled, String type will be mapped to TEXT in SHOW [FULL] COLUMNS, BLOB otherwise.", 0) \
M(Bool, mysql_map_fixed_string_to_text_in_show_columns, false, "If enabled, FixedString type will be mapped to TEXT in SHOW [FULL] COLUMNS, BLOB otherwise.", 0) \
\
M(UInt64, optimize_min_equality_disjunction_chain_length, 3, "The minimum length of the expression `expr = x1 OR ... expr = xN` for optimization ", 0) \
\
@ -848,6 +847,7 @@ class IColumn;
MAKE_OBSOLETE(M, UInt64, merge_tree_clear_old_parts_interval_seconds, 1) \
MAKE_OBSOLETE(M, UInt64, partial_merge_join_optimizations, 0) \
MAKE_OBSOLETE(M, MaxThreads, max_alter_threads, 0) \
MAKE_OBSOLETE(M, Bool, use_mysql_types_in_show_columns, false) \
/* moved to config.xml: see also src/Core/ServerSettings.h */ \
MAKE_DEPRECATED_BY_SERVER_CONFIG(M, UInt64, background_buffer_flush_schedule_pool_size, 16) \
MAKE_DEPRECATED_BY_SERVER_CONFIG(M, UInt64, background_pool_size, 16) \

View File

@ -6,6 +6,7 @@
#include <IO/WriteBufferFromString.h>
#include <Parsers/ASTShowColumnsQuery.h>
#include <Parsers/formatAST.h>
#include <Interpreters/ClientInfo.h>
#include <Interpreters/Context.h>
#include <Interpreters/executeQuery.h>
@ -25,8 +26,10 @@ String InterpreterShowColumnsQuery::getRewrittenQuery()
{
const auto & query = query_ptr->as<ASTShowColumnsQuery &>();
ClientInfo::Interface client_interface = getContext()->getClientInfo().interface;
const bool use_mysql_types = (client_interface == ClientInfo::Interface::MYSQL); // connection made through MySQL wire protocol
const auto & settings = getContext()->getSettingsRef();
const bool use_mysql_types = settings.use_mysql_types_in_show_columns;
const bool remap_string_as_text = settings.mysql_map_string_to_text_in_show_columns;
const bool remap_fixed_string_as_text = settings.mysql_map_fixed_string_to_text_in_show_columns;
@ -39,7 +42,6 @@ String InterpreterShowColumnsQuery::getRewrittenQuery()
if (use_mysql_types)
{
/// Cheapskate SQL-based mapping from native types to MySQL types, see https://dev.mysql.com/doc/refman/8.0/en/data-types.html
/// Only used with setting 'use_mysql_types_in_show_columns = 1'
/// Known issues:
/// - Enums are translated to TEXT
rewritten_query += fmt::format(

View File

@ -0,0 +1,60 @@
a Array(String) NO \N
agg AggregateFunction(uniq, UInt64) NO \N
b Bool NO \N
d Date NO \N
d32 Date32 NO \N
dec128 Decimal(38, 2) NO \N
dec128_native Decimal(35, 30) NO \N
dec128_text Decimal(35, 31) NO \N
dec256 Decimal(76, 2) NO \N
dec256_native Decimal(65, 2) NO \N
dec256_text Decimal(66, 2) NO \N
dec32 Decimal(9, 2) NO \N
dec64 Decimal(18, 2) NO \N
dt DateTime NO \N
dt64 DateTime64(3) NO \N
dt64_3_tz1 DateTime64(3, \'UTC\') NO \N
dt64_3_tz2 DateTime64(3, \'Asia/Shanghai\') NO \N
dt64_6 DateTime64(6, \'UTC\') NO \N
dt64_9 DateTime64(9, \'UTC\') NO \N
dt_tz1 DateTime(\'UTC\') NO \N
dt_tz2 DateTime(\'Europe/Amsterdam\') NO \N
enm Enum8(\'hallo\' = 1, \'welt\' = 2) NO \N
f32 Float32 NO \N
f64 Float64 NO \N
fs FixedString(3) NO \N
i128 Int128 NO \N
i16 Int16 NO \N
i256 Int256 NO \N
i32 Int32 NO \N
i64 Int64 NO \N
i8 Int8 NO \N
ip4 IPv4 NO \N
ip6 IPv6 NO \N
lfs LowCardinality(FixedString(3)) NO \N
lnfs LowCardinality(Nullable(FixedString(3))) YES \N
lns LowCardinality(Nullable(String)) YES \N
ls LowCardinality(String) NO \N
m Map(Int32, String) NO \N
m_complex Map(Int32, Map(Int32, LowCardinality(Nullable(String)))) NO \N
mpg MultiPolygon NO \N
ndt64 Nullable(DateTime64(3)) YES \N
ndt64_tz Nullable(DateTime64(3, \'Asia/Shanghai\')) YES \N
nested.col1 Array(String) NO \N
nested.col2 Array(UInt32) NO \N
nfs Nullable(FixedString(3)) YES \N
ns Nullable(String) YES \N
o Object(\'json\') NO \N
p Point NO \N
pg Polygon NO \N
r Ring NO \N
s String NO \N
sagg SimpleAggregateFunction(sum, Float64) NO \N
t Tuple(Int32, String, Nullable(String), LowCardinality(String), LowCardinality(Nullable(String)), Tuple(Int32, String)) NO \N
ui128 UInt128 NO \N
ui16 UInt16 NO \N
ui256 UInt256 NO \N
ui32 UInt32 NO \N
ui64 UInt64 NO \N
ui8 UInt8 NO \N
uuid UUID NO \N

View File

@ -2,7 +2,11 @@
-- no-fasttest: json type needs rapidjson library, geo types need s2 geometry
-- no-parallel: can't provide currentDatabase() to SHOW COLUMNS
-- Tests setting 'use_mysql_types_in_show_columns' in SHOW COLUMNS and SELECTs on system.columns
-- Tests the output of SHOW COLUMNS when called through the ClickHouse protocol.
-- -----------------------------------------------------------------------------------
-- Please keep this test in-sync with 02775_show_columns_called_through_mysql.sql
-- -----------------------------------------------------------------------------------
DROP TABLE IF EXISTS tab;
@ -72,22 +76,6 @@ CREATE TABLE tab
lnfs LowCardinality(Nullable(FixedString(3))),
) ENGINE Memory;
SELECT '-- SHOW COLUMNS with use_mysql_types_in_show_columns = 0';
SHOW COLUMNS FROM tab SETTINGS use_mysql_types_in_show_columns = 0;
SELECT '-- SHOW COLUMNS with use_mysql_types_in_show_columns = 1';
SHOW COLUMNS FROM tab SETTINGS use_mysql_types_in_show_columns = 1;
SELECT '-- SHOW COLUMNS with mysql_map_string_to_text_in_show_columns = 1';
SHOW COLUMNS FROM tab SETTINGS use_mysql_types_in_show_columns = 1, mysql_map_string_to_text_in_show_columns=1;
SELECT '-- SHOW COLUMNS with mysql_map_fixed_string_to_text_in_show_columns = 1';
SHOW COLUMNS FROM tab SETTINGS use_mysql_types_in_show_columns = 1, mysql_map_fixed_string_to_text_in_show_columns=1;
SELECT '-- SHOW COLUMNS with mysql_map_string_to_text_in_show_columns = 1 and without use_mysql_types_in_show_columns';
SHOW COLUMNS FROM tab SETTINGS use_mysql_types_in_show_columns = 0, mysql_map_string_to_text_in_show_columns=1;
SELECT '-- SHOW COLUMNS with mysql_map_fixed_string_to_text_in_show_columns = 1 and without use_mysql_types_in_show_columns';
SHOW COLUMNS FROM tab SETTINGS use_mysql_types_in_show_columns = 0, mysql_map_fixed_string_to_text_in_show_columns=1;
SHOW COLUMNS FROM tab;
DROP TABLE tab;

View File

@ -0,0 +1,299 @@
#!/usr/bin/expect -f
# Tags: no-fasttest, no-parallel
# no-fasttest: requires mysql client, rapidjson and s2geometry
# no-parallel: can't provide currentDatabase() to SHOW COLUMNS
# Tests the output of SHOW COLUMNS when called through the MySQL protocol.
# -----------------------------------------------------------------------------------
# Please keep this test in-sync with 02775_show_columns_called_through_clickhouse.sql
# -----------------------------------------------------------------------------------
set basedir [file dirname $argv0]
set basename [file tail $argv0]
exp_internal -f $env(CLICKHOUSE_TMP)/$basename.debuglog 0
log_user 0
set timeout 60
match_max 100000
expect_after {
# Do not ignore eof from expect
-i $any_spawn_id eof { exp_continue }
# A default timeout action is to do nothing, change it to fail
-i $any_spawn_id timeout { exit 1 }
}
spawn bash -c "source $basedir/../shell_config.sh ; \$MYSQL_CLIENT_BINARY \$MYSQL_CLIENT_OPT"
expect -nocase -re "mysql.*> "
send -- "DROP TABLE IF EXISTS tab;\r"
expect "Query OK, 0 rows affected"
send -- "SET allow_suspicious_low_cardinality_types=1;\r"
send -- "SET allow_experimental_object_type=1;\r"
send -- "
CREATE TABLE tab
(
i8 Int8,
i16 Int16,
i32 Int32,
i64 Int64,
i128 Int128,
i256 Int256,
ui8 UInt8,
ui16 UInt16,
ui32 UInt32,
ui64 UInt64,
ui128 UInt128,
ui256 UInt256,
f32 Float32,
f64 Float64,
dec32 Decimal32(2),
dec64 Decimal64(2),
dec128 Decimal128(2),
dec128_native Decimal(35, 30),
dec128_text Decimal(35, 31),
dec256 Decimal256(2),
dec256_native Decimal(65, 2),
dec256_text Decimal(66, 2),
p Point,
r Ring,
pg Polygon,
mpg MultiPolygon,
b Bool,
s String,
fs FixedString(3),
uuid UUID,
d Date,
d32 Date32,
dt DateTime,
dt_tz1 DateTime('UTC'),
dt_tz2 DateTime('Europe/Amsterdam'),
dt64 DateTime64(3),
dt64_3_tz1 DateTime64(3, 'UTC'),
dt64_3_tz2 DateTime64(3, 'Asia/Shanghai'),
dt64_6 DateTime64(6, 'UTC'),
dt64_9 DateTime64(9, 'UTC'),
enm Enum('hallo' = 1, 'welt' = 2),
agg AggregateFunction(uniq, UInt64),
sagg SimpleAggregateFunction(sum, Double),
a Array(String),
o JSON,
t Tuple(Int32, String, Nullable(String), LowCardinality(String), LowCardinality(Nullable(String)), Tuple(Int32, String)),
m Map(Int32, String),
m_complex Map(Int32, Map(Int32, LowCardinality(Nullable(String)))),
nested Nested (col1 String, col2 UInt32),
ip4 IPv4,
ip6 IPv6,
ns Nullable(String),
nfs Nullable(FixedString(3)),
ndt64 Nullable(DateTime64(3)),
ndt64_tz Nullable(DateTime64(3, 'Asia/Shanghai')),
ls LowCardinality(String),
lfs LowCardinality(FixedString(3)),
lns LowCardinality(Nullable(String)),
lnfs LowCardinality(Nullable(FixedString(3))),
) ENGINE Memory;\r
"
send -- "SHOW COLUMNS FROM tab;\r"
expect -- "+---------------+-------------------+------+------+---------+-------+"
expect -- "| field | type | null | key | default | extra |"
expect -- "+---------------+-------------------+------+------+---------+-------+"
expect -- "| a | TEXT | NO | | NULL | |"
expect -- "| agg | TEXT | NO | | NULL | |"
expect -- "| b | TINYINT | NO | | NULL | |"
expect -- "| d | DATE | NO | | NULL | |"
expect -- "| d32 | DATE | NO | | NULL | |"
expect -- "| dec128 | DECIMAL(38, 2) | NO | | NULL | |"
expect -- "| dec128_native | DECIMAL(35, 30) | NO | | NULL | |"
expect -- "| dec128_text | TEXT | NO | | NULL | |"
expect -- "| dec256 | TEXT | NO | | NULL | |"
expect -- "| dec256_native | DECIMAL(65, 2) | NO | | NULL | |"
expect -- "| dec256_text | TEXT | NO | | NULL | |"
expect -- "| dec32 | DECIMAL(9, 2) | NO | | NULL | |"
expect -- "| dec64 | DECIMAL(18, 2) | NO | | NULL | |"
expect -- "| dt | DATETIME | NO | | NULL | |"
expect -- "| dt64 | DATETIME | NO | | NULL | |"
expect -- "| dt64_3_tz1 | DATETIME | NO | | NULL | |"
expect -- "| dt64_3_tz2 | DATETIME | NO | | NULL | |"
expect -- "| dt64_6 | DATETIME | NO | | NULL | |"
expect -- "| dt64_9 | DATETIME | NO | | NULL | |"
expect -- "| dt_tz1 | DATETIME | NO | | NULL | |"
expect -- "| dt_tz2 | DATETIME | NO | | NULL | |"
expect -- "| enm | TEXT | NO | | NULL | |"
expect -- "| f32 | FLOAT | NO | | NULL | |"
expect -- "| f64 | DOUBLE | NO | | NULL | |"
expect -- "| fs | BLOB | NO | | NULL | |"
expect -- "| i128 | TEXT | NO | | NULL | |"
expect -- "| i16 | SMALLINT | NO | | NULL | |"
expect -- "| i256 | TEXT | NO | | NULL | |"
expect -- "| i32 | INTEGER | NO | | NULL | |"
expect -- "| i64 | BIGINT | NO | | NULL | |"
expect -- "| i8 | TINYINT | NO | | NULL | |"
expect -- "| ip4 | TEXT | NO | | NULL | |"
expect -- "| ip6 | TEXT | NO | | NULL | |"
expect -- "| lfs | BLOB | NO | | NULL | |"
expect -- "| lnfs | BLOB | YES | | NULL | |"
expect -- "| lns | BLOB | YES | | NULL | |"
expect -- "| ls | BLOB | NO | | NULL | |"
expect -- "| m | JSON | NO | | NULL | |"
expect -- "| m_complex | JSON | NO | | NULL | |"
expect -- "| mpg | TEXT | NO | | NULL | |"
expect -- "| ndt64 | DATETIME | YES | | NULL | |"
expect -- "| ndt64_tz | DATETIME | YES | | NULL | |"
expect -- "| nested.col1 | TEXT | NO | | NULL | |"
expect -- "| nested.col2 | TEXT | NO | | NULL | |"
expect -- "| nfs | BLOB | YES | | NULL | |"
expect -- "| ns | BLOB | YES | | NULL | |"
expect -- "| o | JSON | NO | | NULL | |"
expect -- "| p | TEXT | NO | | NULL | |"
expect -- "| pg | TEXT | NO | | NULL | |"
expect -- "| r | TEXT | NO | | NULL | |"
expect -- "| s | BLOB | NO | | NULL | |"
expect -- "| sagg | TEXT | NO | | NULL | |"
expect -- "| t | JSON | NO | | NULL | |"
expect -- "| ui128 | TEXT | NO | | NULL | |"
expect -- "| ui16 | SMALLINT UNSIGNED | NO | | NULL | |"
expect -- "| ui256 | TEXT | NO | | NULL | |"
expect -- "| ui32 | INTEGER UNSIGNED | NO | | NULL | |"
expect -- "| ui64 | BIGINT UNSIGNED | NO | | NULL | |"
expect -- "| ui8 | TINYINT UNSIGNED | NO | | NULL | |"
expect -- "| uuid | CHAR | NO | | NULL | |"
expect -- "+---------------+-------------------+------+------+---------+-------+"
send -- "SHOW COLUMNS FROM tab SETTINGS mysql_map_string_to_text_in_show_columns=1;\r"
expect -- "+---------------+-------------------+------+------+---------+-------+"
expect -- "| field | type | null | key | default | extra |"
expect -- "+---------------+-------------------+------+------+---------+-------+"
expect -- "| a | TEXT | NO | | NULL | |"
expect -- "| agg | TEXT | NO | | NULL | |"
expect -- "| b | TINYINT | NO | | NULL | |"
expect -- "| d | DATE | NO | | NULL | |"
expect -- "| d32 | DATE | NO | | NULL | |"
expect -- "| dec128 | DECIMAL(38, 2) | NO | | NULL | |"
expect -- "| dec128_native | DECIMAL(35, 30) | NO | | NULL | |"
expect -- "| dec128_text | TEXT | NO | | NULL | |"
expect -- "| dec256 | TEXT | NO | | NULL | |"
expect -- "| dec256_native | DECIMAL(65, 2) | NO | | NULL | |"
expect -- "| dec256_text | TEXT | NO | | NULL | |"
expect -- "| dec32 | DECIMAL(9, 2) | NO | | NULL | |"
expect -- "| dec64 | DECIMAL(18, 2) | NO | | NULL | |"
expect -- "| dt | DATETIME | NO | | NULL | |"
expect -- "| dt64 | DATETIME | NO | | NULL | |"
expect -- "| dt64_3_tz1 | DATETIME | NO | | NULL | |"
expect -- "| dt64_3_tz2 | DATETIME | NO | | NULL | |"
expect -- "| dt64_6 | DATETIME | NO | | NULL | |"
expect -- "| dt64_9 | DATETIME | NO | | NULL | |"
expect -- "| dt_tz1 | DATETIME | NO | | NULL | |"
expect -- "| dt_tz2 | DATETIME | NO | | NULL | |"
expect -- "| enm | TEXT | NO | | NULL | |"
expect -- "| f32 | FLOAT | NO | | NULL | |"
expect -- "| f64 | DOUBLE | NO | | NULL | |"
expect -- "| fs | BLOB | NO | | NULL | |"
expect -- "| i128 | TEXT | NO | | NULL | |"
expect -- "| i16 | SMALLINT | NO | | NULL | |"
expect -- "| i256 | TEXT | NO | | NULL | |"
expect -- "| i32 | INTEGER | NO | | NULL | |"
expect -- "| i64 | BIGINT | NO | | NULL | |"
expect -- "| i8 | TINYINT | NO | | NULL | |"
expect -- "| ip4 | TEXT | NO | | NULL | |"
expect -- "| ip6 | TEXT | NO | | NULL | |"
expect -- "| lfs | BLOB | NO | | NULL | |"
expect -- "| lnfs | BLOB | YES | | NULL | |"
expect -- "| lns | TEXT | YES | | NULL | |"
expect -- "| ls | TEXT | NO | | NULL | |"
expect -- "| m | JSON | NO | | NULL | |"
expect -- "| m_complex | JSON | NO | | NULL | |"
expect -- "| mpg | TEXT | NO | | NULL | |"
expect -- "| ndt64 | DATETIME | YES | | NULL | |"
expect -- "| ndt64_tz | DATETIME | YES | | NULL | |"
expect -- "| nested.col1 | TEXT | NO | | NULL | |"
expect -- "| nested.col2 | TEXT | NO | | NULL | |"
expect -- "| nfs | BLOB | YES | | NULL | |"
expect -- "| ns | TEXT | YES | | NULL | |"
expect -- "| o | JSON | NO | | NULL | |"
expect -- "| p | TEXT | NO | | NULL | |"
expect -- "| pg | TEXT | NO | | NULL | |"
expect -- "| r | TEXT | NO | | NULL | |"
expect -- "| s | TEXT | NO | | NULL | |"
expect -- "| sagg | TEXT | NO | | NULL | |"
expect -- "| t | JSON | NO | | NULL | |"
expect -- "| ui128 | TEXT | NO | | NULL | |"
expect -- "| ui16 | SMALLINT UNSIGNED | NO | | NULL | |"
expect -- "| ui256 | TEXT | NO | | NULL | |"
expect -- "| ui32 | INTEGER UNSIGNED | NO | | NULL | |"
expect -- "| ui64 | BIGINT UNSIGNED | NO | | NULL | |"
expect -- "| ui8 | TINYINT UNSIGNED | NO | | NULL | |"
expect -- "| uuid | CHAR | NO | | NULL | |"
expect -- "+---------------+-------------------+------+------+---------+-------+"
send -- "SHOW COLUMNS FROM tab SETTINGS mysql_map_fixed_string_to_text_in_show_columns=1;\r"
expect -- "+---------------+-------------------+------+------+---------+-------+"
expect -- "| field | type | null | key | default | extra |"
expect -- "+---------------+-------------------+------+------+---------+-------+"
expect -- "| a | TEXT | NO | | NULL | |"
expect -- "| agg | TEXT | NO | | NULL | |"
expect -- "| b | TINYINT | NO | | NULL | |"
expect -- "| d | DATE | NO | | NULL | |"
expect -- "| d32 | DATE | NO | | NULL | |"
expect -- "| dec128 | DECIMAL(38, 2) | NO | | NULL | |"
expect -- "| dec128_native | DECIMAL(35, 30) | NO | | NULL | |"
expect -- "| dec128_text | TEXT | NO | | NULL | |"
expect -- "| dec256 | TEXT | NO | | NULL | |"
expect -- "| dec256_native | DECIMAL(65, 2) | NO | | NULL | |"
expect -- "| dec256_text | TEXT | NO | | NULL | |"
expect -- "| dec32 | DECIMAL(9, 2) | NO | | NULL | |"
expect -- "| dec64 | DECIMAL(18, 2) | NO | | NULL | |"
expect -- "| dt | DATETIME | NO | | NULL | |"
expect -- "| dt64 | DATETIME | NO | | NULL | |"
expect -- "| dt64_3_tz1 | DATETIME | NO | | NULL | |"
expect -- "| dt64_3_tz2 | DATETIME | NO | | NULL | |"
expect -- "| dt64_6 | DATETIME | NO | | NULL | |"
expect -- "| dt64_9 | DATETIME | NO | | NULL | |"
expect -- "| dt_tz1 | DATETIME | NO | | NULL | |"
expect -- "| dt_tz2 | DATETIME | NO | | NULL | |"
expect -- "| enm | TEXT | NO | | NULL | |"
expect -- "| f32 | FLOAT | NO | | NULL | |"
expect -- "| f64 | DOUBLE | NO | | NULL | |"
expect -- "| fs | TEXT | NO | | NULL | |"
expect -- "| i128 | TEXT | NO | | NULL | |"
expect -- "| i16 | SMALLINT | NO | | NULL | |"
expect -- "| i256 | TEXT | NO | | NULL | |"
expect -- "| i32 | INTEGER | NO | | NULL | |"
expect -- "| i64 | BIGINT | NO | | NULL | |"
expect -- "| i8 | TINYINT | NO | | NULL | |"
expect -- "| ip4 | TEXT | NO | | NULL | |"
expect -- "| ip6 | TEXT | NO | | NULL | |"
expect -- "| lfs | TEXT | NO | | NULL | |"
expect -- "| lnfs | TEXT | YES | | NULL | |"
expect -- "| lns | BLOB | YES | | NULL | |"
expect -- "| ls | BLOB | NO | | NULL | |"
expect -- "| m | JSON | NO | | NULL | |"
expect -- "| m_complex | JSON | NO | | NULL | |"
expect -- "| mpg | TEXT | NO | | NULL | |"
expect -- "| ndt64 | DATETIME | YES | | NULL | |"
expect -- "| ndt64_tz | DATETIME | YES | | NULL | |"
expect -- "| nested.col1 | TEXT | NO | | NULL | |"
expect -- "| nested.col2 | TEXT | NO | | NULL | |"
expect -- "| nfs | TEXT | YES | | NULL | |"
expect -- "| ns | BLOB | YES | | NULL | |"
expect -- "| o | JSON | NO | | NULL | |"
expect -- "| p | TEXT | NO | | NULL | |"
expect -- "| pg | TEXT | NO | | NULL | |"
expect -- "| r | TEXT | NO | | NULL | |"
expect -- "| s | BLOB | NO | | NULL | |"
expect -- "| sagg | TEXT | NO | | NULL | |"
expect -- "| t | JSON | NO | | NULL | |"
expect -- "| ui128 | TEXT | NO | | NULL | |"
expect -- "| ui16 | SMALLINT UNSIGNED | NO | | NULL | |"
expect -- "| ui256 | TEXT | NO | | NULL | |"
expect -- "| ui32 | INTEGER UNSIGNED | NO | | NULL | |"
expect -- "| ui64 | BIGINT UNSIGNED | NO | | NULL | |"
expect -- "| ui8 | TINYINT UNSIGNED | NO | | NULL | |"
expect -- "| uuid | CHAR | NO | | NULL | |"
expect -- "+---------------+-------------------+------+------+---------+-------+"
send -- "DROP TABLE tab;"
send -- "quit;\r"
expect eof

View File

@ -1,366 +0,0 @@
-- SHOW COLUMNS with use_mysql_types_in_show_columns = 0
a Array(String) NO \N
agg AggregateFunction(uniq, UInt64) NO \N
b Bool NO \N
d Date NO \N
d32 Date32 NO \N
dec128 Decimal(38, 2) NO \N
dec128_native Decimal(35, 30) NO \N
dec128_text Decimal(35, 31) NO \N
dec256 Decimal(76, 2) NO \N
dec256_native Decimal(65, 2) NO \N
dec256_text Decimal(66, 2) NO \N
dec32 Decimal(9, 2) NO \N
dec64 Decimal(18, 2) NO \N
dt DateTime NO \N
dt64 DateTime64(3) NO \N
dt64_3_tz1 DateTime64(3, \'UTC\') NO \N
dt64_3_tz2 DateTime64(3, \'Asia/Shanghai\') NO \N
dt64_6 DateTime64(6, \'UTC\') NO \N
dt64_9 DateTime64(9, \'UTC\') NO \N
dt_tz1 DateTime(\'UTC\') NO \N
dt_tz2 DateTime(\'Europe/Amsterdam\') NO \N
enm Enum8(\'hallo\' = 1, \'welt\' = 2) NO \N
f32 Float32 NO \N
f64 Float64 NO \N
fs FixedString(3) NO \N
i128 Int128 NO \N
i16 Int16 NO \N
i256 Int256 NO \N
i32 Int32 NO \N
i64 Int64 NO \N
i8 Int8 NO \N
ip4 IPv4 NO \N
ip6 IPv6 NO \N
lfs LowCardinality(FixedString(3)) NO \N
lnfs LowCardinality(Nullable(FixedString(3))) YES \N
lns LowCardinality(Nullable(String)) YES \N
ls LowCardinality(String) NO \N
m Map(Int32, String) NO \N
m_complex Map(Int32, Map(Int32, LowCardinality(Nullable(String)))) NO \N
mpg MultiPolygon NO \N
ndt64 Nullable(DateTime64(3)) YES \N
ndt64_tz Nullable(DateTime64(3, \'Asia/Shanghai\')) YES \N
nested.col1 Array(String) NO \N
nested.col2 Array(UInt32) NO \N
nfs Nullable(FixedString(3)) YES \N
ns Nullable(String) YES \N
o Object(\'json\') NO \N
p Point NO \N
pg Polygon NO \N
r Ring NO \N
s String NO \N
sagg SimpleAggregateFunction(sum, Float64) NO \N
t Tuple(Int32, String, Nullable(String), LowCardinality(String), LowCardinality(Nullable(String)), Tuple(Int32, String)) NO \N
ui128 UInt128 NO \N
ui16 UInt16 NO \N
ui256 UInt256 NO \N
ui32 UInt32 NO \N
ui64 UInt64 NO \N
ui8 UInt8 NO \N
uuid UUID NO \N
-- SHOW COLUMNS with use_mysql_types_in_show_columns = 1
a TEXT NO \N
agg TEXT NO \N
b TINYINT NO \N
d DATE NO \N
d32 DATE NO \N
dec128 DECIMAL(38, 2) NO \N
dec128_native DECIMAL(35, 30) NO \N
dec128_text TEXT NO \N
dec256 TEXT NO \N
dec256_native DECIMAL(65, 2) NO \N
dec256_text TEXT NO \N
dec32 DECIMAL(9, 2) NO \N
dec64 DECIMAL(18, 2) NO \N
dt DATETIME NO \N
dt64 DATETIME NO \N
dt64_3_tz1 DATETIME NO \N
dt64_3_tz2 DATETIME NO \N
dt64_6 DATETIME NO \N
dt64_9 DATETIME NO \N
dt_tz1 DATETIME NO \N
dt_tz2 DATETIME NO \N
enm TEXT NO \N
f32 FLOAT NO \N
f64 DOUBLE NO \N
fs BLOB NO \N
i128 TEXT NO \N
i16 SMALLINT NO \N
i256 TEXT NO \N
i32 INTEGER NO \N
i64 BIGINT NO \N
i8 TINYINT NO \N
ip4 TEXT NO \N
ip6 TEXT NO \N
lfs BLOB NO \N
lnfs BLOB YES \N
lns BLOB YES \N
ls BLOB NO \N
m JSON NO \N
m_complex JSON NO \N
mpg TEXT NO \N
ndt64 DATETIME YES \N
ndt64_tz DATETIME YES \N
nested.col1 TEXT NO \N
nested.col2 TEXT NO \N
nfs BLOB YES \N
ns BLOB YES \N
o JSON NO \N
p TEXT NO \N
pg TEXT NO \N
r TEXT NO \N
s BLOB NO \N
sagg TEXT NO \N
t JSON NO \N
ui128 TEXT NO \N
ui16 SMALLINT UNSIGNED NO \N
ui256 TEXT NO \N
ui32 INTEGER UNSIGNED NO \N
ui64 BIGINT UNSIGNED NO \N
ui8 TINYINT UNSIGNED NO \N
uuid CHAR NO \N
-- SHOW COLUMNS with mysql_map_string_to_text_in_show_columns = 1
a TEXT NO \N
agg TEXT NO \N
b TINYINT NO \N
d DATE NO \N
d32 DATE NO \N
dec128 DECIMAL(38, 2) NO \N
dec128_native DECIMAL(35, 30) NO \N
dec128_text TEXT NO \N
dec256 TEXT NO \N
dec256_native DECIMAL(65, 2) NO \N
dec256_text TEXT NO \N
dec32 DECIMAL(9, 2) NO \N
dec64 DECIMAL(18, 2) NO \N
dt DATETIME NO \N
dt64 DATETIME NO \N
dt64_3_tz1 DATETIME NO \N
dt64_3_tz2 DATETIME NO \N
dt64_6 DATETIME NO \N
dt64_9 DATETIME NO \N
dt_tz1 DATETIME NO \N
dt_tz2 DATETIME NO \N
enm TEXT NO \N
f32 FLOAT NO \N
f64 DOUBLE NO \N
fs BLOB NO \N
i128 TEXT NO \N
i16 SMALLINT NO \N
i256 TEXT NO \N
i32 INTEGER NO \N
i64 BIGINT NO \N
i8 TINYINT NO \N
ip4 TEXT NO \N
ip6 TEXT NO \N
lfs BLOB NO \N
lnfs BLOB YES \N
lns TEXT YES \N
ls TEXT NO \N
m JSON NO \N
m_complex JSON NO \N
mpg TEXT NO \N
ndt64 DATETIME YES \N
ndt64_tz DATETIME YES \N
nested.col1 TEXT NO \N
nested.col2 TEXT NO \N
nfs BLOB YES \N
ns TEXT YES \N
o JSON NO \N
p TEXT NO \N
pg TEXT NO \N
r TEXT NO \N
s TEXT NO \N
sagg TEXT NO \N
t JSON NO \N
ui128 TEXT NO \N
ui16 SMALLINT UNSIGNED NO \N
ui256 TEXT NO \N
ui32 INTEGER UNSIGNED NO \N
ui64 BIGINT UNSIGNED NO \N
ui8 TINYINT UNSIGNED NO \N
uuid CHAR NO \N
-- SHOW COLUMNS with mysql_map_fixed_string_to_text_in_show_columns = 1
a TEXT NO \N
agg TEXT NO \N
b TINYINT NO \N
d DATE NO \N
d32 DATE NO \N
dec128 DECIMAL(38, 2) NO \N
dec128_native DECIMAL(35, 30) NO \N
dec128_text TEXT NO \N
dec256 TEXT NO \N
dec256_native DECIMAL(65, 2) NO \N
dec256_text TEXT NO \N
dec32 DECIMAL(9, 2) NO \N
dec64 DECIMAL(18, 2) NO \N
dt DATETIME NO \N
dt64 DATETIME NO \N
dt64_3_tz1 DATETIME NO \N
dt64_3_tz2 DATETIME NO \N
dt64_6 DATETIME NO \N
dt64_9 DATETIME NO \N
dt_tz1 DATETIME NO \N
dt_tz2 DATETIME NO \N
enm TEXT NO \N
f32 FLOAT NO \N
f64 DOUBLE NO \N
fs TEXT NO \N
i128 TEXT NO \N
i16 SMALLINT NO \N
i256 TEXT NO \N
i32 INTEGER NO \N
i64 BIGINT NO \N
i8 TINYINT NO \N
ip4 TEXT NO \N
ip6 TEXT NO \N
lfs TEXT NO \N
lnfs TEXT YES \N
lns BLOB YES \N
ls BLOB NO \N
m JSON NO \N
m_complex JSON NO \N
mpg TEXT NO \N
ndt64 DATETIME YES \N
ndt64_tz DATETIME YES \N
nested.col1 TEXT NO \N
nested.col2 TEXT NO \N
nfs TEXT YES \N
ns BLOB YES \N
o JSON NO \N
p TEXT NO \N
pg TEXT NO \N
r TEXT NO \N
s BLOB NO \N
sagg TEXT NO \N
t JSON NO \N
ui128 TEXT NO \N
ui16 SMALLINT UNSIGNED NO \N
ui256 TEXT NO \N
ui32 INTEGER UNSIGNED NO \N
ui64 BIGINT UNSIGNED NO \N
ui8 TINYINT UNSIGNED NO \N
uuid CHAR NO \N
-- SHOW COLUMNS with mysql_map_string_to_text_in_show_columns = 1 and without use_mysql_types_in_show_columns
a Array(String) NO \N
agg AggregateFunction(uniq, UInt64) NO \N
b Bool NO \N
d Date NO \N
d32 Date32 NO \N
dec128 Decimal(38, 2) NO \N
dec128_native Decimal(35, 30) NO \N
dec128_text Decimal(35, 31) NO \N
dec256 Decimal(76, 2) NO \N
dec256_native Decimal(65, 2) NO \N
dec256_text Decimal(66, 2) NO \N
dec32 Decimal(9, 2) NO \N
dec64 Decimal(18, 2) NO \N
dt DateTime NO \N
dt64 DateTime64(3) NO \N
dt64_3_tz1 DateTime64(3, \'UTC\') NO \N
dt64_3_tz2 DateTime64(3, \'Asia/Shanghai\') NO \N
dt64_6 DateTime64(6, \'UTC\') NO \N
dt64_9 DateTime64(9, \'UTC\') NO \N
dt_tz1 DateTime(\'UTC\') NO \N
dt_tz2 DateTime(\'Europe/Amsterdam\') NO \N
enm Enum8(\'hallo\' = 1, \'welt\' = 2) NO \N
f32 Float32 NO \N
f64 Float64 NO \N
fs FixedString(3) NO \N
i128 Int128 NO \N
i16 Int16 NO \N
i256 Int256 NO \N
i32 Int32 NO \N
i64 Int64 NO \N
i8 Int8 NO \N
ip4 IPv4 NO \N
ip6 IPv6 NO \N
lfs LowCardinality(FixedString(3)) NO \N
lnfs LowCardinality(Nullable(FixedString(3))) YES \N
lns LowCardinality(Nullable(String)) YES \N
ls LowCardinality(String) NO \N
m Map(Int32, String) NO \N
m_complex Map(Int32, Map(Int32, LowCardinality(Nullable(String)))) NO \N
mpg MultiPolygon NO \N
ndt64 Nullable(DateTime64(3)) YES \N
ndt64_tz Nullable(DateTime64(3, \'Asia/Shanghai\')) YES \N
nested.col1 Array(String) NO \N
nested.col2 Array(UInt32) NO \N
nfs Nullable(FixedString(3)) YES \N
ns Nullable(String) YES \N
o Object(\'json\') NO \N
p Point NO \N
pg Polygon NO \N
r Ring NO \N
s String NO \N
sagg SimpleAggregateFunction(sum, Float64) NO \N
t Tuple(Int32, String, Nullable(String), LowCardinality(String), LowCardinality(Nullable(String)), Tuple(Int32, String)) NO \N
ui128 UInt128 NO \N
ui16 UInt16 NO \N
ui256 UInt256 NO \N
ui32 UInt32 NO \N
ui64 UInt64 NO \N
ui8 UInt8 NO \N
uuid UUID NO \N
-- SHOW COLUMNS with mysql_map_fixed_string_to_text_in_show_columns = 1 and without use_mysql_types_in_show_columns
a Array(String) NO \N
agg AggregateFunction(uniq, UInt64) NO \N
b Bool NO \N
d Date NO \N
d32 Date32 NO \N
dec128 Decimal(38, 2) NO \N
dec128_native Decimal(35, 30) NO \N
dec128_text Decimal(35, 31) NO \N
dec256 Decimal(76, 2) NO \N
dec256_native Decimal(65, 2) NO \N
dec256_text Decimal(66, 2) NO \N
dec32 Decimal(9, 2) NO \N
dec64 Decimal(18, 2) NO \N
dt DateTime NO \N
dt64 DateTime64(3) NO \N
dt64_3_tz1 DateTime64(3, \'UTC\') NO \N
dt64_3_tz2 DateTime64(3, \'Asia/Shanghai\') NO \N
dt64_6 DateTime64(6, \'UTC\') NO \N
dt64_9 DateTime64(9, \'UTC\') NO \N
dt_tz1 DateTime(\'UTC\') NO \N
dt_tz2 DateTime(\'Europe/Amsterdam\') NO \N
enm Enum8(\'hallo\' = 1, \'welt\' = 2) NO \N
f32 Float32 NO \N
f64 Float64 NO \N
fs FixedString(3) NO \N
i128 Int128 NO \N
i16 Int16 NO \N
i256 Int256 NO \N
i32 Int32 NO \N
i64 Int64 NO \N
i8 Int8 NO \N
ip4 IPv4 NO \N
ip6 IPv6 NO \N
lfs LowCardinality(FixedString(3)) NO \N
lnfs LowCardinality(Nullable(FixedString(3))) YES \N
lns LowCardinality(Nullable(String)) YES \N
ls LowCardinality(String) NO \N
m Map(Int32, String) NO \N
m_complex Map(Int32, Map(Int32, LowCardinality(Nullable(String)))) NO \N
mpg MultiPolygon NO \N
ndt64 Nullable(DateTime64(3)) YES \N
ndt64_tz Nullable(DateTime64(3, \'Asia/Shanghai\')) YES \N
nested.col1 Array(String) NO \N
nested.col2 Array(UInt32) NO \N
nfs Nullable(FixedString(3)) YES \N
ns Nullable(String) YES \N
o Object(\'json\') NO \N
p Point NO \N
pg Polygon NO \N
r Ring NO \N
s String NO \N
sagg SimpleAggregateFunction(sum, Float64) NO \N
t Tuple(Int32, String, Nullable(String), LowCardinality(String), LowCardinality(Nullable(String)), Tuple(Int32, String)) NO \N
ui128 UInt128 NO \N
ui16 UInt16 NO \N
ui256 UInt256 NO \N
ui32 UInt32 NO \N
ui64 UInt64 NO \N
ui8 UInt8 NO \N
uuid UUID NO \N

View File

@ -45,6 +45,7 @@ query_plan_optimize_projection
replication_alter_columns_timeout
restore_threads
temporary_live_view_timeout
use_mysql_types_in_show_columns
-- Obsolete merge tree settings
check_delay_period
in_memory_parts_enable_wal