From f41e66b221358f53ff8fa851b216babfbd28e7af Mon Sep 17 00:00:00 2001 From: Arcadiy Ivanov Date: Thu, 5 Mar 2026 00:00:29 -0500 Subject: [PATCH 1/7] MDEV-38975: HEAP engine BLOB/TEXT/JSON/GEOMETRY column support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allow BLOB/TEXT/JSON/GEOMETRY columns in MEMORY (HEAP) engine tables by storing blob data in variable-length continuation record chains within the existing `HP_BLOCK` structure. **Continuation runs**: blob data is split across contiguous sequences of `recbuffer`-sized records. Each run stores a 10-byte header (`next_cont` pointer + `run_rec_count`) in the first record; inner records (rec 1..N-1) have no flags byte — full `recbuffer` payload. Runs are linked via `next_cont` pointers. Individual runs are capped at 65,535 records (`uint16` format limit); larger blobs are automatically split into multiple runs. **Zero-copy reads**: single-run blobs return pointers directly into `HP_BLOCK` records, avoiding `blob_buff` reassembly entirely: - Case A (`run_rec_count == 1`): return `chain + HP_CONT_HEADER_SIZE` - Case B (`HP_ROW_CONT_ZEROCOPY` flag): return `chain + recbuffer` - Case C (multi-run): walk chain, reassemble into `blob_buff` `HP_INFO::has_zerocopy_blobs` tracks zero-copy state; used by `heap_update()` to refresh the caller's record buffer after freeing old chains, preventing dangling pointers. **Free list scavenging**: on insert, the free list is walked read-only (peek) tracking contiguous groups in descending address order (LIFO). Qualifying groups (>= `min_run_records`) are unlinked and used. The first non-qualifying group terminates the scan — remaining data is allocated from the block tail. The free list is never disturbed when no qualifying group is found. **Record counting**: new `HP_SHARE::total_records` tracks all physical records (primary + continuation). `HP_SHARE::records` remains logical (primary-only) to preserve linear hash bucket mapping correctness. **Scan/check batch-skip**: `heap_scan()` and `heap_check_heap()` read `run_rec_count` from rec 0 and skip entire continuation runs at once. **Hash functions**: `hp_rec_hashnr()`, `hp_rec_key_cmp()`, `hp_key_cmp()`, `hp_make_key()` updated to handle `HA_BLOB_PART` key segments — reading actual blob data via pointer dereference or chain materialization. **SQL layer**: `choose_engine()` no longer rejects HEAP for blob tables (replaced `blob_fields` check with `reclength > HA_MAX_REC_LENGTH`). `remove_duplicates()` routes HEAP+blob to `remove_dup_with_compare()`. `ha_heap::remember_rnd_pos()` / `restart_rnd_next()` implemented for DISTINCT deduplication support. Fixed undefined behavior in `test_if_cheaper_ordering()` where `select_limit/fanout` could overflow to infinity — capped at `HA_POS_ERROR`. https://jira.mariadb.org/browse/MDEV-38975 --- include/heap.h | 18 +- mysql-test/include/mtr_check.sql | 2 +- mysql-test/main/blob_sj_test.result | 29 + mysql-test/main/blob_sj_test.test | 26 + mysql-test/main/create.result | 9 +- mysql-test/main/create.test | 3 +- mysql-test/main/cte_recursive.test | 2 + mysql-test/main/derived_view.result | 2 +- mysql-test/main/distinct.result | 2 +- mysql-test/main/distinct.test | 3 + mysql-test/main/group_by.result | 4 +- mysql-test/main/group_by.test | 4 +- mysql-test/main/group_min_max_innodb.result | 8 +- mysql-test/main/group_min_max_innodb.test | 1 + mysql-test/main/information_schema.result | 2 +- .../main/information_schema_parameters.result | 2 +- .../main/information_schema_part.result | 2 +- mysql-test/main/information_schema_part.test | 2 +- .../main/information_schema_routines.result | 2 +- mysql-test/main/intersect_all.result | 6 +- mysql-test/main/intersect_all.test | 3 + mysql-test/main/select.result | 22 +- mysql-test/main/select.test | 3 +- mysql-test/main/select_jcl6.result | 22 +- mysql-test/main/select_pkeycache.result | 22 +- mysql-test/main/temp_table_symlink.result | 2 - mysql-test/main/temp_table_symlink.test | 5 - mysql-test/suite/funcs_1/r/is_columns.result | 2 +- mysql-test/suite/funcs_1/r/is_events.result | 2 +- mysql-test/suite/funcs_1/r/is_routines.result | 2 +- .../funcs_1/r/is_routines_embedded.result | 8 +- .../suite/funcs_1/r/is_tables_is.result | 104 +- .../funcs_1/r/is_tables_is_embedded.result | 104 +- mysql-test/suite/funcs_1/r/is_triggers.result | 2 +- .../funcs_1/r/is_triggers_embedded.result | 2 +- mysql-test/suite/funcs_1/r/is_views.result | 2 +- .../suite/funcs_1/r/is_views_embedded.result | 2 +- .../funcs_1/r/processlist_priv_no_prot.result | 4 +- .../funcs_1/r/processlist_priv_ps.result | 4 +- .../funcs_1/r/processlist_val_no_prot.result | 2 +- .../suite/funcs_1/r/processlist_val_ps.result | 2 +- mysql-test/suite/heap/blob_dedup.result | 15 + mysql-test/suite/heap/blob_dedup.test | 10 + mysql-test/suite/heap/heap_blob.result | 602 ++++++++++++ mysql-test/suite/heap/heap_blob.test | 439 +++++++++ mysql-test/suite/heap/heap_geometry.result | 75 ++ mysql-test/suite/heap/heap_geometry.test | 65 ++ .../suite/innodb_fts/r/innodb-fts-ddl.result | 2 +- mysql-test/suite/innodb_fts/r/misc.result | 10 +- .../suite/innodb_fts/t/innodb-fts-ddl.test | 2 +- mysql-test/suite/innodb_fts/t/misc.test | 10 +- .../transaction_nested_events_verifier.inc | 2 +- .../r/transaction_nested_events.result | 16 +- .../plugins/r/sql_error_log_withdbinfo.result | 6 +- .../r/tmp_disk_table_size_basic.result | 104 +- .../sys_vars/t/tmp_disk_table_size_basic.test | 2 +- .../r/v_schema_redundant_indexes.result | 2 +- sql/item_func.cc | 45 +- sql/item_sum.cc | 27 +- sql/sql_expression_cache.cc | 17 + sql/sql_select.cc | 72 +- storage/heap/CMakeLists.txt | 2 +- storage/heap/_check.c | 19 +- storage/heap/ha_heap.cc | 87 +- storage/heap/ha_heap.h | 8 +- storage/heap/heapdef.h | 101 +- storage/heap/hp_blob.c | 885 ++++++++++++++++++ storage/heap/hp_clear.c | 3 +- storage/heap/hp_close.c | 1 + storage/heap/hp_create.c | 94 +- storage/heap/hp_delete.c | 12 +- storage/heap/hp_extra.c | 6 + storage/heap/hp_hash.c | 181 +++- storage/heap/hp_rfirst.c | 2 + storage/heap/hp_rkey.c | 2 + storage/heap/hp_rlast.c | 2 + storage/heap/hp_rnext.c | 2 + storage/heap/hp_rprev.c | 2 + storage/heap/hp_rrnd.c | 2 + storage/heap/hp_rsame.c | 2 + storage/heap/hp_scan.c | 51 +- storage/heap/hp_static.c | 4 +- storage/heap/hp_update.c | 98 +- storage/heap/hp_write.c | 76 +- 84 files changed, 3317 insertions(+), 298 deletions(-) create mode 100644 mysql-test/main/blob_sj_test.result create mode 100644 mysql-test/main/blob_sj_test.test create mode 100644 mysql-test/suite/heap/blob_dedup.result create mode 100644 mysql-test/suite/heap/blob_dedup.test create mode 100644 mysql-test/suite/heap/heap_blob.result create mode 100644 mysql-test/suite/heap/heap_blob.test create mode 100644 mysql-test/suite/heap/heap_geometry.result create mode 100644 mysql-test/suite/heap/heap_geometry.test create mode 100644 storage/heap/hp_blob.c diff --git a/include/heap.h b/include/heap.h index 3fac752abd028..633a33e53fd0f 100644 --- a/include/heap.h +++ b/include/heap.h @@ -131,6 +131,12 @@ typedef struct st_hp_keydef /* Key definition with open */ uint (*get_key_length)(struct st_hp_keydef *keydef, const uchar *key); } HP_KEYDEF; +typedef struct st_hp_blob_desc +{ + uint offset; /* Byte offset of blob descriptor within record buffer */ + uint packlength; /* 1, 2, 3, or 4: length prefix size */ +} HP_BLOB_DESC; + typedef struct st_heap_share { HP_BLOCK block; @@ -138,14 +144,14 @@ typedef struct st_heap_share ulonglong data_length,index_length,max_table_size; ulonglong auto_increment; ulong min_records,max_records; /* Params to open */ - ulong records; /* records */ + ulong records; /* Logical (primary) record count */ ulong blength; /* records rounded up to 2^n */ ulong deleted; /* Deleted records in database */ uint key_stat_version; /* version to indicate insert/delete */ uint key_version; /* Updated on key change */ uint file_version; /* Update on clear */ uint reclength; /* Length of one record */ - uint visible; /* Offset to the visible/deleted mark */ + uint visible; /* Offset to the flags byte (active/deleted/continuation) */ uint changed; uint keys,max_key_length; uint currently_disabled_keys; /* saved value from "keys" when disabled */ @@ -156,6 +162,9 @@ typedef struct st_heap_share THR_LOCK lock; my_bool delete_on_close; my_bool internal; /* Internal temporary table */ + HP_BLOB_DESC *blob_descs; /* Array of blob column descriptors */ + uint blob_count; /* Number of blob columns */ + ulong total_records; /* All active records (primary + blob continuation) */ LIST open_list; uint auto_key; uint auto_key_type; /* real type of the auto key segment */ @@ -181,6 +190,9 @@ typedef struct st_heap_info uint file_version; /* Version at scan */ uint lastkey_len; my_bool implicit_emptied; + uchar *blob_buff; /* Reassembly buffer for blob reads */ + uint32 blob_buff_len; /* Current allocated size of blob_buff */ + my_bool has_zerocopy_blobs; /* Last hp_read_blobs produced zero-copy ptrs */ THR_LOCK_DATA lock; LIST open_list; } HP_INFO; @@ -204,6 +216,8 @@ typedef struct st_heap_create_info open_count to 1. Is only looked at if not internal_table. */ my_bool pin_share; + HP_BLOB_DESC *blob_descs; + uint blob_count; } HP_CREATE_INFO; /* Prototypes for heap-functions */ diff --git a/mysql-test/include/mtr_check.sql b/mysql-test/include/mtr_check.sql index 360f7b40bb864..46b420da4ae34 100644 --- a/mysql-test/include/mtr_check.sql +++ b/mysql-test/include/mtr_check.sql @@ -66,7 +66,7 @@ BEGIN collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' - ORDER BY columns_in_mysql; + ORDER BY columns_in_mysql, ordinal_position; -- Dump all events, there should be none SELECT * FROM INFORMATION_SCHEMA.EVENTS; diff --git a/mysql-test/main/blob_sj_test.result b/mysql-test/main/blob_sj_test.result new file mode 100644 index 0000000000000..78f78b1b9bd5f --- /dev/null +++ b/mysql-test/main/blob_sj_test.result @@ -0,0 +1,29 @@ +set optimizer_switch='materialization=on,in_to_exists=off,semijoin=off'; +set @blob_len = 16; +set @prefix_len = 6; +set @suffix_len = @blob_len - @prefix_len; +create table t1 (a1 blob(16), a2 blob(16)); +create table t2 (b1 blob(16), b2 blob(16)); +insert into t1 values +(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len))); +insert into t1 values +(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len))); +insert into t1 values +(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len))); +insert into t2 values +(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len))); +insert into t2 values +(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len))); +insert into t2 values +(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len))); +explain extended select left(a1,7), left(a2,7) from t1 where a1 in (select b1 from t2 where b1 > '0'); +id select_type table type possible_keys key key_len ref rows filtered Extra +1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where +2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 3 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select left(`test`.`t1`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1`.`a2`,7) AS `left(a2,7)` from `test`.`t1` where <`test`.`t1`.`a1`>((`test`.`t1`.`a1`,(/* select#2 */ select `test`.`t2`.`b1` from `test`.`t2` where `test`.`t2`.`b1` > '0' and (`test`.`t1`.`a1`) = `test`.`t2`.`b1`))) +select left(a1,7), left(a2,7) from t1 where a1 in (select b1 from t2 where b1 > '0'); +left(a1,7) left(a2,7) +1 - 01x 2 - 01x +1 - 02x 2 - 02x +drop table t1, t2; diff --git a/mysql-test/main/blob_sj_test.test b/mysql-test/main/blob_sj_test.test new file mode 100644 index 0000000000000..447d856adce4e --- /dev/null +++ b/mysql-test/main/blob_sj_test.test @@ -0,0 +1,26 @@ +set optimizer_switch='materialization=on,in_to_exists=off,semijoin=off'; +set @blob_len = 16; +set @prefix_len = 6; +set @suffix_len = @blob_len - @prefix_len; + +create table t1 (a1 blob(16), a2 blob(16)); +create table t2 (b1 blob(16), b2 blob(16)); + +insert into t1 values +(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len))); +insert into t1 values +(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len))); +insert into t1 values +(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len))); + +insert into t2 values +(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len))); +insert into t2 values +(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len))); +insert into t2 values +(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len))); + +explain extended select left(a1,7), left(a2,7) from t1 where a1 in (select b1 from t2 where b1 > '0'); +select left(a1,7), left(a2,7) from t1 where a1 in (select b1 from t2 where b1 > '0'); + +drop table t1, t2; diff --git a/mysql-test/main/create.result b/mysql-test/main/create.result index 4bae81878103b..ba5836e2999f0 100644 --- a/mysql-test/main/create.result +++ b/mysql-test/main/create.result @@ -30,10 +30,7 @@ Note 1051 Unknown table 'test.t1,test.t2' create table t1 (b char(0) not null, index(b)); ERROR 42000: The storage engine MyISAM can't index column `b` create table t1 (a int not null,b text) engine=heap; -ERROR 42000: Storage engine MEMORY doesn't support BLOB/TEXT columns -drop table if exists t1; -Warnings: -Note 1051 Unknown table 'test.t1' +drop table t1; create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) engine=heap; ERROR 42000: Incorrect table definition; there can be only one auto column and it must be defined as a key create table not_existing_database.test (a int); @@ -1089,7 +1086,7 @@ t1 CREATE TABLE `t1` ( `QUERY_ID` bigint(4) NOT NULL, `INFO_BINARY` blob, `TID` bigint(4) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci drop table t1; create temporary table t1 like information_schema.processlist; show create table t1; @@ -1113,7 +1110,7 @@ t1 CREATE TEMPORARY TABLE `t1` ( `QUERY_ID` bigint(4) NOT NULL, `INFO_BINARY` blob, `TID` bigint(4) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci drop table t1; create table t1 like information_schema.character_sets; show create table t1; diff --git a/mysql-test/main/create.test b/mysql-test/main/create.test index dada6963fdb2e..80381a60e68c3 100644 --- a/mysql-test/main/create.test +++ b/mysql-test/main/create.test @@ -30,9 +30,8 @@ create table t2 select auto+1 from t1; drop table if exists t1,t2; --error ER_WRONG_KEY_COLUMN create table t1 (b char(0) not null, index(b)); ---error ER_TABLE_CANT_HANDLE_BLOB create table t1 (a int not null,b text) engine=heap; -drop table if exists t1; +drop table t1; --error ER_WRONG_AUTO_KEY create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) engine=heap; diff --git a/mysql-test/main/cte_recursive.test b/mysql-test/main/cte_recursive.test index d6fb2a47884ed..3ce3c0e9d964a 100644 --- a/mysql-test/main/cte_recursive.test +++ b/mysql-test/main/cte_recursive.test @@ -3212,6 +3212,8 @@ show create table t2; --eval insert ignore into t2 $query; drop table t2; set @@sql_mode=""; +# Rows with identical (level, mid) due to overflow have non-deterministic order +--sorted_result --eval $query --eval create table t2 as $query; show create table t2; diff --git a/mysql-test/main/derived_view.result b/mysql-test/main/derived_view.result index 3f3f68154882c..c673d201329b8 100644 --- a/mysql-test/main/derived_view.result +++ b/mysql-test/main/derived_view.result @@ -2372,7 +2372,7 @@ GROUP BY TABLE_SCHEMA) AS UNIQUES ON ( COLUMNS.TABLE_SCHEMA = UNIQUES.TABLE_SCHEMA); id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY COLUMNS ALL NULL NULL NULL NULL NULL Open_frm_only; Scanned all databases -1 PRIMARY ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join) +1 PRIMARY ref key0 key0 194 information_schema.COLUMNS.TABLE_SCHEMA 2 2 DERIVED STATISTICS ALL NULL NULL NULL NULL NULL Open_frm_only; Scanned all databases; Using filesort SELECT COUNT(*) > 0 FROM INFORMATION_SCHEMA.COLUMNS diff --git a/mysql-test/main/distinct.result b/mysql-test/main/distinct.result index d8646abfb43cb..2f76fcfbc924a 100644 --- a/mysql-test/main/distinct.result +++ b/mysql-test/main/distinct.result @@ -1189,7 +1189,7 @@ insert into t1 values (1, 'Aa123456', 'abc'), (2, 'Bb7897777', 'def'), (3, 'Cc01287', 'xyz'), (5, 'd12345', 'efg'); select distinct if(sum(a), b, 0) from t1 group by value(c) with rollup; if(sum(a), b, 0) -Aa123456 +SOME_B_VALUE drop table t1; # # end of 10.5 tests diff --git a/mysql-test/main/distinct.test b/mysql-test/main/distinct.test index 48d5f4bb8fae6..db9bfb6b5abe2 100644 --- a/mysql-test/main/distinct.test +++ b/mysql-test/main/distinct.test @@ -915,6 +915,9 @@ create table t1 (a int, b longtext, c varchar(18)); insert into t1 values (1, 'Aa123456', 'abc'), (2, 'Bb7897777', 'def'), (3, 'Cc01287', 'xyz'), (5, 'd12345', 'efg'); +# ROLLUP row's b value is indeterminate (depends on last group processed), +# which varies by temp table engine (HEAP vs Aria). Mask the value. +--replace_regex /(Aa123456|Bb7897777|Cc01287|d12345)/SOME_B_VALUE/ select distinct if(sum(a), b, 0) from t1 group by value(c) with rollup; drop table t1; diff --git a/mysql-test/main/group_by.result b/mysql-test/main/group_by.result index 17f42fe36f36b..8dcbd16ccabcd 100644 --- a/mysql-test/main/group_by.result +++ b/mysql-test/main/group_by.result @@ -2510,10 +2510,10 @@ SELECT f3, MIN(f2) FROM t1 GROUP BY f1 LIMIT 1; f3 MIN(f2) blob NULL DROP TABLE t1; -the value below *must* be 1 +the value below *must* be 0 (HEAP supports blobs) show status like 'Created_tmp_disk_tables'; Variable_name Value -Created_tmp_disk_tables 1 +Created_tmp_disk_tables 0 # # Bug #1002146: Unneeded filesort if usage of join buffer is not allowed # (bug mdev-645) diff --git a/mysql-test/main/group_by.test b/mysql-test/main/group_by.test index 19f2e6582ae44..d3aa21d6f397e 100644 --- a/mysql-test/main/group_by.test +++ b/mysql-test/main/group_by.test @@ -1671,14 +1671,14 @@ DROP TABLE t1, t2; --disable_ps2_protocol --disable_view_protocol --disable_cursor_protocol -FLUSH STATUS; # this test case *must* use Aria temp tables +FLUSH STATUS; CREATE TABLE t1 (f1 INT, f2 decimal(20,1), f3 blob); INSERT INTO t1 values(11,NULL,'blob'),(11,NULL,'blob'); SELECT f3, MIN(f2) FROM t1 GROUP BY f1 LIMIT 1; DROP TABLE t1; ---echo the value below *must* be 1 +--echo the value below *must* be 0 (HEAP supports blobs) show status like 'Created_tmp_disk_tables'; --enable_cursor_protocol --enable_view_protocol diff --git a/mysql-test/main/group_min_max_innodb.result b/mysql-test/main/group_min_max_innodb.result index 27656374aee38..c65bbd5e7e602 100644 --- a/mysql-test/main/group_min_max_innodb.result +++ b/mysql-test/main/group_min_max_innodb.result @@ -303,10 +303,10 @@ CREATE TABLE t2 (`voter_id` int(10) unsigned NOT NULL DEFAULT '0', insert into t2 values (1,repeat("a",1000)),(2,repeat("a",1000)),(3,repeat("b",1000)),(4,repeat("c",1000)),(4,repeat("b",1000)); SELECT GROUP_CONCAT(t1.language_id SEPARATOR ',') AS `translation_resources`, `d`.`serialized_c` FROM t2 AS `d` LEFT JOIN t1 ON `d`.`voter_id` = t1.`voter_id` GROUP BY `d`.`voter_id` ORDER BY 10-d.voter_id+RAND()*0; translation_resources serialized_c -NULL cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc -NULL bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -NULL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -NULL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +NULL # +NULL # +NULL # +NULL # drop table t1,t2; # # MDEV-30143: Segfault on select query using index for group-by and filesort diff --git a/mysql-test/main/group_min_max_innodb.test b/mysql-test/main/group_min_max_innodb.test index 33a3a8888a5d8..99f8457e163fe 100644 --- a/mysql-test/main/group_min_max_innodb.test +++ b/mysql-test/main/group_min_max_innodb.test @@ -248,6 +248,7 @@ CREATE TABLE t1 (`voter_id` int(11) unsigned NOT NULL, CREATE TABLE t2 (`voter_id` int(10) unsigned NOT NULL DEFAULT '0', `serialized_c` mediumblob) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into t2 values (1,repeat("a",1000)),(2,repeat("a",1000)),(3,repeat("b",1000)),(4,repeat("c",1000)),(4,repeat("b",1000)); +--replace_column 2 # SELECT GROUP_CONCAT(t1.language_id SEPARATOR ',') AS `translation_resources`, `d`.`serialized_c` FROM t2 AS `d` LEFT JOIN t1 ON `d`.`voter_id` = t1.`voter_id` GROUP BY `d`.`voter_id` ORDER BY 10-d.voter_id+RAND()*0; drop table t1,t2; diff --git a/mysql-test/main/information_schema.result b/mysql-test/main/information_schema.result index 5d9f2d7322f12..f7d43fc58e5a6 100644 --- a/mysql-test/main/information_schema.result +++ b/mysql-test/main/information_schema.result @@ -709,7 +709,7 @@ select TABLE_NAME,TABLE_TYPE,ENGINE from information_schema.tables where table_schema='information_schema' limit 2; TABLE_NAME TABLE_TYPE ENGINE -ALL_PLUGINS SYSTEM VIEW Aria +ALL_PLUGINS SYSTEM VIEW MEMORY APPLICABLE_ROLES SYSTEM VIEW MEMORY show tables from information_schema like "T%"; Tables_in_information_schema (T%) diff --git a/mysql-test/main/information_schema_parameters.result b/mysql-test/main/information_schema_parameters.result index 1d00c992e5c8f..0abc0f4f38838 100644 --- a/mysql-test/main/information_schema_parameters.result +++ b/mysql-test/main/information_schema_parameters.result @@ -19,7 +19,7 @@ PARAMETERS CREATE TEMPORARY TABLE `PARAMETERS` ( `COLLATION_NAME` varchar(64), `DTD_IDENTIFIER` longtext NOT NULL, `ROUTINE_TYPE` varchar(9) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SELECT * FROM information_schema.columns WHERE table_schema = 'information_schema' AND table_name = 'parameters' diff --git a/mysql-test/main/information_schema_part.result b/mysql-test/main/information_schema_part.result index 1c5b9333550ef..005314612dc68 100644 --- a/mysql-test/main/information_schema_part.result +++ b/mysql-test/main/information_schema_part.result @@ -61,7 +61,7 @@ partition x2 values less than (5) ( subpartition x21 tablespace t1, subpartition x22 tablespace t2) ); -select * from information_schema.partitions where table_schema="test" order by table_name, partition_name; +select * from information_schema.partitions where table_schema="test" order by table_name, partition_name, subpartition_name; TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME def test t1 x1 x11 1 1 RANGE HASH `a` `a` + `b` 1 0 0 0 # 1024 0 # # NULL NULL default NULL def test t1 x1 x12 1 2 RANGE HASH `a` `a` + `b` 1 0 0 0 # 1024 0 # # NULL NULL default NULL diff --git a/mysql-test/main/information_schema_part.test b/mysql-test/main/information_schema_part.test index 3741de611505a..02af5be6d02f8 100644 --- a/mysql-test/main/information_schema_part.test +++ b/mysql-test/main/information_schema_part.test @@ -63,7 +63,7 @@ subpartition by key (a) subpartition x22 tablespace t2) ); --replace_column 16 # 19 # 20 # -select * from information_schema.partitions where table_schema="test" order by table_name, partition_name; +select * from information_schema.partitions where table_schema="test" order by table_name, partition_name, subpartition_name; drop table t1,t2; create table t1 ( diff --git a/mysql-test/main/information_schema_routines.result b/mysql-test/main/information_schema_routines.result index b5b43db71cec4..4d73258b4941d 100644 --- a/mysql-test/main/information_schema_routines.result +++ b/mysql-test/main/information_schema_routines.result @@ -36,7 +36,7 @@ ROUTINES CREATE TEMPORARY TABLE `ROUTINES` ( `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, `COLLATION_CONNECTION` varchar(64) NOT NULL, `DATABASE_COLLATION` varchar(64) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SELECT * FROM information_schema.columns WHERE table_schema = 'information_schema' AND table_name = 'routines' diff --git a/mysql-test/main/intersect_all.result b/mysql-test/main/intersect_all.result index 028a76944b38d..d2c7e5932a88d 100644 --- a/mysql-test/main/intersect_all.result +++ b/mysql-test/main/intersect_all.result @@ -718,13 +718,13 @@ t4 CREATE TABLE `t4` ( drop tables t4; (select a,b from t1) intersect all (select c,d from t2) intersect all (select e,f from t3) union all (select 4,4); a b -4 4 2 2 2 2 +4 4 (select a,b from t1) intersect all (select c,d from t2) intersect all (select e,f from t3) union all (select 4,4) except all (select 2,2); a b -4 4 2 2 +4 4 drop tables t1,t2,t3; create table t1 (a int, b int); create table t2 (c int, d int); @@ -779,9 +779,9 @@ insert into t3 values (3,3); e f 3 3 3 3 +4 4 5 5 6 6 -4 4 explain extended (select e,f from t3) intersect all (select c,d from t2) union all (select a,b from t1) union all (select 4,4); id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t3 ALL NULL NULL NULL NULL 3 100.00 diff --git a/mysql-test/main/intersect_all.test b/mysql-test/main/intersect_all.test index c3dc4e123f0e7..d28d7e643d50d 100644 --- a/mysql-test/main/intersect_all.test +++ b/mysql-test/main/intersect_all.test @@ -108,8 +108,10 @@ show create table t4; drop tables t4; +--sorted_result (select a,b from t1) intersect all (select c,d from t2) intersect all (select e,f from t3) union all (select 4,4); +--sorted_result (select a,b from t1) intersect all (select c,d from t2) intersect all (select e,f from t3) union all (select 4,4) except all (select 2,2); drop tables t1,t2,t3; @@ -149,6 +151,7 @@ explain extended (select a,b from t1) union all (select c,d from t2) intersect a insert into t2 values (3,3); insert into t3 values (3,3); +--sorted_result (select e,f from t3) intersect all (select c,d from t2) union all (select a,b from t1) union all (select 4,4); explain extended (select e,f from t3) intersect all (select c,d from t2) union all (select a,b from t1) union all (select 4,4); diff --git a/mysql-test/main/select.result b/mysql-test/main/select.result index cfa31f507188a..aeb12170bb82a 100644 --- a/mysql-test/main/select.result +++ b/mysql-test/main/select.result @@ -576,18 +576,18 @@ bedlam 1 bedpost 1 boasted 1 set tmp_memory_table_size=default; -select distinct fld3,repeat("a",length(fld3)),count(*) from t2 group by companynr,fld3 limit 100,10; +select distinct fld3,repeat("a",length(fld3)),count(*) from t2 group by companynr,fld3 order by fld3 limit 100,10; fld3 repeat("a",length(fld3)) count(*) -circus aaaaaa 1 -cited aaaaa 1 -Colombo aaaaaaa 1 -congresswoman aaaaaaaaaaaaa 1 -contrition aaaaaaaaaa 1 -corny aaaaa 1 -cultivation aaaaaaaaaaa 1 -definiteness aaaaaaaaaaaa 1 -demultiplex aaaaaaaaaaa 1 -disappointing aaaaaaaaaaaaa 1 +Baird aaaaa 1 +balled aaaaaa 1 +ballgown aaaaaaaa 1 +Baltimorean aaaaaaaaaaa 1 +bankruptcies aaaaaaaaaaaa 1 +Barry aaaaa 1 +batting aaaaaaa 1 +beaner aaaaaa 1 +beasts aaaaaa 1 +beaters aaaaaaa 1 select distinct companynr,rtrim(space(512+companynr)) from t3 order by 1,2; companynr rtrim(space(512+companynr)) 37 diff --git a/mysql-test/main/select.test b/mysql-test/main/select.test index ac9753a86bd27..300f08c543454 100644 --- a/mysql-test/main/select.test +++ b/mysql-test/main/select.test @@ -1442,7 +1442,8 @@ select distinct fld3,count(*) from t2 group by companynr,fld3 limit 10; set tmp_memory_table_size=0; # force on-disk tmp table select distinct fld3,count(*) from t2 group by companynr,fld3 limit 10; set tmp_memory_table_size=default; -select distinct fld3,repeat("a",length(fld3)),count(*) from t2 group by companynr,fld3 limit 100,10; +# ORDER BY fld3 ensures deterministic LIMIT window regardless of temp table engine +select distinct fld3,repeat("a",length(fld3)),count(*) from t2 group by companynr,fld3 order by fld3 limit 100,10; # # A big order by that should trigger a merge in filesort diff --git a/mysql-test/main/select_jcl6.result b/mysql-test/main/select_jcl6.result index cf8f4f26ae067..0809f5cadfb82 100644 --- a/mysql-test/main/select_jcl6.result +++ b/mysql-test/main/select_jcl6.result @@ -587,18 +587,18 @@ bedlam 1 bedpost 1 boasted 1 set tmp_memory_table_size=default; -select distinct fld3,repeat("a",length(fld3)),count(*) from t2 group by companynr,fld3 limit 100,10; +select distinct fld3,repeat("a",length(fld3)),count(*) from t2 group by companynr,fld3 order by fld3 limit 100,10; fld3 repeat("a",length(fld3)) count(*) -circus aaaaaa 1 -cited aaaaa 1 -Colombo aaaaaaa 1 -congresswoman aaaaaaaaaaaaa 1 -contrition aaaaaaaaaa 1 -corny aaaaa 1 -cultivation aaaaaaaaaaa 1 -definiteness aaaaaaaaaaaa 1 -demultiplex aaaaaaaaaaa 1 -disappointing aaaaaaaaaaaaa 1 +Baird aaaaa 1 +balled aaaaaa 1 +ballgown aaaaaaaa 1 +Baltimorean aaaaaaaaaaa 1 +bankruptcies aaaaaaaaaaaa 1 +Barry aaaaa 1 +batting aaaaaaa 1 +beaner aaaaaa 1 +beasts aaaaaa 1 +beaters aaaaaaa 1 select distinct companynr,rtrim(space(512+companynr)) from t3 order by 1,2; companynr rtrim(space(512+companynr)) 37 diff --git a/mysql-test/main/select_pkeycache.result b/mysql-test/main/select_pkeycache.result index cfa31f507188a..aeb12170bb82a 100644 --- a/mysql-test/main/select_pkeycache.result +++ b/mysql-test/main/select_pkeycache.result @@ -576,18 +576,18 @@ bedlam 1 bedpost 1 boasted 1 set tmp_memory_table_size=default; -select distinct fld3,repeat("a",length(fld3)),count(*) from t2 group by companynr,fld3 limit 100,10; +select distinct fld3,repeat("a",length(fld3)),count(*) from t2 group by companynr,fld3 order by fld3 limit 100,10; fld3 repeat("a",length(fld3)) count(*) -circus aaaaaa 1 -cited aaaaa 1 -Colombo aaaaaaa 1 -congresswoman aaaaaaaaaaaaa 1 -contrition aaaaaaaaaa 1 -corny aaaaa 1 -cultivation aaaaaaaaaaa 1 -definiteness aaaaaaaaaaaa 1 -demultiplex aaaaaaaaaaa 1 -disappointing aaaaaaaaaaaaa 1 +Baird aaaaa 1 +balled aaaaaa 1 +ballgown aaaaaaaa 1 +Baltimorean aaaaaaaaaaa 1 +bankruptcies aaaaaaaaaaaa 1 +Barry aaaaa 1 +batting aaaaaaa 1 +beaner aaaaaa 1 +beasts aaaaaa 1 +beaters aaaaaaa 1 select distinct companynr,rtrim(space(512+companynr)) from t3 order by 1,2; companynr rtrim(space(512+companynr)) 37 diff --git a/mysql-test/main/temp_table_symlink.result b/mysql-test/main/temp_table_symlink.result index 1c5c68170ff8a..6add9191b0478 100644 --- a/mysql-test/main/temp_table_symlink.result +++ b/mysql-test/main/temp_table_symlink.result @@ -4,8 +4,6 @@ create temporary table t2 (a int); Got one of the listed errors create temporary table t3 (a int) engine=Aria; Got one of the listed errors -select * from information_schema.columns where table_schema='test'; -Got one of the listed errors flush tables; select * from d1; a diff --git a/mysql-test/main/temp_table_symlink.test b/mysql-test/main/temp_table_symlink.test index a0be38d907300..2428d137dd5ed 100644 --- a/mysql-test/main/temp_table_symlink.test +++ b/mysql-test/main/temp_table_symlink.test @@ -23,11 +23,6 @@ error 1,1030; create temporary table t2 (a int); error 1,1030; create temporary table t3 (a int) engine=Aria; ---disable_view_protocol -error 1,1030; -select * from information_schema.columns where table_schema='test'; ---enable_view_protocol - flush tables; select * from d1; drop temporary table t1; diff --git a/mysql-test/suite/funcs_1/r/is_columns.result b/mysql-test/suite/funcs_1/r/is_columns.result index 3d03a1d288aca..75996b16f4dc7 100644 --- a/mysql-test/suite/funcs_1/r/is_columns.result +++ b/mysql-test/suite/funcs_1/r/is_columns.result @@ -75,7 +75,7 @@ COLUMNS CREATE TEMPORARY TABLE `COLUMNS` ( `COLUMN_COMMENT` varchar(1024) NOT NULL, `IS_GENERATED` varchar(6) NOT NULL, `GENERATION_EXPRESSION` longtext -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.COLUMNS; Field Type Null Key Default Extra TABLE_CATALOG varchar(512) NO NULL diff --git a/mysql-test/suite/funcs_1/r/is_events.result b/mysql-test/suite/funcs_1/r/is_events.result index 7df12ee27717e..59afb2d81f2e9 100644 --- a/mysql-test/suite/funcs_1/r/is_events.result +++ b/mysql-test/suite/funcs_1/r/is_events.result @@ -79,7 +79,7 @@ EVENTS CREATE TEMPORARY TABLE `EVENTS` ( `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, `COLLATION_CONNECTION` varchar(64) NOT NULL, `DATABASE_COLLATION` varchar(64) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.EVENTS; Field Type Null Key Default Extra EVENT_CATALOG varchar(64) NO NULL diff --git a/mysql-test/suite/funcs_1/r/is_routines.result b/mysql-test/suite/funcs_1/r/is_routines.result index 51477e441ad07..1660a2caabb8f 100644 --- a/mysql-test/suite/funcs_1/r/is_routines.result +++ b/mysql-test/suite/funcs_1/r/is_routines.result @@ -94,7 +94,7 @@ ROUTINES CREATE TEMPORARY TABLE `ROUTINES` ( `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, `COLLATION_CONNECTION` varchar(64) NOT NULL, `DATABASE_COLLATION` varchar(64) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.ROUTINES; Field Type Null Key Default Extra SPECIFIC_NAME varchar(64) NO NULL diff --git a/mysql-test/suite/funcs_1/r/is_routines_embedded.result b/mysql-test/suite/funcs_1/r/is_routines_embedded.result index 817817b01d238..b46f520bc489d 100644 --- a/mysql-test/suite/funcs_1/r/is_routines_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_routines_embedded.result @@ -94,7 +94,7 @@ ROUTINES CREATE TEMPORARY TABLE `ROUTINES` ( `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, `COLLATION_CONNECTION` varchar(64) NOT NULL, `DATABASE_COLLATION` varchar(64) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.ROUTINES; Field Type Null Key Default Extra SPECIFIC_NAME varchar(64) NO NULL @@ -197,7 +197,7 @@ sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NUL SELECT * FROM db_datadict_2.res_6_408002_2; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci -check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_LOG_FILE_BUFFERING' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' AND variable_name != 'THREAD_POOL_SIZE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert') AND TRIGGER_SCHEMA != 'sys'; SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA != 'sys'; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_STATUS != 'INACTIVE'; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci +check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_LOG_FILE_BUFFERING' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' AND variable_name != 'THREAD_POOL_SIZE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql, ordinal_position; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert') AND TRIGGER_SCHEMA != 'sys'; SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA != 'sys'; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_STATUS != 'INACTIVE'; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0, SQL_SAFE_UPDATES=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci AddGeometryColumn def mysql AddGeometryColumn PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL begin set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' ADD ', geometry_column,' GEOMETRY REF_SYSTEM_ID=', t_srid); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss mariadb.sys@localhost latin1 latin1_swedish_ci latin1_swedish_ci @@ -213,7 +213,7 @@ sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NUL SELECT * FROM db_datadict_2.res_6_408002_2; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci -check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_LOG_FILE_BUFFERING' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' AND variable_name != 'THREAD_POOL_SIZE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert') AND TRIGGER_SCHEMA != 'sys'; SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA != 'sys'; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_STATUS != 'INACTIVE'; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci +check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_LOG_FILE_BUFFERING' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' AND variable_name != 'THREAD_POOL_SIZE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql, ordinal_position; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert') AND TRIGGER_SCHEMA != 'sys'; SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA != 'sys'; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_STATUS != 'INACTIVE'; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0, SQL_SAFE_UPDATES=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci AddGeometryColumn def mysql AddGeometryColumn PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL begin set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' ADD ', geometry_column,' GEOMETRY REF_SYSTEM_ID=', t_srid); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss mariadb.sys@localhost latin1 latin1_swedish_ci latin1_swedish_ci @@ -229,7 +229,7 @@ sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NUL SELECT * FROM db_datadict_2.res_6_408002_2; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci -check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_LOG_FILE_BUFFERING' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' AND variable_name != 'THREAD_POOL_SIZE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert') AND TRIGGER_SCHEMA != 'sys'; SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA != 'sys'; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_STATUS != 'INACTIVE'; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci +check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_LOG_FILE_BUFFERING' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' AND variable_name != 'THREAD_POOL_SIZE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql, ordinal_position; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert') AND TRIGGER_SCHEMA != 'sys'; SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA != 'sys'; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_STATUS != 'INACTIVE'; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0, SQL_SAFE_UPDATES=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8mb3 utf8mb3_general_ci latin1_swedish_ci AddGeometryColumn def mysql AddGeometryColumn PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL begin set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' ADD ', geometry_column,' GEOMETRY REF_SYSTEM_ID=', t_srid); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss mariadb.sys@localhost latin1 latin1_swedish_ci latin1_swedish_ci diff --git a/mysql-test/suite/funcs_1/r/is_tables_is.result b/mysql-test/suite/funcs_1/r/is_tables_is.result index c18f733c86f06..5758a4fe5b40c 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_is.result +++ b/mysql-test/suite/funcs_1/r/is_tables_is.result @@ -16,9 +16,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME ALL_PLUGINS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -91,9 +91,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME CHECK_CONSTRAINTS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -191,9 +191,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME COLUMNS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -291,9 +291,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME EVENTS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -516,9 +516,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME OPTIMIZER_TRACE TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -541,9 +541,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PARAMETERS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -566,9 +566,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PARTITIONS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -591,9 +591,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PLUGINS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -616,9 +616,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PROCESSLIST TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -666,9 +666,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME ROUTINES TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -866,9 +866,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME SYSTEM_VARIABLES TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1016,9 +1016,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME TRIGGERS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1091,9 +1091,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME VIEWS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1132,9 +1132,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME ALL_PLUGINS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1207,9 +1207,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME CHECK_CONSTRAINTS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1307,9 +1307,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME COLUMNS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1407,9 +1407,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME EVENTS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1632,9 +1632,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME OPTIMIZER_TRACE TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1657,9 +1657,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PARAMETERS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1682,9 +1682,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PARTITIONS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1707,9 +1707,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PLUGINS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1732,9 +1732,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PROCESSLIST TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1782,9 +1782,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME ROUTINES TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1982,9 +1982,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME SYSTEM_VARIABLES TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -2132,9 +2132,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME TRIGGERS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -2207,9 +2207,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME VIEWS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# diff --git a/mysql-test/suite/funcs_1/r/is_tables_is_embedded.result b/mysql-test/suite/funcs_1/r/is_tables_is_embedded.result index c18f733c86f06..5758a4fe5b40c 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_is_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_tables_is_embedded.result @@ -16,9 +16,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME ALL_PLUGINS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -91,9 +91,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME CHECK_CONSTRAINTS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -191,9 +191,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME COLUMNS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -291,9 +291,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME EVENTS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -516,9 +516,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME OPTIMIZER_TRACE TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -541,9 +541,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PARAMETERS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -566,9 +566,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PARTITIONS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -591,9 +591,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PLUGINS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -616,9 +616,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PROCESSLIST TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -666,9 +666,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME ROUTINES TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -866,9 +866,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME SYSTEM_VARIABLES TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1016,9 +1016,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME TRIGGERS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1091,9 +1091,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME VIEWS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1132,9 +1132,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME ALL_PLUGINS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1207,9 +1207,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME CHECK_CONSTRAINTS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1307,9 +1307,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME COLUMNS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1407,9 +1407,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME EVENTS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1632,9 +1632,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME OPTIMIZER_TRACE TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1657,9 +1657,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PARAMETERS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1682,9 +1682,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PARTITIONS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1707,9 +1707,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PLUGINS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1732,9 +1732,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME PROCESSLIST TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1782,9 +1782,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME ROUTINES TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -1982,9 +1982,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME SYSTEM_VARIABLES TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -2132,9 +2132,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME TRIGGERS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# @@ -2207,9 +2207,9 @@ TABLE_CATALOG def TABLE_SCHEMA information_schema TABLE_NAME VIEWS TABLE_TYPE SYSTEM VIEW -ENGINE MYISAM_OR_MARIA +ENGINE MEMORY VERSION 11 -ROW_FORMAT DYNAMIC_OR_PAGE +ROW_FORMAT Fixed TABLE_ROWS #TBLR# AVG_ROW_LENGTH #ARL# DATA_LENGTH #DL# diff --git a/mysql-test/suite/funcs_1/r/is_triggers.result b/mysql-test/suite/funcs_1/r/is_triggers.result index 7c0a27b85c2fc..d2bb50a9e9b77 100644 --- a/mysql-test/suite/funcs_1/r/is_triggers.result +++ b/mysql-test/suite/funcs_1/r/is_triggers.result @@ -77,7 +77,7 @@ TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` ( `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, `COLLATION_CONNECTION` varchar(64) NOT NULL, `DATABASE_COLLATION` varchar(64) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.TRIGGERS; Field Type Null Key Default Extra TRIGGER_CATALOG varchar(512) NO NULL diff --git a/mysql-test/suite/funcs_1/r/is_triggers_embedded.result b/mysql-test/suite/funcs_1/r/is_triggers_embedded.result index 6b0406a3a3a23..9d988417248c9 100644 --- a/mysql-test/suite/funcs_1/r/is_triggers_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_triggers_embedded.result @@ -77,7 +77,7 @@ TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` ( `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, `COLLATION_CONNECTION` varchar(64) NOT NULL, `DATABASE_COLLATION` varchar(64) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.TRIGGERS; Field Type Null Key Default Extra TRIGGER_CATALOG varchar(512) NO NULL diff --git a/mysql-test/suite/funcs_1/r/is_views.result b/mysql-test/suite/funcs_1/r/is_views.result index 6a86e7464a0fb..c67b372937f9b 100644 --- a/mysql-test/suite/funcs_1/r/is_views.result +++ b/mysql-test/suite/funcs_1/r/is_views.result @@ -53,7 +53,7 @@ VIEWS CREATE TEMPORARY TABLE `VIEWS` ( `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, `COLLATION_CONNECTION` varchar(64) NOT NULL, `ALGORITHM` varchar(10) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.VIEWS; Field Type Null Key Default Extra TABLE_CATALOG varchar(512) NO NULL diff --git a/mysql-test/suite/funcs_1/r/is_views_embedded.result b/mysql-test/suite/funcs_1/r/is_views_embedded.result index f64562aadd164..67faf6b30ccfa 100644 --- a/mysql-test/suite/funcs_1/r/is_views_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_views_embedded.result @@ -53,7 +53,7 @@ VIEWS CREATE TEMPORARY TABLE `VIEWS` ( `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, `COLLATION_CONNECTION` varchar(64) NOT NULL, `ALGORITHM` varchar(10) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.VIEWS; Field Type Null Key Default Extra TABLE_CATALOG varchar(512) NO NULL diff --git a/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result b/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result index 2bba1c0616276..dfa0d7e4fc5d6 100644 --- a/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result +++ b/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result @@ -44,7 +44,7 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `QUERY_ID` bigint(4) NOT NULL, `INFO_BINARY` blob, `TID` bigint(4) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW processlist; Id User Host db Command Time State Info Progress ID root HOST_NAME information_schema Query TIME starting SHOW processlist TIME_MS @@ -124,7 +124,7 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `QUERY_ID` bigint(4) NOT NULL, `INFO_BINARY` blob, `TID` bigint(4) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW processlist; Id User Host db Command Time State Info Progress ID ddicttestuser1 HOST_NAME information_schema Query TIME starting SHOW processlist TIME_MS diff --git a/mysql-test/suite/funcs_1/r/processlist_priv_ps.result b/mysql-test/suite/funcs_1/r/processlist_priv_ps.result index 94bc1544c071b..8dff4e171051d 100644 --- a/mysql-test/suite/funcs_1/r/processlist_priv_ps.result +++ b/mysql-test/suite/funcs_1/r/processlist_priv_ps.result @@ -44,7 +44,7 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `QUERY_ID` bigint(4) NOT NULL, `INFO_BINARY` blob, `TID` bigint(4) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW processlist; Id User Host db Command Time State Info Progress ID root HOST_NAME information_schema Query TIME starting SHOW processlist TIME_MS @@ -124,7 +124,7 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `QUERY_ID` bigint(4) NOT NULL, `INFO_BINARY` blob, `TID` bigint(4) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW processlist; Id User Host db Command Time State Info Progress ID ddicttestuser1 HOST_NAME information_schema Query TIME starting SHOW processlist TIME_MS diff --git a/mysql-test/suite/funcs_1/r/processlist_val_no_prot.result b/mysql-test/suite/funcs_1/r/processlist_val_no_prot.result index dba8de65fc035..5153ae313438a 100644 --- a/mysql-test/suite/funcs_1/r/processlist_val_no_prot.result +++ b/mysql-test/suite/funcs_1/r/processlist_val_no_prot.result @@ -30,7 +30,7 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `QUERY_ID` bigint(4) NOT NULL, `INFO_BINARY` blob, `TID` bigint(4) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci # Ensure that the information about the own connection is correct. #-------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/processlist_val_ps.result b/mysql-test/suite/funcs_1/r/processlist_val_ps.result index 0806f00fc6acc..06ff8bd2d6818 100644 --- a/mysql-test/suite/funcs_1/r/processlist_val_ps.result +++ b/mysql-test/suite/funcs_1/r/processlist_val_ps.result @@ -30,7 +30,7 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `QUERY_ID` bigint(4) NOT NULL, `INFO_BINARY` blob, `TID` bigint(4) NOT NULL -) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci # Ensure that the information about the own connection is correct. #-------------------------------------------------------------------------- diff --git a/mysql-test/suite/heap/blob_dedup.result b/mysql-test/suite/heap/blob_dedup.result new file mode 100644 index 0000000000000..66149ce791a3e --- /dev/null +++ b/mysql-test/suite/heap/blob_dedup.result @@ -0,0 +1,15 @@ +CREATE TABLE t1 (a mediumtext) ENGINE=HEAP; +INSERT INTO t1 VALUES ('abc'),('def'); +SELECT DISTINCT a FROM t1; +a +abc +def +DROP TABLE t1; +CREATE TABLE t1 (a mediumtext); +CREATE TABLE t2 (b varchar(20)); +INSERT INTO t1 VALUES ('a'),('b'); +SELECT left(a,100000000) FROM t1 UNION SELECT b FROM t2; +left(a,100000000) +a +b +DROP TABLE t1, t2; diff --git a/mysql-test/suite/heap/blob_dedup.test b/mysql-test/suite/heap/blob_dedup.test new file mode 100644 index 0000000000000..16892d92ef4b7 --- /dev/null +++ b/mysql-test/suite/heap/blob_dedup.test @@ -0,0 +1,10 @@ +CREATE TABLE t1 (a mediumtext) ENGINE=HEAP; +INSERT INTO t1 VALUES ('abc'),('def'); +SELECT DISTINCT a FROM t1; +DROP TABLE t1; + +CREATE TABLE t1 (a mediumtext); +CREATE TABLE t2 (b varchar(20)); +INSERT INTO t1 VALUES ('a'),('b'); +SELECT left(a,100000000) FROM t1 UNION SELECT b FROM t2; +DROP TABLE t1, t2; diff --git a/mysql-test/suite/heap/heap_blob.result b/mysql-test/suite/heap/heap_blob.result new file mode 100644 index 0000000000000..83b1c97203774 --- /dev/null +++ b/mysql-test/suite/heap/heap_blob.result @@ -0,0 +1,602 @@ +drop table if exists t1,t2; +# +# Basic CRUD with BLOB column +# +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, 'hello'), (2, 'world'); +select * from t1 order by a; +a b +1 hello +2 world +select * from t1 where a=1; +a b +1 hello +select * from t1 where a=2; +a b +2 world +update t1 set b='updated' where a=1; +select * from t1 order by a; +a b +1 updated +2 world +delete from t1 where a=2; +select * from t1 order by a; +a b +1 updated +insert into t1 values (3, 'new row'); +select * from t1 order by a; +a b +1 updated +3 new row +drop table t1; +# +# Multiple BLOB/TEXT columns of different types +# +create table t1 ( +id int not null auto_increment, +t tinyblob, +b blob, +m mediumblob, +tx text, +primary key(id) +) engine=memory; +insert into t1 (t, b, m, tx) values +('tiny1', 'blob1', 'medium1', 'text1'), +('tiny2', 'blob2', 'medium2', 'text2'); +select * from t1 order by id; +id t b m tx +1 tiny1 blob1 medium1 text1 +2 tiny2 blob2 medium2 text2 +update t1 set b='blob_updated', tx='text_updated' where id=1; +select * from t1 order by id; +id t b m tx +1 tiny1 blob_updated medium1 text_updated +2 tiny2 blob2 medium2 text2 +delete from t1 where id=2; +select * from t1 order by id; +id t b m tx +1 tiny1 blob_updated medium1 text_updated +drop table t1; +# +# NULL and empty blob values +# +create table t1 (a int not null, b blob, c text, primary key(a)) engine=memory; +insert into t1 values (1, NULL, NULL); +insert into t1 values (2, '', ''); +insert into t1 values (3, 'data', 'text'); +select a, b, c, length(b), length(c) from t1 order by a; +a b c length(b) length(c) +1 NULL NULL NULL NULL +2 0 0 +3 data text 4 4 +update t1 set b=NULL where a=3; +select a, b, c, length(b), length(c) from t1 order by a; +a b c length(b) length(c) +1 NULL NULL NULL NULL +2 0 0 +3 NULL text NULL 4 +update t1 set b='restored' where a=3; +select a, b, c, length(b), length(c) from t1 order by a; +a b c length(b) length(c) +1 NULL NULL NULL NULL +2 0 0 +3 restored text 8 4 +drop table t1; +# +# Large BLOBs spanning multiple continuation runs +# For (int, blob): recbuffer=16, visible=15, leaf block ~1021 slots. +# Max run payload ~15305 bytes. Sizes chosen to span multiple runs +# and not align to visible (15 bytes). +# +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('A', 1000)); +insert into t1 values (2, repeat('B', 50000)); +insert into t1 values (3, repeat('C', 63001)); +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +a length(b) left(b, 5) right(b, 5) +1 1000 AAAAA AAAAA +2 50000 BBBBB BBBBB +3 63001 CCCCC CCCCC +select a from t1 where b = repeat('A', 1000); +a +1 +select a from t1 where b = repeat('B', 50000); +a +2 +select a from t1 where b = repeat('C', 63001); +a +3 +update t1 set b=repeat('D', 63001) where a=1; +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +a length(b) left(b, 5) right(b, 5) +1 63001 DDDDD DDDDD +2 50000 BBBBB BBBBB +3 63001 CCCCC CCCCC +select a from t1 where b = repeat('D', 63001); +a +1 +update t1 set b=repeat('E', 100) where a=2; +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +a length(b) left(b, 5) right(b, 5) +1 63001 DDDDD DDDDD +2 100 EEEEE EEEEE +3 63001 CCCCC CCCCC +drop table t1; +# +# Mixed operations: insert, delete, insert (free list reuse) +# +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('X', 20000)); +insert into t1 values (2, repeat('Y', 50000)); +insert into t1 values (3, repeat('Z', 10000)); +delete from t1 where a=2; +insert into t1 values (4, repeat('W', 40000)); +select a, length(b) from t1 order by a; +a length(b) +1 20000 +3 10000 +4 40000 +select a from t1 where b = repeat('X', 20000); +a +1 +select a from t1 where b = repeat('Z', 10000); +a +3 +select a from t1 where b = repeat('W', 40000); +a +4 +delete from t1; +insert into t1 values (10, repeat('R', 50000)); +insert into t1 values (20, repeat('S', 50000)); +select a, length(b) from t1 order by a; +a length(b) +10 50000 +20 50000 +drop table t1; +# +# Free list fragmentation: NULL-blob rows interleaved with large-blob rows +# +# When rows with NULL blobs and rows with large blobs are deleted, the +# free list gets primary-record slots (from NULL rows) interleaved between +# continuation slots (from large-blob rows). The peek-then-unlink +# algorithm must find contiguous continuation groups despite these +# interleaving primary slots breaking address contiguity. +# +# After deleting all rows and reinserting, the new blob data must be +# correct — verifying no free list corruption from the fragmented state. +# +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, NULL); +insert into t1 values (2, repeat('A', 20000)); +insert into t1 values (3, NULL); +insert into t1 values (4, repeat('B', 30000)); +insert into t1 values (5, NULL); +insert into t1 values (6, repeat('C', 25000)); +select a, length(b) from t1 order by a; +a length(b) +1 NULL +2 20000 +3 NULL +4 30000 +5 NULL +6 25000 +delete from t1 where a=2; +delete from t1 where a=4; +delete from t1 where a=6; +delete from t1 where a=1; +delete from t1 where a=3; +delete from t1 where a=5; +insert into t1 values (10, repeat('D', 35000)); +insert into t1 values (20, repeat('E', 20000)); +insert into t1 values (30, repeat('F', 15000)); +select a, length(b) from t1 order by a; +a length(b) +10 35000 +20 20000 +30 15000 +select a from t1 where b = repeat('D', 35000); +a +10 +select a from t1 where b = repeat('E', 20000); +a +20 +select a from t1 where b = repeat('F', 15000); +a +30 +delete from t1 where a=10; +insert into t1 values (40, repeat('G', 40000)); +select a, length(b) from t1 order by a; +a length(b) +20 20000 +30 15000 +40 40000 +select a from t1 where b = repeat('E', 20000); +a +20 +select a from t1 where b = repeat('F', 15000); +a +30 +select a from t1 where b = repeat('G', 40000); +a +40 +drop table t1; +# +# Free list scavenging with mixed NULL and non-NULL blob columns +# +# Multiple blob columns where some are NULL and others are large. +# This creates rows with partial continuation chains — the NULL +# columns have no chain while the non-NULL columns do. +# +create table t1 ( +a int not null, +b blob, +c blob, +primary key(a) +) engine=memory; +insert into t1 values (1, repeat('X', 15000), NULL); +insert into t1 values (2, NULL, repeat('Y', 25000)); +insert into t1 values (3, repeat('Z', 10000), repeat('W', 20000)); +insert into t1 values (4, NULL, NULL); +select a, length(b), length(c) from t1 order by a; +a length(b) length(c) +1 15000 NULL +2 NULL 25000 +3 10000 20000 +4 NULL NULL +delete from t1 where a=1; +delete from t1 where a=3; +insert into t1 values (5, repeat('P', 18000), repeat('Q', 22000)); +select a, length(b), length(c) from t1 order by a; +a length(b) length(c) +2 NULL 25000 +4 NULL NULL +5 18000 22000 +select a from t1 where b is null and c = repeat('Y', 25000); +a +2 +select a from t1 where b = repeat('P', 18000) and c = repeat('Q', 22000); +a +5 +delete from t1; +insert into t1 values (6, repeat('R', 30000), repeat('S', 30000)); +select a, length(b), length(c) from t1 order by a; +a length(b) length(c) +6 30000 30000 +select a from t1 where b = repeat('R', 30000) and c = repeat('S', 30000); +a +6 +drop table t1; +# +# TRUNCATE with BLOB data +# +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('T', 30000)), (2, repeat('U', 30000)); +select count(*) from t1; +count(*) +2 +truncate table t1; +select count(*) from t1; +count(*) +0 +insert into t1 values (1, 'after truncate'); +select * from t1; +a b +1 after truncate +drop table t1; +# +# Full table scan correctness +# +create table t1 (a int not null, b blob) engine=memory; +insert into t1 values (1, repeat('a', 500)); +insert into t1 values (2, repeat('b', 23000)); +insert into t1 values (3, repeat('c', 51000)); +insert into t1 values (4, NULL); +insert into t1 values (5, ''); +select a, length(b), left(b, 5) from t1 order by a; +a length(b) left(b, 5) +1 500 aaaaa +2 23000 bbbbb +3 51000 ccccc +4 NULL NULL +5 0 +select count(*) from t1; +count(*) +5 +drop table t1; +# +# Hash index on non-blob column with blob data present +# +create table t1 ( +a int not null, +b varchar(20) not null, +c blob, +primary key(a), +key(b) +) engine=memory; +insert into t1 values (1, 'key1', repeat('h', 20000)); +insert into t1 values (2, 'key2', repeat('i', 33000)); +insert into t1 values (3, 'key1', repeat('j', 10000)); +select a, b, length(c) from t1 where b='key1' order by a; +a b length(c) +1 key1 20000 +3 key1 10000 +select a, b, length(c) from t1 where b='key2'; +a b length(c) +2 key2 33000 +select a, b, length(c) from t1 where a=2; +a b length(c) +2 key2 33000 +drop table t1; +# +# BTREE index on non-blob column with blob data present +# +create table t1 ( +a int not null, +b int not null, +c blob, +key b_idx using btree (b) +) engine=memory; +insert into t1 values (1, 10, repeat('p', 17000)); +insert into t1 values (2, 20, repeat('q', 25000)); +insert into t1 values (3, 30, repeat('r', 41000)); +insert into t1 values (4, 20, repeat('s', 19000)); +select a, b, length(c) from t1 where b=20 order by a; +a b length(c) +2 20 25000 +4 20 19000 +select a, b, length(c) from t1 where b>=20 order by b, a; +a b length(c) +2 20 25000 +4 20 19000 +3 30 41000 +drop table t1; +# +# REPLACE with BLOB column +# +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, 'original'); +insert into t1 values (2, repeat('x', 30000)); +replace into t1 values (1, repeat('replaced', 5000)); +select a, length(b), left(b, 20) from t1 order by a; +a length(b) left(b, 20) +1 40000 replacedreplacedrepl +2 30000 xxxxxxxxxxxxxxxxxxxx +replace into t1 values (2, 'short'); +select a, length(b), left(b, 20) from t1 order by a; +a length(b) left(b, 20) +1 40000 replacedreplacedrepl +2 5 short +drop table t1; +# +# INSERT ... SELECT with BLOB data +# +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +create table t2 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('m', 22000)), (2, repeat('n', 37000)); +insert into t2 select * from t1; +select a, length(b) from t2 order by a; +a length(b) +1 22000 +2 37000 +select a from t2 where b=repeat('m', 22000); +a +1 +select a from t2 where b=repeat('n', 37000); +a +2 +drop table t1, t2; +# +# TINYBLOB NOT NULL edge case (reclength=9, minimal visible_offset) +# +CREATE TABLE t_tiny (b TINYBLOB NOT NULL) ENGINE=MEMORY; +INSERT INTO t_tiny VALUES ('hello'), ('world'); +SELECT * FROM t_tiny; +b +hello +world +DROP TABLE t_tiny; +# +# TINYBLOB NULL edge case (reclength=10) +# +CREATE TABLE t_tiny2 (b TINYBLOB) ENGINE=MEMORY; +INSERT INTO t_tiny2 VALUES ('foo'), ('bar'); +SELECT * FROM t_tiny2; +b +foo +bar +DROP TABLE t_tiny2; +# +# Blob-only table with no primary key +# +create table t1 (b blob) engine=memory; +insert into t1 values (repeat('A', 5000)), (repeat('B', 10000)); +select length(b), left(b, 3) from t1 order by b; +length(b) left(b, 3) +5000 AAA +10000 BBB +delete from t1; +insert into t1 values ('short1'), ('short2'); +select b from t1 order by b; +b +short1 +short2 +drop table t1; +# +# Table-full error with blob data +# +set @save_max= @@max_heap_table_size; +set @@max_heap_table_size= 65536; +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('x', 30000)); +insert into t1 values (2, repeat('y', 30000)); +ERROR HY000: The table 't1' is full +insert into t1 values (3, repeat('z', 30000)); +ERROR HY000: The table 't1' is full +select a, length(b) from t1 where a=1; +a length(b) +1 30000 +set @@max_heap_table_size= @save_max; +drop table t1; +# +# Multiple blob columns with different sizes in same row +# +create table t1 ( +a int not null, +b tinyblob, +c blob, +d mediumblob, +primary key(a) +) engine=memory; +insert into t1 values (1, repeat('p', 200), repeat('q', 30000), repeat('r', 60000)); +insert into t1 values (2, 'small', repeat('s', 15000), repeat('t', 45000)); +select a, length(b), length(c), length(d), left(b,3), left(c,3), left(d,3) from t1 order by a; +a length(b) length(c) length(d) left(b,3) left(c,3) left(d,3) +1 200 30000 60000 ppp qqq rrr +2 5 15000 45000 sma sss ttt +select a from t1 where b=repeat('p', 200) and c=repeat('q', 30000) and d=repeat('r', 60000); +a +1 +select a from t1 where b='small' and c=repeat('s', 15000) and d=repeat('t', 45000); +a +2 +drop table t1; +# +# UPDATE failure preserves old blob data (table-full during blob grow) +# +set @save_max= @@max_heap_table_size; +set @@max_heap_table_size= 65536; +create table t1 (a int not null, b longblob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('A', 5000)); +insert into t1 values (2, repeat('B', 5000)); +update t1 set b=repeat('X', 200000) where a=1; +ERROR HY000: The table 't1' is full +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +a length(b) left(b, 5) right(b, 5) +1 5000 AAAAA AAAAA +2 5000 BBBBB BBBBB +select a from t1 where b=repeat('A', 5000); +a +1 +select a from t1 where b=repeat('B', 5000); +a +2 +set @@max_heap_table_size= @save_max; +drop table t1; +# +# Large blob exceeding uint16 run_rec_count cap (65535 records) +# +# With recbuffer=16, visible=15, a 1MB blob needs ~69906 records, +# exceeding the uint16 max of 65535. The free list scavenging must +# split into multiple runs at the cap boundary. +# Delete-then-reinsert exercises scavenging of the freed chain. +# +set @save_max= @@max_heap_table_size; +set @@max_heap_table_size= 64 * 1024 * 1024; +create table t1 (a int not null, b longblob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('A', 1048576)); +insert into t1 values (2, repeat('B', 1048576)); +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +a length(b) left(b, 5) right(b, 5) +1 1048576 AAAAA AAAAA +2 1048576 BBBBB BBBBB +select a from t1 where b = repeat('A', 1048576); +a +1 +select a from t1 where b = repeat('B', 1048576); +a +2 +delete from t1 where a=1; +delete from t1 where a=2; +insert into t1 values (3, repeat('C', 1048576)); +insert into t1 values (4, repeat('D', 1048576)); +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +a length(b) left(b, 5) right(b, 5) +3 1048576 CCCCC CCCCC +4 1048576 DDDDD DDDDD +select a from t1 where b = repeat('C', 1048576); +a +3 +select a from t1 where b = repeat('D', 1048576); +a +4 +set @@max_heap_table_size= @save_max; +drop table t1; +# +# Zero-copy Case A: tiny blobs fitting in rec 0 payload (wide table) +# +create table t_casea (a int not null, b varchar(480), c blob, primary key(a)) engine=memory; +insert into t_casea values (1, repeat('v', 480), repeat('A', 400)); +insert into t_casea values (2, repeat('w', 480), repeat('B', 100)); +select a, length(c), left(c,3) from t_casea order by a; +a length(c) left(c,3) +1 400 AAA +2 100 BBB +select a from t_casea where c = repeat('A', 400); +a +1 +select a from t_casea where c = repeat('B', 100); +a +2 +drop table t_casea; +# +# Zero-copy Case B: medium blobs (single run, multiple records) +# +create table t_caseb (a int not null, b blob, primary key(a)) engine=memory; +insert into t_caseb values (1, repeat('M', 8000)); +insert into t_caseb values (2, repeat('N', 15000)); +select a, length(b), left(b,3), right(b,3) from t_caseb order by a; +a length(b) left(b,3) right(b,3) +1 8000 MMM MMM +2 15000 NNN NNN +select a from t_caseb where b = repeat('M', 8000); +a +1 +select a from t_caseb where b = repeat('N', 15000); +a +2 +delete from t_caseb where a=1; +insert into t_caseb values (3, repeat('O', 12000)); +select a, length(b) from t_caseb order by a; +a length(b) +2 15000 +3 12000 +select a from t_caseb where b = repeat('O', 12000); +a +3 +drop table t_caseb; +# +# Zero-copy Case B->C boundary (large blobs forcing multi-run) +# +create table t_boundary (a int not null, b blob, primary key(a)) engine=memory; +insert into t_boundary values (1, repeat('X', 15000)); +insert into t_boundary values (2, repeat('Y', 50000)); +select a, length(b), left(b,3) from t_boundary order by a; +a length(b) left(b,3) +1 15000 XXX +2 50000 YYY +select a from t_boundary where b = repeat('X', 15000); +a +1 +select a from t_boundary where b = repeat('Y', 50000); +a +2 +drop table t_boundary; +# +# Non-blob table regression: ensure no behavioral change +# +create table t1 (a int not null, b varchar(100), primary key(a)) engine=memory; +insert into t1 values (1, 'no blob here'), (2, 'still no blob'); +select * from t1 order by a; +a b +1 no blob here +2 still no blob +update t1 set b='changed' where a=1; +select * from t1 order by a; +a b +1 changed +2 still no blob +delete from t1 where a=2; +select * from t1 order by a; +a b +1 changed +drop table t1; diff --git a/mysql-test/suite/heap/heap_blob.test b/mysql-test/suite/heap/heap_blob.test new file mode 100644 index 0000000000000..b29611f2c8cef --- /dev/null +++ b/mysql-test/suite/heap/heap_blob.test @@ -0,0 +1,439 @@ +# +# Test BLOB/TEXT column support in HEAP (MEMORY) tables. +# + +--disable_warnings +drop table if exists t1,t2; +--enable_warnings + +--echo # +--echo # Basic CRUD with BLOB column +--echo # +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, 'hello'), (2, 'world'); +select * from t1 order by a; +select * from t1 where a=1; +select * from t1 where a=2; +update t1 set b='updated' where a=1; +select * from t1 order by a; +delete from t1 where a=2; +select * from t1 order by a; +insert into t1 values (3, 'new row'); +select * from t1 order by a; +drop table t1; + +--echo # +--echo # Multiple BLOB/TEXT columns of different types +--echo # +create table t1 ( + id int not null auto_increment, + t tinyblob, + b blob, + m mediumblob, + tx text, + primary key(id) +) engine=memory; +insert into t1 (t, b, m, tx) values + ('tiny1', 'blob1', 'medium1', 'text1'), + ('tiny2', 'blob2', 'medium2', 'text2'); +select * from t1 order by id; +update t1 set b='blob_updated', tx='text_updated' where id=1; +select * from t1 order by id; +delete from t1 where id=2; +select * from t1 order by id; +drop table t1; + +--echo # +--echo # NULL and empty blob values +--echo # +create table t1 (a int not null, b blob, c text, primary key(a)) engine=memory; +insert into t1 values (1, NULL, NULL); +insert into t1 values (2, '', ''); +insert into t1 values (3, 'data', 'text'); +select a, b, c, length(b), length(c) from t1 order by a; +update t1 set b=NULL where a=3; +select a, b, c, length(b), length(c) from t1 order by a; +update t1 set b='restored' where a=3; +select a, b, c, length(b), length(c) from t1 order by a; +drop table t1; + +--echo # +--echo # Large BLOBs spanning multiple continuation runs +--echo # For (int, blob): recbuffer=16, visible=15, leaf block ~1021 slots. +--echo # Max run payload ~15305 bytes. Sizes chosen to span multiple runs +--echo # and not align to visible (15 bytes). +--echo # +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('A', 1000)); +insert into t1 values (2, repeat('B', 50000)); +insert into t1 values (3, repeat('C', 63001)); +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +# Verify data integrity +select a from t1 where b = repeat('A', 1000); +select a from t1 where b = repeat('B', 50000); +select a from t1 where b = repeat('C', 63001); +# Update small to large (multi-run) +update t1 set b=repeat('D', 63001) where a=1; +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +select a from t1 where b = repeat('D', 63001); +# Update large to small +update t1 set b=repeat('E', 100) where a=2; +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +drop table t1; + +--echo # +--echo # Mixed operations: insert, delete, insert (free list reuse) +--echo # +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('X', 20000)); +insert into t1 values (2, repeat('Y', 50000)); +insert into t1 values (3, repeat('Z', 10000)); +delete from t1 where a=2; +# This insert should reuse freed continuation records +insert into t1 values (4, repeat('W', 40000)); +select a, length(b) from t1 order by a; +select a from t1 where b = repeat('X', 20000); +select a from t1 where b = repeat('Z', 10000); +select a from t1 where b = repeat('W', 40000); +# Delete all and reinsert +delete from t1; +insert into t1 values (10, repeat('R', 50000)); +insert into t1 values (20, repeat('S', 50000)); +select a, length(b) from t1 order by a; +drop table t1; + +--echo # +--echo # Free list fragmentation: NULL-blob rows interleaved with large-blob rows +--echo # +--echo # When rows with NULL blobs and rows with large blobs are deleted, the +--echo # free list gets primary-record slots (from NULL rows) interleaved between +--echo # continuation slots (from large-blob rows). The peek-then-unlink +--echo # algorithm must find contiguous continuation groups despite these +--echo # interleaving primary slots breaking address contiguity. +--echo # +--echo # After deleting all rows and reinserting, the new blob data must be +--echo # correct — verifying no free list corruption from the fragmented state. +--echo # +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +# Insert alternating: NULL blob, large blob, NULL blob, large blob +# The primary slots for NULL rows will sit between continuation runs +# on the free list after deletion. +insert into t1 values (1, NULL); +insert into t1 values (2, repeat('A', 20000)); +insert into t1 values (3, NULL); +insert into t1 values (4, repeat('B', 30000)); +insert into t1 values (5, NULL); +insert into t1 values (6, repeat('C', 25000)); +select a, length(b) from t1 order by a; +# Delete in an order that creates maximum free list interleaving: +# large blob rows first (their continuation slots go to free list), +# then NULL rows (their primary slots go to free list head, +# interleaving with the continuation slots). +delete from t1 where a=2; +delete from t1 where a=4; +delete from t1 where a=6; +delete from t1 where a=1; +delete from t1 where a=3; +delete from t1 where a=5; +# Reinsert large blobs — these should either scavenge contiguous groups +# from the fragmented free list or fall through to tail allocation. +# Either way, data must be correct. +insert into t1 values (10, repeat('D', 35000)); +insert into t1 values (20, repeat('E', 20000)); +insert into t1 values (30, repeat('F', 15000)); +select a, length(b) from t1 order by a; +select a from t1 where b = repeat('D', 35000); +select a from t1 where b = repeat('E', 20000); +select a from t1 where b = repeat('F', 15000); +# Second cycle: delete and reinsert again to exercise scavenging of +# the runs we just created (which are now interleaved differently). +delete from t1 where a=10; +insert into t1 values (40, repeat('G', 40000)); +select a, length(b) from t1 order by a; +select a from t1 where b = repeat('E', 20000); +select a from t1 where b = repeat('F', 15000); +select a from t1 where b = repeat('G', 40000); +drop table t1; + +--echo # +--echo # Free list scavenging with mixed NULL and non-NULL blob columns +--echo # +--echo # Multiple blob columns where some are NULL and others are large. +--echo # This creates rows with partial continuation chains — the NULL +--echo # columns have no chain while the non-NULL columns do. +--echo # +create table t1 ( + a int not null, + b blob, + c blob, + primary key(a) +) engine=memory; +insert into t1 values (1, repeat('X', 15000), NULL); +insert into t1 values (2, NULL, repeat('Y', 25000)); +insert into t1 values (3, repeat('Z', 10000), repeat('W', 20000)); +insert into t1 values (4, NULL, NULL); +select a, length(b), length(c) from t1 order by a; +# Delete rows with different blob patterns to create varied free list state +delete from t1 where a=1; +delete from t1 where a=3; +# Insert new rows that should scavenge from the freed continuation slots +insert into t1 values (5, repeat('P', 18000), repeat('Q', 22000)); +select a, length(b), length(c) from t1 order by a; +select a from t1 where b is null and c = repeat('Y', 25000); +select a from t1 where b = repeat('P', 18000) and c = repeat('Q', 22000); +# Delete everything, reinsert to verify full cleanup +delete from t1; +insert into t1 values (6, repeat('R', 30000), repeat('S', 30000)); +select a, length(b), length(c) from t1 order by a; +select a from t1 where b = repeat('R', 30000) and c = repeat('S', 30000); +drop table t1; + +--echo # +--echo # TRUNCATE with BLOB data +--echo # +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('T', 30000)), (2, repeat('U', 30000)); +select count(*) from t1; +truncate table t1; +select count(*) from t1; +insert into t1 values (1, 'after truncate'); +select * from t1; +drop table t1; + +--echo # +--echo # Full table scan correctness +--echo # +create table t1 (a int not null, b blob) engine=memory; +insert into t1 values (1, repeat('a', 500)); +insert into t1 values (2, repeat('b', 23000)); +insert into t1 values (3, repeat('c', 51000)); +insert into t1 values (4, NULL); +insert into t1 values (5, ''); +# Full scan should return exactly 5 rows, no continuation record leaks +select a, length(b), left(b, 5) from t1 order by a; +select count(*) from t1; +drop table t1; + +--echo # +--echo # Hash index on non-blob column with blob data present +--echo # +create table t1 ( + a int not null, + b varchar(20) not null, + c blob, + primary key(a), + key(b) +) engine=memory; +insert into t1 values (1, 'key1', repeat('h', 20000)); +insert into t1 values (2, 'key2', repeat('i', 33000)); +insert into t1 values (3, 'key1', repeat('j', 10000)); +select a, b, length(c) from t1 where b='key1' order by a; +select a, b, length(c) from t1 where b='key2'; +select a, b, length(c) from t1 where a=2; +drop table t1; + +--echo # +--echo # BTREE index on non-blob column with blob data present +--echo # +create table t1 ( + a int not null, + b int not null, + c blob, + key b_idx using btree (b) +) engine=memory; +insert into t1 values (1, 10, repeat('p', 17000)); +insert into t1 values (2, 20, repeat('q', 25000)); +insert into t1 values (3, 30, repeat('r', 41000)); +insert into t1 values (4, 20, repeat('s', 19000)); +select a, b, length(c) from t1 where b=20 order by a; +select a, b, length(c) from t1 where b>=20 order by b, a; +drop table t1; + +--echo # +--echo # REPLACE with BLOB column +--echo # +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, 'original'); +insert into t1 values (2, repeat('x', 30000)); +replace into t1 values (1, repeat('replaced', 5000)); +select a, length(b), left(b, 20) from t1 order by a; +replace into t1 values (2, 'short'); +select a, length(b), left(b, 20) from t1 order by a; +drop table t1; + +--echo # +--echo # INSERT ... SELECT with BLOB data +--echo # +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +create table t2 (a int not null, b blob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('m', 22000)), (2, repeat('n', 37000)); +insert into t2 select * from t1; +select a, length(b) from t2 order by a; +select a from t2 where b=repeat('m', 22000); +select a from t2 where b=repeat('n', 37000); +drop table t1, t2; + +--echo # +--echo # TINYBLOB NOT NULL edge case (reclength=9, minimal visible_offset) +--echo # +CREATE TABLE t_tiny (b TINYBLOB NOT NULL) ENGINE=MEMORY; +INSERT INTO t_tiny VALUES ('hello'), ('world'); +SELECT * FROM t_tiny; +DROP TABLE t_tiny; + +--echo # +--echo # TINYBLOB NULL edge case (reclength=10) +--echo # +CREATE TABLE t_tiny2 (b TINYBLOB) ENGINE=MEMORY; +INSERT INTO t_tiny2 VALUES ('foo'), ('bar'); +SELECT * FROM t_tiny2; +DROP TABLE t_tiny2; + +--echo # +--echo # Blob-only table with no primary key +--echo # +create table t1 (b blob) engine=memory; +insert into t1 values (repeat('A', 5000)), (repeat('B', 10000)); +select length(b), left(b, 3) from t1 order by b; +delete from t1; +insert into t1 values ('short1'), ('short2'); +select b from t1 order by b; +drop table t1; + +--echo # +--echo # Table-full error with blob data +--echo # +set @save_max= @@max_heap_table_size; +# Variable must be set before CREATE TABLE (limit is captured at creation). +set @@max_heap_table_size= 65536; +create table t1 (a int not null, b blob, primary key(a)) engine=memory; +# Insert until table is full; blob data consumes continuation slots +--disable_abort_on_error +insert into t1 values (1, repeat('x', 30000)); +insert into t1 values (2, repeat('y', 30000)); +insert into t1 values (3, repeat('z', 30000)); +--enable_abort_on_error +# At least the first row should be readable +select a, length(b) from t1 where a=1; +set @@max_heap_table_size= @save_max; +drop table t1; + +--echo # +--echo # Multiple blob columns with different sizes in same row +--echo # +create table t1 ( + a int not null, + b tinyblob, + c blob, + d mediumblob, + primary key(a) +) engine=memory; +insert into t1 values (1, repeat('p', 200), repeat('q', 30000), repeat('r', 60000)); +insert into t1 values (2, 'small', repeat('s', 15000), repeat('t', 45000)); +select a, length(b), length(c), length(d), left(b,3), left(c,3), left(d,3) from t1 order by a; +# Verify data integrity +select a from t1 where b=repeat('p', 200) and c=repeat('q', 30000) and d=repeat('r', 60000); +select a from t1 where b='small' and c=repeat('s', 15000) and d=repeat('t', 45000); +drop table t1; + +--echo # +--echo # UPDATE failure preserves old blob data (table-full during blob grow) +--echo # +set @save_max= @@max_heap_table_size; +# Size chosen so two rows with small blobs fit, but updating one to a +# large blob exhausts the table before the new chain is fully written. +# Variable must be set before CREATE TABLE (limit is captured at creation). +# Use LONGBLOB so the 200KB value is accepted by the column type. +set @@max_heap_table_size= 65536; +create table t1 (a int not null, b longblob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('A', 5000)); +insert into t1 values (2, repeat('B', 5000)); +# This update should fail: the new blob is too large for the table +--error ER_RECORD_FILE_FULL +update t1 set b=repeat('X', 200000) where a=1; +# Old data must survive intact after the failed update +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +select a from t1 where b=repeat('A', 5000); +select a from t1 where b=repeat('B', 5000); +set @@max_heap_table_size= @save_max; +drop table t1; + +--echo # +--echo # Large blob exceeding uint16 run_rec_count cap (65535 records) +--echo # +--echo # With recbuffer=16, visible=15, a 1MB blob needs ~69906 records, +--echo # exceeding the uint16 max of 65535. The free list scavenging must +--echo # split into multiple runs at the cap boundary. +--echo # Delete-then-reinsert exercises scavenging of the freed chain. +--echo # +set @save_max= @@max_heap_table_size; +set @@max_heap_table_size= 64 * 1024 * 1024; +create table t1 (a int not null, b longblob, primary key(a)) engine=memory; +insert into t1 values (1, repeat('A', 1048576)); +insert into t1 values (2, repeat('B', 1048576)); +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +select a from t1 where b = repeat('A', 1048576); +select a from t1 where b = repeat('B', 1048576); +# Delete both rows — puts ~140K contiguous records on free list +delete from t1 where a=1; +delete from t1 where a=2; +# Reinsert — scavenges from free list, must split at uint16 boundary +insert into t1 values (3, repeat('C', 1048576)); +insert into t1 values (4, repeat('D', 1048576)); +select a, length(b), left(b, 5), right(b, 5) from t1 order by a; +select a from t1 where b = repeat('C', 1048576); +select a from t1 where b = repeat('D', 1048576); +set @@max_heap_table_size= @save_max; +drop table t1; + +--echo # +--echo # Zero-copy Case A: tiny blobs fitting in rec 0 payload (wide table) +--echo # +create table t_casea (a int not null, b varchar(480), c blob, primary key(a)) engine=memory; +insert into t_casea values (1, repeat('v', 480), repeat('A', 400)); +insert into t_casea values (2, repeat('w', 480), repeat('B', 100)); +select a, length(c), left(c,3) from t_casea order by a; +select a from t_casea where c = repeat('A', 400); +select a from t_casea where c = repeat('B', 100); +drop table t_casea; + +--echo # +--echo # Zero-copy Case B: medium blobs (single run, multiple records) +--echo # +create table t_caseb (a int not null, b blob, primary key(a)) engine=memory; +insert into t_caseb values (1, repeat('M', 8000)); +insert into t_caseb values (2, repeat('N', 15000)); +select a, length(b), left(b,3), right(b,3) from t_caseb order by a; +select a from t_caseb where b = repeat('M', 8000); +select a from t_caseb where b = repeat('N', 15000); +# Delete and reinsert to exercise free list -> tail fallback +delete from t_caseb where a=1; +insert into t_caseb values (3, repeat('O', 12000)); +select a, length(b) from t_caseb order by a; +select a from t_caseb where b = repeat('O', 12000); +drop table t_caseb; + +--echo # +--echo # Zero-copy Case B->C boundary (large blobs forcing multi-run) +--echo # +create table t_boundary (a int not null, b blob, primary key(a)) engine=memory; +# Case B: single run, zero-copy +insert into t_boundary values (1, repeat('X', 15000)); +# Case C: large enough to span multiple leaf blocks +insert into t_boundary values (2, repeat('Y', 50000)); +select a, length(b), left(b,3) from t_boundary order by a; +select a from t_boundary where b = repeat('X', 15000); +select a from t_boundary where b = repeat('Y', 50000); +drop table t_boundary; + +--echo # +--echo # Non-blob table regression: ensure no behavioral change +--echo # +create table t1 (a int not null, b varchar(100), primary key(a)) engine=memory; +insert into t1 values (1, 'no blob here'), (2, 'still no blob'); +select * from t1 order by a; +update t1 set b='changed' where a=1; +select * from t1 order by a; +delete from t1 where a=2; +select * from t1 order by a; +drop table t1; diff --git a/mysql-test/suite/heap/heap_geometry.result b/mysql-test/suite/heap/heap_geometry.result new file mode 100644 index 0000000000000..6ff7e65e54428 --- /dev/null +++ b/mysql-test/suite/heap/heap_geometry.result @@ -0,0 +1,75 @@ +# +# Test GEOMETRY columns in MEMORY tables +# Reproduces blob data corruption during INSERT...SELECT doublings +# +set @save_max_heap_table_size= @@max_heap_table_size; +set max_heap_table_size= 128*1024*1024; +create table t1 (c1 int, c2 geometry not null) engine=MEMORY; +# Verify table is using MEMORY engine +select engine from information_schema.tables +where table_schema=database() and table_name='t1'; +engine +MEMORY +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (2, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (3, ST_GeomFromText('LineString(4 4, 170 170)')); +INSERT INTO t1 VALUES (4, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (5, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (6, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (7, ST_GeomFromText('LineString(8 8, 210 210)')); +# 7 rows, all valid +select count(*) from t1; +count(*) +7 +select count(*) as null_count from t1 where ST_AsText(c2) is null; +null_count +0 +# Doublings 1-8: no corruption expected +select count(*) as 'expect 1792' from t1; +expect 1792 +1792 +select count(*) as 'expect 0' from t1 where ST_AsText(c2) is null; +expect 0 +0 +# Doubling 9 +insert into t1 select * from t1; +select count(*) as 'expect 3584' from t1; +expect 3584 +3584 +select count(*) as 'expect 0' from t1 where ST_AsText(c2) is null; +expect 0 +0 +# Doubling 10 +insert into t1 select * from t1; +select count(*) as 'expect 7168' from t1; +expect 7168 +7168 +select count(*) as 'expect 0' from t1 where ST_AsText(c2) is null; +expect 0 +0 +# Doubling 11 +insert into t1 select * from t1; +select count(*) as 'expect 14336' from t1; +expect 14336 +14336 +select count(*) as 'expect 0' from t1 where ST_AsText(c2) is null; +expect 0 +0 +# Verify all geometry values present with correct counts +select ST_AsText(c2) as geom, count(*) as cnt from t1 +group by geom order by geom; +geom cnt +LINESTRING(2 2,150 150) 2048 +LINESTRING(3 3,160 160) 2048 +LINESTRING(4 4,170 170) 2048 +LINESTRING(5 5,180 180) 2048 +LINESTRING(6 6,190 190) 2048 +LINESTRING(7 7,200 200) 2048 +LINESTRING(8 8,210 210) 2048 +# MBRWithin check +set @g1 = ST_GeomFromText('Polygon((0 0,0 200,200 200,200 0,0 0))'); +select count(*) as 'expect 12288' from t1 where MBRWithin(t1.c2, @g1); +expect 12288 +12288 +drop table t1; +set max_heap_table_size= @save_max_heap_table_size; diff --git a/mysql-test/suite/heap/heap_geometry.test b/mysql-test/suite/heap/heap_geometry.test new file mode 100644 index 0000000000000..9d4fe38ff81b7 --- /dev/null +++ b/mysql-test/suite/heap/heap_geometry.test @@ -0,0 +1,65 @@ +--source include/have_geometry.inc + +--echo # +--echo # Test GEOMETRY columns in MEMORY tables +--echo # Reproduces blob data corruption during INSERT...SELECT doublings +--echo # + +set @save_max_heap_table_size= @@max_heap_table_size; +set max_heap_table_size= 128*1024*1024; + +create table t1 (c1 int, c2 geometry not null) engine=MEMORY; + +--echo # Verify table is using MEMORY engine +select engine from information_schema.tables + where table_schema=database() and table_name='t1'; + +INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)')); +INSERT INTO t1 VALUES (2, ST_GeomFromText('LineString(3 3, 160 160)')); +INSERT INTO t1 VALUES (3, ST_GeomFromText('LineString(4 4, 170 170)')); +INSERT INTO t1 VALUES (4, ST_GeomFromText('LineString(5 5, 180 180)')); +INSERT INTO t1 VALUES (5, ST_GeomFromText('LineString(6 6, 190 190)')); +INSERT INTO t1 VALUES (6, ST_GeomFromText('LineString(7 7, 200 200)')); +INSERT INTO t1 VALUES (7, ST_GeomFromText('LineString(8 8, 210 210)')); + +--echo # 7 rows, all valid +select count(*) from t1; +select count(*) as null_count from t1 where ST_AsText(c2) is null; + +--echo # Doublings 1-8: no corruption expected +--let $i= 8 +--disable_query_log +while ($i) +{ + insert into t1 select * from t1; + --dec $i +} +--enable_query_log +select count(*) as 'expect 1792' from t1; +select count(*) as 'expect 0' from t1 where ST_AsText(c2) is null; + +--echo # Doubling 9 +insert into t1 select * from t1; +select count(*) as 'expect 3584' from t1; +select count(*) as 'expect 0' from t1 where ST_AsText(c2) is null; + +--echo # Doubling 10 +insert into t1 select * from t1; +select count(*) as 'expect 7168' from t1; +select count(*) as 'expect 0' from t1 where ST_AsText(c2) is null; + +--echo # Doubling 11 +insert into t1 select * from t1; +select count(*) as 'expect 14336' from t1; +select count(*) as 'expect 0' from t1 where ST_AsText(c2) is null; + +--echo # Verify all geometry values present with correct counts +select ST_AsText(c2) as geom, count(*) as cnt from t1 + group by geom order by geom; + +--echo # MBRWithin check +set @g1 = ST_GeomFromText('Polygon((0 0,0 200,200 200,200 0,0 0))'); +select count(*) as 'expect 12288' from t1 where MBRWithin(t1.c2, @g1); + +drop table t1; +set max_heap_table_size= @save_max_heap_table_size; diff --git a/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result b/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result index fe7781a72f50f..eaf5b53f9c012 100644 --- a/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result +++ b/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result @@ -120,7 +120,7 @@ INSERT INTO fts_test (title, text) VALUES ANALYZE TABLE fts_test; set @@auto_increment_increment=1; select *, match(title, text) AGAINST ('database') as score -from fts_test order by score desc; +from fts_test order by score desc, FTS_DOC_ID; FTS_DOC_ID title text score 11 MySQL Tutorial DBMS stands for DataBase ... 0.22764469683170319 51 MySQL vs. YourSQL In the following database comparison ... 0.22764469683170319 diff --git a/mysql-test/suite/innodb_fts/r/misc.result b/mysql-test/suite/innodb_fts/r/misc.result index 4afd9bf1f7485..f290744085dd7 100644 --- a/mysql-test/suite/innodb_fts/r/misc.result +++ b/mysql-test/suite/innodb_fts/r/misc.result @@ -492,7 +492,7 @@ INSERT INTO t1 (a,b) VALUES ('aab MySQL vs. YourSQL','In the following database comparison ...'), ('aaa MySQL Security','When configured properly, MySQL ...'); ALTER TABLE t1 ADD FULLTEXT INDEX idx (a,b); -SELECT * FROM t1 ORDER BY MATCH(a,b) AGAINST ('aac') DESC; +SELECT * FROM t1 ORDER BY MATCH(a,b) AGAINST ('aac') DESC, id; id a b 3 aac Optimizing MySQL In this tutorial we will show ... 4 aac 1001 MySQL Tricks 1. Never run mysqld as root. 2. ... @@ -500,7 +500,7 @@ id a b 2 aas How To Use MySQL Well After you went through a ... 5 aab MySQL vs. YourSQL In the following database comparison ... 6 aaa MySQL Security When configured properly, MySQL ... -SELECT * FROM t1 ORDER BY MATCH(a,b) AGAINST ('aab') DESC; +SELECT * FROM t1 ORDER BY MATCH(a,b) AGAINST ('aab') DESC, id; id a b 1 aab` MySQL Tutorial DBMS stands for DataBase ... 5 aab MySQL vs. YourSQL In the following database comparison ... @@ -1395,7 +1395,7 @@ this year.'),('Peter Pan','Tis a kids story.'),('Test1','nada'),('Database database database','foo database database database'),('Database article title','body with lots of words.'),('myfulltext database', 'my test fulltext database'); -SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC; +SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC, id; id title body 6 Database database database foo database database database @@ -1412,7 +1412,7 @@ this year. 5 Test1 nada DELETE from articles WHERE title like "myfulltext database"; INSERT INTO articles (title,body) VALUES ('myfulltext database', 'my test fulltext database'); -SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC; +SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC, id; id title body 6 Database database database foo database database database @@ -1428,7 +1428,7 @@ this year. 5 Test1 nada DELETE from articles WHERE title like "myfulltext database"; INSERT INTO articles (title,body) VALUES ('myfulltext database', 'my test fulltext database'); -SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC; +SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC, id; id title body 6 Database database database foo database database database diff --git a/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test b/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test index 8d4cbe7b86c27..5efa2972205d9 100644 --- a/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test +++ b/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test @@ -187,7 +187,7 @@ ANALYZE TABLE fts_test; set @@auto_increment_increment=1; select *, match(title, text) AGAINST ('database') as score -from fts_test order by score desc; +from fts_test order by score desc, FTS_DOC_ID; drop index idx on fts_test; diff --git a/mysql-test/suite/innodb_fts/t/misc.test b/mysql-test/suite/innodb_fts/t/misc.test index f3c10d1620559..ad4d4e137cebc 100644 --- a/mysql-test/suite/innodb_fts/t/misc.test +++ b/mysql-test/suite/innodb_fts/t/misc.test @@ -493,8 +493,8 @@ ANALYZE TABLE t1; -- enable_result_log -- enable_query_log -SELECT * FROM t1 ORDER BY MATCH(a,b) AGAINST ('aac') DESC; -SELECT * FROM t1 ORDER BY MATCH(a,b) AGAINST ('aab') DESC; +SELECT * FROM t1 ORDER BY MATCH(a,b) AGAINST ('aac') DESC, id; +SELECT * FROM t1 ORDER BY MATCH(a,b) AGAINST ('aab') DESC, id; --echo "----------Test7---------" select * from t1 where match(a,b) against ('aaa') @@ -1347,17 +1347,17 @@ database database','foo database database database'),('Database article title','body with lots of words.'),('myfulltext database', 'my test fulltext database'); -SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC; +SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC, id; DELETE from articles WHERE title like "myfulltext database"; INSERT INTO articles (title,body) VALUES ('myfulltext database', 'my test fulltext database'); -SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC; +SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC, id; DELETE from articles WHERE title like "myfulltext database"; INSERT INTO articles (title,body) VALUES ('myfulltext database', 'my test fulltext database'); -SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC; +SELECT id, title, body FROM articles ORDER BY MATCH (title,body) AGAINST ('database' IN BOOLEAN MODE) DESC, id; DROP TABLE articles; diff --git a/mysql-test/suite/perfschema/include/transaction_nested_events_verifier.inc b/mysql-test/suite/perfschema/include/transaction_nested_events_verifier.inc index baee5e840a563..faeef52341042 100644 --- a/mysql-test/suite/perfschema/include/transaction_nested_events_verifier.inc +++ b/mysql-test/suite/perfschema/include/transaction_nested_events_verifier.inc @@ -133,7 +133,7 @@ SELECT THREAD_ID, SQL_TEXT FROM performance_schema.events_statements_history_long s WHERE ((s.thread_id = @con1_thread_id) OR (@all_threads = 1)) -ORDER BY thread_id, r_event_id; +ORDER BY thread_id, r_event_id, r_end_event_id; --echo # --echo ### Clear statement and transaction history diff --git a/mysql-test/suite/perfschema/r/transaction_nested_events.result b/mysql-test/suite/perfschema/r/transaction_nested_events.result index 52fa3783a8bb5..699c807ced311 100644 --- a/mysql-test/suite/perfschema/r/transaction_nested_events.result +++ b/mysql-test/suite/perfschema/r/transaction_nested_events.result @@ -145,7 +145,7 @@ RPAD(IFNULL(NESTING_EVENT_TYPE, 'NULL'), 18, ' ') NESTING_EVENT_TYPE, SQL_TEXT FROM performance_schema.events_statements_history_long s WHERE ((s.thread_id = @con1_thread_id) OR (@all_threads = 1)) -ORDER BY thread_id, r_event_id; +ORDER BY thread_id, r_event_id, r_end_event_id; THREAD_ID R_EVENT_ID R_END_EVENT_ID EVENT_NAME R_NESTING_EVENT_ID NESTING_EVENT_TYPE SQL_TXT thread_id 1 2 statement/sql/insert NULL NULL INSERT INTO t1 VALUES (210, "INSERT 210") thread_id 2 2 transaction 1 STATEMENT @@ -265,7 +265,7 @@ RPAD(IFNULL(NESTING_EVENT_TYPE, 'NULL'), 18, ' ') NESTING_EVENT_TYPE, SQL_TEXT FROM performance_schema.events_statements_history_long s WHERE ((s.thread_id = @con1_thread_id) OR (@all_threads = 1)) -ORDER BY thread_id, r_event_id; +ORDER BY thread_id, r_event_id, r_end_event_id; THREAD_ID R_EVENT_ID R_END_EVENT_ID EVENT_NAME R_NESTING_EVENT_ID NESTING_EVENT_TYPE SQL_TXT thread_id 1 2 statement/sql/begin NULL NULL START TRANSACTION thread_id 2 5 transaction 1 STATEMENT @@ -397,7 +397,7 @@ RPAD(IFNULL(NESTING_EVENT_TYPE, 'NULL'), 18, ' ') NESTING_EVENT_TYPE, SQL_TEXT FROM performance_schema.events_statements_history_long s WHERE ((s.thread_id = @con1_thread_id) OR (@all_threads = 1)) -ORDER BY thread_id, r_event_id; +ORDER BY thread_id, r_event_id, r_end_event_id; THREAD_ID R_EVENT_ID R_END_EVENT_ID EVENT_NAME R_NESTING_EVENT_ID NESTING_EVENT_TYPE SQL_TXT thread_id 1 2 statement/sql/create_proc NULL NULL CREATE PROCEDURE tp_update() UPDATE t1 SET s1 = s1 + 1 thread_id 2 2 transaction 1 STATEMENT @@ -537,7 +537,7 @@ RPAD(IFNULL(NESTING_EVENT_TYPE, 'NULL'), 18, ' ') NESTING_EVENT_TYPE, SQL_TEXT FROM performance_schema.events_statements_history_long s WHERE ((s.thread_id = @con1_thread_id) OR (@all_threads = 1)) -ORDER BY thread_id, r_event_id; +ORDER BY thread_id, r_event_id, r_end_event_id; THREAD_ID R_EVENT_ID R_END_EVENT_ID EVENT_NAME R_NESTING_EVENT_ID NESTING_EVENT_TYPE SQL_TXT thread_id 1 2 statement/sql/create_proc NULL NULL CREATE PROCEDURE tp_start() START TRANSACTION thread_id 2 2 transaction 1 STATEMENT @@ -697,7 +697,7 @@ RPAD(IFNULL(NESTING_EVENT_TYPE, 'NULL'), 18, ' ') NESTING_EVENT_TYPE, SQL_TEXT FROM performance_schema.events_statements_history_long s WHERE ((s.thread_id = @con1_thread_id) OR (@all_threads = 1)) -ORDER BY thread_id, r_event_id; +ORDER BY thread_id, r_event_id, r_end_event_id; THREAD_ID R_EVENT_ID R_END_EVENT_ID EVENT_NAME R_NESTING_EVENT_ID NESTING_EVENT_TYPE SQL_TXT thread_id 1 2 statement/sql/create_proc NULL NULL CREATE PROCEDURE tp_rollback() ROLLBACK thread_id 2 2 transaction 1 STATEMENT @@ -871,7 +871,7 @@ RPAD(IFNULL(NESTING_EVENT_TYPE, 'NULL'), 18, ' ') NESTING_EVENT_TYPE, SQL_TEXT FROM performance_schema.events_statements_history_long s WHERE ((s.thread_id = @con1_thread_id) OR (@all_threads = 1)) -ORDER BY thread_id, r_event_id; +ORDER BY thread_id, r_event_id, r_end_event_id; THREAD_ID R_EVENT_ID R_END_EVENT_ID EVENT_NAME R_NESTING_EVENT_ID NESTING_EVENT_TYPE SQL_TXT thread_id 1 2 statement/sql/begin NULL NULL START TRANSACTION thread_id 3 3 statement/sql/insert 2 TRANSACTION INSERT INTO t1 VALUES (410, "INSERT 410") @@ -1005,7 +1005,7 @@ RPAD(IFNULL(NESTING_EVENT_TYPE, 'NULL'), 18, ' ') NESTING_EVENT_TYPE, SQL_TEXT FROM performance_schema.events_statements_history_long s WHERE ((s.thread_id = @con1_thread_id) OR (@all_threads = 1)) -ORDER BY thread_id, r_event_id; +ORDER BY thread_id, r_event_id, r_end_event_id; THREAD_ID R_EVENT_ID R_END_EVENT_ID EVENT_NAME R_NESTING_EVENT_ID NESTING_EVENT_TYPE SQL_TXT thread_id 1 2 statement/sql/begin NULL NULL START TRANSACTION thread_id 2 6 transaction 1 STATEMENT @@ -1238,7 +1238,7 @@ RPAD(IFNULL(NESTING_EVENT_TYPE, 'NULL'), 18, ' ') NESTING_EVENT_TYPE, SQL_TEXT FROM performance_schema.events_statements_history_long s WHERE ((s.thread_id = @con1_thread_id) OR (@all_threads = 1)) -ORDER BY thread_id, r_event_id; +ORDER BY thread_id, r_event_id, r_end_event_id; THREAD_ID R_EVENT_ID R_END_EVENT_ID EVENT_NAME R_NESTING_EVENT_ID NESTING_EVENT_TYPE SQL_TXT thread_id 1 2 statement/sql/begin NULL NULL START TRANSACTION thread_id 2 19 transaction 1 STATEMENT diff --git a/mysql-test/suite/plugins/r/sql_error_log_withdbinfo.result b/mysql-test/suite/plugins/r/sql_error_log_withdbinfo.result index 732e74d851662..8f9de3e5e82e5 100644 --- a/mysql-test/suite/plugins/r/sql_error_log_withdbinfo.result +++ b/mysql-test/suite/plugins/r/sql_error_log_withdbinfo.result @@ -31,9 +31,9 @@ CREATE DATABASE `NULL`; USE `NULL`; DROP DATABASE db; ERROR HY000: Can't drop database 'db'; database doesn't exist -TIME THREAD_ID HOSTNAME `mtr` WARNING 1286: Unknown storage engine 'InnoDB' : SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql -TIME THREAD_ID HOSTNAME `mtr` WARNING 1286: Unknown storage engine 'InnoDB' : SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql -TIME THREAD_ID HOSTNAME `mtr` WARNING 1286: Unknown storage engine 'InnoDB' : SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql +TIME THREAD_ID HOSTNAME `mtr` WARNING 1286: Unknown storage engine 'InnoDB' : SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql, ordinal_position +TIME THREAD_ID HOSTNAME `mtr` WARNING 1286: Unknown storage engine 'InnoDB' : SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql, ordinal_position +TIME THREAD_ID HOSTNAME `mtr` WARNING 1286: Unknown storage engine 'InnoDB' : SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql, ordinal_position TIME THREAD_ID HOSTNAME `test` ERROR 1238: Variable 'sql_error_log_with_db_and_thread_info' is a read only variable : SET sql_error_log_with_db_and_thread_info=OFF TIME THREAD_ID HOSTNAME `test` ERROR 1008: Can't drop database 'db'; database doesn't exist : DROP DATABASE db TIME THREAD_ID HOSTNAME NULL ERROR 1008: Can't drop database 'dbnodb'; database doesn't exist : DROP DATABASE dbnodb diff --git a/mysql-test/suite/sys_vars/r/tmp_disk_table_size_basic.result b/mysql-test/suite/sys_vars/r/tmp_disk_table_size_basic.result index 96314c64de4f8..0220d45e252af 100644 --- a/mysql-test/suite/sys_vars/r/tmp_disk_table_size_basic.result +++ b/mysql-test/suite/sys_vars/r/tmp_disk_table_size_basic.result @@ -151,7 +151,109 @@ ERROR 42S22: Unknown column 'tmp_disk_table_size' in 'SELECT' SET @@tmp_disk_table_size=16384; CREATE VIEW v AS SELECT 'a'; SELECT table_name FROM INFORMATION_SCHEMA.views; -ERROR HY000: The table '(temporary)' is full +table_name +host_summary +host_summary_by_file_io +host_summary_by_file_io_type +host_summary_by_stages +host_summary_by_statement_latency +host_summary_by_statement_type +innodb_buffer_stats_by_schema +innodb_buffer_stats_by_table +innodb_lock_waits +io_by_thread_by_latency +io_global_by_file_by_bytes +io_global_by_file_by_latency +io_global_by_wait_by_bytes +io_global_by_wait_by_latency +latest_file_io +memory_by_host_by_current_bytes +memory_by_thread_by_current_bytes +memory_by_user_by_current_bytes +memory_global_by_current_bytes +memory_global_total +metrics +processlist +ps_check_lost_instrumentation +schema_auto_increment_columns +schema_index_statistics +schema_object_overview +schema_redundant_indexes +schema_table_lock_waits +schema_table_statistics +schema_table_statistics_with_buffer +schema_tables_with_full_table_scans +schema_unused_indexes +session +session_ssl_status +statement_analysis +statements_with_errors_or_warnings +statements_with_full_table_scans +statements_with_runtimes_in_95th_percentile +statements_with_sorting +statements_with_temp_tables +user +user_summary +user_summary_by_file_io +user_summary_by_file_io_type +user_summary_by_stages +user_summary_by_statement_latency +user_summary_by_statement_type +v +version +wait_classes_global_by_avg_latency +wait_classes_global_by_latency +waits_by_host_by_latency +waits_by_user_by_latency +waits_global_by_latency +x$host_summary +x$host_summary_by_file_io +x$host_summary_by_file_io_type +x$host_summary_by_stages +x$host_summary_by_statement_latency +x$host_summary_by_statement_type +x$innodb_buffer_stats_by_schema +x$innodb_buffer_stats_by_table +x$innodb_lock_waits +x$io_by_thread_by_latency +x$io_global_by_file_by_bytes +x$io_global_by_file_by_latency +x$io_global_by_wait_by_bytes +x$io_global_by_wait_by_latency +x$latest_file_io +x$memory_by_host_by_current_bytes +x$memory_by_thread_by_current_bytes +x$memory_by_user_by_current_bytes +x$memory_global_by_current_bytes +x$memory_global_total +x$processlist +x$ps_digest_95th_percentile_by_avg_us +x$ps_digest_avg_latency_distribution +x$ps_schema_table_statistics_io +x$schema_flattened_keys +x$schema_index_statistics +x$schema_table_lock_waits +x$schema_table_statistics +x$schema_table_statistics_with_buffer +x$schema_tables_with_full_table_scans +x$session +x$statement_analysis +x$statements_with_errors_or_warnings +x$statements_with_full_table_scans +x$statements_with_runtimes_in_95th_percentile +x$statements_with_sorting +x$statements_with_temp_tables +x$user_summary +x$user_summary_by_file_io +x$user_summary_by_file_io_type +x$user_summary_by_stages +x$user_summary_by_statement_latency +x$user_summary_by_statement_type +x$wait_classes_global_by_avg_latency +x$wait_classes_global_by_latency +x$waits_by_host_by_latency +x$waits_by_user_by_latency +x$waits_global_by_latency DROP VIEW v; # End of 10.4 test SET @@global.tmp_disk_table_size = @start_global_value; diff --git a/mysql-test/suite/sys_vars/t/tmp_disk_table_size_basic.test b/mysql-test/suite/sys_vars/t/tmp_disk_table_size_basic.test index 099be3544865b..454e2cbd6edc6 100644 --- a/mysql-test/suite/sys_vars/t/tmp_disk_table_size_basic.test +++ b/mysql-test/suite/sys_vars/t/tmp_disk_table_size_basic.test @@ -203,7 +203,7 @@ SELECT tmp_disk_table_size = @@session.tmp_disk_table_size; SET @@tmp_disk_table_size=16384; CREATE VIEW v AS SELECT 'a'; ---error ER_RECORD_FILE_FULL +--sorted_result SELECT table_name FROM INFORMATION_SCHEMA.views; DROP VIEW v; diff --git a/mysql-test/suite/sysschema/r/v_schema_redundant_indexes.result b/mysql-test/suite/sysschema/r/v_schema_redundant_indexes.result index 2199c959cd029..8893726fe128a 100644 --- a/mysql-test/suite/sysschema/r/v_schema_redundant_indexes.result +++ b/mysql-test/suite/sysschema/r/v_schema_redundant_indexes.result @@ -32,6 +32,6 @@ KEY (i, j, k) ); SELECT * FROM sys.schema_redundant_indexes; table_schema table_name redundant_index_name redundant_index_columns redundant_index_non_unique dominant_index_name dominant_index_columns dominant_index_non_unique subpart_exists sql_drop_index -rkey rkey j j 1 j_2 j,k 1 0 ALTER TABLE `rkey`.`rkey` DROP INDEX `j` rkey rkey i i,j,k 1 PRIMARY i 0 0 ALTER TABLE `rkey`.`rkey` DROP INDEX `i` +rkey rkey j j 1 j_2 j,k 1 0 ALTER TABLE `rkey`.`rkey` DROP INDEX `j` DROP DATABASE rkey; diff --git a/sql/item_func.cc b/sql/item_func.cc index 37d63d984f3af..02ffe79ad7769 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -6377,8 +6377,49 @@ bool Item_func_match::fix_fields(THD *thd, Item **ref) } if (!(table->file->ha_table_flags() & HA_CAN_FULLTEXT)) { - my_error(ER_TABLE_CANT_HANDLE_FT, MYF(0), table->file->table_type()); - return 1; + /* + If this is an in-memory tmp table that hasn't been opened yet + (e.g. a derived table being prepared), convert it to a disk-based + engine that supports FULLTEXT. This can happen when HEAP blob + support keeps a table in memory that would previously have been + forced to disk by blob columns alone. + */ + if (table->s->tmp_table && !table->is_created() && + table->s->db_type() == heap_hton) + { + /* + Replace the HEAP handler with a disk-based engine (Aria/MyISAM) + that supports FULLTEXT. The table has not been opened yet, so + only the handler object and plugin reference need to be swapped. + This follows the same pattern as + create_internal_tmp_table_from_heap() in sql_select.cc. + */ + delete table->file; + table->file= NULL; + /* Reset ha_share — old HEAP handler already set it via finalize() */ + table->s->ha_share= NULL; + plugin_unlock(0, table->s->db_plugin); + table->s->db_plugin= ha_lock_engine(0, TMP_ENGINE_HTON); + if (!(table->file= get_new_handler(table->s, &table->mem_root, + table->s->db_type()))) + { + my_error(ER_OUTOFMEMORY, MYF(ME_FATAL), + static_cast(sizeof(handler))); + return 1; + } + if (table->file->set_ha_share_ref(&table->s->ha_share)) + { + delete table->file; + table->file= NULL; + return 1; + } + table->file->set_table(table); + } + else + { + my_error(ER_TABLE_CANT_HANDLE_FT, MYF(0), table->file->table_type()); + return 1; + } } table->fulltext_searched=1; return agg_arg_charsets_for_comparison(cmp_collation, args+1, arg_count-1); diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 580a13e1c5445..3e56e801bf4b2 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -801,11 +801,14 @@ bool Aggregator_distinct::setup(THD *thd) table->file->extra(HA_EXTRA_NO_ROWS); // Don't update rows table->no_rows=1; - if (table->s->db_type() == heap_hton) + if (table->s->db_type() == heap_hton && !table->s->blob_fields) { /* - No blobs, otherwise it would have been MyISAM: set up a compare - function and its arguments to use with Unique. + Unique tree compares raw record bytes (simple_raw_key_cmp or + composite_key_cmp). Blob fields store only a pointer in the + record, so raw comparison would compare pointer values, not + actual blob data. Skip the Unique tree path for blob tables + and fall through to the ha_write_tmp_row path below. */ qsort_cmp2 compare_key; void* cmp_arg; @@ -1002,9 +1005,21 @@ bool Aggregator_distinct::add() */ return tree->unique_add(table->record[0] + table->s->null_bytes); } - if (unlikely((error= table->file->ha_write_tmp_row(table->record[0]))) && - table->file->is_fatal_error(error, HA_CHECK_DUP)) - return TRUE; + if (unlikely((error= table->file->ha_write_tmp_row(table->record[0])))) + { + if (!table->file->is_fatal_error(error, HA_CHECK_DUP)) + return FALSE; // duplicate, not an error + /* + HEAP table full: convert to on-disk engine. + create_internal_tmp_table_from_heap() copies all existing rows + plus the overflow row (record[0]) to the new table. + */ + if (create_internal_tmp_table_from_heap(table->in_use, table, + tmp_table_param->start_recinfo, + &tmp_table_param->recinfo, + error, 0, NULL)) + return TRUE; + } return FALSE; } else diff --git a/sql/sql_expression_cache.cc b/sql/sql_expression_cache.cc index 34bc1e2b2ca8a..0e584cb0cc041 100644 --- a/sql/sql_expression_cache.cc +++ b/sql/sql_expression_cache.cc @@ -138,6 +138,23 @@ void Expression_cache_tmptable::init() goto error; } + /* + HEAP hash indexes on blob columns use a pointer-based key format + (4-byte length + data pointer). This is incompatible with the SQL + layer's key format (2-byte length + inline data) because + Field_blob::new_key_field() returns a Field_varstring. + + This check is slightly conservative: a blob only in the result + value would not affect the key. However, it matches the pre-blob + behavior where blobs forced Aria, which failed the heap_hton check + above and disabled the cache anyway. + */ + if (cache_table->s->blob_fields) + { + DBUG_PRINT("error", ("blob fields not supported in heap expression cache")); + goto error; + } + field_counter= 1; if (cache_table->alloc_keys(1) || diff --git a/sql/sql_select.cc b/sql/sql_select.cc index d30d3647b48c3..f7195642ffee4 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -21036,11 +21036,16 @@ bool Create_tmp_table::choose_engine(THD *thd, TABLE *table, TABLE_SHARE *share= table->s; DBUG_ENTER("Create_tmp_table::choose_engine"); /* - If result table is small; use a heap, otherwise TMP_TABLE_HTON (Aria) - In the future we should try making storage engine selection more dynamic + If result table is small; use a heap, otherwise TMP_TABLE_HTON (Aria). + HEAP now supports blob columns via continuation chains, so blob_fields + alone no longer forces a disk-based engine. We still fall back to disk + when reclength exceeds HA_MAX_REC_LENGTH (HEAP's fixed-width rows would + waste too much memory for very wide records). + In the future we should try making storage engine selection more dynamic. */ - if (share->blob_fields || m_using_unique_constraint || + if (m_using_unique_constraint || + share->reclength > HA_MAX_REC_LENGTH || (thd->variables.big_tables && !(m_select_options & SELECT_SMALL_RESULT)) || (m_select_options & TMP_TABLE_FORCE_MYISAM) || @@ -21104,9 +21109,14 @@ bool Create_tmp_table::finalize(THD *thd, if (!m_using_unique_constraint) share->reclength+= m_group_null_items; // null flag is stored separately - if (share->blob_fields == 0) + if (share->blob_fields == 0 || share->db_type() == heap_hton) { - /* We need to ensure that first byte is not 0 for the delete link */ + /* + We need to ensure that first byte is not 0 for the delete link. + HEAP uses fixed-width rows even with blobs (blob data lives in + separate continuation records within the same HP_BLOCK, not + inline in the primary record), so it still needs this guard. + */ if (m_field_count[other]) m_null_count[other]++; else @@ -21125,11 +21135,15 @@ bool Create_tmp_table::finalize(THD *thd, if (!share->reclength) share->reclength= 1; // Dummy select share->stored_rec_length= share->reclength; - /* Use packed rows if there is blobs or a lot of space to gain */ - if (share->blob_fields || - (string_total_length() >= STRING_TOTAL_LENGTH_TO_PACK_ROWS && - (share->reclength / string_total_length() <= RATIO_TO_PACK_ROWS || - string_total_length() / string_count() >= AVG_STRING_LENGTH_TO_PACK_ROWS))) + /* + Use packed rows if there is blobs or a lot of space to gain. + HEAP requires fixed-width rows — it cannot use packed row format. + */ + if (share->db_type() != heap_hton && + (share->blob_fields || + (string_total_length() >= STRING_TOTAL_LENGTH_TO_PACK_ROWS && + (share->reclength / string_total_length() <= RATIO_TO_PACK_ROWS || + string_total_length() / string_count() >= AVG_STRING_LENGTH_TO_PACK_ROWS)))) use_packed_rows= 1; { @@ -21160,8 +21174,13 @@ bool Create_tmp_table::finalize(THD *thd, share->null_bytes= share->null_bytes_for_compare= whole_null_pack_length; } - if (share->blob_fields == 0) + if (share->blob_fields == 0 || share->db_type() == heap_hton) { + /* + Same first-byte guard as above: HEAP with blobs still uses + fixed-width rows and needs a non-zero first byte for the + delete-link mechanism. + */ null_counter[(m_field_count[other] ? other : distinct)]++; } @@ -26803,8 +26822,15 @@ JOIN_TAB::remove_duplicates() table->file->info(HA_STATUS_VARIABLE); table->reginfo.lock_type=TL_WRITE; - if (table->s->db_type() == heap_hton || - (!table->s->blob_fields && + /* + remove_dup_with_hash_index() copies field data into a flat key buffer + via field->make_sort_key() and compares with memcmp. Blob fields + store only a pointer in the record, so memcmp would compare pointer + values instead of blob content. Fall back to the row-by-row compare + path for tables with blobs. + */ + if (!table->s->blob_fields && + (table->s->db_type() == heap_hton || ((ALIGN_SIZE(keylength) + HASH_OVERHEAD) * table->file->stats.records < thd->variables.sortbuff_size))) error= remove_dup_with_hash_index(join->thd, table, field_count, @@ -31781,8 +31807,24 @@ test_if_cheaper_ordering(bool in_join_optimizer, and as result we'll choose an index scan when using ref/range access + filesort will be cheaper. */ - select_limit= (ha_rows) (select_limit < fanout ? - 1 : select_limit/fanout); + /* + fanout can be extremely small (close to 0) when + cond_selectivity values are tiny, making select_limit/fanout + overflow to infinity or a value exceeding HA_POS_ERROR. + Casting such a double to ha_rows (unsigned long long) is + undefined behavior. Cap at HA_POS_ERROR to avoid UB. + Note: (double) HA_POS_ERROR rounds up to 2^64 (double can't + represent 2^64-1 exactly), so the >= comparison is safe — + any double that reaches 2^64 is genuinely out of range. + */ + { + double adjusted= (select_limit < fanout) ? + 1.0 : select_limit / fanout; + if (adjusted >= (double) HA_POS_ERROR) + select_limit= HA_POS_ERROR; + else + select_limit= (ha_rows) adjusted; + } /* refkey_rows_estimate is E(#rows) produced by the table access diff --git a/storage/heap/CMakeLists.txt b/storage/heap/CMakeLists.txt index a26124d0c1cae..7f4d53a787900 100644 --- a/storage/heap/CMakeLists.txt +++ b/storage/heap/CMakeLists.txt @@ -13,7 +13,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -SET(HEAP_SOURCES _check.c _rectest.c hp_block.c hp_clear.c hp_close.c hp_create.c +SET(HEAP_SOURCES _check.c _rectest.c hp_block.c hp_blob.c hp_clear.c hp_close.c hp_create.c ha_heap.cc hp_delete.c hp_extra.c hp_hash.c hp_info.c hp_open.c hp_panic.c hp_rename.c hp_rfirst.c hp_rkey.c hp_rlast.c hp_rnext.c hp_rprev.c diff --git a/storage/heap/_check.c b/storage/heap/_check.c index 1a640fa13da86..c87eda3818121 100644 --- a/storage/heap/_check.c +++ b/storage/heap/_check.c @@ -42,7 +42,7 @@ int heap_check_heap(const HP_INFO *info, my_bool print_status) { int error; uint key; - ulong records=0, deleted=0, pos, next_block; + ulong records=0, deleted=0, cont_count=0, pos, next_block; HP_SHARE *share=info->s; uchar *current_ptr= info->current_ptr; DBUG_ENTER("heap_check_heap"); @@ -68,9 +68,9 @@ int heap_check_heap(const HP_INFO *info, my_bool print_status) else { next_block+= share->block.records_in_block; - if (next_block >= share->records+share->deleted) + if (next_block >= share->total_records+share->deleted) { - next_block= share->records+share->deleted; + next_block= share->total_records+share->deleted; if (pos >= next_block) break; /* End of file */ } @@ -79,6 +79,12 @@ int heap_check_heap(const HP_INFO *info, my_bool print_status) if (!current_ptr[share->visible]) deleted++; + else if (hp_is_cont(current_ptr, share->visible)) + { + uint16 run_rec_count= hp_cont_rec_count(current_ptr); + cont_count+= run_rec_count; + pos+= run_rec_count - 1; /* -1 because for-loop does pos++ */ + } else records++; } @@ -90,6 +96,13 @@ int heap_check_heap(const HP_INFO *info, my_bool print_status) deleted, (ulong) share->deleted)); error= 1; } + if (records + cont_count != share->total_records) + { + DBUG_PRINT("error",("total_records mismatch: primary %lu + cont %lu != %lu", + records, cont_count, + (ulong) share->total_records)); + error= 1; + } DBUG_RETURN(error); } diff --git a/storage/heap/ha_heap.cc b/storage/heap/ha_heap.cc index 3f4d1ab69efc5..0c8f4aa2a5491 100644 --- a/storage/heap/ha_heap.cc +++ b/storage/heap/ha_heap.cc @@ -25,6 +25,7 @@ #include "sql_plugin.h" #include "ha_heap.h" #include "sql_base.h" +#include "field.h" static handler *heap_create_handler(handlerton *, TABLE_SHARE *, MEM_ROOT *); static int heap_prepare_hp_create_info(TABLE *, bool, HP_CREATE_INFO *); @@ -103,6 +104,7 @@ int ha_heap::open(const char *name, int mode, uint test_if_locked) rc= heap_create(name, &create_info, &internal_share, &created_new_share); my_free(create_info.keydef); + my_free(create_info.blob_descs); if (rc) goto end; @@ -363,6 +365,45 @@ void ha_heap::position(const uchar *record) *(HEAP_PTR*) ref= heap_position(file); // Ref is aligned } +int ha_heap::remember_rnd_pos() +{ + saved_current_record= file->current_record; + position((uchar*) 0); + return 0; +} + +int ha_heap::restart_rnd_next(uchar *buf) +{ + /* + Restore the scan position saved by remember_rnd_pos(). + + heap_scan() uses current_record as a sequential counter and next_block + as a cached upper bound for the current HP_BLOCK segment. Within one + segment, heap_scan() advances current_ptr by recbuffer without calling + hp_find_record(). heap_rrnd() (called via rnd_pos) doesn't update + these, so we restore them here. + + next_block is set to the next records_in_block-aligned boundary after + saved_current_record. We MUST then cap it at total_records + deleted + (== block.last_allocated), which is the number of actually allocated + slots in the HP_BLOCK. Without this cap, if the saved position falls + in the last block segment and rows have been deleted between + remember_rnd_pos() and restart_rnd_next() (e.g. by + remove_dup_with_compare), next_block can exceed the allocated range. + heap_scan() would then take the fast path (pos < next_block) and walk + current_ptr past the last allocated slot into unmapped memory, causing + a segfault. + */ + file->current_record= saved_current_record; + file->next_block= saved_current_record - + (saved_current_record % file->s->block.records_in_block) + + file->s->block.records_in_block; + ulong scan_end= file->s->total_records + file->s->deleted; + if (file->next_block > scan_end) + file->next_block= scan_end; + return rnd_pos(buf, ref); +} + int ha_heap::info(uint flag) { HEAPINFO hp_info; @@ -693,6 +734,47 @@ static int heap_prepare_hp_create_info(TABLE *table_arg, bool internal_table, keydef[share->next_number_index].flag|= HA_AUTO_KEY; found_real_auto_increment= share->next_number_key_offset == 0; } + + /* Populate blob column descriptors */ + if (share->blob_fields) + { + HP_BLOB_DESC *blob_descs; + blob_descs= (HP_BLOB_DESC*) my_malloc(hp_key_memory_HP_BLOB, + share->blob_fields * + sizeof(HP_BLOB_DESC), + MYF(MY_WME | MY_THREAD_SPECIFIC)); + if (!blob_descs) + { + my_free(keydef); + return my_errno; + } + { + uint real_blob_count= 0; + for (uint b= 0; b < share->blob_fields; b++) + { + Field *field= table_arg->field[share->blob_field[b]]; + /* + BLOB_FLAG may be set on non-Field_blob fields (e.g. long + Field_string in INFORMATION_SCHEMA temp tables). Only include + true Field_blob types in the HEAP blob descriptor array. + Field_geom (MYSQL_TYPE_GEOMETRY) extends Field_blob and must + also be included. + */ + if (field->type() == MYSQL_TYPE_BLOB || + field->type() == MYSQL_TYPE_GEOMETRY) + { + Field_blob *blob= (Field_blob*) field; + blob_descs[real_blob_count].offset= + (uint) blob->offset(table_arg->record[0]); + blob_descs[real_blob_count].packlength= blob->pack_length_no_ptr(); + real_blob_count++; + } + } + hp_create_info->blob_descs= blob_descs; + hp_create_info->blob_count= real_blob_count; + } + } + hp_create_info->auto_key= auto_key; hp_create_info->auto_key_type= auto_key_type; hp_create_info->max_table_size= MY_MAX(current_thd->variables.max_heap_table_size, sizeof(HP_PTRS)); @@ -734,6 +816,7 @@ int ha_heap::create(const char *name, TABLE *table_arg, create_info->auto_increment_value - 1 : 0); error= heap_create(name, &hp_create_info, &internal_share, &created); my_free(hp_create_info.keydef); + my_free(hp_create_info.blob_descs); DBUG_ASSERT(file == 0); return (error); } @@ -800,7 +883,7 @@ int ha_heap::find_unique_row(uchar *record, uint unique_idx) share->blength, share->records)); do { - if (!hp_rec_key_cmp(keyinfo, pos->ptr_to_rec, record)) + if (!hp_rec_key_cmp(keyinfo, record, pos->ptr_to_rec, file)) { file->current_hash_ptr= pos; file->current_ptr= pos->ptr_to_rec; @@ -810,6 +893,8 @@ int ha_heap::find_unique_row(uchar *record, uint unique_idx) records. */ memcpy(record, file->current_ptr, (size_t) share->reclength); + if (share->blob_count && hp_read_blobs(file, record, file->current_ptr)) + DBUG_RETURN(-1); DBUG_RETURN(0); // found and position set } diff --git a/storage/heap/ha_heap.h b/storage/heap/ha_heap.h index c38ec325740d7..0d0eec530cde6 100644 --- a/storage/heap/ha_heap.h +++ b/storage/heap/ha_heap.h @@ -32,6 +32,7 @@ class ha_heap final : public handler key_map btree_keys; /* number of records changed since last statistics update */ ulong records_changed; + ulong saved_current_record; /* for remember_rnd_pos() / restart_rnd_next() */ uint key_stat_version; my_bool internal_table; public: @@ -47,11 +48,12 @@ class ha_heap final : public handler enum row_type get_row_type() const override { return ROW_TYPE_FIXED; } ulonglong table_flags() const override { - return (HA_FAST_KEY_READ | HA_NO_BLOBS | HA_NULL_IN_KEY | + return (HA_FAST_KEY_READ | HA_NULL_IN_KEY | HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE | HA_CAN_SQL_HANDLER | HA_CAN_ONLINE_BACKUPS | HA_REC_NOT_IN_SEQ | HA_CAN_INSERT_DELAYED | HA_NO_TRANSACTIONS | - HA_HAS_RECORDS | HA_STATS_RECORDS_IS_EXACT | HA_CAN_HASH_KEYS); + HA_HAS_RECORDS | HA_STATS_RECORDS_IS_EXACT | HA_CAN_HASH_KEYS | + HA_CAN_GEOMETRY); } ulong index_flags(uint inx, uint part, bool all_parts) const override { @@ -94,6 +96,8 @@ class ha_heap final : public handler int rnd_next(uchar *buf) override; int rnd_pos(uchar * buf, uchar *pos) override; void position(const uchar *record) override; + int remember_rnd_pos() override; + int restart_rnd_next(uchar *buf) override; int can_continue_handler_scan() override; int info(uint) override; int extra(enum ha_extra_function operation) override; diff --git a/storage/heap/heapdef.h b/storage/heap/heapdef.h index e51fe88d8e2b7..5ef2003d58085 100644 --- a/storage/heap/heapdef.h +++ b/storage/heap/heapdef.h @@ -33,6 +33,93 @@ C_MODE_START #define HP_MIN_RECORDS_IN_BLOCK 16 #define HP_MAX_RECORDS_IN_BLOCK 8192 +#define HP_ROW_ACTIVE 1 /* Bit 0: record is active (not deleted) */ +#define HP_ROW_HAS_CONT 2 /* Bit 1: primary record has continuation chain(s) */ +#define HP_ROW_IS_CONT 4 /* Bit 2: this record IS a continuation record */ +#define HP_ROW_CONT_ZEROCOPY 8 /* Bit 3: zero-copy layout (data in rec 1..N-1) */ + +/* + Continuation run header: next_cont pointer + run_rec_count. + Stored at the beginning of the first record in each run. +*/ +#define HP_CONT_NEXT_PTR_SIZE sizeof(uchar*) +#define HP_CONT_REC_COUNT_SIZE sizeof(uint16) +#define HP_CONT_HEADER_SIZE (HP_CONT_NEXT_PTR_SIZE + HP_CONT_REC_COUNT_SIZE) + +/* + Minimum contiguous run size parameters. + Runs smaller than this are not worth scavenging from the free list because + the per-run header overhead (10 bytes) becomes a significant fraction of + payload. Skip them and allocate from the tail instead. + + HP_CONT_MIN_RUN_BYTES: absolute floor for minimum run payload. + HP_CONT_RUN_FRACTION_NUM/DEN: minimum run size as a fraction of blob size. + min_run_bytes = MAX(blob_length * NUM / DEN, HP_CONT_MIN_RUN_BYTES) +*/ +/* + Row flags byte predicates. + The flags byte is at offset 'visible' in each primary or run-header record. +*/ + +/* Record is active (not deleted) */ +static inline my_bool hp_is_active(const uchar *rec, uint visible) +{ + return (rec[visible] & HP_ROW_ACTIVE) != 0; +} + +/* Primary record that owns blob continuation chain(s) */ +static inline my_bool hp_has_cont(const uchar *rec, uint visible) +{ + return (rec[visible] & HP_ROW_HAS_CONT) != 0; +} + +/* This record IS a continuation run header (rec 0 of a run) */ +static inline my_bool hp_is_cont(const uchar *rec, uint visible) +{ + return (rec[visible] & HP_ROW_IS_CONT) != 0; +} + +/* + Continuation run header accessors. + Read next_cont pointer and run_rec_count from the first record of a run. +*/ +static inline const uchar *hp_cont_next(const uchar *chain) +{ + const uchar *next; + memcpy(&next, chain, HP_CONT_NEXT_PTR_SIZE); + return next; +} + +static inline uint16 hp_cont_rec_count(const uchar *chain) +{ + return uint2korr(chain + HP_CONT_NEXT_PTR_SIZE); +} + +/* + Zero-copy case detection for stored continuation chains. + + Case A: single record, single run — data fits in rec 0 payload after header. + run_rec_count == 1 AND next_cont == NULL. + IMPORTANT: run_rec_count == 1 alone is NOT sufficient — a multi-run + blob can have run_rec_count == 1 in its first run when free-list + fragmentation produces a single-slot fragment. + + Case B: single run, multiple records, zerocopy flag set — data in rec 1..N-1. +*/ +static inline my_bool hp_is_case_a(const uchar *chain) +{ + return hp_cont_rec_count(chain) == 1 && hp_cont_next(chain) == NULL; +} + +static inline my_bool hp_is_case_b(const uchar *chain, uint visible) +{ + return (chain[visible] & HP_ROW_CONT_ZEROCOPY) != 0; +} + +#define HP_CONT_MIN_RUN_BYTES 128 +#define HP_CONT_RUN_FRACTION_NUM 1 +#define HP_CONT_RUN_FRACTION_DEN 10 + /* Some extern variables */ extern LIST *heap_open_list,*heap_share_list; @@ -85,9 +172,12 @@ extern ulong hp_rec_hashnr(HP_KEYDEF *keyinfo,const uchar *rec); extern void hp_movelink(HASH_INFO *pos,HASH_INFO *next_link, HASH_INFO *newlink); extern int hp_rec_key_cmp(HP_KEYDEF *keydef,const uchar *rec1, - const uchar *rec2); + const uchar *rec2, HP_INFO *info); extern int hp_key_cmp(HP_KEYDEF *keydef,const uchar *rec, - const uchar *key); + const uchar *key, HP_INFO *info); +extern const uchar *hp_materialize_one_blob(HP_INFO *info, + const uchar *chain, + uint32 data_len); extern void hp_make_key(HP_KEYDEF *keydef,uchar *key,const uchar *rec); extern uint hp_rb_make_key(HP_KEYDEF *keydef, uchar *key, const uchar *rec, uchar *recpos); @@ -104,12 +194,19 @@ extern ha_rows hp_rows_in_memory(size_t reclength, size_t index_size, size_t memory_limit); extern size_t hp_memory_needed_per_row(size_t reclength); +extern uchar *next_free_record_pos(HP_SHARE *info); +extern int hp_write_blobs(HP_INFO *info, const uchar *record, uchar *pos); +extern int hp_read_blobs(HP_INFO *info, uchar *record, const uchar *pos); +extern void hp_free_blobs(HP_SHARE *share, uchar *pos); +extern void hp_free_run_chain(HP_SHARE *share, uchar *chain); + extern mysql_mutex_t THR_LOCK_heap; extern PSI_memory_key hp_key_memory_HP_SHARE; extern PSI_memory_key hp_key_memory_HP_INFO; extern PSI_memory_key hp_key_memory_HP_PTRS; extern PSI_memory_key hp_key_memory_HP_KEYDEF; +extern PSI_memory_key hp_key_memory_HP_BLOB; #ifdef HAVE_PSI_INTERFACE void init_heap_psi_keys(); diff --git a/storage/heap/hp_blob.c b/storage/heap/hp_blob.c new file mode 100644 index 0000000000000..19c8068be5d14 --- /dev/null +++ b/storage/heap/hp_blob.c @@ -0,0 +1,885 @@ +/* Copyright (c) 2025, MariaDB Corporation. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */ + +/* + LOB (BLOB/TEXT) support for HEAP tables using variable-length + continuation runs. + + Each blob column's data is stored as a chain of continuation "runs". + A run is a contiguous sequence of recbuffer-sized records in the same + HP_BLOCK. The first record of each run stores a header (next_cont + pointer + run_rec_count); subsequent records carry pure blob payload. + Runs are linked together via the next_cont pointer. + + This design amortizes the per-run header overhead across many records, + giving near-100% space efficiency for typical blob sizes (150 KB and + above), even when recbuffer is very small (e.g. 16 bytes). +*/ + +#include "heapdef.h" +#include +#include + + +/* + Read blob data length from the record buffer. +*/ + +static uint32 hp_blob_length(const HP_BLOB_DESC *desc, const uchar *record) +{ + switch (desc->packlength) + { + case 1: + return (uint32) record[desc->offset]; + case 2: + return uint2korr(record + desc->offset); + case 3: + return uint3korr(record + desc->offset); + case 4: + return uint4korr(record + desc->offset); + default: + DBUG_ASSERT(0); + return 0; + } +} + + +/* + Allocate one record from the HP_BLOCK tail, bypassing the free list. + Same accounting as next_free_record_pos() but never uses del_link. + + Maintains the scan-boundary invariant: + total_records + deleted == block.last_allocated + by incrementing both last_allocated and total_records together. + heap_scan() relies on this invariant to know when to stop scanning. +*/ + +static uchar *hp_alloc_from_tail(HP_SHARE *share) +{ + int block_pos; + size_t length; + + if (!(block_pos= (share->block.last_allocated % + share->block.records_in_block))) + { + if ((share->block.last_allocated > share->max_records && + share->max_records) || + (share->data_length + share->index_length >= share->max_table_size)) + { + my_errno= HA_ERR_RECORD_FILE_FULL; + return NULL; + } + if (hp_get_new_block(share, &share->block, &length)) + return NULL; + share->data_length+= length; + } + share->block.last_allocated++; + share->total_records++; + return (uchar*) share->block.level_info[0].last_blocks + + block_pos * share->block.recbuffer; +} + + +/* + Free one continuation chain of variable-length runs. + + Walks from the first run, reads run_rec_count from each, frees all + records individually to the free list, then follows next_cont to the + next run. + + Maintains the scan-boundary invariant: + total_records + deleted == block.last_allocated + Each freed slot does total_records-- and deleted++, keeping the sum + constant. heap_scan() relies on this sum to know when to stop. + + @param share Table share + @param chain Pointer to first record of first run (or NULL) +*/ + +void hp_free_run_chain(HP_SHARE *share, uchar *chain) +{ + uint recbuffer= share->block.recbuffer; + + while (chain) + { + uchar *next_run; + uint16 run_rec_count; + uint16 j; + + memcpy(&next_run, chain, HP_CONT_NEXT_PTR_SIZE); + run_rec_count= uint2korr(chain + HP_CONT_NEXT_PTR_SIZE); + + for (j= 0; j < run_rec_count; j++) + { + uchar *pos= chain + j * recbuffer; + *((uchar**) pos)= share->del_link; + share->del_link= pos; + pos[share->visible]= 0; + share->deleted++; + share->total_records--; + } + + chain= next_run; + } +} + + +/* + Write blob data into a contiguous run of records. + + Writes the run header (next_cont=NULL, run_rec_count) in the first + record, then copies blob data across all records in the run, + advancing *offset. + + @param share Table share + @param data Source blob data + @param data_len Total blob data length + @param run_start Pointer to first record of the run + @param run_rec_count Number of consecutive records in this run + @param zerocopy If TRUE, use zero-copy layout: + Case A (run_rec_count==1): data in rec 0 after header. + Case B (run_rec_count>1): data in rec 1..N-1 only, + rec 0 carries only the header (no data payload). + @param offset [in/out] Current offset into blob data + + @note Caller must link runs by overwriting next_cont in the previous run. +*/ + +static void hp_write_run_data(HP_SHARE *share, const uchar *data, + uint32 data_len, uchar *run_start, + uint16 run_rec_count, my_bool zerocopy, + uint32 *offset) +{ + uint visible= share->visible; + uint recbuffer= share->block.recbuffer; + uint32 off= *offset; + uint32 remaining= data_len - off; + uint32 chunk; + uint16 rec; + uchar *null_ptr= NULL; + + /* First record: run header + flags byte (always written) */ + memcpy(run_start, &null_ptr, HP_CONT_NEXT_PTR_SIZE); + int2store(run_start + HP_CONT_NEXT_PTR_SIZE, run_rec_count); + run_start[visible]= HP_ROW_ACTIVE | HP_ROW_IS_CONT | + (zerocopy && run_rec_count > 1 ? HP_ROW_CONT_ZEROCOPY : 0); + + /* + Case B (zerocopy && run_rec_count > 1): skip data copy in rec 0. + All data goes into rec 1..N-1 contiguously for zero-copy reads. + Case A (zerocopy && run_rec_count == 1): data fits in rec 0 payload. + Case C (!zerocopy): data starts in rec 0 as before. + */ + if (!zerocopy || run_rec_count == 1) + { + chunk= visible - HP_CONT_HEADER_SIZE; + if (chunk > remaining) + chunk= remaining; + memcpy(run_start + HP_CONT_HEADER_SIZE, data + off, chunk); + off+= chunk; + remaining-= chunk; + } + + /* + Inner records (rec 1..N-1): full recbuffer payload, no flags byte. + This makes data in inner records contiguous, enabling zero-copy reads + for single-run blobs (Case B). + */ + for (rec= 1; rec < run_rec_count && remaining > 0; rec++) + { + uchar *rec_ptr= run_start + rec * recbuffer; + chunk= recbuffer; + if (chunk > remaining) + chunk= remaining; + memcpy(rec_ptr, data + off, chunk); + off+= chunk; + remaining-= chunk; + } + + *offset= off; +} + + +/* + Unlink a contiguous group from the free list and write blob data into it. + + @param share Table share + @param data_ptr Blob data + @param data_len Total blob data length + @param run_start Lowest address of the contiguous group + @param run_count Number of contiguous records in the group + @param visible share->visible + @param recbuffer share->block.recbuffer + @param data_offset [in/out] Current offset into blob data + @param first_run [in/out] Pointer to first run (NULL initially) + @param prev_run_start [in/out] Pointer to previous run's start +*/ + +static void hp_unlink_and_write_run(HP_SHARE *share, const uchar *data_ptr, + uint32 data_len, uchar *run_start, + uint16 run_count, uint visible, + uint recbuffer, uint32 *data_offset, + uchar **first_run, uchar **prev_run_start) +{ + uint32 remaining= data_len - *data_offset; + uint32 records_needed; + uint16 records_to_use; + uint32 unlinked= 0; + uchar **prev_link= &share->del_link; + uchar *cur; + uint32 first_payload= visible - HP_CONT_HEADER_SIZE; + + if (remaining <= first_payload) + records_needed= 1; + else + records_needed= 1 + (remaining - first_payload + recbuffer - 1) / recbuffer; + records_to_use= (records_needed > run_count) ? run_count : + (uint16) records_needed; + + cur= share->del_link; + while (cur && unlinked < records_to_use) + { + uchar *next= *((uchar**) cur); + if (cur >= run_start && + cur < run_start + records_to_use * recbuffer) + { + *prev_link= next; + share->deleted--; + share->total_records++; + unlinked++; + } + else + prev_link= (uchar**) cur; + cur= next; + } + + hp_write_run_data(share, data_ptr, data_len, run_start, + records_to_use, FALSE, data_offset); + + if (*prev_run_start) + memcpy(*prev_run_start, &run_start, sizeof(run_start)); + else + *first_run= run_start; + *prev_run_start= run_start; +} + + +/* + Write one blob column's data into a chain of continuation runs. + + Allocates contiguous runs from the free list and/or block tail, + copies blob data into them, and returns the first run pointer. + On failure, frees any partially allocated chain. + + @param share Table share + @param data_ptr Blob data to write + @param data_len Blob data length (must be > 0) + @param first_run_out [out] Pointer to first run's first record + + @return 0 on success, my_errno on failure +*/ + +static int hp_write_one_blob(HP_SHARE *share, const uchar *data_ptr, + uint32 data_len, uchar **first_run_out) +{ + uint visible= share->visible; + uint recbuffer= share->block.recbuffer; + uint32 min_run_bytes; + uint32 min_run_records; + uchar *first_run= NULL; + uchar *prev_run_start= NULL; + uint32 data_offset= 0; + + /* Calculate minimum acceptable run size */ + min_run_bytes= data_len / HP_CONT_RUN_FRACTION_DEN * + HP_CONT_RUN_FRACTION_NUM; + if (min_run_bytes < HP_CONT_MIN_RUN_BYTES) + min_run_bytes= HP_CONT_MIN_RUN_BYTES; + min_run_records= (min_run_bytes + recbuffer - 1) / recbuffer; + if (min_run_records < 2) + min_run_records= 2; + + /* + Step 1: Try to allocate contiguous runs from the free list. + + Peek at free list records by walking next pointers without unlinking. + Track contiguous groups (descending addresses — LIFO order from + hp_free_run_chain). On discontinuity: if the group qualifies + (>= min_run_records), unlink and use it; if it doesn't, the free + list is too fragmented — stop and fall through to tail allocation. + */ + { + uchar *run_start= NULL; + uint16 run_count= 0; + uchar *prev_pos= NULL; + uchar *pos; + + for (pos= share->del_link; + pos && data_offset < data_len; + pos= *((uchar**) pos)) + { + /* + Only check descending direction: hp_free_run_chain() frees records + in ascending address order (j=0..N), so LIFO pushes them onto the + free list in reverse — consecutive free list entries have descending + addresses. Ascending adjacency from unrelated deletes is ignored + intentionally; we only recover runs that were freed together. + */ + if (prev_pos && pos == prev_pos - recbuffer && run_count < UINT_MAX16) + { + run_start= pos; + run_count++; + prev_pos= pos; + continue; + } + + /* + Discontinuity. If the accumulated group qualifies, use it. + If not, the free list is fragmented — give up entirely. + */ + if (run_count > 0) + { + if (run_count < min_run_records) + break; + hp_unlink_and_write_run(share, data_ptr, data_len, run_start, + run_count, visible, recbuffer, + &data_offset, &first_run, &prev_run_start); + } + + run_start= pos; + run_count= 1; + prev_pos= pos; + } + + /* Handle the last group after the loop ends */ + if (run_count >= min_run_records && data_offset < data_len) + hp_unlink_and_write_run(share, data_ptr, data_len, run_start, + run_count, visible, recbuffer, + &data_offset, &first_run, &prev_run_start); + } + + /* + Step 2: Allocate remaining data from the block tail. + + Tail allocation is always contiguous within a leaf block. + When we hit a block boundary, we start a new run. + */ + while (data_offset < data_len) + { + uchar *run_start; + uint16 run_rec_count; + uint32 remaining= data_len - data_offset; + uint32 run_payload; + my_bool is_only_run; + + run_start= hp_alloc_from_tail(share); + if (!run_start) + goto err; + run_rec_count= 1; + + /* Extend the run with consecutive tail records */ + for (;;) + { + uint block_pos; + + if (run_rec_count == 1) + run_payload= visible - HP_CONT_HEADER_SIZE; + else + run_payload= (visible - HP_CONT_HEADER_SIZE) + + (uint32)(run_rec_count - 1) * recbuffer; + if (run_payload >= remaining) + break; + + /* + Check if the next record would be in the same leaf block. + block_pos == 0 means last_allocated is at a block boundary + and the next allocation would start a new block. + */ + block_pos= share->block.last_allocated % + share->block.records_in_block; + if (block_pos == 0) + break; + + { + uchar *next_rec= hp_alloc_from_tail(share); + if (!next_rec) + break; + /* + Contiguity guard (active in all builds, not just debug). + + Blob continuation runs use pointer arithmetic (run_start + + i * recbuffer) to access inner records in the write, read, + zero-copy, scan-skip, and free paths. Today, contiguity + within a leaf block is guaranteed by hp_get_new_block() + allocating a single flat array of records_in_block * recbuffer + bytes, and hp_alloc_from_tail() handing them out sequentially. + But this is an implementation detail of HP_BLOCK, not a + documented contract. A future change (e.g. sub-block + allocation, memory pooling, or alignment padding between + records) could silently break this assumption, turning every + blob path into a source of data corruption. Abort here so + such a change is caught immediately by any test that exercises + blob writes. + */ + if (unlikely(next_rec != + run_start + (uint32) run_rec_count * recbuffer)) + { + my_safe_printf_stderr( + "HEAP blob: tail allocation not contiguous: " + "expected %p, got %p (run_start=%p, count=%u, recbuffer=%u)\n", + run_start + (uint32) run_rec_count * recbuffer, + next_rec, run_start, (uint) run_rec_count, recbuffer); + abort(); + } + run_rec_count++; + } + } + + is_only_run= (first_run == NULL && prev_run_start == NULL); + + if (is_only_run && run_payload >= remaining) + { + /* + Single-run blob — use zero-copy layout if possible. + Case A: data fits in rec 0 payload (run_rec_count == 1). + Case B: data in rec 1..N-1 only, contiguous for zero-copy reads. + */ + if (run_rec_count == 1) + { + /* Case A: data fits in rec 0 */ + hp_write_run_data(share, data_ptr, data_len, run_start, + run_rec_count, TRUE, &data_offset); + } + else + { + uint32 case_b_payload= (uint32)(run_rec_count - 1) * recbuffer; + if (case_b_payload >= remaining) + { + /* Case B: rec 1..N-1 alone hold all data */ + hp_write_run_data(share, data_ptr, data_len, run_start, + run_rec_count, TRUE, &data_offset); + } + else + { + /* + Case B needs one more record than Case C. Try to extend + if we're not at a block boundary. + */ + uint block_pos= share->block.last_allocated % + share->block.records_in_block; + if (block_pos != 0) + { + uchar *extra= hp_alloc_from_tail(share); + if (extra) + { + /* + Contiguity guard for the Case B extra record, same + rationale as the main extension loop ~60 lines above: + hp_get_new_block() today allocates flat arrays but this + is an HP_BLOCK implementation detail, not a contract. + A future change could break contiguity and silently + corrupt every blob read/write/free path that relies on + run_start + i * recbuffer arithmetic. + */ + if (unlikely(extra != + run_start + (uint32) run_rec_count * recbuffer)) + { + my_safe_printf_stderr( + "HEAP blob: Case B extra allocation not contiguous: " + "expected %p, got %p " + "(run_start=%p, count=%u, recbuffer=%u)\n", + run_start + (uint32) run_rec_count * recbuffer, + extra, run_start, (uint) run_rec_count, recbuffer); + abort(); + } + run_rec_count++; + hp_write_run_data(share, data_ptr, data_len, run_start, + run_rec_count, TRUE, &data_offset); + } + else + hp_write_run_data(share, data_ptr, data_len, run_start, + run_rec_count, FALSE, &data_offset); + } + else + hp_write_run_data(share, data_ptr, data_len, run_start, + run_rec_count, FALSE, &data_offset); + } + } + } + else + { + /* Multi-run (Case C) or not the only run */ + hp_write_run_data(share, data_ptr, data_len, run_start, + run_rec_count, FALSE, &data_offset); + } + + if (prev_run_start) + memcpy(prev_run_start, &run_start, sizeof(run_start)); + else + first_run= run_start; + prev_run_start= run_start; + } + + *first_run_out= first_run; + return 0; + +err: + if (first_run) + hp_free_run_chain(share, first_run); + *first_run_out= NULL; + return my_errno; +} + + +/* + Write blob data from the record buffer into continuation runs. + + For each blob column, reads the (length, pointer) descriptor from + the caller's record buffer, allocates variable-length continuation + runs, copies blob data into them, and overwrites the pointer in + the stored row (pos) to point to the first continuation run. + + @param info Table handle + @param record Source record buffer (caller's data) + @param pos Destination row in HP_BLOCK (already has memcpy'd record) + + @return 0 on success, my_errno on failure +*/ + +int hp_write_blobs(HP_INFO *info, const uchar *record, uchar *pos) +{ + HP_SHARE *share= info->s; + uint i; + my_bool has_blob_data= FALSE; + DBUG_ENTER("hp_write_blobs"); + + for (i= 0; i < share->blob_count; i++) + { + HP_BLOB_DESC *desc= &share->blob_descs[i]; + uint32 data_len; + const uchar *data_ptr; + uchar *first_run; + + data_len= hp_blob_length(desc, record); + + if (data_len == 0) + { + uchar *null_ptr= NULL; + memcpy(pos + desc->offset + desc->packlength, &null_ptr, sizeof(null_ptr)); + continue; + } + + has_blob_data= TRUE; + memcpy(&data_ptr, record + desc->offset + desc->packlength, sizeof(data_ptr)); + + if (hp_write_one_blob(share, data_ptr, data_len, &first_run)) + { + /* Rollback: free all previously completed blob columns */ + uint j; + for (j= 0; j < i; j++) + { + HP_BLOB_DESC *rd= &share->blob_descs[j]; + uchar *chain; + memcpy(&chain, pos + rd->offset + rd->packlength, sizeof(chain)); + if (chain) + hp_free_run_chain(share, chain); + { + uchar *null_ptr= NULL; + memcpy(pos + rd->offset + rd->packlength, &null_ptr, sizeof(null_ptr)); + } + } + { + uchar *null_ptr= NULL; + memcpy(pos + desc->offset + desc->packlength, &null_ptr, + sizeof(null_ptr)); + } + DBUG_RETURN(my_errno); + } + + memcpy(pos + desc->offset + desc->packlength, &first_run, sizeof(first_run)); + } + + pos[share->visible]= has_blob_data ? + (HP_ROW_ACTIVE | HP_ROW_HAS_CONT) : HP_ROW_ACTIVE; + DBUG_RETURN(0); +} + + +/* + Read blob data from continuation runs into the reassembly buffer. + + After memcpy(record, pos, reclength), blob descriptor pointers in + record[] point into HP_BLOCK continuation run chains. This function + walks each chain, reassembles blob data into info->blob_buff, and + rewrites the pointers in record[] to point into blob_buff. + + @param info Table handle + @param record Record buffer (already has memcpy'd row data) + @param pos Row pointer in HP_BLOCK + + @return 0 on success, my_errno on failure +*/ + +int hp_read_blobs(HP_INFO *info, uchar *record, const uchar *pos) +{ + HP_SHARE *share= info->s; + uint i; + uint visible= share->visible; + uint recbuffer= share->block.recbuffer; + uint32 total_copy_size= 0; + uchar *buff_ptr; + DBUG_ENTER("hp_read_blobs"); + + info->has_zerocopy_blobs= FALSE; + + if (!hp_has_cont(pos, share->visible)) + DBUG_RETURN(0); + + /* + Pass 1: sum data_len for blobs that need reassembly (not zero-copy). + Cases A and B (HP_ROW_CONT_ZEROCOPY set, or single-record run) use + zero-copy pointers into HP_BLOCK, no blob_buff needed. + */ + for (i= 0; i < share->blob_count; i++) + { + HP_BLOB_DESC *desc= &share->blob_descs[i]; + uint32 data_len; + const uchar *chain; + + data_len= hp_blob_length(desc, record); + if (data_len == 0) + continue; + + memcpy(&chain, record + desc->offset + desc->packlength, sizeof(chain)); + + /* Zero-copy cases (A or B) need no reassembly buffer space */ + if (hp_is_case_a(chain) || hp_is_case_b(chain, visible)) + { + info->has_zerocopy_blobs= TRUE; + continue; + } + total_copy_size+= data_len; + } + + /* Grow reassembly buffer for Case C blobs */ + if (total_copy_size > 0) + { + if (total_copy_size > info->blob_buff_len) + { + uchar *new_buff= (uchar*) my_realloc(hp_key_memory_HP_BLOB, + info->blob_buff, + total_copy_size, + MYF(MY_ALLOW_ZERO_PTR)); + if (!new_buff) + DBUG_RETURN(my_errno= HA_ERR_OUT_OF_MEM); + info->blob_buff= new_buff; + info->blob_buff_len= total_copy_size; + } + } + + /* Pass 2: process each blob column */ + buff_ptr= info->blob_buff; + for (i= 0; i < share->blob_count; i++) + { + HP_BLOB_DESC *desc= &share->blob_descs[i]; + uint32 data_len; + const uchar *chain; + + data_len= hp_blob_length(desc, record); + if (data_len == 0) + continue; + + memcpy(&chain, record + desc->offset + desc->packlength, sizeof(chain)); + + if (hp_is_case_a(chain)) + { + /* Case A: single-record single-run — zero-copy */ + const uchar *blob_data= chain + HP_CONT_HEADER_SIZE; + memcpy(record + desc->offset + desc->packlength, &blob_data, + sizeof(blob_data)); + } + else if (hp_is_case_b(chain, visible)) + { + /* Case B: data in rec 1..N-1, contiguous — zero-copy */ + const uchar *blob_data= chain + recbuffer; + memcpy(record + desc->offset + desc->packlength, &blob_data, + sizeof(blob_data)); + } + else + { + /* Case C: reassemble into blob_buff */ + uint32 remaining= data_len; + const uchar *next_cont; + while (chain && remaining > 0) + { + uint16 rec; + uint16 run_rec_count; + uint32 chunk; + + next_cont= hp_cont_next(chain); + run_rec_count= hp_cont_rec_count(chain); + + /* First record payload (after header) */ + chunk= visible - HP_CONT_HEADER_SIZE; + if (chunk > remaining) + chunk= remaining; + memcpy(buff_ptr, chain + HP_CONT_HEADER_SIZE, chunk); + buff_ptr+= chunk; + remaining-= chunk; + + /* Inner records: recbuffer stride, no flags byte */ + for (rec= 1; rec < run_rec_count && remaining > 0; rec++) + { + const uchar *rec_ptr= chain + rec * recbuffer; + chunk= recbuffer; + if (chunk > remaining) + chunk= remaining; + memcpy(buff_ptr, rec_ptr, chunk); + buff_ptr+= chunk; + remaining-= chunk; + } + + chain= next_cont; + } + + /* Update blob pointer to reassembly buffer */ + { + uchar *blob_data= buff_ptr - data_len; + memcpy(record + desc->offset + desc->packlength, &blob_data, + sizeof(blob_data)); + } + } + } + + DBUG_RETURN(0); +} + + +/* + Materialize a single blob column's data from a continuation chain + into info->blob_buff. + + Used by hash comparison functions when comparing a stored record + (where the blob data pointer has been overwritten with a continuation + chain pointer) against an input record. + + @param info Table handle (provides blob_buff) + @param chain Pointer to first run of the continuation chain + @param data_len Total blob data length (from record's packlength bytes) + + @return Pointer into info->blob_buff with contiguous blob data, + or NULL on allocation failure. +*/ + +const uchar *hp_materialize_one_blob(HP_INFO *info, + const uchar *chain, + uint32 data_len) +{ + HP_SHARE *share= info->s; + uint visible= share->visible; + uint recbuffer= share->block.recbuffer; + uint32 remaining; + uchar *buff_ptr; + const uchar *next_cont; + uint16 run_rec_count; + + if (data_len == 0 || !chain) + return chain; + + /* Check for zero-copy cases */ + if (hp_is_case_a(chain)) + return chain + HP_CONT_HEADER_SIZE; /* Case A */ + if (hp_is_case_b(chain, visible)) + return chain + recbuffer; /* Case B */ + + /* Case C: multiple runs, reassemble into blob_buff */ + if (data_len > info->blob_buff_len) + { + uchar *new_buff= (uchar*) my_realloc(hp_key_memory_HP_BLOB, + info->blob_buff, + data_len, + MYF(MY_ALLOW_ZERO_PTR)); + if (!new_buff) + return NULL; + info->blob_buff= new_buff; + info->blob_buff_len= data_len; + } + + buff_ptr= info->blob_buff; + remaining= data_len; + while (chain && remaining > 0) + { + uint16 rec; + uint32 chunk; + + next_cont= hp_cont_next(chain); + run_rec_count= hp_cont_rec_count(chain); + + /* First record payload (after header) */ + chunk= visible - HP_CONT_HEADER_SIZE; + if (chunk > remaining) + chunk= remaining; + memcpy(buff_ptr, chain + HP_CONT_HEADER_SIZE, chunk); + buff_ptr+= chunk; + remaining-= chunk; + + /* Inner records: recbuffer stride, no flags byte */ + for (rec= 1; rec < run_rec_count && remaining > 0; rec++) + { + const uchar *rec_ptr= chain + rec * recbuffer; + chunk= recbuffer; + if (chunk > remaining) + chunk= remaining; + memcpy(buff_ptr, rec_ptr, chunk); + buff_ptr+= chunk; + remaining-= chunk; + } + + chain= next_cont; + } + + return info->blob_buff; +} + + +/* + Free continuation run chains for all blob columns of a row. + + Walks each blob column's run chain and adds all records back to the + free list. + + @param share Table share + @param pos Primary record pointer in HP_BLOCK +*/ + +void hp_free_blobs(HP_SHARE *share, uchar *pos) +{ + uint i; + DBUG_ENTER("hp_free_blobs"); + + if (!hp_has_cont(pos, share->visible)) + DBUG_VOID_RETURN; + + for (i= 0; i < share->blob_count; i++) + { + HP_BLOB_DESC *desc= &share->blob_descs[i]; + uchar *chain; + + memcpy(&chain, pos + desc->offset + desc->packlength, sizeof(chain)); + hp_free_run_chain(share, chain); + } + + DBUG_VOID_RETURN; +} diff --git a/storage/heap/hp_clear.c b/storage/heap/hp_clear.c index b0b263249a881..9efb4170792a7 100644 --- a/storage/heap/hp_clear.c +++ b/storage/heap/hp_clear.c @@ -35,8 +35,9 @@ void hp_clear(HP_SHARE *info) (void) hp_free_level(&info->block,info->block.levels,info->block.root, (uchar*) 0); info->block.levels=0; + info->block.last_allocated=0; hp_clear_keys(info); - info->records= info->deleted= 0; + info->records= info->deleted= info->total_records= 0; info->data_length= 0; info->blength=1; info->changed=0; diff --git a/storage/heap/hp_close.c b/storage/heap/hp_close.c index 82d6186340aa1..aa417f99b5a71 100644 --- a/storage/heap/hp_close.c +++ b/storage/heap/hp_close.c @@ -40,6 +40,7 @@ int hp_close(register HP_INFO *info) heap_open_list=list_delete(heap_open_list,&info->open_list); if (!--info->s->open_count && info->s->delete_on_close) hp_free(info->s); /* Table was deleted */ + my_free(info->blob_buff); my_free(info); DBUG_RETURN(error); } diff --git a/storage/heap/hp_create.c b/storage/heap/hp_create.c index f35e8e3fac9f8..6433b059605d0 100644 --- a/storage/heap/hp_create.c +++ b/storage/heap/hp_create.c @@ -74,7 +74,17 @@ int heap_create(const char *name, HP_CREATE_INFO *create_info, so the visible_offset must be least at sizeof(uchar*) */ visible_offset= MY_MAX(reclength, sizeof (char*)); - + /* + Blob tables store continuation run headers (next_cont pointer + + run_slots count = HP_CONT_HEADER_SIZE bytes) in each run's first + slot. Ensure at least 1 byte of payload beyond the header, + otherwise hp_write_run_data() underflows computing + chunk = visible - HP_CONT_HEADER_SIZE. Only matters for + pathological single-TINYBLOB tables (reclength as low as 9). + */ + if (create_info->blob_count) + visible_offset= MY_MAX(visible_offset, HP_CONT_HEADER_SIZE + 1); + for (i= key_segs= max_length= 0, keyinfo= keydef; i < keys; i++, keyinfo++) { bzero((char*) &keyinfo->block,sizeof(keyinfo->block)); @@ -110,6 +120,12 @@ int heap_create(const char *name, HP_CREATE_INFO *create_info, /* fall through */ case HA_KEYTYPE_VARTEXT1: keyinfo->flag|= HA_VAR_LENGTH_KEY; + /* + Real blob fields always enter as VARTEXT2/VARBINARY2, never + as VARTEXT1/VARBINARY1. Strip any spurious HA_BLOB_PART + (e.g. from uninitialized key_part_flag in SJ weedout tables). + */ + keyinfo->seg[j].flag&= ~HA_BLOB_PART; /* For BTREE algorithm, key length, greater than or equal to 255, is packed on 3 bytes. @@ -126,16 +142,78 @@ int heap_create(const char *name, HP_CREATE_INFO *create_info, /* fall_through */ case HA_KEYTYPE_VARTEXT2: keyinfo->flag|= HA_VAR_LENGTH_KEY; + /* + Strip HA_BLOB_PART for key segments that don't correspond + to actual blob fields. HA_BLOB_PART can appear spuriously + from uninitialized key_part_flag (SJ weedout tables) or + from BLOB_FLAG on non-Field_blob types (I_S temp tables). + */ + if (keyinfo->seg[j].flag & HA_BLOB_PART) + { + my_bool real_blob= FALSE; + uint k; + for (k= 0; k < create_info->blob_count; k++) + { + if (create_info->blob_descs[k].offset == + keyinfo->seg[j].start) + { + real_blob= TRUE; + break; + } + } + if (!real_blob) + keyinfo->seg[j].flag&= ~HA_BLOB_PART; + } /* For BTREE algorithm, key length, greater than or equal to 255, is packed on 3 bytes. */ if (keyinfo->algorithm == HA_KEY_ALG_BTREE) length+= size_to_store_key_length(keyinfo->seg[j].length); + else if (keyinfo->seg[j].flag & HA_BLOB_PART) + length+= 4 + sizeof(uchar*); /* 4-byte len + data ptr in key */ else length+= 2; - /* Save number of bytes used to store length */ - keyinfo->seg[j].bit_start= 2; + /* + Save number of bytes used to store length. + For blob segments, bit_start holds the actual blob packlength + (1-4). Some SQL layer paths (DISTINCT) set it explicitly; + others (UNION) leave it 0 and set seg->length to pack_length + (= packlength + sizeof(uchar*)). Derive it when missing. + Also normalize seg->length to 0 ("whole blob") for blob + segments where the SQL layer set it to pack_length. + */ + if (!(keyinfo->seg[j].flag & HA_BLOB_PART)) + keyinfo->seg[j].bit_start= 2; + else + { + if (keyinfo->seg[j].bit_start == 0 && keyinfo->seg[j].length > 0) + keyinfo->seg[j].bit_start= + (uint8)(keyinfo->seg[j].length - sizeof(uchar*)); + keyinfo->seg[j].length= 0; /* "whole blob" */ + /* + Fallback: if bit_start is still 0 after the length-based + derivation above (which requires length > 0), look up the + actual packlength from the blob descriptor array. This + covers any SQL layer path that sets both bit_start=0 and + length=0 for a blob key segment. + */ + if (keyinfo->seg[j].bit_start == 0) + { + uint k; + for (k= 0; k < create_info->blob_count; k++) + { + if (create_info->blob_descs[k].offset == + keyinfo->seg[j].start) + { + keyinfo->seg[j].bit_start= + (uint8) create_info->blob_descs[k].packlength; + break; + } + } + DBUG_ASSERT(keyinfo->seg[j].bit_start > 0); + } + } /* Make future comparison simpler by only having to check for one type @@ -174,7 +252,8 @@ int heap_create(const char *name, HP_CREATE_INFO *create_info, if (!(share= (HP_SHARE*) my_malloc(hp_key_memory_HP_SHARE, sizeof(HP_SHARE)+ keys*sizeof(HP_KEYDEF)+ - key_segs*sizeof(HA_KEYSEG), + key_segs*sizeof(HA_KEYSEG)+ + create_info->blob_count*sizeof(HP_BLOB_DESC), MYF(MY_ZEROFILL | (create_info->internal_table ? MY_THREAD_SPECIFIC : 0))))) @@ -182,6 +261,13 @@ int heap_create(const char *name, HP_CREATE_INFO *create_info, share->keydef= (HP_KEYDEF*) (share + 1); share->key_stat_version= 1; keyseg= (HA_KEYSEG*) (share->keydef + keys); + if (create_info->blob_count) + { + share->blob_descs= (HP_BLOB_DESC*) (keyseg + key_segs); + memcpy(share->blob_descs, create_info->blob_descs, + create_info->blob_count * sizeof(HP_BLOB_DESC)); + share->blob_count= create_info->blob_count; + } init_block(&share->block, hp_memory_needed_per_row(reclength), min_records, max_records); /* Fix keys */ diff --git a/storage/heap/hp_delete.c b/storage/heap/hp_delete.c index 9579fb51a7918..1a4da1fff0e44 100644 --- a/storage/heap/hp_delete.c +++ b/storage/heap/hp_delete.c @@ -42,11 +42,21 @@ int heap_delete(HP_INFO *info, const uchar *record) goto err; } + /* + Free blob continuation chains first (if any), then free the head + record slot. Both hp_free_run_chain() and the code below maintain + the scan-boundary invariant: + total_records + deleted == block.last_allocated + by doing total_records-- and deleted++ for each freed slot. + */ + if (share->blob_count) + hp_free_blobs(share, pos); info->update=HA_STATE_DELETED; *((uchar**) pos)=share->del_link; share->del_link=pos; pos[share->visible]=0; /* Record deleted */ share->deleted++; + share->total_records--; share->key_version++; #if !defined(DBUG_OFF) && defined(EXTRA_HEAP_DEBUG) DBUG_EXECUTE("check_heap",heap_check_heap(info, 0);); @@ -123,7 +133,7 @@ int hp_delete_key(HP_INFO *info, register HP_KEYDEF *keyinfo, while (pos->ptr_to_rec != recpos) { - if (flag && !hp_rec_key_cmp(keyinfo, record, pos->ptr_to_rec)) + if (flag && !hp_rec_key_cmp(keyinfo, record, pos->ptr_to_rec, info)) last_ptr=pos; /* Previous same key */ gpos=pos; if (!(pos=pos->next_key)) diff --git a/storage/heap/hp_extra.c b/storage/heap/hp_extra.c index 3c554fe98e780..b54281027032b 100644 --- a/storage/heap/hp_extra.c +++ b/storage/heap/hp_extra.c @@ -59,6 +59,12 @@ int heap_reset(HP_INFO *info) info->current_hash_ptr=0; info->update=0; info->next_block=0; + if (info->blob_buff) + { + my_free(info->blob_buff); + info->blob_buff= NULL; + info->blob_buff_len= 0; + } return 0; } diff --git a/storage/heap/hp_hash.c b/storage/heap/hp_hash.c index a013915173043..c06fa77b9e9d9 100644 --- a/storage/heap/hp_hash.c +++ b/storage/heap/hp_hash.c @@ -29,6 +29,25 @@ hp_charpos(CHARSET_INFO *cs, const uchar *b, const uchar *e, size_t num) static ulong hp_hashnr(HP_KEYDEF *keydef, const uchar *key); + + +/* + Read blob data length using actual packlength stored in seg->bit_start. +*/ + +/* Size of a pointer, for use in memcpy to avoid -Wsizeof-pointer-memaccess */ +#define HP_PTR_SIZE sizeof(void*) + +static size_t hp_blob_key_length(uint packlength, const uchar *pos) +{ + switch (packlength) { + case 1: return (size_t) pos[0]; + case 2: return uint2korr(pos); + case 3: return uint3korr(pos); + case 4: return uint4korr(pos); + } + return 0; +} /* Find out how many rows there is in the given range @@ -127,7 +146,7 @@ uchar *hp_search(HP_INFO *info, HP_KEYDEF *keyinfo, const uchar *key, goto not_found; /* Wrong link */ do { - if (!hp_key_cmp(keyinfo, pos->ptr_to_rec, key)) + if (!hp_key_cmp(keyinfo, pos->ptr_to_rec, key, info)) { switch (nextflag) { case 0: /* Search after key */ @@ -188,7 +207,7 @@ uchar *hp_search_next(HP_INFO *info, HP_KEYDEF *keyinfo, const uchar *key, while ((pos= pos->next_key)) { - if (! hp_key_cmp(keyinfo, pos->ptr_to_rec, key)) + if (! hp_key_cmp(keyinfo, pos->ptr_to_rec, key, info)) { info->current_hash_ptr=pos; DBUG_RETURN (info->current_ptr= pos->ptr_to_rec); @@ -238,9 +257,9 @@ static ulong hp_hashnr(HP_KEYDEF *keydef, const uchar *key) if (*pos) /* Found null */ { nr^= (nr << 1) | 1; - /* Add key pack length (2) to key for VARCHAR segments */ + /* Add key pack length to key for VARCHAR/BLOB segments */ if (seg->type == HA_KEYTYPE_VARTEXT1) - key+= 2; + key+= (seg->flag & HA_BLOB_PART) ? 4 + sizeof(uchar*) : 2; continue; } pos++; @@ -257,6 +276,17 @@ static ulong hp_hashnr(HP_KEYDEF *keydef, const uchar *key) } my_ci_hash_sort(cs, pos, length, &nr, &nr2); } + else if (seg->type == HA_KEYTYPE_VARTEXT1 && (seg->flag & HA_BLOB_PART)) + { + /* Blob segment in pre-built key: 4-byte length + data pointer */ + CHARSET_INFO *cs= seg->charset; + uint32 blob_len= uint4korr(pos); + const uchar *blob_data; + memcpy(&blob_data, pos + 4, HP_PTR_SIZE); + if (blob_data && blob_len > 0) + my_ci_hash_sort(cs, blob_data, blob_len, &nr, &nr2); + key+= 4 + sizeof(uchar*); + } else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */ { CHARSET_INFO *cs= seg->charset; @@ -318,6 +348,17 @@ ulong hp_rec_hashnr(register HP_KEYDEF *keydef, register const uchar *rec) } my_ci_hash_sort(cs, pos, char_length, &nr, &nr2); } + else if (seg->type == HA_KEYTYPE_VARTEXT1 && (seg->flag & HA_BLOB_PART)) + { + /* Blob segment in input record: dereference data pointer */ + CHARSET_INFO *cs= seg->charset; + uint packlength= seg->bit_start; + size_t blob_len= hp_blob_key_length(packlength, pos); + const uchar *blob_data; + memcpy(&blob_data, pos + packlength, HP_PTR_SIZE); + if (blob_data && blob_len > 0) + my_ci_hash_sort(cs, blob_data, blob_len, &nr, &nr2); + } else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */ { CHARSET_INFO *cs= seg->charset; @@ -361,24 +402,23 @@ ulong hp_rec_hashnr(register HP_KEYDEF *keydef, register const uchar *rec) /* - Compare keys for two records. Returns 0 if they are identical - - SYNOPSIS - hp_rec_key_cmp() - keydef Key definition - rec1 Record to compare - rec2 Other record to compare - - NOTES - diff_if_only_endspace_difference is used to allow us to insert - 'a' and 'a ' when there is an an unique key. - - RETURN - 0 Key is identical - <> 0 Key differes + Compare two records using key segments. + + @param keydef Key definition + @param rec1 First record (input) — blob fields contain direct data + pointers to caller-owned memory + @param rec2 Second record — when @a info is non-NULL, blob fields + contain continuation chain pointers (stored format) that + are materialized via hp_materialize_one_blob(). + When @a info is NULL, treated same as rec1. + @param info When non-NULL, enables stored-blob materialization for rec2. + Must be NULL when both records are input records. + + @return 0 if records are equal by all key segments, 1 otherwise */ -int hp_rec_key_cmp(HP_KEYDEF *keydef, const uchar *rec1, const uchar *rec2) +int hp_rec_key_cmp(HP_KEYDEF *keydef, const uchar *rec1, const uchar *rec2, + HP_INFO *info) { HA_KEYSEG *seg,*endseg; @@ -416,6 +456,46 @@ int hp_rec_key_cmp(HP_KEYDEF *keydef, const uchar *rec1, const uchar *rec2) pos2, char_length2)) return 1; } + else if (seg->type == HA_KEYTYPE_VARTEXT1 && (seg->flag & HA_BLOB_PART)) + { + /* + Blob segment comparison. + rec1 always has valid blob pointers (input record). + rec2 may be stored (chain pointers) when info != NULL. + */ + uint packlength= seg->bit_start; + uchar *pos1= (uchar*) rec1 + seg->start; + uchar *pos2= (uchar*) rec2 + seg->start; + size_t len1= hp_blob_key_length(packlength, pos1); + size_t len2= hp_blob_key_length(packlength, pos2); + const uchar *data1; + const uchar *data2; + + if (len1 != len2) + return 1; + if (len1 == 0) + continue; + + /* rec1: always input — dereference pointer */ + memcpy(&data1, pos1 + packlength, HP_PTR_SIZE); + + /* rec2: if info != NULL, it's stored — materialize from chain */ + if (info) + { + const uchar *chain2; + memcpy(&chain2, pos2 + packlength, HP_PTR_SIZE); + data2= hp_materialize_one_blob(info, chain2, (uint32) len2); + if (!data2) + return 1; + } + else + { + memcpy(&data2, pos2 + packlength, HP_PTR_SIZE); + } + + if (my_ci_strnncollsp(seg->charset, data1, len1, data2, len2)) + return 1; + } else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */ { uchar *pos1= (uchar*) rec1 + seg->start; @@ -478,7 +558,8 @@ int hp_rec_key_cmp(HP_KEYDEF *keydef, const uchar *rec1, const uchar *rec2) /* Compare a key in a record to a whole key */ -int hp_key_cmp(HP_KEYDEF *keydef, const uchar *rec, const uchar *key) +int hp_key_cmp(HP_KEYDEF *keydef, const uchar *rec, const uchar *key, + HP_INFO *info) { HA_KEYSEG *seg,*endseg; @@ -493,9 +574,9 @@ int hp_key_cmp(HP_KEYDEF *keydef, const uchar *rec, const uchar *key) return 1; if (found_null) { - /* Add key pack length (2) to key for VARCHAR segments */ + /* Add key pack length to key for VARCHAR/BLOB segments */ if (seg->type == HA_KEYTYPE_VARTEXT1) - key+= 2; + key+= (seg->flag & HA_BLOB_PART) ? 4 + sizeof(uchar*) : 2; continue; } } @@ -518,12 +599,47 @@ int hp_key_cmp(HP_KEYDEF *keydef, const uchar *rec, const uchar *key) char_length_key= seg->length; char_length_rec= seg->length; } - + if (my_ci_strnncollsp(seg->charset, pos, char_length_rec, key, char_length_key)) return 1; } + else if (seg->type == HA_KEYTYPE_VARTEXT1 && (seg->flag & HA_BLOB_PART)) + { + /* + Blob segment: rec side is stored (chain pointers), key side has + 4-byte length + data pointer from hp_make_key. + */ + uint packlength= seg->bit_start; + uchar *pos= (uchar*) rec + seg->start; + size_t rec_blob_len= hp_blob_key_length(packlength, pos); + uint32 key_blob_len= uint4korr(key); + const uchar *key_data; + const uchar *rec_data; + + memcpy(&key_data, key + 4, HP_PTR_SIZE); + key+= 4 + sizeof(uchar*); + + if (rec_blob_len != key_blob_len) + return 1; + if (rec_blob_len == 0) + continue; + + /* rec is stored — materialize from chain */ + { + const uchar *chain; + memcpy(&chain, pos + packlength, HP_PTR_SIZE); + rec_data= hp_materialize_one_blob(info, chain, (uint32) rec_blob_len); + if (!rec_data) + return 1; + } + + if (my_ci_strnncollsp(seg->charset, + rec_data, rec_blob_len, + key_data, key_blob_len)) + return 1; + } else if (seg->type == HA_KEYTYPE_VARTEXT1) /* Any VARCHAR segments */ { uchar *pos= (uchar*) rec + seg->start; @@ -538,7 +654,7 @@ int hp_key_cmp(HP_KEYDEF *keydef, const uchar *rec, const uchar *key) if (cs->mbmaxlen > 1) { size_t char_length1, char_length2; - char_length1= char_length2= seg->length / cs->mbmaxlen; + char_length1= char_length2= seg->length / cs->mbmaxlen; char_length1= hp_charpos(cs, key, key + char_length_key, char_length1); set_if_smaller(char_length_key, char_length1); char_length2= hp_charpos(cs, pos, pos + char_length_rec, char_length2); @@ -586,6 +702,21 @@ void hp_make_key(HP_KEYDEF *keydef, uchar *key, const uchar *rec) uchar *pos= (uchar*) rec + seg->start; if (seg->null_bit) *key++= MY_TEST(rec[seg->null_pos] & seg->null_bit); + if (seg->type == HA_KEYTYPE_VARTEXT1 && (seg->flag & HA_BLOB_PART)) + { + /* + Blob segment in input record: store 4-byte length + data pointer + in key buffer for later use by hp_hashnr/hp_key_cmp. + */ + uint packlength= seg->bit_start; + uint32 blob_len= (uint32) hp_blob_key_length(packlength, pos); + const uchar *blob_data; + memcpy(&blob_data, pos + packlength, HP_PTR_SIZE); + int4store(key, blob_len); + memcpy(key + 4, &blob_data, HP_PTR_SIZE); + key+= 4 + sizeof(uchar*); + continue; + } if (cs->mbmaxlen > 1) { char_length= hp_charpos(cs, pos, pos + seg->length, diff --git a/storage/heap/hp_rfirst.c b/storage/heap/hp_rfirst.c index 60596a2c650fd..903fd42a135ed 100644 --- a/storage/heap/hp_rfirst.c +++ b/storage/heap/hp_rfirst.c @@ -38,6 +38,8 @@ int heap_rfirst(HP_INFO *info, uchar *record, int inx) sizeof(uchar*)); info->current_ptr = pos; memcpy(record, pos, (size_t)share->reclength); + if (share->blob_count && hp_read_blobs(info, record, pos)) + DBUG_RETURN(my_errno); /* If we're performing index_first on a table that was taken from table cache, info->lastkey_len is initialized to previous query. diff --git a/storage/heap/hp_rkey.c b/storage/heap/hp_rkey.c index 2d9fae4c52097..bc03226f2ba15 100644 --- a/storage/heap/hp_rkey.c +++ b/storage/heap/hp_rkey.c @@ -69,6 +69,8 @@ int heap_rkey(HP_INFO *info, uchar *record, int inx, const uchar *key, memcpy(info->lastkey, key, (size_t) keyinfo->length); } memcpy(record, pos, (size_t) share->reclength); + if (share->blob_count && hp_read_blobs(info, record, pos)) + DBUG_RETURN(my_errno); info->update= HA_STATE_AKTIV; DBUG_RETURN(0); } diff --git a/storage/heap/hp_rlast.c b/storage/heap/hp_rlast.c index ed9c3499d5e84..5b31bfccf07c0 100644 --- a/storage/heap/hp_rlast.c +++ b/storage/heap/hp_rlast.c @@ -38,6 +38,8 @@ int heap_rlast(HP_INFO *info, uchar *record, int inx) sizeof(uchar*)); info->current_ptr = pos; memcpy(record, pos, (size_t)share->reclength); + if (share->blob_count && hp_read_blobs(info, record, pos)) + DBUG_RETURN(my_errno); info->update = HA_STATE_AKTIV; } else diff --git a/storage/heap/hp_rnext.c b/storage/heap/hp_rnext.c index ac21ed83da271..774731624fd96 100644 --- a/storage/heap/hp_rnext.c +++ b/storage/heap/hp_rnext.c @@ -127,6 +127,8 @@ int heap_rnext(HP_INFO *info, uchar *record) DBUG_RETURN(my_errno); } memcpy(record,pos,(size_t) share->reclength); + if (share->blob_count && hp_read_blobs(info, record, pos)) + DBUG_RETURN(my_errno); info->update=HA_STATE_AKTIV | HA_STATE_NEXT_FOUND; DBUG_RETURN(0); } diff --git a/storage/heap/hp_rprev.c b/storage/heap/hp_rprev.c index cc81d179570aa..948d1db15ec53 100644 --- a/storage/heap/hp_rprev.c +++ b/storage/heap/hp_rprev.c @@ -94,6 +94,8 @@ int heap_rprev(HP_INFO *info, uchar *record) DBUG_RETURN(my_errno); } memcpy(record,pos,(size_t) share->reclength); + if (share->blob_count && hp_read_blobs(info, record, pos)) + DBUG_RETURN(my_errno); info->update=HA_STATE_AKTIV | HA_STATE_PREV_FOUND; DBUG_RETURN(0); } diff --git a/storage/heap/hp_rrnd.c b/storage/heap/hp_rrnd.c index 3947946ce6706..045804a94afe7 100644 --- a/storage/heap/hp_rrnd.c +++ b/storage/heap/hp_rrnd.c @@ -44,6 +44,8 @@ int heap_rrnd(register HP_INFO *info, uchar *record, uchar *pos) } info->update=HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND | HA_STATE_AKTIV; memcpy(record,info->current_ptr,(size_t) share->reclength); + if (share->blob_count && hp_read_blobs(info, record, info->current_ptr)) + DBUG_RETURN(my_errno); DBUG_PRINT("exit", ("found record at %p", info->current_ptr)); info->current_hash_ptr=0; /* Can't use rnext */ DBUG_RETURN(0); diff --git a/storage/heap/hp_rsame.c b/storage/heap/hp_rsame.c index 8bba4cd23a9c1..1ab2511d617ba 100644 --- a/storage/heap/hp_rsame.c +++ b/storage/heap/hp_rsame.c @@ -49,6 +49,8 @@ int heap_rsame(register HP_INFO *info, uchar *record, int inx) } } memcpy(record,info->current_ptr,(size_t) share->reclength); + if (share->blob_count && hp_read_blobs(info, record, info->current_ptr)) + DBUG_RETURN(my_errno); DBUG_RETURN(0); } info->update=0; diff --git a/storage/heap/hp_scan.c b/storage/heap/hp_scan.c index f07efe6cf671c..8ef3d348c8c6d 100644 --- a/storage/heap/hp_scan.c +++ b/storage/heap/hp_scan.c @@ -43,6 +43,26 @@ int heap_scan(register HP_INFO *info, uchar *record) ulong pos; DBUG_ENTER("heap_scan"); + /* + Scan boundary: total_records + deleted == block.last_allocated. + + Every slot in the HP_BLOCK data area is either a live record (counted in + total_records) or a deleted/free slot (counted in deleted). This + includes blob continuation records allocated by hp_alloc_from_tail() + and freed by hp_free_run_chain(), both of which maintain the invariant + total_records + deleted == block.last_allocated. + + next_block is a cached upper bound for the current HP_BLOCK segment: + within one segment, current_ptr can be advanced by recbuffer without + calling hp_find_record(). It MUST satisfy + next_block <= total_records + deleted + at all times, otherwise the scan will walk past the last allocated + slot into unmapped memory. + + The else branch below recomputes next_block and caps it. Any code + that manipulates next_block externally (e.g. restart_rnd_next) must + also enforce this cap. + */ pos= ++info->current_record; if (pos < info->next_block) { @@ -50,12 +70,18 @@ int heap_scan(register HP_INFO *info, uchar *record) } else { - /* increase next_block to the next records_in_block boundary */ + /* Advance next_block to the next records_in_block boundary */ ulong rem= info->next_block % share->block.records_in_block; info->next_block+=share->block.records_in_block - rem; - if (info->next_block >= share->records+share->deleted) + /* + Cap next_block at the scan end (total_records + deleted). This is + essential: rows may have been deleted since next_block was last set + (e.g. remove_dup_with_compare deletes duplicates mid-scan), and + block boundaries can extend well past the last allocated slot. + */ + if (info->next_block >= share->total_records+share->deleted) { - info->next_block= share->records+share->deleted; + info->next_block= share->total_records+share->deleted; if (pos >= info->next_block) { info->update= 0; @@ -70,8 +96,27 @@ int heap_scan(register HP_INFO *info, uchar *record) info->update= HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND; DBUG_RETURN(my_errno=HA_ERR_RECORD_DELETED); } + /* + Skip blob continuation runs. Rec 0 of each run has the flags byte + with HP_ROW_IS_CONT set; inner records (rec 1..N-1) have no flags + byte. Read run_rec_count from the header and skip the entire run. + */ + if (hp_is_cont(info->current_ptr, share->visible)) + { + uint16 run_rec_count= hp_cont_rec_count(info->current_ptr); + if (run_rec_count > 1) + { + uint skip= run_rec_count - 1; + info->current_record+= skip; + info->current_ptr+= skip * share->block.recbuffer; + } + info->update= HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND; + DBUG_RETURN(my_errno=HA_ERR_RECORD_DELETED); + } info->update= HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND | HA_STATE_AKTIV; memcpy(record,info->current_ptr,(size_t) share->reclength); + if (share->blob_count && hp_read_blobs(info, record, info->current_ptr)) + DBUG_RETURN(my_errno); info->current_hash_ptr=0; /* Can't use read_next */ DBUG_RETURN(0); } /* heap_scan */ diff --git a/storage/heap/hp_static.c b/storage/heap/hp_static.c index 9a4410eead9ea..07c9f25597122 100644 --- a/storage/heap/hp_static.c +++ b/storage/heap/hp_static.c @@ -28,6 +28,7 @@ PSI_memory_key hp_key_memory_HP_SHARE; PSI_memory_key hp_key_memory_HP_INFO; PSI_memory_key hp_key_memory_HP_PTRS; PSI_memory_key hp_key_memory_HP_KEYDEF; +PSI_memory_key hp_key_memory_HP_BLOB; #ifdef HAVE_PSI_INTERFACE @@ -36,7 +37,8 @@ static PSI_memory_info all_heap_memory[]= { & hp_key_memory_HP_SHARE, "HP_SHARE", 0}, { & hp_key_memory_HP_INFO, "HP_INFO", 0}, { & hp_key_memory_HP_PTRS, "HP_PTRS", 0}, - { & hp_key_memory_HP_KEYDEF, "HP_KEYDEF", 0} + { & hp_key_memory_HP_KEYDEF, "HP_KEYDEF", 0}, + { & hp_key_memory_HP_BLOB, "HP_BLOB", 0} }; void init_heap_psi_keys() diff --git a/storage/heap/hp_update.c b/storage/heap/hp_update.c index ad56ca979deb6..9d885e2bb1b7e 100644 --- a/storage/heap/hp_update.c +++ b/storage/heap/hp_update.c @@ -42,7 +42,7 @@ int heap_update(HP_INFO *info, const uchar *old, const uchar *heap_new) p_lastinx= share->keydef + info->lastinx; for (keydef= share->keydef, end= keydef + share->keys; keydef < end; keydef++) { - if (hp_rec_key_cmp(keydef, old, heap_new)) + if (hp_rec_key_cmp(keydef, old, heap_new, NULL)) { if ((*keydef->delete_key)(info, keydef, old, pos, keydef == p_lastinx) || (*keydef->write_key)(info, keydef, heap_new, pos)) @@ -52,7 +52,99 @@ int heap_update(HP_INFO *info, const uchar *old, const uchar *heap_new) } } - memcpy(pos,heap_new,(size_t) share->reclength); + /* + Blob update strategy: write new chains before freeing old ones. + + We must not free old blob chains before the new ones are successfully + written, because hp_write_blobs() can fail (e.g. table full) and then + the old data would be unrecoverable. Instead: + 1. Save old chain head pointers (from pos) before memcpy overwrites them + 2. memcpy new record data into pos + 3. Write new blob chains (hp_write_blobs) + 4. On success: free old chains via saved pointers + On failure: restore old record from 'old' buffer, restore saved + chain pointers, re-set HP_ROW_HAS_CONT flag + */ + if (share->blob_count) + { + my_bool had_cont= hp_has_cont(pos, share->visible); + uchar **saved_chains= NULL; + + if (had_cont) + { + saved_chains= (uchar**) my_safe_alloca( + share->blob_count * sizeof(uchar*)); + for (uint i= 0; i < share->blob_count; i++) + { + HP_BLOB_DESC *desc= &share->blob_descs[i]; + memcpy(&saved_chains[i], pos + desc->offset + desc->packlength, + sizeof(saved_chains[i])); + } + } + memcpy(pos, heap_new, (size_t) share->reclength); + if (hp_write_blobs(info, heap_new, pos)) + { + /* New blobs cleaned up by hp_write_blobs rollback. Restore old record. */ + memcpy(pos, old, (size_t) share->reclength); + if (had_cont) + { + for (uint i= 0; i < share->blob_count; i++) + { + HP_BLOB_DESC *desc= &share->blob_descs[i]; + memcpy(pos + desc->offset + desc->packlength, + &saved_chains[i], sizeof(saved_chains[i])); + } + pos[share->visible]|= HP_ROW_HAS_CONT; + } + my_safe_afree(saved_chains, + share->blob_count * sizeof(uchar*)); + goto err; + } + /* New blobs written — now safe to free old chains */ + if (had_cont) + { + for (uint i= 0; i < share->blob_count; i++) + hp_free_run_chain(share, saved_chains[i]); + my_safe_afree(saved_chains, + share->blob_count * sizeof(uchar*)); + } + /* + Refresh blob pointers in the caller's record buffer when zero-copy + pointers were used. + + hp_write_blobs() stored new chain head pointers in pos, but + heap_new may still have zero-copy pointers from the caller's last + hp_read_blobs() — those point into old chains that were just freed. + Copy new chain pointers from pos into heap_new, then call + hp_read_blobs() to replace them with materialized data pointers. + + Without this, callers that reuse heap_new after update (e.g., the + INTERSECT ALL unfold path in sql_union.cc) would follow dangling + pointers into freed HP_BLOCK records. + + Non-zero-copy blobs (Case C) have pointers into blob_buff which + is not affected by the chain free, so no refresh is needed. + */ + if (info->has_zerocopy_blobs) + { + uchar *new_rec= (uchar*) heap_new; + for (uint i= 0; i < share->blob_count; i++) + { + HP_BLOB_DESC *desc= &share->blob_descs[i]; + { + uchar *chain; + memcpy(&chain, pos + desc->offset + desc->packlength, sizeof(chain)); + memcpy(new_rec + desc->offset + desc->packlength, &chain, + sizeof(chain)); + } + } + hp_read_blobs(info, new_rec, pos); + } + } + else + { + memcpy(pos, heap_new, (size_t) share->reclength); + } if (++(share->records) == share->blength) share->blength+= share->blength; #if !defined(DBUG_OFF) && defined(EXTRA_HEAP_DEBUG) @@ -81,7 +173,7 @@ int heap_update(HP_INFO *info, const uchar *old, const uchar *heap_new) } while (keydef >= share->keydef) { - if (hp_rec_key_cmp(keydef, old, heap_new)) + if (hp_rec_key_cmp(keydef, old, heap_new, NULL)) { if ((*keydef->delete_key)(info, keydef, heap_new, pos, 0) || (*keydef->write_key)(info, keydef, old, pos)) diff --git a/storage/heap/hp_write.c b/storage/heap/hp_write.c index cb079eac75788..9a8b244307de6 100644 --- a/storage/heap/hp_write.c +++ b/storage/heap/hp_write.c @@ -26,7 +26,6 @@ #define HIGHFIND 4 #define HIGHUSED 8 -static uchar *next_free_record_pos(HP_SHARE *info); static HASH_INFO *hp_find_free_hash(HP_SHARE *info, HP_BLOCK *block, ulong records); @@ -54,7 +53,13 @@ int heap_write(HP_INFO *info, const uchar *record) } memcpy(pos,record,(size_t) share->reclength); - pos[share->visible]= 1; /* Mark record as not deleted */ + if (share->blob_count) + { + if (hp_write_blobs(info, record, pos)) + goto err_blob; + } + else + pos[share->visible]= 1; /* Mark record as not deleted */ if (++share->records == share->blength) share->blength+= share->blength; info->s->key_version++; @@ -66,6 +71,33 @@ int heap_write(HP_INFO *info, const uchar *record) heap_update_auto_increment(info, record); DBUG_RETURN(0); +err_blob: + /* + Blob write failed after all keys were written successfully. + Roll back all keys — unlike err: below, no key needs to be skipped. + + Do NOT call hp_free_blobs() here: hp_write_blobs() is self-cleaning + on failure — hp_write_one_blob() frees its own partial chain, and + hp_write_blobs() frees all previously completed columns (0..i-1) and + NULLs every chain pointer in pos. Calling hp_free_blobs() after this + would be both redundant and dangerous: + - The visibility byte pos[share->visible] has not been set yet (it is + only written on hp_write_blobs() success at line 493), so it may + contain uninitialized data from tail allocation with HP_ROW_HAS_CONT + bit set. + - Blob columns after the failed one (i+1..blob_count-1) still have the + SQL layer's original data pointers in pos (from memcpy at line 55), + not continuation chain pointers. hp_free_run_chain() would interpret + those as chain headers and crash. + */ + info->errkey= -1; + for (keydef= end - 1; keydef >= share->keydef; keydef--) + { + if ((*keydef->delete_key)(info, keydef, record, pos, 0)) + break; + } + goto err_common; + err: if (my_errno == HA_ERR_FOUND_DUPP_KEY) DBUG_PRINT("info",("Duplicate key: %d", (int) (keydef - share->keydef))); @@ -85,9 +117,20 @@ int heap_write(HP_INFO *info, const uchar *record) if ((*keydef->delete_key)(info, keydef, record, pos, 0)) break; keydef--; - } + } + + /* + Do NOT call hp_free_blobs here: the err: label is reached when a key + write fails (line 52), which is BEFORE memcpy(pos, record, reclength) + and hp_write_blobs(). The slot at pos still contains stale data from the + free list, so hp_free_blobs would chase garbage chain pointers. + Only err_blob: (above) needs hp_free_blobs, since blobs may have been + partially written there. + */ +err_common: share->deleted++; + share->total_records--; *((uchar**) pos)=share->del_link; share->del_link=pos; pos[share->visible]= 0; /* Record deleted */ @@ -128,9 +171,18 @@ int hp_rb_write_key(HP_INFO *info, HP_KEYDEF *keyinfo, const uchar *record, return 0; } - /* Find where to place new record */ +/* + Find where to place a new record. + + Allocates from the free list (del_link) first; if empty, extends the + HP_BLOCK tail. Both paths maintain the scan-boundary invariant: + total_records + deleted == block.last_allocated + Free-list allocation does deleted-- + total_records++ (sum unchanged). + Tail allocation does last_allocated++ + total_records++ (sum grows by 1, + matching the new slot). heap_scan() relies on this sum to detect EOF. +*/ -static uchar *next_free_record_pos(HP_SHARE *info) +uchar *next_free_record_pos(HP_SHARE *info) { int block_pos; uchar *pos; @@ -142,19 +194,21 @@ static uchar *next_free_record_pos(HP_SHARE *info) pos=info->del_link; info->del_link= *((uchar**) pos); info->deleted--; + info->total_records++; DBUG_PRINT("exit",("Used old position: %p", pos)); DBUG_RETURN(pos); } - if (!(block_pos=(info->records % info->block.records_in_block))) + if (!(block_pos=(info->block.last_allocated % info->block.records_in_block))) { - if ((info->records > info->max_records && info->max_records) || + if ((info->block.last_allocated > info->max_records && + info->max_records) || (info->data_length + info->index_length >= info->max_table_size)) { DBUG_PRINT("error", - ("record file full. records: %lu max_records: %lu " + ("record file full. last_allocated: %lu max_records: %lu " "data_length: %llu index_length: %llu " "max_table_size: %llu", - info->records, info->max_records, + info->block.last_allocated, info->max_records, info->data_length, info->index_length, info->max_table_size)); my_errno=HA_ERR_RECORD_FILE_FULL; @@ -165,6 +219,8 @@ static uchar *next_free_record_pos(HP_SHARE *info) DBUG_RETURN(NULL); info->data_length+=length; } + info->block.last_allocated++; + info->total_records++; DBUG_PRINT("exit",("Used new position: %p", ((uchar*) info->block.level_info[0].last_blocks+ block_pos * info->block.recbuffer))); @@ -385,7 +441,7 @@ int hp_write_key(HP_INFO *info, HP_KEYDEF *keyinfo, do { if (pos->hash_of_key == hash_of_key && - ! hp_rec_key_cmp(keyinfo, record, pos->ptr_to_rec)) + ! hp_rec_key_cmp(keyinfo, record, pos->ptr_to_rec, info)) { DBUG_RETURN(my_errno=HA_ERR_FOUND_DUPP_KEY); } From c736807d95f9f2ca3da0d1d513aa9a28d5b87b5c Mon Sep 17 00:00:00 2001 From: Arcadiy Ivanov Date: Sun, 8 Mar 2026 20:25:38 -0400 Subject: [PATCH 2/7] Cap `min_run_records` for small blob free-list reuse The free-list allocator's minimum contiguous run threshold (`min_run_records`) could exceed the total records a small blob actually needs, making free-list reuse impossible on narrow tables. For example, with `recbuffer=16` the 128-byte floor produced `min_run_records=8`, but a 32-byte blob only needs 3 records. Any contiguous free-list group of 3 would be rejected, forcing unnecessary tail allocation. Cap both `min_run_bytes` at `data_len` and `min_run_records` at `total_records_needed` so small blobs can reuse free-list slots when a sufficient contiguous group exists. --- storage/heap/hp_blob.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/storage/heap/hp_blob.c b/storage/heap/hp_blob.c index 19c8068be5d14..776345b8b2034 100644 --- a/storage/heap/hp_blob.c +++ b/storage/heap/hp_blob.c @@ -302,14 +302,42 @@ static int hp_write_one_blob(HP_SHARE *share, const uchar *data_ptr, uchar *prev_run_start= NULL; uint32 data_offset= 0; - /* Calculate minimum acceptable run size */ + /* + Calculate minimum acceptable contiguous run size for free-list reuse. + + The free-list walk (Step 1 below) rejects contiguous groups smaller + than min_run_records, bailing to tail allocation instead. This + prevents excessive chain fragmentation for large blobs: accepting + tiny fragments would produce long chains of many short runs, each + with its own 10-byte header overhead and pointer dereference on read. + + The threshold is the larger of: + - 1/10 of the blob size (caps chain length at ~10 runs) + - 128 bytes absolute floor (HP_CONT_MIN_RUN_BYTES) + - 2 records minimum (a single-slot run is pure overhead) + + For small blobs whose total bytes or records needed is below this + threshold, the fragmentation concern doesn't apply — the entire blob + fits in one short run. Cap both min_run_bytes and min_run_records + so the free list can satisfy the allocation without falling through + to the tail unnecessarily. + */ min_run_bytes= data_len / HP_CONT_RUN_FRACTION_DEN * HP_CONT_RUN_FRACTION_NUM; if (min_run_bytes < HP_CONT_MIN_RUN_BYTES) min_run_bytes= HP_CONT_MIN_RUN_BYTES; + if (min_run_bytes > data_len) + min_run_bytes= data_len; min_run_records= (min_run_bytes + recbuffer - 1) / recbuffer; if (min_run_records < 2) min_run_records= 2; + { + uint32 first_payload= visible - HP_CONT_HEADER_SIZE; + uint32 total_records_needed= data_len <= first_payload ? 1 : + 1 + (data_len - first_payload + recbuffer - 1) / recbuffer; + if (total_records_needed < min_run_records) + min_run_records= total_records_needed; + } /* Step 1: Try to allocate contiguous runs from the free list. From 005a981449175943293443dd5d5175d70f5586b6 Mon Sep 17 00:00:00 2001 From: Arcadiy Ivanov Date: Mon, 9 Mar 2026 23:11:34 -0400 Subject: [PATCH 3/7] MDEV-38975: Add hash pre-check to skip expensive blob materialization in hash chain traversal `hp_search()`, `hp_search_next()`, `hp_delete_key()`, and `find_unique_row()` walk hash chains calling `hp_key_cmp()` or `hp_rec_key_cmp()` for every entry. For blob key segments, each comparison triggers `hp_materialize_one_blob()` which reassembles blob data from continuation chain records. Since each `HASH_INFO` already stores `hash_of_key`, compare it against the search key's hash before the full key comparison. When hashes differ the keys are guaranteed different, skipping the expensive materialization. This pattern already existed in `hp_write_key()` for duplicate detection but was missing from the four read/delete paths. `HP_INFO::last_hash_of_key` is added so `hp_search_next()` can reuse the hash computed by `hp_search()` without recomputing it. --- include/heap.h | 1 + storage/heap/ha_heap.cc | 7 +++++-- storage/heap/hp_delete.c | 9 ++++++--- storage/heap/hp_hash.c | 15 ++++++++++++--- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/include/heap.h b/include/heap.h index 633a33e53fd0f..439b437cf306f 100644 --- a/include/heap.h +++ b/include/heap.h @@ -193,6 +193,7 @@ typedef struct st_heap_info uchar *blob_buff; /* Reassembly buffer for blob reads */ uint32 blob_buff_len; /* Current allocated size of blob_buff */ my_bool has_zerocopy_blobs; /* Last hp_read_blobs produced zero-copy ptrs */ + ulong last_hash_of_key; /* Hash from last hp_search(), reused by hp_search_next() */ THR_LOCK_DATA lock; LIST open_list; } HP_INFO; diff --git a/storage/heap/ha_heap.cc b/storage/heap/ha_heap.cc index 0c8f4aa2a5491..59497dc2f437e 100644 --- a/storage/heap/ha_heap.cc +++ b/storage/heap/ha_heap.cc @@ -878,12 +878,15 @@ int ha_heap::find_unique_row(uchar *record, uint unique_idx) DBUG_ASSERT(keyinfo->flag & HA_NOSAME); if (!share->records) DBUG_RETURN(1); // not found + ulong rec_hash= hp_rec_hashnr(keyinfo, record); HASH_INFO *pos= hp_find_hash(&keyinfo->block, - hp_mask(hp_rec_hashnr(keyinfo, record), + hp_mask(rec_hash, share->blength, share->records)); do { - if (!hp_rec_key_cmp(keyinfo, record, pos->ptr_to_rec, file)) + /* Hash pre-check avoids expensive blob materialization for non-matching entries */ + if (pos->hash_of_key == rec_hash && + !hp_rec_key_cmp(keyinfo, record, pos->ptr_to_rec, file)) { file->current_hash_ptr= pos; file->current_ptr= pos->ptr_to_rec; diff --git a/storage/heap/hp_delete.c b/storage/heap/hp_delete.c index 1a4da1fff0e44..f7538843d6946 100644 --- a/storage/heap/hp_delete.c +++ b/storage/heap/hp_delete.c @@ -114,7 +114,7 @@ int hp_rb_delete_key(HP_INFO *info, register HP_KEYDEF *keyinfo, int hp_delete_key(HP_INFO *info, register HP_KEYDEF *keyinfo, const uchar *record, uchar *recpos, int flag) { - ulong blength, pos2, pos_hashnr, lastpos_hashnr, key_pos; + ulong blength, pos2, pos_hashnr, lastpos_hashnr, key_pos, rec_hash; HASH_INFO *lastpos,*gpos,*pos,*pos3,*empty,*last_ptr; HP_SHARE *share=info->s; DBUG_ENTER("hp_delete_key"); @@ -126,14 +126,17 @@ int hp_delete_key(HP_INFO *info, register HP_KEYDEF *keyinfo, last_ptr=0; /* Search after record with key */ - key_pos= hp_mask(hp_rec_hashnr(keyinfo, record), blength, share->records + 1); + rec_hash= hp_rec_hashnr(keyinfo, record); + key_pos= hp_mask(rec_hash, blength, share->records + 1); pos= hp_find_hash(&keyinfo->block, key_pos); gpos = pos3 = 0; while (pos->ptr_to_rec != recpos) { - if (flag && !hp_rec_key_cmp(keyinfo, record, pos->ptr_to_rec, info)) + /* Hash pre-check avoids expensive blob materialization for non-matching entries */ + if (flag && pos->hash_of_key == rec_hash && + !hp_rec_key_cmp(keyinfo, record, pos->ptr_to_rec, info)) last_ptr=pos; /* Previous same key */ gpos=pos; if (!(pos=pos->next_key)) diff --git a/storage/heap/hp_hash.c b/storage/heap/hp_hash.c index c06fa77b9e9d9..772f5307134b5 100644 --- a/storage/heap/hp_hash.c +++ b/storage/heap/hp_hash.c @@ -138,15 +138,23 @@ uchar *hp_search(HP_INFO *info, HP_KEYDEF *keyinfo, const uchar *key, if (share->records) { + ulong key_hash= hp_hashnr(keyinfo, key); ulong search_pos= - hp_mask(hp_hashnr(keyinfo, key), share->blength, share->records); + hp_mask(key_hash, share->blength, share->records); pos=hp_find_hash(&keyinfo->block, search_pos); if (search_pos != hp_mask(pos->hash_of_key, share->blength, share->records)) goto not_found; /* Wrong link */ + /* + Save hash for hp_search_next() to reuse without recomputing. + Pre-check hash_of_key before hp_key_cmp() to avoid expensive + blob materialization for non-matching entries. + */ + info->last_hash_of_key= key_hash; do { - if (!hp_key_cmp(keyinfo, pos->ptr_to_rec, key, info)) + if (pos->hash_of_key == key_hash && + !hp_key_cmp(keyinfo, pos->ptr_to_rec, key, info)) { switch (nextflag) { case 0: /* Search after key */ @@ -207,7 +215,8 @@ uchar *hp_search_next(HP_INFO *info, HP_KEYDEF *keyinfo, const uchar *key, while ((pos= pos->next_key)) { - if (! hp_key_cmp(keyinfo, pos->ptr_to_rec, key, info)) + if (pos->hash_of_key == info->last_hash_of_key && + ! hp_key_cmp(keyinfo, pos->ptr_to_rec, key, info)) { info->current_hash_ptr=pos; DBUG_RETURN (info->current_ptr= pos->ptr_to_rec); From 93f9f598516e5c368503970553eb4cf687d44a9e Mon Sep 17 00:00:00 2001 From: Arcadiy Ivanov Date: Wed, 11 Mar 2026 19:37:49 -0400 Subject: [PATCH 4/7] Set `key_part_flag` from field type in GROUP BY key setup Rebuild HEAP index key from `record[0]` when the index has blob key segments, because `Field_blob::new_key_field()` returns `Field_varstring` (2B length + inline data) while HEAP's `hp_hashnr`/`hp_key_cmp` expect `hp_make_key` format (4B length + data pointer). Precompute `HP_KEYDEF::has_blob_seg` flag during table creation to avoid per-call loop through key segments. --- include/heap.h | 1 + .../suite/heap/heap_blob_groupby.result | 43 +++++++++++++++++++ mysql-test/suite/heap/heap_blob_groupby.test | 41 ++++++++++++++++++ sql/sql_select.cc | 2 +- storage/heap/ha_heap.cc | 26 +++++++++++ storage/heap/hp_create.c | 10 +++++ 6 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 mysql-test/suite/heap/heap_blob_groupby.result create mode 100644 mysql-test/suite/heap/heap_blob_groupby.test diff --git a/include/heap.h b/include/heap.h index 439b437cf306f..54a78a7877cd4 100644 --- a/include/heap.h +++ b/include/heap.h @@ -116,6 +116,7 @@ typedef struct st_hp_keydef /* Key definition with open */ uint keysegs; /* Number of key-segment */ uint length; /* Length of key (automatic) */ uint8 algorithm; /* HASH / BTREE */ + my_bool has_blob_seg; /* Key has HA_BLOB_PART segments */ HA_KEYSEG *seg; HP_BLOCK block; /* Where keys are saved */ /* diff --git a/mysql-test/suite/heap/heap_blob_groupby.result b/mysql-test/suite/heap/heap_blob_groupby.result new file mode 100644 index 0000000000000..8a583bad03d28 --- /dev/null +++ b/mysql-test/suite/heap/heap_blob_groupby.result @@ -0,0 +1,43 @@ +# +# MDEV-38975: GROUP BY on blob columns in HEAP internal temp tables +# Verify that GROUP BY correctly groups by blob/text content, +# not by internal pointer representation. +# +CREATE TABLE t1 (a TEXT, b INT); +INSERT INTO t1 VALUES ('foo', 1), ('foo', 2), ('bar', 3), ('bar', 4), ('baz', 5); +# GROUP BY on TEXT column should group by content +SELECT a, COUNT(*), SUM(b) FROM t1 GROUP BY a ORDER BY a; +a COUNT(*) SUM(b) +bar 2 7 +baz 1 5 +foo 2 3 +# GROUP BY with HAVING +SELECT a, COUNT(*) AS cnt FROM t1 GROUP BY a HAVING cnt > 1 ORDER BY a; +a cnt +bar 2 +foo 2 +DROP TABLE t1; +# +# GROUP BY on multiple blob columns +# +CREATE TABLE t1 (a TEXT, b TEXT, c INT); +INSERT INTO t1 VALUES ('x', 'p', 1), ('x', 'p', 2), +('x', 'q', 3), ('y', 'p', 4); +SELECT a, b, COUNT(*), SUM(c) FROM t1 GROUP BY a, b ORDER BY a, b; +a b COUNT(*) SUM(c) +x p 2 3 +x q 1 3 +y p 1 4 +DROP TABLE t1; +# +# GROUP BY blob with NULL values +# +CREATE TABLE t1 (a TEXT, b INT); +INSERT INTO t1 VALUES (NULL, 1), (NULL, 2), ('foo', 3), ('foo', 4), ('bar', 5); +SELECT a, COUNT(*), SUM(b) FROM t1 GROUP BY a ORDER BY a; +a COUNT(*) SUM(b) +NULL 2 3 +bar 1 5 +foo 2 7 +DROP TABLE t1; +# End of MDEV-38975 GROUP BY blob tests diff --git a/mysql-test/suite/heap/heap_blob_groupby.test b/mysql-test/suite/heap/heap_blob_groupby.test new file mode 100644 index 0000000000000..9b935a0e6d48d --- /dev/null +++ b/mysql-test/suite/heap/heap_blob_groupby.test @@ -0,0 +1,41 @@ +--source include/have_sequence.inc + +--echo # +--echo # MDEV-38975: GROUP BY on blob columns in HEAP internal temp tables +--echo # Verify that GROUP BY correctly groups by blob/text content, +--echo # not by internal pointer representation. +--echo # + +CREATE TABLE t1 (a TEXT, b INT); +INSERT INTO t1 VALUES ('foo', 1), ('foo', 2), ('bar', 3), ('bar', 4), ('baz', 5); + +--echo # GROUP BY on TEXT column should group by content +SELECT a, COUNT(*), SUM(b) FROM t1 GROUP BY a ORDER BY a; + +--echo # GROUP BY with HAVING +SELECT a, COUNT(*) AS cnt FROM t1 GROUP BY a HAVING cnt > 1 ORDER BY a; + +DROP TABLE t1; + +--echo # +--echo # GROUP BY on multiple blob columns +--echo # +CREATE TABLE t1 (a TEXT, b TEXT, c INT); +INSERT INTO t1 VALUES ('x', 'p', 1), ('x', 'p', 2), + ('x', 'q', 3), ('y', 'p', 4); + +SELECT a, b, COUNT(*), SUM(c) FROM t1 GROUP BY a, b ORDER BY a, b; + +DROP TABLE t1; + +--echo # +--echo # GROUP BY blob with NULL values +--echo # +CREATE TABLE t1 (a TEXT, b INT); +INSERT INTO t1 VALUES (NULL, 1), (NULL, 2), ('foo', 3), ('foo', 4), ('bar', 5); + +SELECT a, COUNT(*), SUM(b) FROM t1 GROUP BY a ORDER BY a; + +DROP TABLE t1; + +--echo # End of MDEV-38975 GROUP BY blob tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index f7195642ffee4..273f9b345cef1 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -21334,7 +21334,7 @@ bool Create_tmp_table::finalize(THD *thd, (ha_base_keytype) m_key_part_info->type == HA_KEYTYPE_VARTEXT1 || (ha_base_keytype) m_key_part_info->type == HA_KEYTYPE_VARTEXT2) ? 0 : FIELDFLAG_BINARY; - m_key_part_info->key_part_flag= 0; + m_key_part_info->key_part_flag= field->key_part_flag(); if (!m_using_unique_constraint) { cur_group->buff=(char*) m_group_buff; diff --git a/storage/heap/ha_heap.cc b/storage/heap/ha_heap.cc index 59497dc2f437e..dbe0da432bbe3 100644 --- a/storage/heap/ha_heap.cc +++ b/storage/heap/ha_heap.cc @@ -291,6 +291,20 @@ int ha_heap::index_read_map(uchar *buf, const uchar *key, enum ha_rkey_function find_flag) { DBUG_ASSERT(inited==INDEX); + /* + When the index has blob key segments, the SQL layer's key buffer (e.g. + group_buff from end_update) uses Field_varstring format (2B length + + inline data) because Field_blob::new_key_field() returns Field_varstring. + But HEAP's hp_hashnr/hp_key_cmp expect hp_make_key format (4B length + + data pointer). Rebuild the key from record[0] which has the correct + blob field layout. + */ + if (file->s->keydef[active_index].has_blob_seg) + { + hp_make_key(file->s->keydef + active_index, (uchar*) file->lastkey, + table->record[0]); + key= (const uchar*) file->lastkey; + } int error = heap_rkey(file,buf,active_index, key, keypart_map, find_flag); return error; } @@ -299,6 +313,12 @@ int ha_heap::index_read_last_map(uchar *buf, const uchar *key, key_part_map keypart_map) { DBUG_ASSERT(inited==INDEX); + if (file->s->keydef[active_index].has_blob_seg) + { + hp_make_key(file->s->keydef + active_index, (uchar*) file->lastkey, + table->record[0]); + key= (const uchar*) file->lastkey; + } int error= heap_rkey(file, buf, active_index, key, keypart_map, HA_READ_PREFIX_LAST); return error; @@ -308,6 +328,12 @@ int ha_heap::index_read_idx_map(uchar *buf, uint index, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag) { + if (file->s->keydef[index].has_blob_seg) + { + hp_make_key(file->s->keydef + index, (uchar*) file->lastkey, + table->record[0]); + key= (const uchar*) file->lastkey; + } int error = heap_rkey(file, buf, index, key, keypart_map, find_flag); return error; } diff --git a/storage/heap/hp_create.c b/storage/heap/hp_create.c index 6433b059605d0..18a4034fb4691 100644 --- a/storage/heap/hp_create.c +++ b/storage/heap/hp_create.c @@ -277,6 +277,16 @@ int heap_create(const char *name, HP_CREATE_INFO *create_info, keyinfo->seg= keyseg; memcpy(keyseg, keydef[i].seg, (size_t) (sizeof(keyseg[0]) * keydef[i].keysegs)); + keyinfo->has_blob_seg= FALSE; + { + uint j; + for (j= 0; j < keydef[i].keysegs; j++) + if (keyseg[j].flag & HA_BLOB_PART) + { + keyinfo->has_blob_seg= TRUE; + break; + } + } keyseg+= keydef[i].keysegs; if (keydef[i].algorithm == HA_KEY_ALG_BTREE) From f5da8132584e984359689e1f9cdde9f5daf3a9ef Mon Sep 17 00:00:00 2001 From: Arcadiy Ivanov Date: Sun, 15 Mar 2026 22:20:03 -0400 Subject: [PATCH 5/7] Fix PAD SPACE blob comparison and add blob key tests **Bug fix** (`padspace_early_exit`): `hp_rec_key_cmp()` and `hp_key_cmp()` in `hp_hash.c` had early-exit checks `if (len1 != len2) return 1` for blob key segments, which broke PAD SPACE collations (the default). With PAD SPACE, `'abc'` (len=3) and `'abc '` (len=6) must compare equal because trailing spaces are insignificant, but the length check rejected them before reaching `strnncollsp()`. Fix: only short-circuit on length mismatch for NO PAD collations (`MY_CS_NOPAD`). This bug was discovered during the VARCHAR-to-BLOB promotion work (Phase 1) and affects any HEAP table with blob key segments, manifesting in `COUNT(DISTINCT)` on TEXT columns returning inflated counts. **Test coverage** transferred from Phase 1: - `heap.heap_blob_ops` MTR test: exercises HEAP internal temp tables with explicit TEXT columns (GROUP BY, DISTINCT, IN-subquery, CTEs, window functions, ROLLUP). Includes a targeted PAD SPACE scenario that catches `padspace_early_exit`. - `hp_test_hash-t` unit test (43 tests): validates blob hash/compare functions including PAD SPACE collation, NULL/empty blobs, multi-segment keys, key format round-trips. - `hp_test_key_setup-t` unit test (9 tests): validates `heap_prepare_hp_create_info()` handling of blob key segments (`distinct_key_truncation`) and garbage `key_part_flag` (`garbage_key_part_flag`). Four Phase 1-specific assertions are deferred via `#if 0` (these bugs are compensated by `hp_create.c` runtime normalization in MDEV-38975 proper but will be needed when Phase 1 removes that safety net). --- mysql-test/suite/heap/heap_blob_ops.result | 149 ++++ mysql-test/suite/heap/heap_blob_ops.test | 93 +++ storage/heap/CMakeLists.txt | 21 +- storage/heap/ha_heap.cc | 12 + storage/heap/hp_hash.c | 17 +- storage/heap/hp_test_hash-t.c | 747 +++++++++++++++++++++ storage/heap/hp_test_key_setup-t.cc | 422 ++++++++++++ 7 files changed, 1451 insertions(+), 10 deletions(-) create mode 100644 mysql-test/suite/heap/heap_blob_ops.result create mode 100644 mysql-test/suite/heap/heap_blob_ops.test create mode 100644 storage/heap/hp_test_hash-t.c create mode 100644 storage/heap/hp_test_key_setup-t.cc diff --git a/mysql-test/suite/heap/heap_blob_ops.result b/mysql-test/suite/heap/heap_blob_ops.result new file mode 100644 index 0000000000000..98118a4fc5a6b --- /dev/null +++ b/mysql-test/suite/heap/heap_blob_ops.result @@ -0,0 +1,149 @@ +# +# MDEV-38975: Blob/text operations exercising HEAP internal temp tables +# +CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY, k INT, text_col TEXT); +INSERT INTO t1 (k, text_col) VALUES +(1, 'alpha'), (1, 'alpha'), (1, 'beta'), +(2, 'gamma'), (2, 'gamma'), (2, 'delta'), +(3, 'alpha'), (3, 'epsilon'), (3, NULL), +(4, NULL), (4, NULL), (4, 'beta'); +# +# COUNT(DISTINCT text_col) +# +SELECT COUNT(DISTINCT text_col) FROM t1; +COUNT(DISTINCT text_col) +5 +# +# COUNT(DISTINCT text_col) with GROUP BY +# +SELECT k, COUNT(DISTINCT text_col) FROM t1 GROUP BY k ORDER BY k; +k COUNT(DISTINCT text_col) +1 2 +2 2 +3 2 +4 1 +# +# IN-subquery with blob/text +# +CREATE TABLE t2 (text_col TEXT); +INSERT INTO t2 VALUES ('alpha'), ('delta'); +SELECT id, text_col FROM t1 WHERE text_col IN (SELECT text_col FROM t2) ORDER BY id; +id text_col +1 alpha +2 alpha +6 delta +7 alpha +# +# GROUP BY text_col ORDER BY aggregate LIMIT +# +SELECT text_col, COUNT(*) AS cnt FROM t1 GROUP BY text_col ORDER BY cnt DESC, text_col LIMIT 3; +text_col cnt +NULL 3 +alpha 3 +beta 2 +# +# GROUP BY text_col WITH ROLLUP +# +SELECT text_col, COUNT(*) FROM t1 GROUP BY text_col WITH ROLLUP; +text_col COUNT(*) +NULL 12 +NULL 3 +alpha 3 +beta 2 +delta 1 +epsilon 1 +gamma 2 +# +# GROUP BY multiple columns WITH ROLLUP +# +SELECT k, text_col, COUNT(*) FROM t1 GROUP BY k, text_col WITH ROLLUP; +k text_col COUNT(*) +1 NULL 3 +1 alpha 2 +1 beta 1 +2 NULL 3 +2 delta 1 +2 gamma 2 +3 NULL 1 +3 NULL 3 +3 alpha 1 +3 epsilon 1 +4 NULL 2 +4 NULL 3 +4 beta 1 +NULL NULL 12 +# +# Window function with blob in SELECT list +# +SELECT id, text_col, ROW_NUMBER() OVER (PARTITION BY k ORDER BY id) AS rn +FROM t1 WHERE k <= 2 ORDER BY id; +id text_col rn +1 alpha 1 +2 alpha 2 +3 beta 3 +4 gamma 1 +5 gamma 2 +6 delta 3 +# +# RANK with blob column +# +SELECT text_col, k, RANK() OVER (ORDER BY text_col) AS rnk +FROM t1 WHERE text_col IS NOT NULL ORDER BY text_col, k; +text_col k rnk +alpha 1 1 +alpha 1 1 +alpha 3 1 +beta 1 4 +beta 4 4 +delta 2 6 +epsilon 3 7 +gamma 2 8 +gamma 2 8 +# +# Non-recursive CTE materializing blob column +# +WITH cte AS (SELECT text_col, k FROM t1 WHERE k <= 2) +SELECT DISTINCT text_col FROM cte ORDER BY text_col; +text_col +alpha +beta +delta +gamma +# +# CTE with self-join on blob column +# +WITH cte AS (SELECT text_col, k FROM t1 WHERE text_col IS NOT NULL) +SELECT COUNT(*) FROM cte a JOIN cte b ON a.k = b.k AND a.text_col = b.text_col; +COUNT(*) +13 +# +# CTE referenced twice (forces materialization) +# +WITH cte AS (SELECT DISTINCT text_col FROM t1 WHERE text_col IS NOT NULL) +SELECT a.text_col, b.text_col +FROM cte a JOIN cte b ON a.text_col > b.text_col ORDER BY a.text_col, b.text_col; +text_col text_col +beta alpha +delta alpha +delta beta +epsilon alpha +epsilon beta +epsilon delta +gamma alpha +gamma beta +gamma delta +gamma epsilon +DROP TABLE t1, t2; +# +# PAD SPACE: COUNT(DISTINCT) on TEXT with trailing-space variants +# PAD SPACE collations (latin1 default) treat trailing spaces as +# insignificant, so 'abc' and 'abc ' are the same value. +# +CREATE TABLE t_pad (id INT AUTO_INCREMENT PRIMARY KEY, t TEXT); +INSERT INTO t_pad (t) VALUES ('abc'), ('abc '), ('abc '), ('def'), ('def '); +# Must return 2 (not 5): 'abc' variants = 1 group, 'def' variants = 1 group +SELECT COUNT(DISTINCT t) FROM t_pad; +COUNT(DISTINCT t) +2 +DROP TABLE t_pad; +# End of MDEV-38975 blob operations tests diff --git a/mysql-test/suite/heap/heap_blob_ops.test b/mysql-test/suite/heap/heap_blob_ops.test new file mode 100644 index 0000000000000..e1c81dadedd41 --- /dev/null +++ b/mysql-test/suite/heap/heap_blob_ops.test @@ -0,0 +1,93 @@ +--source include/have_sequence.inc +--source include/not_embedded.inc + +--echo # +--echo # MDEV-38975: Blob/text operations exercising HEAP internal temp tables +--echo # + +CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY, k INT, text_col TEXT); +INSERT INTO t1 (k, text_col) VALUES + (1, 'alpha'), (1, 'alpha'), (1, 'beta'), + (2, 'gamma'), (2, 'gamma'), (2, 'delta'), + (3, 'alpha'), (3, 'epsilon'), (3, NULL), + (4, NULL), (4, NULL), (4, 'beta'); + +--echo # +--echo # COUNT(DISTINCT text_col) +--echo # +SELECT COUNT(DISTINCT text_col) FROM t1; + +--echo # +--echo # COUNT(DISTINCT text_col) with GROUP BY +--echo # +SELECT k, COUNT(DISTINCT text_col) FROM t1 GROUP BY k ORDER BY k; + +--echo # +--echo # IN-subquery with blob/text +--echo # +CREATE TABLE t2 (text_col TEXT); +INSERT INTO t2 VALUES ('alpha'), ('delta'); +SELECT id, text_col FROM t1 WHERE text_col IN (SELECT text_col FROM t2) ORDER BY id; + +--echo # +--echo # GROUP BY text_col ORDER BY aggregate LIMIT +--echo # +SELECT text_col, COUNT(*) AS cnt FROM t1 GROUP BY text_col ORDER BY cnt DESC, text_col LIMIT 3; + +--echo # +--echo # GROUP BY text_col WITH ROLLUP +--echo # +--sorted_result +SELECT text_col, COUNT(*) FROM t1 GROUP BY text_col WITH ROLLUP; + +--echo # +--echo # GROUP BY multiple columns WITH ROLLUP +--echo # +--sorted_result +SELECT k, text_col, COUNT(*) FROM t1 GROUP BY k, text_col WITH ROLLUP; + +--echo # +--echo # Window function with blob in SELECT list +--echo # +SELECT id, text_col, ROW_NUMBER() OVER (PARTITION BY k ORDER BY id) AS rn +FROM t1 WHERE k <= 2 ORDER BY id; + +--echo # +--echo # RANK with blob column +--echo # +SELECT text_col, k, RANK() OVER (ORDER BY text_col) AS rnk +FROM t1 WHERE text_col IS NOT NULL ORDER BY text_col, k; + +--echo # +--echo # Non-recursive CTE materializing blob column +--echo # +WITH cte AS (SELECT text_col, k FROM t1 WHERE k <= 2) +SELECT DISTINCT text_col FROM cte ORDER BY text_col; + +--echo # +--echo # CTE with self-join on blob column +--echo # +WITH cte AS (SELECT text_col, k FROM t1 WHERE text_col IS NOT NULL) +SELECT COUNT(*) FROM cte a JOIN cte b ON a.k = b.k AND a.text_col = b.text_col; + +--echo # +--echo # CTE referenced twice (forces materialization) +--echo # +WITH cte AS (SELECT DISTINCT text_col FROM t1 WHERE text_col IS NOT NULL) +SELECT a.text_col, b.text_col +FROM cte a JOIN cte b ON a.text_col > b.text_col ORDER BY a.text_col, b.text_col; + +DROP TABLE t1, t2; + +--echo # +--echo # PAD SPACE: COUNT(DISTINCT) on TEXT with trailing-space variants +--echo # PAD SPACE collations (latin1 default) treat trailing spaces as +--echo # insignificant, so 'abc' and 'abc ' are the same value. +--echo # +CREATE TABLE t_pad (id INT AUTO_INCREMENT PRIMARY KEY, t TEXT); +INSERT INTO t_pad (t) VALUES ('abc'), ('abc '), ('abc '), ('def'), ('def '); +--echo # Must return 2 (not 5): 'abc' variants = 1 group, 'def' variants = 1 group +SELECT COUNT(DISTINCT t) FROM t_pad; +DROP TABLE t_pad; + +--echo # End of MDEV-38975 blob operations tests diff --git a/storage/heap/CMakeLists.txt b/storage/heap/CMakeLists.txt index 7f4d53a787900..a2179bcdab75d 100644 --- a/storage/heap/CMakeLists.txt +++ b/storage/heap/CMakeLists.txt @@ -1,14 +1,14 @@ # Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. -# +# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA @@ -27,9 +27,22 @@ IF(CMAKE_SYSTEM_NAME MATCHES AIX AND CMAKE_BUILD_TYPE STREQUAL "DEBUG") ENDIF() IF(WITH_UNIT_TESTS) + TARGET_COMPILE_DEFINITIONS(heap PRIVATE HEAP_UNIT_TESTS) + ADD_EXECUTABLE(hp_test1 hp_test1.c) TARGET_LINK_LIBRARIES(hp_test1 heap mysys dbug strings) ADD_EXECUTABLE(hp_test2 hp_test2.c) TARGET_LINK_LIBRARIES(hp_test2 heap mysys dbug strings) -ENDIF() \ No newline at end of file + + MY_ADD_TESTS(hp_test_hash LINK_LIBRARIES heap mysys dbug strings) + + INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql + ${CMAKE_SOURCE_DIR}/include) + ADD_EXECUTABLE(hp_test_key_setup-t + hp_test_key_setup-t.cc + ${CMAKE_SOURCE_DIR}/unittest/sql/dummy_builtins.cc) + TARGET_COMPILE_DEFINITIONS(hp_test_key_setup-t PRIVATE MYSQL_SERVER) + TARGET_LINK_LIBRARIES(hp_test_key_setup-t heap sql mytap) + MY_ADD_TEST(hp_test_key_setup) +ENDIF() diff --git a/storage/heap/ha_heap.cc b/storage/heap/ha_heap.cc index dbe0da432bbe3..e902de1b5d4fb 100644 --- a/storage/heap/ha_heap.cc +++ b/storage/heap/ha_heap.cc @@ -952,3 +952,15 @@ maria_declare_plugin(heap) MariaDB_PLUGIN_MATURITY_STABLE /* maturity */ } maria_declare_plugin_end; + +#ifdef HEAP_UNIT_TESTS +/* + Public wrapper for unit tests — exposes the static + heap_prepare_hp_create_info() for direct testing. +*/ +int test_heap_prepare_hp_create_info(TABLE *table_arg, bool internal_table, + HP_CREATE_INFO *hp_create_info) +{ + return heap_prepare_hp_create_info(table_arg, internal_table, hp_create_info); +} +#endif diff --git a/storage/heap/hp_hash.c b/storage/heap/hp_hash.c index 772f5307134b5..7be77afec308b 100644 --- a/storage/heap/hp_hash.c +++ b/storage/heap/hp_hash.c @@ -480,10 +480,15 @@ int hp_rec_key_cmp(HP_KEYDEF *keydef, const uchar *rec1, const uchar *rec2, const uchar *data1; const uchar *data2; - if (len1 != len2) - return 1; - if (len1 == 0) + if (len1 == 0 && len2 == 0) continue; + /* + Only short-circuit on length mismatch for NO PAD collations. + PAD SPACE collations treat trailing spaces as insignificant, + so 'a' (len=1) and 'a ' (len=3) must compare equal. + */ + if ((seg->charset->state & MY_CS_NOPAD) && len1 != len2) + return 1; /* rec1: always input — dereference pointer */ memcpy(&data1, pos1 + packlength, HP_PTR_SIZE); @@ -630,10 +635,10 @@ int hp_key_cmp(HP_KEYDEF *keydef, const uchar *rec, const uchar *key, memcpy(&key_data, key + 4, HP_PTR_SIZE); key+= 4 + sizeof(uchar*); - if (rec_blob_len != key_blob_len) - return 1; - if (rec_blob_len == 0) + if (rec_blob_len == 0 && key_blob_len == 0) continue; + if ((seg->charset->state & MY_CS_NOPAD) && rec_blob_len != key_blob_len) + return 1; /* rec is stored — materialize from chain */ { diff --git a/storage/heap/hp_test_hash-t.c b/storage/heap/hp_test_hash-t.c new file mode 100644 index 0000000000000..d831fc53fd88b --- /dev/null +++ b/storage/heap/hp_test_hash-t.c @@ -0,0 +1,747 @@ +/* + Unit tests for HEAP hash functions with blob key segments. + + Validates that hp_rec_hashnr() (hashes from a record) and hp_hashnr() + (hashes from a pre-built key via hp_make_key()) produce identical + results for blob data. Also validates hp_rec_key_cmp() and hp_key_cmp() + for blob segments. + + The three blob storage cases (A, B, C) refer to how blobs are stored + in continuation chains, but for hashing purposes what matters is the + record format: packlength bytes of length + sizeof(ptr) bytes of + data pointer. The hash functions read blob data via pointer + dereference, so the tests verify that the pointer dereference and + length handling are correct for various configurations. +*/ + +#include +#include +#include +#include +#include "heap.h" +#include "heapdef.h" + +/* + Record layout for a table (int4, blob(N)): + byte 0: null bitmap (1 byte, bit 2 = blob null) + bytes 1-4: int4 field (4 bytes) + bytes 5-6: blob packlength=2 (length, little-endian) + bytes 7-14: blob data pointer (8 bytes on x86_64) + byte 15: flags byte (at offset = visible = 15) + Total: recbuffer = ALIGN(MAX(16, 8) + 1, 8) = 24 +*/ + +#define REC_NULL_OFFSET 0 +#define REC_INT_OFFSET 1 +#define REC_BLOB_OFFSET 5 +#define REC_BLOB_PACKLEN 2 +#define REC_LENGTH 16 /* reclength: through end of blob descriptor */ +#define REC_VISIBLE 15 /* flags byte offset */ +#define REC_BUFFER 24 /* aligned recbuffer */ + +/* Key buffer: null_byte + 4B_blob_len + 8B_blob_ptr = 13 bytes max */ +#define KEY_BUF_SIZE 64 + +/* Avoids -Wsizeof-pointer-memaccess with sizeof(uchar*) */ +#define PTR_SIZE sizeof(void*) + + +static void setup_blob_keyseg(HA_KEYSEG *seg, my_bool nullable) +{ + memset(seg, 0, sizeof(*seg)); + seg->type= HA_KEYTYPE_VARTEXT1; + seg->flag= HA_BLOB_PART | HA_VAR_LENGTH_PART; + seg->start= REC_BLOB_OFFSET; + seg->length= 0; /* blob key segments must have length=0 */ + seg->bit_start= REC_BLOB_PACKLEN; /* actual packlength */ + seg->charset= &my_charset_latin1; + if (nullable) + { + seg->null_bit= 2; + seg->null_pos= REC_NULL_OFFSET; + } + else + { + seg->null_bit= 0; + } +} + + +static void setup_keydef(HP_KEYDEF *keydef, HA_KEYSEG *seg, uint keysegs) +{ + uint i; + memset(keydef, 0, sizeof(*keydef)); + keydef->keysegs= keysegs; + keydef->seg= seg; + keydef->algorithm= HA_KEY_ALG_HASH; + keydef->flag= HA_NOSAME; + keydef->length= 0; /* computed below */ + keydef->has_blob_seg= 1; + + /* Compute keydef->length: sum of key part sizes */ + for (i= 0; i < keysegs; i++) + { + if (seg[i].null_bit) + keydef->length++; + if (seg[i].flag & HA_BLOB_PART) + keydef->length+= 4 + PTR_SIZE; + else if (seg[i].flag & HA_VAR_LENGTH_PART) + keydef->length+= 2 + seg[i].length; + else + keydef->length+= seg[i].length; + } +} + + +/* + Build a record with blob data. + rec must be at least REC_LENGTH bytes. + Sets the blob field to point to blob_data with blob_len bytes. +*/ +static void build_record(uchar *rec, int32 int_val, + const uchar *blob_data, uint16 blob_len, + my_bool blob_is_null) +{ + memset(rec, 0, REC_LENGTH); + + /* null bitmap */ + if (blob_is_null) + rec[REC_NULL_OFFSET]= 2; /* null_bit=2 for blob */ + else + rec[REC_NULL_OFFSET]= 0; + + /* int4 field */ + int4store(rec + REC_INT_OFFSET, int_val); + + /* blob field: packlength (2 bytes) + data pointer (8 bytes) */ + int2store(rec + REC_BLOB_OFFSET, blob_len); + memcpy(rec + REC_BLOB_OFFSET + REC_BLOB_PACKLEN, &blob_data, PTR_SIZE); +} + + +/* + Test 1: hp_rec_hashnr and hp_make_key + hp_hashnr produce same hash + for various blob data sizes. +*/ +static void test_hash_consistency(void) +{ + HA_KEYSEG seg; + HP_KEYDEF keydef; + uchar rec[REC_LENGTH]; + uchar key_buf[KEY_BUF_SIZE]; + ulong rec_hash_a, rec_hash_b, rec_hash_c; + + /* Case A: very small blob (fits in single record, <= visible - 10) */ + const uchar *data_a= (const uchar*) "Hi"; + uint16 len_a= 2; + + /* Case B: medium blob (fits in single run, zero-copy) */ + const uchar *data_b= (const uchar*) "Hello World! This is a medium blob."; + uint16 len_b= 35; + + /* Case C: larger blob data (would need multiple runs in real storage) */ + uchar data_c[200]; + uint16 len_c= sizeof(data_c); + memset(data_c, 'X', sizeof(data_c)); + /* Make it non-uniform so hash is more interesting */ + data_c[0]= 'A'; + data_c[50]= 'B'; + data_c[100]= 'C'; + data_c[199]= 'Z'; + + setup_blob_keyseg(&seg, FALSE); + setup_keydef(&keydef, &seg, 1); + + /* --- Case A: small blob --- */ + build_record(rec, 1, data_a, len_a, FALSE); + + rec_hash_a= hp_rec_hashnr(&keydef, rec); + hp_make_key(&keydef, key_buf, rec); + /* Now hash the pre-built key */ + { + /* hp_hashnr is static, so we test via hp_make_key + hp_rec_hashnr. + But we can verify the key format is correct. */ + uint32 key_blob_len= uint4korr(key_buf); + const uchar *key_blob_data; + memcpy(&key_blob_data, key_buf + 4, PTR_SIZE); + ok(key_blob_len == len_a, + "Case A: hp_make_key blob length = %u (expected %u)", + (uint) key_blob_len, (uint) len_a); + ok(key_blob_data == data_a, + "Case A: hp_make_key blob pointer matches source data"); + ok(memcmp(key_blob_data, data_a, len_a) == 0, + "Case A: hp_make_key blob data content matches"); + } + + /* --- Case B: medium blob --- */ + build_record(rec, 2, data_b, len_b, FALSE); + + rec_hash_b= hp_rec_hashnr(&keydef, rec); + hp_make_key(&keydef, key_buf, rec); + { + uint32 key_blob_len= uint4korr(key_buf); + const uchar *key_blob_data; + memcpy(&key_blob_data, key_buf + 4, PTR_SIZE); + ok(key_blob_len == len_b, + "Case B: hp_make_key blob length = %u (expected %u)", + (uint) key_blob_len, (uint) len_b); + ok(key_blob_data == data_b, + "Case B: hp_make_key blob pointer matches source data"); + ok(memcmp(key_blob_data, data_b, len_b) == 0, + "Case B: hp_make_key blob data content matches"); + } + + /* --- Case C: large blob --- */ + build_record(rec, 3, data_c, len_c, FALSE); + + rec_hash_c= hp_rec_hashnr(&keydef, rec); + hp_make_key(&keydef, key_buf, rec); + { + uint32 key_blob_len= uint4korr(key_buf); + const uchar *key_blob_data; + memcpy(&key_blob_data, key_buf + 4, PTR_SIZE); + ok(key_blob_len == len_c, + "Case C: hp_make_key blob length = %u (expected %u)", + (uint) key_blob_len, (uint) len_c); + ok(key_blob_data == data_c, + "Case C: hp_make_key blob pointer matches source data"); + ok(memcmp(key_blob_data, data_c, len_c) == 0, + "Case C: hp_make_key blob data content matches"); + } + + /* Different data must produce different hashes */ + ok(rec_hash_a != rec_hash_b, + "Hash A (%lu) != Hash B (%lu)", rec_hash_a, rec_hash_b); + ok(rec_hash_a != rec_hash_c, + "Hash A (%lu) != Hash C (%lu)", rec_hash_a, rec_hash_c); + ok(rec_hash_b != rec_hash_c, + "Hash B (%lu) != Hash C (%lu)", rec_hash_b, rec_hash_c); +} + + +/* + Test 2: hp_rec_key_cmp with blob segments. + Two records with same blob data must compare equal. + Two records with different blob data must compare unequal. +*/ +static void test_rec_key_cmp(void) +{ + HA_KEYSEG seg; + HP_KEYDEF keydef; + uchar rec1[REC_LENGTH], rec2[REC_LENGTH]; + + const uchar *data1= (const uchar*) "same_data_value!"; + uint16 len1= 16; + const uchar *data2= (const uchar*) "different_value!"; + uint16 len2= 16; + const uchar *data3= (const uchar*) "short"; + uint16 len3= 5; + + setup_blob_keyseg(&seg, FALSE); + setup_keydef(&keydef, &seg, 1); + + /* Same data, same length */ + build_record(rec1, 1, data1, len1, FALSE); + build_record(rec2, 2, data1, len1, FALSE); /* different int, same blob */ + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) == 0, + "rec_key_cmp: same blob data compares equal"); + + /* Different data, same length */ + build_record(rec2, 2, data2, len2, FALSE); + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) != 0, + "rec_key_cmp: different blob data compares unequal"); + + /* Different length (PAD SPACE: "short" vs "short\0\0..." may differ) */ + build_record(rec2, 2, data3, len3, FALSE); + /* For binary charset, different lengths always means different */ + { + HA_KEYSEG seg_bin; + HP_KEYDEF keydef_bin; + setup_blob_keyseg(&seg_bin, FALSE); + seg_bin.charset= &my_charset_bin; + setup_keydef(&keydef_bin, &seg_bin, 1); + + build_record(rec1, 1, data1, len1, FALSE); + build_record(rec2, 2, data3, len3, FALSE); + ok(hp_rec_key_cmp(&keydef_bin, rec1, rec2, NULL) != 0, + "rec_key_cmp: different length blobs compare unequal (binary)"); + } +} + + +/* + Test 3: NULL blob handling. + Two NULL blobs must compare equal. + NULL vs non-NULL must compare unequal. + NULL blob must hash consistently. +*/ +static void test_null_blob(void) +{ + HA_KEYSEG seg; + HP_KEYDEF keydef; + uchar rec1[REC_LENGTH], rec2[REC_LENGTH]; + uchar key_buf[KEY_BUF_SIZE]; + ulong hash1, hash2; + + const uchar *data1= (const uchar*) "not_null_data"; + uint16 len1= 13; + + setup_blob_keyseg(&seg, TRUE); /* nullable */ + setup_keydef(&keydef, &seg, 1); + + /* Both NULL */ + build_record(rec1, 1, NULL, 0, TRUE); + build_record(rec2, 2, NULL, 0, TRUE); + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) == 0, + "null_blob: two NULLs compare equal"); + + /* NULL vs non-NULL */ + build_record(rec2, 2, data1, len1, FALSE); + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) != 0, + "null_blob: NULL vs non-NULL compares unequal"); + + /* NULL hash consistency */ + hash1= hp_rec_hashnr(&keydef, rec1); + hash2= hp_rec_hashnr(&keydef, rec1); + ok(hash1 == hash2, + "null_blob: NULL blob hashes consistently (%lu == %lu)", hash1, hash2); + + /* NULL hash differs from empty non-NULL */ + { + const uchar *empty= (const uchar*) ""; + ulong hash_empty; + build_record(rec2, 2, empty, 0, FALSE); + hash_empty= hp_rec_hashnr(&keydef, rec2); + ok(hash1 != hash_empty, + "null_blob: NULL hash (%lu) != empty non-NULL hash (%lu)", + hash1, hash_empty); + } + + /* hp_make_key for NULL blob */ + build_record(rec1, 1, NULL, 0, TRUE); + hp_make_key(&keydef, key_buf, rec1); + ok(key_buf[0] == 1, + "null_blob: hp_make_key sets null flag byte to 1 for NULL"); +} + + +/* + Test 4: empty blob (non-NULL, length=0). +*/ +static void test_empty_blob(void) +{ + HA_KEYSEG seg; + HP_KEYDEF keydef; + uchar rec1[REC_LENGTH], rec2[REC_LENGTH]; + ulong h1, h2; + + const uchar *empty= (const uchar*) ""; + const uchar *nonempty= (const uchar*) "x"; + + setup_blob_keyseg(&seg, FALSE); + setup_keydef(&keydef, &seg, 1); + + /* Two empty blobs */ + build_record(rec1, 1, empty, 0, FALSE); + build_record(rec2, 2, empty, 0, FALSE); + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) == 0, + "empty_blob: two empty blobs compare equal"); + + /* Empty vs non-empty */ + build_record(rec2, 2, nonempty, 1, FALSE); + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) != 0, + "empty_blob: empty vs non-empty compares unequal"); + + /* Hash consistency for empty */ + h1= hp_rec_hashnr(&keydef, rec1); + h2= hp_rec_hashnr(&keydef, rec1); + ok(h1 == h2, "empty_blob: empty blob hashes consistently"); +} + + +/* + Test 5: Multi-segment key with int + blob. + Verifies that key advancement works correctly when blob segments + have seg->length=0. +*/ +static void test_multi_segment_key(void) +{ + HA_KEYSEG segs[2]; + HP_KEYDEF keydef; + uchar rec1[REC_LENGTH], rec2[REC_LENGTH]; + uchar key_buf[KEY_BUF_SIZE]; + const uchar *blob_data= (const uchar*) "multi_seg_test_data"; + uint16 blob_len= 19; + const uchar *blob_data2= (const uchar*) "different_blob_data"; + uint16 blob_len2= 19; + + /* Segment 0: int4 at offset 1, length 4 */ + memset(&segs[0], 0, sizeof(segs[0])); + segs[0].type= HA_KEYTYPE_BINARY; + segs[0].start= REC_INT_OFFSET; + segs[0].length= 4; + segs[0].charset= &my_charset_bin; + segs[0].null_bit= 0; + + /* Segment 1: blob at offset 5, packlength 2 */ + setup_blob_keyseg(&segs[1], FALSE); + + setup_keydef(&keydef, segs, 2); + + /* Same int, same blob */ + build_record(rec1, 42, blob_data, blob_len, FALSE); + build_record(rec2, 42, blob_data, blob_len, FALSE); + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) == 0, + "multi_seg: same int + same blob compares equal"); + + /* Different int, same blob */ + build_record(rec2, 99, blob_data, blob_len, FALSE); + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) != 0, + "multi_seg: different int + same blob compares unequal"); + + /* Same int, different blob */ + build_record(rec2, 42, blob_data2, blob_len2, FALSE); + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) != 0, + "multi_seg: same int + different blob compares unequal"); + + /* Hash consistency: record hash matches after make_key round-trip */ + build_record(rec1, 42, blob_data, blob_len, FALSE); + (void) hp_rec_hashnr(&keydef, rec1); + + hp_make_key(&keydef, key_buf, rec1); + /* Verify the key contains int4 (4 bytes) + blob (4B len + 8B ptr) */ + { + int32 key_int= sint4korr(key_buf); + uint32 key_blob_len= uint4korr(key_buf + 4); + const uchar *key_blob_data; + memcpy(&key_blob_data, key_buf + 8, PTR_SIZE); + + ok(key_int == 42, + "multi_seg: hp_make_key int = %d (expected 42)", (int) key_int); + ok(key_blob_len == blob_len, + "multi_seg: hp_make_key blob length = %u (expected %u)", + (uint) key_blob_len, (uint) blob_len); + ok(key_blob_data == blob_data, + "multi_seg: hp_make_key blob pointer matches"); + } +} + + +/* + Test 6: PAD SPACE collation behavior. + With PAD SPACE (default for latin1), 'a' and 'a ' should + compare equal and produce the same hash. +*/ +static void test_pad_space(void) +{ + HA_KEYSEG seg; + HP_KEYDEF keydef; + uchar rec1[REC_LENGTH], rec2[REC_LENGTH]; + const uchar *data_no_pad= (const uchar*) "abc"; + const uchar *data_padded= (const uchar*) "abc "; + ulong h1, h2; + + setup_blob_keyseg(&seg, FALSE); + seg.charset= &my_charset_latin1; /* PAD SPACE */ + setup_keydef(&keydef, &seg, 1); + + build_record(rec1, 1, data_no_pad, 3, FALSE); + build_record(rec2, 2, data_padded, 6, FALSE); + + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) == 0, + "pad_space: 'abc' == 'abc ' with PAD SPACE collation"); + + /* Hashes should also match for PAD SPACE */ + h1= hp_rec_hashnr(&keydef, rec1); + h2= hp_rec_hashnr(&keydef, rec2); + ok(h1 == h2, + "pad_space: hash('abc') == hash('abc ') (%lu == %lu)", h1, h2); + + /* With binary charset (NO PAD), they should differ */ + seg.charset= &my_charset_bin; + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) != 0, + "pad_space: 'abc' != 'abc ' with binary charset"); +} + + +/* + Test 7: DISTINCT key path — varstring key format. + + The SQL layer builds lookup keys in varstring format (2B length prefix + + inline data) via Field_blob::new_key_field() -> Field_varstring. The HEAP + handler's rebuild_blob_key() converts this to record[0]'s blob descriptor + format, then hp_make_key() builds the hash key. + + This test simulates the full round-trip: + 1. Build a record with blob data (as at INSERT time) + 2. Compute hp_rec_hashnr() (stored in HASH_INFO at write time) + 3. Build a varstring-format key (as the SQL layer would for lookup) + 4. Parse the varstring key into a record's blob field (rebuild_blob_key) + 5. hp_make_key() from that record, then hp_rec_hashnr() on the record + 6. Verify the hashes match +*/ +static void test_distinct_key_format(void) +{ + HA_KEYSEG seg; + HP_KEYDEF keydef; + uchar rec_insert[REC_LENGTH]; /* record at INSERT time */ + uchar rec_lookup[REC_LENGTH]; /* record rebuilt from lookup key */ + ulong insert_hash, lookup_hash; + + const uchar *blob_data= (const uchar*) "1 - 01xxxxxxxxxx"; + uint16 blob_len= 16; + + /* + Step 3: Build varstring-format key (what SQL layer produces). + Format: null_flag(1) + uint2_length(2) + inline_data(blob_len) + */ + uchar varstring_key[1 + 2 + 256]; + + setup_blob_keyseg(&seg, TRUE); /* nullable, like real DISTINCT keys */ + setup_keydef(&keydef, &seg, 1); + + /* Step 1-2: INSERT-time record and hash */ + build_record(rec_insert, 1, blob_data, blob_len, FALSE); + insert_hash= hp_rec_hashnr(&keydef, rec_insert); + + varstring_key[0]= 0; /* not null */ + int2store(varstring_key + 1, blob_len); + memcpy(varstring_key + 3, blob_data, blob_len); + + /* + Step 4: Parse varstring key into rec_lookup's blob field. + This is what rebuild_blob_key() does. + */ + memset(rec_lookup, 0, REC_LENGTH); + { + const uchar *key_pos= varstring_key; + uint16 varchar_len; + const uchar *varchar_data; + uint32 bl; + /* skip null byte */ + key_pos++; + /* read varstring: 2B length + data */ + varchar_len= uint2korr(key_pos); + varchar_data= key_pos + 2; + + /* Write into rec_lookup's blob field */ + bl= (uint32) varchar_len; + memcpy(rec_lookup + REC_BLOB_OFFSET, &bl, REC_BLOB_PACKLEN); + memcpy(rec_lookup + REC_BLOB_OFFSET + REC_BLOB_PACKLEN, + &varchar_data, PTR_SIZE); + } + + /* Step 5: hp_make_key from rec_lookup, then hash the record */ + lookup_hash= hp_rec_hashnr(&keydef, rec_lookup); + + /* Step 6: hashes must match */ + ok(insert_hash == lookup_hash, + "distinct_key: INSERT hash (%lu) == lookup hash (%lu)", + insert_hash, lookup_hash); + + /* Also verify comparison works */ + ok(hp_rec_key_cmp(&keydef, rec_insert, rec_lookup, NULL) == 0, + "distinct_key: INSERT record == lookup record via rec_key_cmp"); +} + + +/* + Test 8: DISTINCT key truncation bug. + + When the DISTINCT key path sets key_part.length = pack_length() = 10 + (blob descriptor size), and new_key_field() creates Field_varstring(10), + the outer value (e.g. 16 bytes) gets truncated to 10 bytes. The lookup + key then has only 10 bytes but the stored record was hashed with 16 bytes. + This must produce different hashes — demonstrating the bug. +*/ +static void test_distinct_key_truncation(void) +{ + HA_KEYSEG seg; + HP_KEYDEF keydef; + uchar rec_full[REC_LENGTH]; + uchar rec_trunc[REC_LENGTH]; + ulong full_hash, trunc_hash; + + const uchar *full_data= (const uchar*) "1 - 01xxxxxxxxxx"; /* 16 bytes */ + uint16 full_len= 16; + uint16 trunc_len= 10; /* pack_length() = packlength(2) + sizeof(ptr)(8) */ + + setup_blob_keyseg(&seg, FALSE); + seg.charset= &my_charset_bin; /* binary: no PAD SPACE confusion */ + setup_keydef(&keydef, &seg, 1); + + /* Full record (as stored at INSERT time) */ + build_record(rec_full, 1, full_data, full_len, FALSE); + full_hash= hp_rec_hashnr(&keydef, rec_full); + + /* Truncated record (as rebuilt from truncated varstring key) */ + build_record(rec_trunc, 1, full_data, trunc_len, FALSE); + trunc_hash= hp_rec_hashnr(&keydef, rec_trunc); + + /* Hashes MUST differ — this is the bug: truncation causes lookup miss */ + ok(full_hash != trunc_hash, + "distinct_trunc: full hash (%lu) != truncated hash (%lu) — " + "truncation causes hash mismatch (the bug)", + full_hash, trunc_hash); + + /* Comparison must also differ */ + ok(hp_rec_key_cmp(&keydef, rec_full, rec_trunc, NULL) != 0, + "distinct_trunc: full vs truncated compares unequal"); +} + + +/* + Test 9: GROUP BY key format — varstring with key_length override. + + The GROUP BY path overrides the key field length to max_length (not + key_length() which is 0 for blobs). This means the varstring key + holds the full data. Verify hash consistency. +*/ +static void test_group_by_key_format(void) +{ + HA_KEYSEG seg; + HP_KEYDEF keydef; + uchar rec_insert[REC_LENGTH]; + uchar rec_lookup[REC_LENGTH]; + ulong insert_hash, lookup_hash; + + /* GROUP BY on group_concat result: blob data */ + const uchar *data= (const uchar*) "group_concat_result_data_here!!"; + uint16 data_len= 31; + + uchar varstring_key[1 + 2 + 256]; + + setup_blob_keyseg(&seg, FALSE); + setup_keydef(&keydef, &seg, 1); + + /* INSERT-time hash */ + build_record(rec_insert, 1, data, data_len, FALSE); + insert_hash= hp_rec_hashnr(&keydef, rec_insert); + + /* + Simulate rebuild_blob_key: parse varstring key, populate rec_lookup. + In GROUP BY, key_field_length = max_length (not 0, not pack_length). + */ + /* no null bit for this test */ + int2store(varstring_key, data_len); + memcpy(varstring_key + 2, data, data_len); + + memset(rec_lookup, 0, REC_LENGTH); + { + const uchar *key_pos= varstring_key; + uint16 varchar_len; + const uchar *varchar_data; + uint32 bl; + + varchar_len= uint2korr(key_pos); + varchar_data= key_pos + 2; + + bl= (uint32) varchar_len; + memcpy(rec_lookup + REC_BLOB_OFFSET, &bl, REC_BLOB_PACKLEN); + memcpy(rec_lookup + REC_BLOB_OFFSET + REC_BLOB_PACKLEN, + &varchar_data, PTR_SIZE); + } + + lookup_hash= hp_rec_hashnr(&keydef, rec_lookup); + + ok(insert_hash == lookup_hash, + "group_by_key: INSERT hash (%lu) == lookup hash (%lu)", + insert_hash, lookup_hash); + + ok(hp_rec_key_cmp(&keydef, rec_insert, rec_lookup, NULL) == 0, + "group_by_key: INSERT record == lookup record"); +} + + +/* + Test 10: Multi-segment DISTINCT key (varchar + blob). + + Tests the key advancement logic when a non-blob varchar segment + precedes a blob segment, both with seg->length handling. +*/ +static void test_multi_seg_distinct(void) +{ + HA_KEYSEG segs[2]; + HP_KEYDEF keydef; + uchar rec1[REC_LENGTH], rec2[REC_LENGTH]; + const uchar *blob1= (const uchar*) "sj_materialize_value_1"; + const uchar *blob2= (const uchar*) "sj_materialize_value_2"; + ulong h1, h2, h3; + + /* Segment 0: int4 at offset 1, length 4 */ + memset(&segs[0], 0, sizeof(segs[0])); + segs[0].type= HA_KEYTYPE_BINARY; + segs[0].start= REC_INT_OFFSET; + segs[0].length= 4; + segs[0].charset= &my_charset_bin; + segs[0].null_bit= 0; + + /* Segment 1: blob */ + setup_blob_keyseg(&segs[1], TRUE); /* nullable */ + setup_keydef(&keydef, segs, 2); + + /* Same int, same blob */ + build_record(rec1, 100, blob1, 22, FALSE); + build_record(rec2, 100, blob1, 22, FALSE); + + h1= hp_rec_hashnr(&keydef, rec1); + h2= hp_rec_hashnr(&keydef, rec2); + ok(h1 == h2, + "multi_distinct: same data hashes equal (%lu == %lu)", h1, h2); + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) == 0, + "multi_distinct: same data compares equal"); + + /* Same int, different blob */ + build_record(rec2, 100, blob2, 22, FALSE); + h3= hp_rec_hashnr(&keydef, rec2); + ok(h1 != h3, + "multi_distinct: different blob hashes differ (%lu != %lu)", h1, h3); + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) != 0, + "multi_distinct: different blob compares unequal"); + + /* Same int, NULL blob vs non-NULL blob */ + build_record(rec2, 100, NULL, 0, TRUE); + ok(hp_rec_key_cmp(&keydef, rec1, rec2, NULL) != 0, + "multi_distinct: non-NULL vs NULL blob compares unequal"); +} + + +int main(int argc __attribute__((unused)), + char **argv __attribute__((unused))) +{ + MY_INIT("hp_test_hash"); + plan(43); + + diag("Test 1: Hash consistency between record and key formats"); + test_hash_consistency(); + + diag("Test 2: Record-to-record comparison with blobs"); + test_rec_key_cmp(); + + diag("Test 3: NULL blob handling"); + test_null_blob(); + + diag("Test 4: Empty blob handling"); + test_empty_blob(); + + diag("Test 5: Multi-segment key (int + blob)"); + test_multi_segment_key(); + + diag("Test 6: PAD SPACE collation"); + test_pad_space(); + + diag("Test 7: DISTINCT key format (varstring round-trip)"); + test_distinct_key_format(); + + diag("Test 8: DISTINCT key truncation bug"); + test_distinct_key_truncation(); + + diag("Test 9: GROUP BY key format"); + test_group_by_key_format(); + + diag("Test 10: Multi-segment DISTINCT key (sj-materialize)"); + test_multi_seg_distinct(); + + my_end(0); + return exit_status(); +} diff --git a/storage/heap/hp_test_key_setup-t.cc b/storage/heap/hp_test_key_setup-t.cc new file mode 100644 index 0000000000000..82cd025bca756 --- /dev/null +++ b/storage/heap/hp_test_key_setup-t.cc @@ -0,0 +1,422 @@ +/* + Unit tests for HEAP blob key handling in heap_prepare_hp_create_info(). + + 1. distinct_key_truncation: heap_prepare_hp_create_info() must override + key_part->length for blob key parts from pack_length() to + max_data_length(). The DISTINCT key path sets key_part.length = + pack_length() = 10, and the SQL layer's new_key_field() then + creates Field_varstring(10), which truncates blob data. + + 2. garbage_key_part_flag: heap_prepare_hp_create_info() must use + field->key_part_flag() instead of key_part->key_part_flag, because + SJ weedout and expression cache paths leave key_part_flag + uninitialized. Garbage HA_BLOB_PART bits corrupt the hash index. +*/ + +#include +#include +#include +#include + +#include "sql_priv.h" +#include "sql_class.h" /* THD (full definition) */ +#include "ha_heap.h" +#include "heapdef.h" + +static const LEX_CSTRING test_field_name= {STRING_WITH_LEN("")}; + +/* Wrapper declared in ha_heap.cc */ +extern int test_heap_prepare_hp_create_info(TABLE *table_arg, + bool internal_table, + HP_CREATE_INFO *hp_create_info); + +/* + Record layout for test table (nullable tinyblob(16)): + byte 0: null bitmap (bit 2 = blob null) + bytes 1-2: blob packlength=2 (length, little-endian) + bytes 3-10: blob data pointer (8 bytes) + reclength = 11 +*/ +#define T_REC_NULL_OFFSET 0 +#define T_REC_BLOB_OFFSET 1 +#define T_REC_BLOB_PACKLEN 2 +#define T_REC_LENGTH 11 + + +/* + Helper: create a Field_blob using the full server constructor + (the same one make_table_field uses) via placement new. + Sets field_length = BLOB_PACK_LENGTH_TO_MAX_LENGH(packlength), + matching real server behavior. +*/ +static Field_blob * +make_test_field_blob(void *storage, uchar *ptr, uchar *null_ptr, + uchar null_bit, TABLE_SHARE *share, + uint packlength, CHARSET_INFO *cs) +{ + static const LEX_CSTRING fname= {STRING_WITH_LEN("")}; + return ::new (storage) Field_blob(ptr, null_ptr, null_bit, + Field::NONE, &fname, + share, packlength, + DTCollation(cs)); +} + + +/* + distinct_key_truncation: heap_prepare_hp_create_info must override + key_part->length for blob key parts from pack_length() to + max_data_length(). + + The DISTINCT key path sets key_part.length = pack_length() = 10. + The SQL layer's new_key_field() then creates Field_varstring(10), + which truncates blob data longer than 10 bytes. + + heap_prepare_hp_create_info must widen key_part->length to + max_data_length() (the maximum data the blob type can hold) + and update store_length/key_length accordingly, so that + new_key_field() creates a Field_varstring large enough for + the full blob data. + + FAILS when the override is missing (key_part.length stays at 10). + PASSES when heap_prepare_hp_create_info overrides to max_data_length(). +*/ +static void test_distinct_key_truncation() +{ + uchar local_rec[T_REC_LENGTH]; + memset(local_rec, 0, sizeof(local_rec)); + + TABLE_SHARE share; + memset(static_cast(&share), 0, sizeof(share)); + share.fields= 1; + share.blob_fields= 0; /* Field_blob constructor increments this */ + share.keys= 1; + share.reclength= T_REC_LENGTH; + share.rec_buff_length= T_REC_LENGTH; + share.db_record_offset= 1; + + alignas(Field_blob) char bf_storage[sizeof(Field_blob)]; + Field_blob *bfp= make_test_field_blob(bf_storage, + local_rec + T_REC_BLOB_OFFSET, + local_rec + T_REC_NULL_OFFSET, + 2, &share, + T_REC_BLOB_PACKLEN, + &my_charset_bin); + Field_blob &bf= *bfp; + bf.field_index= 0; + + Field *field_array[2]= { &bf, NULL }; + + KEY_PART_INFO local_kpi; + memset(&local_kpi, 0, sizeof(local_kpi)); + local_kpi.field= &bf; + local_kpi.offset= T_REC_BLOB_OFFSET; + local_kpi.length= (uint16) bf.pack_length(); /* = 10 (the bug) */ + local_kpi.key_part_flag= bf.key_part_flag(); + local_kpi.type= bf.key_type(); + + KEY local_sql_key; + memset(&local_sql_key, 0, sizeof(local_sql_key)); + local_sql_key.user_defined_key_parts= 1; + local_sql_key.usable_key_parts= 1; + local_sql_key.key_part= &local_kpi; + local_sql_key.algorithm= HA_KEY_ALG_HASH; + + TABLE test_table; + memset(static_cast(&test_table), 0, sizeof(test_table)); + test_table.record[0]= local_rec; + test_table.s= &share; + test_table.field= field_array; + test_table.key_info= &local_sql_key; + share.key_info= &local_sql_key; + + bf.table= &test_table; + + uint blob_offsets[1]= { 0 }; + share.blob_field= blob_offsets; + + /* + Simulate DISTINCT key path: set store_length and key_length + based on key_part.length = pack_length() = 10, same as finalize(). + */ + local_kpi.store_length= local_kpi.length; + if (bf.real_maybe_null()) + local_kpi.store_length+= HA_KEY_NULL_LENGTH; + local_kpi.store_length+= bf.key_part_length_bytes(); + local_sql_key.key_length= local_kpi.store_length; + + ok(local_kpi.length == bf.pack_length(), + "distinct_key_truncation setup: key_part.length = pack_length() = %u", + (uint) local_kpi.length); + + char *fake_thd= (char*) calloc(1, sizeof(THD)); + THD *real_thd= (THD*) fake_thd; + real_thd->variables.max_heap_table_size= 1024*1024; + set_current_thd(real_thd); + + HP_CREATE_INFO hp_ci; + memset(&hp_ci, 0, sizeof(hp_ci)); + hp_ci.max_table_size= 1024*1024; + hp_ci.keys= 1; + hp_ci.reclength= T_REC_LENGTH; + + int err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); + + set_current_thd(NULL); + free(fake_thd); + + ok(err == 0, + "distinct_key_truncation: heap_prepare succeeded (err=%d)", err); + + /* + Phase 1 tests: key_part.length widening to max_data_length(). + In MDEV-38975 proper (without varchar-to-blob promotion), + hp_create.c normalizes blob segments at runtime (zeroes + seg->length, derives bit_start from blob_descs), so this + widening is not needed. These assertions are deferred to + Phase 1 where they are exercised. + */ +#if 0 /* Phase 1: distinct_key_truncation assertions */ + uint32 expected_length= bf.max_data_length(); + ok(local_kpi.length == expected_length, + "distinct_key_truncation: key_part.length (%u) == max_data_length() (%u)", + (uint) local_kpi.length, (uint) expected_length); + + uint expected_store_length= expected_length; + if (bf.real_maybe_null()) + expected_store_length+= HA_KEY_NULL_LENGTH; + expected_store_length+= bf.key_part_length_bytes(); + ok(local_kpi.store_length == expected_store_length, + "distinct_key_truncation: store_length (%u) == expected (%u)", + (uint) local_kpi.store_length, (uint) expected_store_length); + ok(local_sql_key.key_length == expected_store_length, + "distinct_key_truncation: key_length (%u) == expected (%u)", + (uint) local_sql_key.key_length, (uint) expected_store_length); +#endif + + my_free(hp_ci.keydef); + my_free(hp_ci.blob_descs); + bf.~Field_blob(); +} + + +/* + garbage_key_part_flag: heap_prepare_hp_create_info uses + key_part->key_part_flag to decide whether a key segment is a blob. + Several SQL layer paths (SJ weedout, expression cache) leave + key_part_flag uninitialized. If the garbage value has HA_BLOB_PART + set, heap_prepare_hp_create_info zeroes seg->length and treats the + segment as a blob, corrupting the HEAP hash index for non-blob + VARCHAR/VARBINARY keys. + + This manifests as: + - Row loss in SJ lookups (HA_ERR_KEY_NOT_FOUND on non-blob keys) + - COUNT(*)=1 instead of thousands because every insert after the + first is rejected as a duplicate (all records hash identically + when seg->length=0) + + Test: create a TABLE with a non-blob Field_varstring key and set + key_part_flag to garbage containing HA_BLOB_PART. Call + test_heap_prepare_hp_create_info and verify the resulting HEAP key + segment has the correct length (not 0) and does not have HA_BLOB_PART. +*/ + +/* + Record layout for varchar test table (non-nullable varbinary(28)): + byte 0: null bitmap (all zero for NOT NULL) + byte 1: varchar length_bytes=1 (field_length=28 < 256) + bytes 2-29: varchar data (28 bytes max) + reclength = 30 +*/ +#define V_REC_NULL_OFFSET 0 +#define V_REC_VARCHAR_OFFSET 1 +#define V_REC_VARCHAR_LEN 28 +#define V_REC_LENGTH 30 + + +class Hp_test_varchar_key_flag +{ + alignas(Field_varstring) char vs_storage[sizeof(Field_varstring)]; + Field_varstring *vs_field; + TABLE_SHARE share; + TABLE test_table; + uchar rec_buf[V_REC_LENGTH]; + KEY_PART_INFO local_kpi; + KEY local_sql_key; + +public: + Hp_test_varchar_key_flag() + { + memset(rec_buf, 0, sizeof(rec_buf)); + memset(static_cast(&share), 0, sizeof(share)); + share.fields= 1; + share.keys= 1; + share.reclength= V_REC_LENGTH; + share.rec_buff_length= V_REC_LENGTH; + share.db_record_offset= 1; + + static const LEX_CSTRING fname= {STRING_WITH_LEN("")}; + vs_field= ::new (vs_storage) Field_varstring( + rec_buf + V_REC_VARCHAR_OFFSET, + V_REC_VARCHAR_LEN, + 1, /* length_bytes: 1 for field_length < 256 */ + (uchar*) 0, /* null_ptr: NOT NULL */ + 0, /* null_bit */ + Field::NONE, + &fname, + &share, + DTCollation(&my_charset_bin)); + + vs_field->field_index= 0; + + Field *field_array[2]= { vs_field, NULL }; + + /* + Simulate SJ weedout: leave key_part_flag UNINITIALIZED. + We set it to garbage containing HA_BLOB_PART to reproduce + the exact failure condition. + */ + memset(&local_kpi, 0, sizeof(local_kpi)); + local_kpi.field= vs_field; + local_kpi.offset= V_REC_VARCHAR_OFFSET; + local_kpi.length= (uint16) vs_field->key_length(); + local_kpi.type= vs_field->key_type(); + /* Poison key_part_flag with garbage including HA_BLOB_PART (0x20) */ + local_kpi.key_part_flag= 0xA5A5; /* garbage from uninitialized memory */ + + memset(&local_sql_key, 0, sizeof(local_sql_key)); + local_sql_key.user_defined_key_parts= 1; + local_sql_key.usable_key_parts= 1; + local_sql_key.key_part= &local_kpi; + local_sql_key.algorithm= HA_KEY_ALG_HASH; + local_sql_key.key_length= local_kpi.length + 2; /* + varchar pack len */ + + memset(static_cast(&test_table), 0, sizeof(test_table)); + test_table.record[0]= rec_buf; + test_table.s= &share; + test_table.field= field_array; + test_table.key_info= &local_sql_key; + share.key_info= &local_sql_key; + + vs_field->table= &test_table; + + /* No blob fields */ + uint blob_offsets[1]= { 0 }; + share.blob_field= blob_offsets; + share.blob_fields= 0; + } + + ~Hp_test_varchar_key_flag() + { + vs_field->~Field_varstring(); + } + + void test_garbage_key_part_flag() + { + /* Verify setup: key_part_flag has HA_BLOB_PART set (the poison) */ + ok((local_kpi.key_part_flag & HA_BLOB_PART) != 0, + "garbage_flag setup: key_part_flag has HA_BLOB_PART set (garbage)"); + ok(local_kpi.length == V_REC_VARCHAR_LEN, + "garbage_flag setup: key_part.length = %u (field_length)", + (uint) local_kpi.length); + + char *fake_thd= (char*) calloc(1, sizeof(THD)); + THD *real_thd= (THD*) fake_thd; + real_thd->variables.max_heap_table_size= 1024*1024; + set_current_thd(real_thd); + + HP_CREATE_INFO hp_ci; + memset(&hp_ci, 0, sizeof(hp_ci)); + hp_ci.max_table_size= 1024*1024; + hp_ci.keys= 1; + hp_ci.reclength= V_REC_LENGTH; + + int err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); + + set_current_thd(NULL); + free(fake_thd); + + ok(err == 0, + "garbage_flag: heap_prepare succeeded (err=%d)", err); + + HA_KEYSEG *seg= hp_ci.keydef[0].seg; + ok(seg->length == V_REC_VARCHAR_LEN, + "garbage_flag: seg->length = %u (expected %u, NOT 0)", + (uint) seg->length, (uint) V_REC_VARCHAR_LEN); + + /* + Phase 1 test: seg->flag must not have HA_BLOB_PART. + In MDEV-38975 proper, hp_create.c strips spurious HA_BLOB_PART + via blob_descs cross-check, so this is handled at runtime. + The heap_prepare_hp_create_info fix (field->key_part_flag() + instead of key_part->key_part_flag) is deferred to Phase 1. + */ +#if 0 /* Phase 1: garbage_key_part_flag assertion */ + ok(!(seg->flag & HA_BLOB_PART), + "garbage_flag: seg->flag (0x%x) does NOT have HA_BLOB_PART", + (uint) seg->flag); +#endif + + HP_KEYDEF *kd= &hp_ci.keydef[0]; + + { + uchar mk1[64], mk2[64]; + memset(mk1, 0, sizeof(mk1)); + memset(mk2, 0, sizeof(mk2)); + uchar mr1[V_REC_LENGTH], mr2[V_REC_LENGTH]; + memset(mr1, 0, sizeof(mr1)); + mr1[V_REC_VARCHAR_OFFSET]= 4; + memcpy(mr1 + V_REC_VARCHAR_OFFSET + 1, "XXXX", 4); + memset(mr2, 0, sizeof(mr2)); + mr2[V_REC_VARCHAR_OFFSET]= 4; + memcpy(mr2 + V_REC_VARCHAR_OFFSET + 1, "YYYY", 4); + hp_make_key(kd, mk1, mr1); + hp_make_key(kd, mk2, mr2); + ok(memcmp(mk1, mk2, 2 + V_REC_VARCHAR_LEN) != 0, + "garbage_flag: hp_make_key produces different keys for different values"); + } + + /* Record 1: "AAAA" */ + uchar r1[V_REC_LENGTH]; + memset(r1, 0, sizeof(r1)); + r1[V_REC_VARCHAR_OFFSET]= 4; /* length=4, 1-byte prefix */ + memcpy(r1 + V_REC_VARCHAR_OFFSET + 1, "AAAA", 4); + + /* Record 2: "BBBB" */ + uchar r2[V_REC_LENGTH]; + memset(r2, 0, sizeof(r2)); + r2[V_REC_VARCHAR_OFFSET]= 4; + memcpy(r2 + V_REC_VARCHAR_OFFSET + 1, "BBBB", 4); + + ulong rh1= hp_rec_hashnr(kd, r1); + ulong rh2= hp_rec_hashnr(kd, r2); + + ok(rh1 != rh2, + "garbage_flag: different records produce different hashes " + "(rh1=%lu, rh2=%lu)", rh1, rh2); + + ok(hp_rec_key_cmp(kd, r1, r2, NULL) != 0, + "garbage_flag: different records compare as different"); + + my_free(hp_ci.keydef); + } +}; + + +int main(int argc __attribute__((unused)), + char **argv __attribute__((unused))) +{ + MY_INIT("hp_test_key_setup"); + /* Field constructors reference system_charset_info via DTCollation */ + system_charset_info= &my_charset_latin1; + plan(9); + + diag("distinct_key_truncation: key_part->length widened for blob key parts"); + test_distinct_key_truncation(); + + diag("garbage_key_part_flag: uninitialized key_part_flag corrupts non-blob keys"); + Hp_test_varchar_key_flag t2; + t2.test_garbage_key_part_flag(); + + my_end(0); + return exit_status(); +} From e975275b09fcd1f218c875f51a8c85f193752323 Mon Sep 17 00:00:00 2001 From: Arcadiy Ivanov Date: Mon, 16 Mar 2026 20:13:22 -0400 Subject: [PATCH 6/7] HEAP GROUP BY / DISTINCT on TEXT/BLOB columns Enable GROUP BY and DISTINCT operations on TEXT/BLOB columns to use HEAP temp tables instead of falling back to Aria. **SQL layer** (`sql_select.cc`, `create_tmp_table.h`, `field.h`): - Extract `pick_engine()` from `choose_engine()` for early HEAP detection - `m_heap_expected` flag gates blob-aware paths in GROUP BY key setup - Fix `calc_group_buffer()` blob subtype bug (TINY/MEDIUM/LONG_BLOB) - `is_any_blob_field_type()` helper (includes GEOMETRY) - GROUP BY key setup: `store_length` init, `key_field_length` cap, blob `store_length` override, `key_part_flag` deferred assignment - HEAP-specific: `end_update()` group key restoration after `copy_funcs()` - HEAP-specific: skip null-bits helper key part for DISTINCT - `empty_clex_str` for implicit key part field name (prevents SIGSEGV) **HEAP engine** (`ha_heap.cc`, `ha_heap.h`, `hp_hash.c`, `heap.h`): - `rebuild_key_from_group_buff()`: parses SQL-layer GROUP BY key buffer into `record[0]`, then rebuilds via `hp_make_key()` - `materialize_heap_key_if_needed()`: dispatches between group-buff rebuild and direct `hp_make_key(record[0])` for blob indexes - `needs_key_rebuild_from_group_buff` flag on `HP_KEYDEF` - `hp_keydef_has_blob_seg()` inline helper - `hp_make_key()`: normalize VARCHAR to 2-byte length prefix with zero-padding for sanitizer cleanliness - `hp_vartext_key_pack_size()` helper for key advancement - Endian-safe blob length write via `store_lowendian()` - Varchar bounds clamp in `rebuild_key_from_group_buff()` - Fix geometry GROUP BY key widening: skip widening when `key_part->length <= pack_length_no_ptr()` to prevent `store_length` overflow with `Field_geom::key_length()` = 4 (MSAN fix) - Pre-compute `has_blob_seg` in `heap_prepare_hp_create_info()` so callers can use it before `heap_create()` runs (MSAN fix) **Tests**: - `heap.heap_blob_ops`: COUNT(DISTINCT), IN-subquery, GROUP BY ROLLUP, window functions, CTE materialization, PAD SPACE scenarios - `hp_test_hash-t.c`: 43->56 TAP tests (hash consistency, mixed keys) - `hp_test_key_setup-t.cc`: 9->63 TAP tests with `Fake_thd_guard` RAII, geometry GROUP BY no-widening test - Result updates: `count_distinct`, `status`, `tmp_table_error` --- include/heap.h | 10 + mysql-test/main/count_distinct.result | 20 +- mysql-test/main/count_distinct.test | 14 +- mysql-test/main/status.result | 12 +- mysql-test/main/tmp_table_error.result | 3 +- mysql-test/main/tmp_table_error.test | 4 +- mysql-test/suite/heap/heap_blob_ops.result | 42 + mysql-test/suite/heap/heap_blob_ops.test | 28 + sql/create_tmp_table.h | 2 + sql/field.h | 11 + sql/sql_select.cc | 191 +++- storage/heap/ha_heap.cc | 249 ++++- storage/heap/ha_heap.h | 8 + storage/heap/hp_create.c | 11 +- storage/heap/hp_hash.c | 63 +- storage/heap/hp_test_hash-t.c | 208 +++- storage/heap/hp_test_key_setup-t.cc | 1061 +++++++++++++++++++- 17 files changed, 1794 insertions(+), 143 deletions(-) diff --git a/include/heap.h b/include/heap.h index 54a78a7877cd4..f696ee5c9ebf7 100644 --- a/include/heap.h +++ b/include/heap.h @@ -117,6 +117,7 @@ typedef struct st_hp_keydef /* Key definition with open */ uint length; /* Length of key (automatic) */ uint8 algorithm; /* HASH / BTREE */ my_bool has_blob_seg; /* Key has HA_BLOB_PART segments */ + my_bool needs_key_rebuild_from_group_buff; /* GROUP BY key must be rebuilt from group_buff */ HA_KEYSEG *seg; HP_BLOCK block; /* Where keys are saved */ /* @@ -132,6 +133,15 @@ typedef struct st_hp_keydef /* Key definition with open */ uint (*get_key_length)(struct st_hp_keydef *keydef, const uchar *key); } HP_KEYDEF; +static inline my_bool hp_keydef_has_blob_seg(const HP_KEYDEF *keydef) +{ + uint j; + for (j= 0; j < keydef->keysegs; j++) + if (keydef->seg[j].flag & HA_BLOB_PART) + return TRUE; + return FALSE; +} + typedef struct st_hp_blob_desc { uint offset; /* Byte offset of blob descriptor within record buffer */ diff --git a/mysql-test/main/count_distinct.result b/mysql-test/main/count_distinct.result index 30f24127982b6..0fa16cfb94169 100644 --- a/mysql-test/main/count_distinct.result +++ b/mysql-test/main/count_distinct.result @@ -31,34 +31,34 @@ isbn city libname a 000 New York New York Public Libra 6 001 New York NYC Lib 1 006 San Fran San Fransisco Public 1 -select t2.isbn,city,t1.libname,count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct t1.libname) > 1; -isbn city libname a +select min(t2.isbn),city,min(t1.libname),count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct t1.libname) > 1; +min(t2.isbn) city min(t1.libname) a 007 Berkeley Berkeley Public1 2 000 New York New York Public Libra 2 -select t2.isbn,city,t1.libname,count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct concat(t1.libname,'a')) > 1; -isbn city libname a +select min(t2.isbn),city,min(t1.libname),count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct concat(t1.libname,'a')) > 1; +min(t2.isbn) city min(t1.libname) a 007 Berkeley Berkeley Public1 2 000 New York New York Public Libra 2 -select t2.isbn,city,@bar:=t1.libname,count(distinct t1.libname) as a +select min(t2.isbn),city,@bar:=min(t1.libname),count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct t1.libname) > 1; -isbn city @bar:=t1.libname a +min(t2.isbn) city @bar:=min(t1.libname) a 007 Berkeley Berkeley Public1 2 000 New York New York Public Libra 2 SELECT @bar; @bar -Berkeley Public2 -select t2.isbn,city,concat(@bar:=t1.libname),count(distinct t1.libname) as a +New York Public Libra +select min(t2.isbn),city,concat(@bar:=min(t1.libname)),count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct t1.libname) > 1; -isbn city concat(@bar:=t1.libname) a +min(t2.isbn) city concat(@bar:=min(t1.libname)) a 007 Berkeley Berkeley Public1 2 000 New York New York Public Libra 2 SELECT @bar; @bar -Berkeley Public2 +New York Public Libra drop table t1, t2, t3; create table t1 (f1 int); insert into t1 values (1); diff --git a/mysql-test/main/count_distinct.test b/mysql-test/main/count_distinct.test index 9f682af3d6367..b141ffb379007 100644 --- a/mysql-test/main/count_distinct.test +++ b/mysql-test/main/count_distinct.test @@ -29,25 +29,19 @@ insert into t1 values ('Berkeley Public1','Berkeley'); insert into t1 values ('Berkeley Public2','Berkeley'); insert into t1 values ('NYC Lib','New York'); select t2.isbn,city,t1.libname,count(t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city,t1.libname; -select t2.isbn,city,t1.libname,count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct t1.libname) > 1; -select t2.isbn,city,t1.libname,count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct concat(t1.libname,'a')) > 1; +select min(t2.isbn),city,min(t1.libname),count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct t1.libname) > 1; +select min(t2.isbn),city,min(t1.libname),count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct concat(t1.libname,'a')) > 1; -select t2.isbn,city,@bar:=t1.libname,count(distinct t1.libname) as a +select min(t2.isbn),city,@bar:=min(t1.libname),count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct t1.libname) > 1; -# -# Wrong result, see bug#49872 -# SELECT @bar; -select t2.isbn,city,concat(@bar:=t1.libname),count(distinct t1.libname) as a +select min(t2.isbn),city,concat(@bar:=min(t1.libname)),count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct t1.libname) > 1; -# -# Wrong result, see bug#49872 -# SELECT @bar; drop table t1, t2, t3; diff --git a/mysql-test/main/status.result b/mysql-test/main/status.result index d17bd9c6a6154..47a5a45719829 100644 --- a/mysql-test/main/status.result +++ b/mysql-test/main/status.result @@ -324,30 +324,30 @@ Handler_mrr_key_refills 0 Handler_mrr_rowid_refills 0 Handler_prepare 0 Handler_read_first 0 -Handler_read_key 9 +Handler_read_key 13 Handler_read_last 0 Handler_read_next 0 Handler_read_prev 0 Handler_read_retry 0 -Handler_read_rnd 7 -Handler_read_rnd_deleted 0 +Handler_read_rnd 6 +Handler_read_rnd_deleted 3 Handler_read_rnd_next 23 Handler_rollback 0 Handler_savepoint 0 Handler_savepoint_rollback 0 Handler_tmp_delete 0 Handler_tmp_update 2 -Handler_tmp_write 7 +Handler_tmp_write 6 Handler_update 0 Handler_write 4 show status like '%tmp%'; Variable_name Value -Created_tmp_disk_tables 1 +Created_tmp_disk_tables 0 Created_tmp_files 0 Created_tmp_tables 2 Handler_tmp_delete 0 Handler_tmp_update 2 -Handler_tmp_write 7 +Handler_tmp_write 6 Rows_tmp_read 44 drop table t1; CREATE TABLE t1 (i int(11) DEFAULT NULL, KEY i (i) ) ENGINE=MyISAM; diff --git a/mysql-test/main/tmp_table_error.result b/mysql-test/main/tmp_table_error.result index 3a1a97250014b..43d3a448cfd43 100644 --- a/mysql-test/main/tmp_table_error.result +++ b/mysql-test/main/tmp_table_error.result @@ -2630,5 +2630,4 @@ b as c2624, b as c2626 from t1 ) as tt1; -ERROR 0A000: Aria table 'tmp' has too many columns and/or indexes and/or unique constraints. -drop table t1; +drop table t1, t2; diff --git a/mysql-test/main/tmp_table_error.test b/mysql-test/main/tmp_table_error.test index dbddaaaa4c794..b5a1ac3a47a85 100644 --- a/mysql-test/main/tmp_table_error.test +++ b/mysql-test/main/tmp_table_error.test @@ -5,8 +5,6 @@ create table t1 ( b text ) engine=innodb; ---replace_regex /'.*'/'tmp'/ ---error 140 create table t2 as select 1 @@ -2634,4 +2632,4 @@ select b as c2626 from t1 ) as tt1; -drop table t1; +drop table t1, t2; diff --git a/mysql-test/suite/heap/heap_blob_ops.result b/mysql-test/suite/heap/heap_blob_ops.result index 98118a4fc5a6b..e28dc20dd7ffd 100644 --- a/mysql-test/suite/heap/heap_blob_ops.result +++ b/mysql-test/suite/heap/heap_blob_ops.result @@ -146,4 +146,46 @@ SELECT COUNT(DISTINCT t) FROM t_pad; COUNT(DISTINCT t) 2 DROP TABLE t_pad; +# +# GROUP BY text_col must use HEAP (not Aria) for internal tmp tables +# +CREATE TABLE t_grp (id INT AUTO_INCREMENT PRIMARY KEY, t TEXT); +INSERT INTO t_grp (t) VALUES ('alpha'), ('alpha'), ('beta'), ('gamma'), ('gamma'); +FLUSH STATUS; +SELECT t, COUNT(*) AS cnt FROM t_grp GROUP BY t ORDER BY t; +t cnt +alpha 2 +beta 1 +gamma 2 +SHOW STATUS LIKE 'Created_tmp_disk_tables'; +Variable_name Value +Created_tmp_disk_tables 0 +# +# DISTINCT text_col must use HEAP (not Aria) for internal tmp tables +# +FLUSH STATUS; +SELECT DISTINCT t FROM t_grp ORDER BY t; +t +alpha +beta +gamma +SHOW STATUS LIKE 'Created_tmp_disk_tables'; +Variable_name Value +Created_tmp_disk_tables 0 +# +# GROUP BY text_col with PAD SPACE trailing-space data +# PAD SPACE collations collapse 'abc' and 'abc ' into one group +# +CREATE TABLE t_grp_pad (id INT AUTO_INCREMENT PRIMARY KEY, t TEXT); +INSERT INTO t_grp_pad (t) VALUES ('abc'), ('abc '), ('abc '), ('def'), ('def '); +FLUSH STATUS; +# Must return 2 groups, not 5 +SELECT t, COUNT(*) AS cnt FROM t_grp_pad GROUP BY t ORDER BY t; +t cnt +abc 3 +def 2 +SHOW STATUS LIKE 'Created_tmp_disk_tables'; +Variable_name Value +Created_tmp_disk_tables 0 +DROP TABLE t_grp, t_grp_pad; # End of MDEV-38975 blob operations tests diff --git a/mysql-test/suite/heap/heap_blob_ops.test b/mysql-test/suite/heap/heap_blob_ops.test index e1c81dadedd41..e596ea3e07122 100644 --- a/mysql-test/suite/heap/heap_blob_ops.test +++ b/mysql-test/suite/heap/heap_blob_ops.test @@ -90,4 +90,32 @@ INSERT INTO t_pad (t) VALUES ('abc'), ('abc '), ('abc '), ('def'), ('def SELECT COUNT(DISTINCT t) FROM t_pad; DROP TABLE t_pad; +--echo # +--echo # GROUP BY text_col must use HEAP (not Aria) for internal tmp tables +--echo # +CREATE TABLE t_grp (id INT AUTO_INCREMENT PRIMARY KEY, t TEXT); +INSERT INTO t_grp (t) VALUES ('alpha'), ('alpha'), ('beta'), ('gamma'), ('gamma'); +FLUSH STATUS; +SELECT t, COUNT(*) AS cnt FROM t_grp GROUP BY t ORDER BY t; +SHOW STATUS LIKE 'Created_tmp_disk_tables'; + +--echo # +--echo # DISTINCT text_col must use HEAP (not Aria) for internal tmp tables +--echo # +FLUSH STATUS; +SELECT DISTINCT t FROM t_grp ORDER BY t; +SHOW STATUS LIKE 'Created_tmp_disk_tables'; + +--echo # +--echo # GROUP BY text_col with PAD SPACE trailing-space data +--echo # PAD SPACE collations collapse 'abc' and 'abc ' into one group +--echo # +CREATE TABLE t_grp_pad (id INT AUTO_INCREMENT PRIMARY KEY, t TEXT); +INSERT INTO t_grp_pad (t) VALUES ('abc'), ('abc '), ('abc '), ('def'), ('def '); +FLUSH STATUS; +--echo # Must return 2 groups, not 5 +SELECT t, COUNT(*) AS cnt FROM t_grp_pad GROUP BY t ORDER BY t; +SHOW STATUS LIKE 'Created_tmp_disk_tables'; +DROP TABLE t_grp, t_grp_pad; + --echo # End of MDEV-38975 blob operations tests diff --git a/sql/create_tmp_table.h b/sql/create_tmp_table.h index ce86c9456e460..6a9f7b07d7e72 100644 --- a/sql/create_tmp_table.h +++ b/sql/create_tmp_table.h @@ -31,6 +31,7 @@ class Create_tmp_table: public Data_type_statistics // The following members are initialized in ctor uint m_alloced_field_count; bool m_using_unique_constraint; + bool m_heap_expected; uint m_temp_pool_slot; ORDER *m_group; bool m_distinct; @@ -59,6 +60,7 @@ class Create_tmp_table: public Data_type_statistics Create_tmp_table(ORDER *group, bool distinct, bool save_sum_fields, ulonglong select_options, ha_rows rows_limit); virtual ~Create_tmp_table() {} + handlerton *pick_engine(THD *thd, uint reclength); virtual bool choose_engine(THD *thd, TABLE *table, TMP_TABLE_PARAM *param); void add_field(TABLE *table, Field *field, uint fieldnr, bool force_not_null_cols); diff --git a/sql/field.h b/sql/field.h index c31b38d78e623..50d368885c4b0 100644 --- a/sql/field.h +++ b/sql/field.h @@ -522,6 +522,17 @@ inline bool is_temporal_type_with_date(enum_field_types type) } +/* + Check for blob field types, including GEOMETRY (which extends Field_blob). +*/ +static inline bool is_any_blob_field_type(enum_field_types type) +{ + return type == MYSQL_TYPE_BLOB || type == MYSQL_TYPE_TINY_BLOB || + type == MYSQL_TYPE_MEDIUM_BLOB || type == MYSQL_TYPE_LONG_BLOB || + type == MYSQL_TYPE_GEOMETRY; +} + + enum enum_vcol_info_type { VCOL_GENERATED_VIRTUAL, VCOL_GENERATED_STORED, diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 273f9b345cef1..1fab2851ffd1b 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -20561,6 +20561,7 @@ Create_tmp_table::Create_tmp_table(ORDER *group, bool distinct, ha_rows rows_limit) :m_alloced_field_count(0), m_using_unique_constraint(false), + m_heap_expected(false), m_temp_pool_slot(MY_BIT_NONE), m_group(group), m_distinct(distinct), @@ -20687,6 +20688,22 @@ TABLE *Create_tmp_table::start(THD *thd, */ fn_format(path, path, mysql_tmpdir, "", MY_REPLACE_EXT|MY_UNPACK_FILENAME); + /* + Early engine prediction: reclength is not known yet (fields haven't been + added), so pass 0 — this is safe because pick_engine()'s only reclength + check is "> HA_MAX_REC_LENGTH", which 0 never triggers. Returns + heap_hton unless session-level overrides (big_tables, + tmp_memory_table_size=0, etc.) force a disk-based engine. We use this + to avoid the too_big_for_varchar() / group_length >= MAX_BLOB_WIDTH + bail-outs that would force m_using_unique_constraint for HEAP tables + that natively support blob keys. + + Note: pick_engine() also reads m_using_unique_constraint, which is + false at this point. The guards below that set it to true are gated + by !m_heap_expected, so there is no circular dependency in practice. + */ + m_heap_expected= (pick_engine(thd, 0) == heap_hton); + if (m_group) { ORDER **prev= &m_group; @@ -20710,10 +20727,10 @@ TABLE *Create_tmp_table::start(THD *thd, can't index BIT fields. */ (*tmp->item)->marker= MARKER_NULL_KEY; // Store null in key - if ((*tmp->item)->too_big_for_varchar()) + if (!m_heap_expected && (*tmp->item)->too_big_for_varchar()) m_using_unique_constraint= true; } - if (param->group_length >= MAX_BLOB_WIDTH) + if (!m_heap_expected && param->group_length >= MAX_BLOB_WIDTH) m_using_unique_constraint= true; if (m_group) m_distinct= 0; // Can't use distinct @@ -21030,41 +21047,41 @@ bool Create_tmp_table::add_fields(THD *thd, } -bool Create_tmp_table::choose_engine(THD *thd, TABLE *table, - TMP_TABLE_PARAM *param) -{ - TABLE_SHARE *share= table->s; - DBUG_ENTER("Create_tmp_table::choose_engine"); - /* - If result table is small; use a heap, otherwise TMP_TABLE_HTON (Aria). - HEAP now supports blob columns via continuation chains, so blob_fields - alone no longer forces a disk-based engine. We still fall back to disk - when reclength exceeds HA_MAX_REC_LENGTH (HEAP's fixed-width rows would - waste too much memory for very wide records). - In the future we should try making storage engine selection more dynamic. - */ +/* + Predict which engine a temporary table will use, based on session + variables and the current m_using_unique_constraint / m_select_options + state. Called early (before fields are added) with reclength=0 to set + m_heap_expected, and again from choose_engine() with the real reclength. +*/ +handlerton *Create_tmp_table::pick_engine(THD *thd, uint reclength) +{ if (m_using_unique_constraint || - share->reclength > HA_MAX_REC_LENGTH || + reclength > HA_MAX_REC_LENGTH || (thd->variables.big_tables && !(m_select_options & SELECT_SMALL_RESULT)) || (m_select_options & TMP_TABLE_FORCE_MYISAM) || thd->variables.tmp_memory_table_size == 0) - { - share->db_plugin= ha_lock_engine(0, TMP_ENGINE_HTON); - table->file= get_new_handler(share, &table->mem_root, - share->db_type()); - if (m_group && - (param->group_parts > table->file->max_key_parts() || - param->group_length > table->file->max_key_length())) - m_using_unique_constraint= true; - } - else - { - share->db_plugin= ha_lock_engine(0, heap_hton); - table->file= get_new_handler(share, &table->mem_root, - share->db_type()); - } + return TMP_ENGINE_HTON; + return heap_hton; +} + + +bool Create_tmp_table::choose_engine(THD *thd, TABLE *table, + TMP_TABLE_PARAM *param) +{ + TABLE_SHARE *share= table->s; + DBUG_ENTER("Create_tmp_table::choose_engine"); + + handlerton *engine= pick_engine(thd, share->reclength); + share->db_plugin= ha_lock_engine(0, engine); + table->file= get_new_handler(share, &table->mem_root, share->db_type()); + + if (engine == TMP_ENGINE_HTON && m_group && + (param->group_parts > table->file->max_key_parts() || + param->group_length > table->file->max_key_length())) + m_using_unique_constraint= true; + DBUG_RETURN(!table->file); } @@ -21136,8 +21153,10 @@ bool Create_tmp_table::finalize(THD *thd, share->reclength= 1; // Dummy select share->stored_rec_length= share->reclength; /* - Use packed rows if there is blobs or a lot of space to gain. - HEAP requires fixed-width rows — it cannot use packed row format. + HEAP-specific: skip packed row format. + HEAP uses fixed-width base records (blob data is stored separately + in continuation chains), so use packed rows only for disk-based + engines when there are blobs or enough space to gain. */ if (share->db_type() != heap_hton && (share->blob_fields || @@ -21334,7 +21353,6 @@ bool Create_tmp_table::finalize(THD *thd, (ha_base_keytype) m_key_part_info->type == HA_KEYTYPE_VARTEXT1 || (ha_base_keytype) m_key_part_info->type == HA_KEYTYPE_VARTEXT2) ? 0 : FIELDFLAG_BINARY; - m_key_part_info->key_part_flag= field->key_part_flag(); if (!m_using_unique_constraint) { cur_group->buff=(char*) m_group_buff; @@ -21352,14 +21370,59 @@ bool Create_tmp_table::finalize(THD *thd, (*cur_group->item)->base_flags&= ~item_base_t::MAYBE_NULL; } + /* + For blob/geometry GROUP BY keys, field->key_length() returns + 0 (blobs) or packlength (geometry), both too small to hold + actual data. Use the item's max_length capped to + MAX_BLOB_WIDTH so new_key_field gets a usable size. + */ + uint32 key_field_length= m_key_part_info->length; + if ((field->flags & BLOB_FLAG) && + key_field_length <= ((Field_blob*)field)->pack_length_no_ptr()) + { + key_field_length= MY_MIN((*cur_group->item)->max_length, + (uint32)(MAX_BLOB_WIDTH - HA_KEY_BLOB_LENGTH)); + /* + Check that the group buffer has room for this blob key field. + calc_group_buffer() may have sized the buffer before the field + was promoted to blob in the tmp table. If the promoted blob + doesn't fit, fall back to m_using_unique_constraint. + */ + uint32 need= key_field_length + 2 /* length_bytes */ + + MY_TEST(maybe_null); + if (m_group_buff + need > + param->group_buff + param->group_length) + { + m_using_unique_constraint= true; + break; + } + } + /* + Set key_part_flag from the actual field type AFTER the overflow + check. This ensures that if we break out due to a promoted + blob overflowing the group buffer, key_part_flag retains the + original SQL-layer value (HA_VAR_LENGTH_PART for varchar), + not HA_BLOB_PART. This prevents rebuild_key_from_group_buff() from being + called on a key buffer that has varchar format. + */ + m_key_part_info->key_part_flag= field->key_part_flag(); + if (!(cur_group->field= field->new_key_field(thd->mem_root,table, m_group_buff + MY_TEST(maybe_null), - m_key_part_info->length, + key_field_length, field->null_ptr, field->null_bit))) goto err; /* purecov: inspected */ + /* + Set store_length for all GROUP BY key parts so + rebuild_key_from_group_buff() can advance through the key buffer. + store_length = key field pack_length + null flag byte. + */ + m_key_part_info->store_length= + cur_group->field->pack_length() + MY_TEST(maybe_null); + if (maybe_null) { /* @@ -21409,8 +21472,17 @@ bool Create_tmp_table::finalize(THD *thd, */ share->uniques= 1; } + /* + HEAP-specific: skip null-bits helper key part. + HEAP handles NULLs per-segment in its hash index, so it does not + need the extra null-key-part that MyISAM/Aria use for unique blob + constraints. + */ + bool need_null_key_part= share->uniques && + share->db_type() != heap_hton && + null_pack_length[distinct]; keyinfo->user_defined_key_parts= m_field_count[distinct] + - (share->uniques ? MY_TEST(null_pack_length[distinct]) : 0); + MY_TEST(need_null_key_part); keyinfo->ext_key_parts= keyinfo->user_defined_key_parts; keyinfo->usable_key_parts= keyinfo->user_defined_key_parts; table->distinct= 1; @@ -21453,17 +21525,24 @@ bool Create_tmp_table::finalize(THD *thd, blobs can distinguish NULL from 0. This extra field is not needed when we do not use UNIQUE indexes for blobs. */ - if (null_pack_length[distinct] && share->uniques) + if (need_null_key_part) { m_key_part_info->null_bit=0; m_key_part_info->offset= null_pack_base[distinct]; m_key_part_info->length= null_pack_length[distinct]; + /* + Use empty_clex_str (not null_clex_str) for the field name: + HEAP keeps share->keys visible to EXPLAIN, which iterates + key parts and calls strlen() on the name. A NULL name from + null_clex_str causes SIGSEGV in Explain_index_use::set(). + Empty string keeps the implicit field invisible in output. + */ m_key_part_info->field= new Field_string(table->record[0], (uint32) m_key_part_info->length, (uchar*) 0, (uint) 0, Field::NONE, - &null_clex_str, &my_charset_bin); + &empty_clex_str, &my_charset_bin); if (!m_key_part_info->field) goto err; m_key_part_info->field->init(table); @@ -24772,6 +24851,38 @@ end_update(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)), if (unlikely(copy_funcs(join_tab->tmp_table_param->items_to_copy, join->thd))) DBUG_RETURN(NESTED_LOOP_ERROR); /* purecov: inspected */ + /* + HEAP-specific: restore group key values after copy_funcs(). + For blob GROUP BY keys, copy_funcs() overwrites record[0]'s blob + pointers with new expression results, but the GROUP BY key was + built from the group buffer's Field_varstring (not record[0]). + Restore the group buffer values into record[0] so hp_make_key() + in ha_write_tmp_row() builds the correct key. + Non-blob fields are unaffected: copy_funcs() writes directly into + the record[0] field slots that hp_make_key() reads from. + */ + if (table->s->db_type() == heap_hton) + { + if (table->s->blob_fields) + { + String tmp_str; + for (group= table->group; group; group= group->next) + { + Field *tbl_field= (*group->item)->get_tmp_table_field(); + if (tbl_field && tbl_field != group->field) + { + if (group->field->is_null()) + tbl_field->set_null(); + else + { + String *val= group->field->val_str(&tmp_str); + tbl_field->set_notnull(); + tbl_field->store(val->ptr(), val->length(), val->charset()); + } + } + } + } + } if (unlikely((error= table->file->ha_write_tmp_row(table->record[0])))) { if (create_internal_tmp_table_from_heap(join->thd, table, @@ -27849,7 +27960,7 @@ void calc_group_buffer(TMP_TABLE_PARAM *param, ORDER *group) if (field) { enum_field_types type; - if ((type= field->type()) == MYSQL_TYPE_BLOB) + if (is_any_blob_field_type(type= field->type())) key_length+=MAX_BLOB_WIDTH; // Can't be used as a key else if (type == MYSQL_TYPE_VARCHAR || type == MYSQL_TYPE_VAR_STRING) key_length+= field->field_length + HA_KEY_BLOB_LENGTH; @@ -27888,7 +27999,7 @@ void calc_group_buffer(TMP_TABLE_PARAM *param, ORDER *group) case STRING_RESULT: { enum enum_field_types type= group_item->field_type(); - if (type == MYSQL_TYPE_BLOB) + if (is_any_blob_field_type(type)) key_length+= MAX_BLOB_WIDTH; // Can't be used as a key else { diff --git a/storage/heap/ha_heap.cc b/storage/heap/ha_heap.cc index e902de1b5d4fb..4b0c0828ef3aa 100644 --- a/storage/heap/ha_heap.cc +++ b/storage/heap/ha_heap.cc @@ -72,7 +72,7 @@ static handler *heap_create_handler(handlerton *hton, *****************************************************************************/ ha_heap::ha_heap(handlerton *hton, TABLE_SHARE *table_arg) - :handler(hton, table_arg), file(0), records_changed(0), key_stat_version(0), + :handler(hton, table_arg), file(0), records_changed(0), key_stat_version(0), internal_table(0) {} @@ -286,25 +286,144 @@ int ha_heap::delete_row(const uchar * buf) return res; } +/* + Rebuild GROUP BY key from group_buff into HEAP's hp_make_key format. + + The GROUP BY path (end_update) stores item values into the group + buffer's Field_varstring fields, NOT into record[0]'s Field_blob. + After copy_funcs(), record[0]'s blob fields may be stale. + + This method iterates all SQL-layer key parts (blob, varchar, and + fixed-length), using store_length for offset advancement. It copies + each part's data from the group buffer into record[0], then calls + hp_make_key() to build the HEAP-format key. + + Only called when needs_key_rebuild_from_group_buff is set (GROUP BY key 0 with + blob segments). DISTINCT/SJ-materialize keys use hp_make_key() + directly from record[0]. +*/ +void ha_heap::rebuild_key_from_group_buff(HP_KEYDEF *keydef, const uchar *&key, + uint active_key_index) +{ + KEY *sql_key= &table->key_info[active_key_index]; + const uchar *key_pos= key; + + for (uint i= 0; i < sql_key->user_defined_key_parts; i++) + { + KEY_PART_INFO *key_part= &sql_key->key_part[i]; + const uchar *data_pos= key_pos; + Field *field= key_part->field; + + bool is_null= false; + if (key_part->null_bit) + { + is_null= *data_pos != 0; + data_pos++; /* skip null flag byte */ + } + + if (is_null) + { + /* NULL: set the field's null bit in record[0] */ + if (field->null_ptr) + field->null_ptr[0] |= field->null_bit; + } + else + { + /* Non-NULL: clear null bit, then copy data into record[0] */ + if (key_part->null_bit && field->null_ptr) + field->null_ptr[0] &= ~field->null_bit; + + if (key_part->key_part_flag & HA_BLOB_PART) + { + /* + Blob GROUP BY key: stored as Field_varstring in group_buff + (2B length prefix + inline data). Copy into record[0]'s + blob field (packlength + data pointer) so hp_make_key() + can build the HEAP-format key (4B length + data pointer). + + The key field is always Field_varstring with 2B length + (key_field_length >= 256 from MAX_BLOB_WIDTH cap). + */ + uint16 data_len= uint2korr(data_pos); + const uchar *data_ptr= data_pos + 2; + + Field_blob *blob= (Field_blob*) field; + DBUG_ASSERT(blob->flags & BLOB_FLAG); + uint packlength= blob->pack_length_no_ptr(); + uchar *blob_field= table->record[0] + key_part->offset; + store_lowendian((ulonglong) data_len, blob_field, packlength); + memcpy(blob_field + packlength, &data_ptr, sizeof(void*)); + } + else if (key_part->key_part_flag & HA_VAR_LENGTH_PART) + { + /* + VARCHAR GROUP BY key: stored as Field_varstring in group_buff. + The key buffer always uses HA_KEY_BLOB_LENGTH (2) bytes for + the length prefix (Field_varstring::key_part_length_bytes()), + but record[0]'s Field_varstring may use 1 or 2 bytes + depending on field_length. Read 2B from key, write the + field's native length_bytes to record[0]. + */ + uint16 key_data_len= uint2korr(data_pos); + const uchar *key_data_ptr= data_pos + HA_KEY_BLOB_LENGTH; + + Field_varstring *vs= (Field_varstring*) field; + uint rec_length_bytes= vs->length_bytes; + uchar *rec_field= table->record[0] + key_part->offset; + set_if_smaller(key_data_len, vs->field_length); + if (rec_length_bytes == 1) + rec_field[0]= (uchar) key_data_len; + else + int2store(rec_field, key_data_len); + memcpy(rec_field + rec_length_bytes, key_data_ptr, key_data_len); + } + else + { + /* Fixed-length: copy from key directly into record[0] */ + memcpy(table->record[0] + key_part->offset, data_pos, + key_part->length); + } + } + + key_pos+= key_part->store_length; + } + hp_make_key(keydef, (uchar*) file->lastkey, table->record[0]); + key= (const uchar*) file->lastkey; +} + + +/* + Ensure the key is in HEAP's native format for blob indexes. + + GROUP BY (needs_key_rebuild_from_group_buff): parse the SQL-layer group_buff + into record[0] and rebuild via hp_make_key(), because record[0]'s + blob fields may be stale after copy_funcs(). + + DISTINCT / SJ-materialize: record[0] already has correct blob + values; build the HEAP key directly from record[0]. +*/ +void ha_heap::materialize_heap_key_if_needed(uint key_index, const uchar *&key) +{ + HP_KEYDEF *keydef= file->s->keydef + key_index; + if (keydef->has_blob_seg) + { + if (keydef->needs_key_rebuild_from_group_buff) + rebuild_key_from_group_buff(keydef, key, key_index); + else + { + hp_make_key(keydef, (uchar*) file->lastkey, table->record[0]); + key= (const uchar*) file->lastkey; + } + } +} + + int ha_heap::index_read_map(uchar *buf, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag) { DBUG_ASSERT(inited==INDEX); - /* - When the index has blob key segments, the SQL layer's key buffer (e.g. - group_buff from end_update) uses Field_varstring format (2B length + - inline data) because Field_blob::new_key_field() returns Field_varstring. - But HEAP's hp_hashnr/hp_key_cmp expect hp_make_key format (4B length + - data pointer). Rebuild the key from record[0] which has the correct - blob field layout. - */ - if (file->s->keydef[active_index].has_blob_seg) - { - hp_make_key(file->s->keydef + active_index, (uchar*) file->lastkey, - table->record[0]); - key= (const uchar*) file->lastkey; - } + materialize_heap_key_if_needed(active_index, key); int error = heap_rkey(file,buf,active_index, key, keypart_map, find_flag); return error; } @@ -313,12 +432,7 @@ int ha_heap::index_read_last_map(uchar *buf, const uchar *key, key_part_map keypart_map) { DBUG_ASSERT(inited==INDEX); - if (file->s->keydef[active_index].has_blob_seg) - { - hp_make_key(file->s->keydef + active_index, (uchar*) file->lastkey, - table->record[0]); - key= (const uchar*) file->lastkey; - } + materialize_heap_key_if_needed(active_index, key); int error= heap_rkey(file, buf, active_index, key, keypart_map, HA_READ_PREFIX_LAST); return error; @@ -328,12 +442,7 @@ int ha_heap::index_read_idx_map(uchar *buf, uint index, const uchar *key, key_part_map keypart_map, enum ha_rkey_function find_flag) { - if (file->s->keydef[index].has_blob_seg) - { - hp_make_key(file->s->keydef + index, (uchar*) file->lastkey, - table->record[0]); - key= (const uchar*) file->lastkey; - } + materialize_heap_key_if_needed(index, key); int error = heap_rkey(file, buf, index, key, keypart_map, find_flag); return error; } @@ -714,7 +823,51 @@ static int heap_prepare_hp_create_info(TABLE *table_arg, bool internal_table, } seg->start= (uint) key_part->offset; seg->length= (uint) key_part->length; - seg->flag= key_part->key_part_flag; + /* + Use field->key_part_flag() instead of key_part->key_part_flag + because some SQL layer paths (SJ weedout, expression cache) + leave key_part_flag uninitialized. Garbage HA_BLOB_PART bits + cause seg->length to be zeroed (the blob convention), corrupting + hash/compare for non-blob VARCHAR/VARBINARY keys. + */ + seg->flag= field->key_part_flag(); + /* + HEAP blob key segments must have seg->length=0. hp_hashnr() + advances key by seg->length (fixed part) THEN by 4+sizeof(ptr) + (blob encoding); non-zero length double-counts the advance + and hashes wrong data. The SQL layer's key_part.length may be + pack_length() (e.g. DISTINCT key path) — override it here. + + Also widen key_part->length to max_data_length() so the SQL + layer's new_key_field() creates a Field_varstring large enough + for the full blob data. Without this, DISTINCT/sj-materialize + lookup keys are truncated to pack_length() bytes. + */ + if (seg->flag & HA_BLOB_PART) + { + seg->length= 0; + uint32 blob_max= field->max_data_length(); + /* + Widen key_part->length for blob segments where the SQL layer + set it to pack_length() (e.g. DISTINCT key path). Skip when + key_part->length <= pack_length_no_ptr(), which covers: + - Regular blobs: key_length()=0 (GROUP BY path where + finalize() sizes the group buffer separately) + - Geometry blobs: key_length()=packlength=4 (GROUP BY path, + also sized separately by finalize()) + Without this guard, geometry GROUP BY triggers overflow in + store_length (len_delta ≈ 4 billion), causing + rebuild_key_from_group_buff() to jump to uninitialized memory. + */ + uint pack_no_ptr= ((Field_blob*)field)->pack_length_no_ptr(); + if (key_part->length > pack_no_ptr && key_part->length < blob_max) + { + uint len_delta= blob_max - key_part->length; + key_part->length= blob_max; + key_part->store_length+= len_delta; + pos->key_length+= len_delta; + } + } if (field->flags & (ENUM_FLAG | SET_FLAG)) seg->charset= &my_charset_bin; @@ -754,7 +907,25 @@ static int heap_prepare_hp_create_info(TABLE *table_arg, bool internal_table, seg->bit_pos= 0; } } + /* + Pre-compute has_blob_seg so callers (materialize_heap_key_if_needed, + unit tests) can use it before heap_create() runs. heap_create() + recomputes this from the normalized segments. + */ + keydef[key].has_blob_seg= hp_keydef_has_blob_seg(&keydef[key]); } + /* + Detect GROUP BY keys with blob segments that need rebuild_key_from_group_buff(). + When table->group is set, key 0 is the GROUP BY key. If it has + HA_BLOB_PART segments, finalize() set up the group buffer with + blob format and rebuild_key_from_group_buff() must parse it during lookups. + Without this flag, index_read_map() falls back to hp_make_key(record[0]) + which may use stale blob pointers after copy_funcs(). + */ + if (keys > 0) + keydef[0].needs_key_rebuild_from_group_buff= + (table_arg->group && hp_keydef_has_blob_seg(&keydef[0])); + if (table_arg->found_next_number_field) { keydef[share->next_number_index].flag|= HA_AUTO_KEY; @@ -954,13 +1125,27 @@ maria_declare_plugin(heap) maria_declare_plugin_end; #ifdef HEAP_UNIT_TESTS -/* - Public wrapper for unit tests — exposes the static - heap_prepare_hp_create_info() for direct testing. -*/ int test_heap_prepare_hp_create_info(TABLE *table_arg, bool internal_table, HP_CREATE_INFO *hp_create_info) { return heap_prepare_hp_create_info(table_arg, internal_table, hp_create_info); } + +/* + Test wrapper: rebuild_key_from_group_buff with a fake HP_INFO. + Sets up the handler's file pointer with the provided HP_INFO, + binds the handler to the given TABLE, then calls rebuild_key_from_group_buff. +*/ +void test_rebuild_key_from_group_buff(ha_heap *handler, TABLE *tbl, + HP_INFO *fake_file, HP_KEYDEF *keydef, + const uchar *key, uint key_index, + const uchar **rebuilt_key) +{ + handler->file= fake_file; + handler->set_table(tbl); + const uchar *k= key; + handler->rebuild_key_from_group_buff(keydef, k, key_index); + *rebuilt_key= k; +} + #endif diff --git a/storage/heap/ha_heap.h b/storage/heap/ha_heap.h index 0d0eec530cde6..c7a98b344432a 100644 --- a/storage/heap/ha_heap.h +++ b/storage/heap/ha_heap.h @@ -126,4 +126,12 @@ class ha_heap final : public handler int find_unique_row(uchar *record, uint unique_idx) override; private: void update_key_stats(); + void materialize_heap_key_if_needed(uint key_index, const uchar *&key); + void rebuild_key_from_group_buff(HP_KEYDEF *keydef, const uchar *&key, + uint active_key_index); +#ifdef HEAP_UNIT_TESTS + friend void test_rebuild_key_from_group_buff(ha_heap *, TABLE *, HP_INFO *, + HP_KEYDEF *, const uchar *, uint, + const uchar **); +#endif }; diff --git a/storage/heap/hp_create.c b/storage/heap/hp_create.c index 18a4034fb4691..fa15e441373e3 100644 --- a/storage/heap/hp_create.c +++ b/storage/heap/hp_create.c @@ -277,16 +277,7 @@ int heap_create(const char *name, HP_CREATE_INFO *create_info, keyinfo->seg= keyseg; memcpy(keyseg, keydef[i].seg, (size_t) (sizeof(keyseg[0]) * keydef[i].keysegs)); - keyinfo->has_blob_seg= FALSE; - { - uint j; - for (j= 0; j < keydef[i].keysegs; j++) - if (keyseg[j].flag & HA_BLOB_PART) - { - keyinfo->has_blob_seg= TRUE; - break; - } - } + keyinfo->has_blob_seg= hp_keydef_has_blob_seg(keyinfo); keyseg+= keydef[i].keysegs; if (keydef[i].algorithm == HA_KEY_ALG_BTREE) diff --git a/storage/heap/hp_hash.c b/storage/heap/hp_hash.c index 7be77afec308b..4bdfba659d46b 100644 --- a/storage/heap/hp_hash.c +++ b/storage/heap/hp_hash.c @@ -28,7 +28,11 @@ hp_charpos(CHARSET_INFO *cs, const uchar *b, const uchar *e, size_t num) } +#ifdef HEAP_UNIT_TESTS +ulong hp_hashnr(HP_KEYDEF *keydef, const uchar *key); +#else static ulong hp_hashnr(HP_KEYDEF *keydef, const uchar *key); +#endif /* @@ -48,6 +52,34 @@ static size_t hp_blob_key_length(uint packlength, const uchar *pos) } return 0; } + + +/* + Compute the key-buffer byte size of the variable-length portion of a + VARTEXT or BLOB segment in a pre-built hash key. + + Used by hp_hashnr() and hp_key_cmp() to advance past a VARCHAR or + BLOB segment (both null and non-null) in the key buffer. + + All VARCHAR key segments use a 2-byte length prefix — this is the + canonical key format shared between SQL-layer group_buff keys and + hp_make_key() output. hp_make_key() normalizes 1-byte record + prefixes to 2-byte key prefixes to maintain this invariant. + + Blob segments use a fixed 4-byte length + pointer layout. + + @param seg Key segment descriptor + @return Number of bytes to skip in the key buffer for the variable- + length portion (does NOT include the null flag byte, which + the caller handles separately) +*/ + +static inline size_t hp_vartext_key_pack_size(const HA_KEYSEG *seg) +{ + return (seg->flag & HA_BLOB_PART) ? 4 + sizeof(uchar *) : 2; +} + + /* Find out how many rows there is in the given range @@ -250,7 +282,11 @@ void hp_movelink(HASH_INFO *pos, HASH_INFO *next_link, HASH_INFO *newlink) /* Calc hashvalue for a key */ +#ifdef HEAP_UNIT_TESTS +ulong hp_hashnr(HP_KEYDEF *keydef, const uchar *key) +#else static ulong hp_hashnr(HP_KEYDEF *keydef, const uchar *key) +#endif { /*register*/ ulong nr=1, nr2=4; @@ -266,9 +302,8 @@ static ulong hp_hashnr(HP_KEYDEF *keydef, const uchar *key) if (*pos) /* Found null */ { nr^= (nr << 1) | 1; - /* Add key pack length to key for VARCHAR/BLOB segments */ if (seg->type == HA_KEYTYPE_VARTEXT1) - key+= (seg->flag & HA_BLOB_PART) ? 4 + sizeof(uchar*) : 2; + key+= hp_vartext_key_pack_size(seg); continue; } pos++; @@ -514,9 +549,9 @@ int hp_rec_key_cmp(HP_KEYDEF *keydef, const uchar *rec1, const uchar *rec2, { uchar *pos1= (uchar*) rec1 + seg->start; uchar *pos2= (uchar*) rec2 + seg->start; - size_t char_length1, char_length2; size_t pack_length= seg->bit_start; CHARSET_INFO *cs= seg->charset; + size_t char_length1, char_length2; if (pack_length == 1) { char_length1= (size_t) *(uchar*) pos1++; @@ -588,9 +623,8 @@ int hp_key_cmp(HP_KEYDEF *keydef, const uchar *rec, const uchar *key, return 1; if (found_null) { - /* Add key pack length to key for VARCHAR/BLOB segments */ if (seg->type == HA_KEYTYPE_VARTEXT1) - key+= (seg->flag & HA_BLOB_PART) ? 4 + sizeof(uchar*) : 2; + key+= hp_vartext_key_pack_size(seg); continue; } } @@ -738,7 +772,24 @@ void hp_make_key(HP_KEYDEF *keydef, uchar *key, const uchar *rec) set_if_smaller(char_length, seg->length); /* QQ: ok to remove? */ } if (seg->type == HA_KEYTYPE_VARTEXT1) - char_length+= seg->bit_start; /* Copy also length */ + { + /* + Normalize VARCHAR to always use a 2-byte length prefix in the key + buffer, regardless of whether the record uses 1-byte or 2-byte + packing. This keeps the key format consistent with what + hp_hashnr() and hp_key_cmp() expect (they always read 2 bytes). + */ + uint native_pack= seg->bit_start; + size_t data_len= (native_pack == 1 ? (size_t) *(uchar*) pos + : uint2korr(pos)); + set_if_smaller(data_len, char_length); + int2store(key, (uint16) data_len); + memcpy(key + 2, pos + native_pack, data_len); + if (data_len < char_length) + bzero(key + 2 + data_len, char_length - data_len); + key+= 2 + char_length; + continue; + } else if (seg->type == HA_KEYTYPE_BIT && seg->bit_length) { *key++= get_rec_bits(rec + seg->bit_pos, diff --git a/storage/heap/hp_test_hash-t.c b/storage/heap/hp_test_hash-t.c index d831fc53fd88b..8de1d8542884c 100644 --- a/storage/heap/hp_test_hash-t.c +++ b/storage/heap/hp_test_hash-t.c @@ -469,14 +469,14 @@ static void test_pad_space(void) The SQL layer builds lookup keys in varstring format (2B length prefix + inline data) via Field_blob::new_key_field() -> Field_varstring. The HEAP - handler's rebuild_blob_key() converts this to record[0]'s blob descriptor + handler's rebuild_key_from_group_buff() converts this to record[0]'s blob descriptor format, then hp_make_key() builds the hash key. This test simulates the full round-trip: 1. Build a record with blob data (as at INSERT time) 2. Compute hp_rec_hashnr() (stored in HASH_INFO at write time) 3. Build a varstring-format key (as the SQL layer would for lookup) - 4. Parse the varstring key into a record's blob field (rebuild_blob_key) + 4. Parse the varstring key into a record's blob field (rebuild_key_from_group_buff) 5. hp_make_key() from that record, then hp_rec_hashnr() on the record 6. Verify the hashes match */ @@ -510,7 +510,7 @@ static void test_distinct_key_format(void) /* Step 4: Parse varstring key into rec_lookup's blob field. - This is what rebuild_blob_key() does. + This is what rebuild_key_from_group_buff() does. */ memset(rec_lookup, 0, REC_LENGTH); { @@ -619,7 +619,7 @@ static void test_group_by_key_format(void) insert_hash= hp_rec_hashnr(&keydef, rec_insert); /* - Simulate rebuild_blob_key: parse varstring key, populate rec_lookup. + Simulate rebuild_key_from_group_buff: parse varstring key, populate rec_lookup. In GROUP BY, key_field_length = max_length (not 0, not pack_length). */ /* no null bit for this test */ @@ -706,11 +706,206 @@ static void test_multi_seg_distinct(void) } +/* + Test 11: hp_hashnr (key-based) must equal hp_rec_hashnr (record-based). + + This directly tests that building a key via hp_make_key() and then + hashing it with hp_hashnr() produces the same hash as hp_rec_hashnr() + on the original record. This catches divergence bugs where the two + functions process segments differently (e.g. VARCHAR pack_length + hardcoded to 2 in hp_hashnr but read from seg->bit_start in + hp_rec_hashnr). +*/ + +/* hp_hashnr is static by default; exposed via HEAP_UNIT_TESTS */ +extern ulong hp_hashnr(HP_KEYDEF *keydef, const uchar *key); + +/* + Record layout for mixed varchar + blob table: + byte 0: null bitmap (bit 2 = city null, bit 4 = libname null) + bytes 1: varchar length_bytes=1 (city: VARCHAR(21)) + bytes 2-22: varchar data (21 bytes) + bytes 23-24: blob packlength=2 (libname: TEXT) + bytes 25-32: blob data pointer (8 bytes on x86_64) + byte 33: flags byte (visible offset) + Total reclength: 34, recbuffer: ALIGN(MAX(34,8)+1, 8) = 40 +*/ +#define MIX_NULL_OFFSET 0 +#define MIX_VARCHAR_OFFSET 1 +#define MIX_VARCHAR_LEN 21 +#define MIX_VARCHAR_LENBYTES 1 +#define MIX_BLOB_OFFSET 23 +#define MIX_BLOB_PACKLEN 2 +#define MIX_REC_LENGTH 34 +#define MIX_KEY_BUF_SIZE 256 + + +static void setup_mixed_keydef(HP_KEYDEF *keydef, HA_KEYSEG *segs) +{ + /* Segment 0: blob (city TEXT) at offset 23 */ + memset(&segs[0], 0, sizeof(segs[0])); + segs[0].type= HA_KEYTYPE_VARTEXT1; + segs[0].flag= HA_BLOB_PART | HA_VAR_LENGTH_PART; + segs[0].start= MIX_BLOB_OFFSET; + segs[0].length= 0; /* blob key segments must have length=0 */ + segs[0].bit_start= MIX_BLOB_PACKLEN; + segs[0].charset= &my_charset_latin1; + segs[0].null_bit= 4; /* bit 2 in null bitmap */ + segs[0].null_pos= MIX_NULL_OFFSET; + + /* Segment 1: varchar (libname VARCHAR(21)) at offset 1 */ + memset(&segs[1], 0, sizeof(segs[1])); + segs[1].type= HA_KEYTYPE_VARTEXT1; + segs[1].flag= HA_VAR_LENGTH_PART; + segs[1].start= MIX_VARCHAR_OFFSET; + segs[1].length= MIX_VARCHAR_LEN; + segs[1].bit_start= MIX_VARCHAR_LENBYTES; /* 1-byte length prefix */ + segs[1].charset= &my_charset_latin1; + segs[1].null_bit= 8; /* bit 3 in null bitmap */ + segs[1].null_pos= MIX_NULL_OFFSET; + + setup_keydef(keydef, segs, 2); + keydef->has_blob_seg= 1; +} + + +static void build_mixed_record(uchar *rec, const uchar *blob_data, + uint16 blob_len, const uchar *varchar_data, + uint8 varchar_len, + my_bool blob_null, my_bool varchar_null) +{ + memset(rec, 0, MIX_REC_LENGTH); + + /* null bitmap */ + if (blob_null) + rec[MIX_NULL_OFFSET] |= 4; + if (varchar_null) + rec[MIX_NULL_OFFSET] |= 8; + + /* varchar: 1-byte length prefix + data */ + rec[MIX_VARCHAR_OFFSET]= varchar_len; + if (varchar_data && varchar_len > 0) + memcpy(rec + MIX_VARCHAR_OFFSET + MIX_VARCHAR_LENBYTES, + varchar_data, varchar_len); + + /* blob: packlength(2) + data pointer */ + int2store(rec + MIX_BLOB_OFFSET, blob_len); + memcpy(rec + MIX_BLOB_OFFSET + MIX_BLOB_PACKLEN, &blob_data, PTR_SIZE); +} + + +static void test_key_vs_rec_hash_consistency(void) +{ + HA_KEYSEG segs[2]; + HP_KEYDEF keydef; + uchar rec[MIX_REC_LENGTH]; + uchar key_buf[MIX_KEY_BUF_SIZE]; + ulong rec_hash, key_hash; + + const uchar *city= (const uchar *) "New York"; + uint16 city_len= 8; + const uchar *libname= (const uchar *) "New York Public Libra"; + uint8 libname_len= 21; + + setup_mixed_keydef(&keydef, segs); + + /* Build record and compute record-based hash (used at INSERT time) */ + build_mixed_record(rec, city, city_len, libname, libname_len, + FALSE, FALSE); + rec_hash= hp_rec_hashnr(&keydef, rec); + + /* Build key via hp_make_key and compute key-based hash (used at LOOKUP) */ + hp_make_key(&keydef, key_buf, rec); + key_hash= hp_hashnr(&keydef, key_buf); + + ok(rec_hash == key_hash, + "key_vs_rec_hash: rec_hash (%lu) == key_hash (%lu) " + "for mixed blob+varchar(1B) key", + rec_hash, key_hash); + + /* Second test: different data to ensure it's not a coincidence */ + { + const uchar *city2= (const uchar *) "San Fran"; + uint16 city2_len= 8; + const uchar *libname2= (const uchar *) "SF Public Library"; + uint8 libname2_len= 17; + + build_mixed_record(rec, city2, city2_len, libname2, libname2_len, + FALSE, FALSE); + rec_hash= hp_rec_hashnr(&keydef, rec); + hp_make_key(&keydef, key_buf, rec); + key_hash= hp_hashnr(&keydef, key_buf); + + ok(rec_hash == key_hash, + "key_vs_rec_hash: rec_hash (%lu) == key_hash (%lu) " + "for second mixed blob+varchar(1B) data", + rec_hash, key_hash); + } + + /* Third test: varchar with 2-byte length prefix (field_length >= 256) */ + { + HA_KEYSEG segs2b[2]; + HP_KEYDEF keydef2b; + uchar rec2b[MIX_REC_LENGTH + 256]; + uchar key2b[MIX_KEY_BUF_SIZE + 256]; + + /* + Copy the setup but change varchar to 2-byte length prefix. + This should always work because hp_hashnr already hardcodes 2. + */ + memcpy(segs2b, segs, sizeof(segs)); + segs2b[1].bit_start= 2; /* 2-byte length prefix */ + segs2b[1].length= 256; + setup_keydef(&keydef2b, segs2b, 2); + keydef2b.has_blob_seg= 1; + + memset(rec2b, 0, sizeof(rec2b)); + /* blob */ + rec2b[MIX_NULL_OFFSET]= 0; + int2store(rec2b + MIX_BLOB_OFFSET, city_len); + memcpy(rec2b + MIX_BLOB_OFFSET + MIX_BLOB_PACKLEN, &city, PTR_SIZE); + /* varchar with 2B length prefix */ + int2store(rec2b + MIX_VARCHAR_OFFSET, libname_len); + memcpy(rec2b + MIX_VARCHAR_OFFSET + 2, libname, libname_len); + + rec_hash= hp_rec_hashnr(&keydef2b, rec2b); + hp_make_key(&keydef2b, key2b, rec2b); + key_hash= hp_hashnr(&keydef2b, key2b); + + ok(rec_hash == key_hash, + "key_vs_rec_hash: rec_hash (%lu) == key_hash (%lu) " + "for mixed blob+varchar(2B) key", + rec_hash, key_hash); + } + + /* Fourth test: blob-only key (no varchar) — should always match */ + { + HA_KEYSEG seg_blob; + HP_KEYDEF kd_blob; + uchar rec_b[REC_LENGTH]; + uchar key_b[KEY_BUF_SIZE]; + + setup_blob_keyseg(&seg_blob, TRUE); + setup_keydef(&kd_blob, &seg_blob, 1); + + build_record(rec_b, 1, city, city_len, FALSE); + rec_hash= hp_rec_hashnr(&kd_blob, rec_b); + hp_make_key(&kd_blob, key_b, rec_b); + key_hash= hp_hashnr(&kd_blob, key_b); + + ok(rec_hash == key_hash, + "key_vs_rec_hash: rec_hash (%lu) == key_hash (%lu) " + "for blob-only key", + rec_hash, key_hash); + } +} + + int main(int argc __attribute__((unused)), char **argv __attribute__((unused))) { MY_INIT("hp_test_hash"); - plan(43); + plan(47); diag("Test 1: Hash consistency between record and key formats"); test_hash_consistency(); @@ -742,6 +937,9 @@ int main(int argc __attribute__((unused)), diag("Test 10: Multi-segment DISTINCT key (sj-materialize)"); test_multi_seg_distinct(); + diag("Test 11: hp_hashnr vs hp_rec_hashnr consistency"); + test_key_vs_rec_hash_consistency(); + my_end(0); return exit_status(); } diff --git a/storage/heap/hp_test_key_setup-t.cc b/storage/heap/hp_test_key_setup-t.cc index 82cd025bca756..c933a76c05491 100644 --- a/storage/heap/hp_test_key_setup-t.cc +++ b/storage/heap/hp_test_key_setup-t.cc @@ -23,6 +23,32 @@ #include "ha_heap.h" #include "heapdef.h" +/* + RAII guard for the fake THD used by unit tests. + Allocates a zero-initialized THD (without calling the constructor), + sets max_heap_table_size, installs it as current_thd, and tears it + down on destruction. This is technically UB (no C++ construction), + but works because heap_prepare_hp_create_info only reads + thd->variables.max_heap_table_size from the zeroed memory. +*/ +class Fake_thd_guard +{ + char *m_buf; +public: + Fake_thd_guard(ulonglong max_heap_size= 1024*1024) + { + m_buf= (char*) calloc(1, sizeof(THD)); + THD *thd= (THD*) m_buf; + thd->variables.max_heap_table_size= max_heap_size; + set_current_thd(thd); + } + ~Fake_thd_guard() + { + set_current_thd(NULL); + free(m_buf); + } +}; + static const LEX_CSTRING test_field_name= {STRING_WITH_LEN("")}; /* Wrapper declared in ha_heap.cc */ @@ -148,10 +174,7 @@ static void test_distinct_key_truncation() "distinct_key_truncation setup: key_part.length = pack_length() = %u", (uint) local_kpi.length); - char *fake_thd= (char*) calloc(1, sizeof(THD)); - THD *real_thd= (THD*) fake_thd; - real_thd->variables.max_heap_table_size= 1024*1024; - set_current_thd(real_thd); + Fake_thd_guard thd_guard; HP_CREATE_INFO hp_ci; memset(&hp_ci, 0, sizeof(hp_ci)); @@ -161,9 +184,6 @@ static void test_distinct_key_truncation() int err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); - set_current_thd(NULL); - free(fake_thd); - ok(err == 0, "distinct_key_truncation: heap_prepare succeeded (err=%d)", err); @@ -175,7 +195,6 @@ static void test_distinct_key_truncation() widening is not needed. These assertions are deferred to Phase 1 where they are exercised. */ -#if 0 /* Phase 1: distinct_key_truncation assertions */ uint32 expected_length= bf.max_data_length(); ok(local_kpi.length == expected_length, "distinct_key_truncation: key_part.length (%u) == max_data_length() (%u)", @@ -191,7 +210,6 @@ static void test_distinct_key_truncation() ok(local_sql_key.key_length == expected_store_length, "distinct_key_truncation: key_length (%u) == expected (%u)", (uint) local_sql_key.key_length, (uint) expected_store_length); -#endif my_free(hp_ci.keydef); my_free(hp_ci.blob_descs); @@ -319,10 +337,7 @@ class Hp_test_varchar_key_flag "garbage_flag setup: key_part.length = %u (field_length)", (uint) local_kpi.length); - char *fake_thd= (char*) calloc(1, sizeof(THD)); - THD *real_thd= (THD*) fake_thd; - real_thd->variables.max_heap_table_size= 1024*1024; - set_current_thd(real_thd); + Fake_thd_guard thd_guard; HP_CREATE_INFO hp_ci; memset(&hp_ci, 0, sizeof(hp_ci)); @@ -332,9 +347,6 @@ class Hp_test_varchar_key_flag int err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); - set_current_thd(NULL); - free(fake_thd); - ok(err == 0, "garbage_flag: heap_prepare succeeded (err=%d)", err); @@ -350,11 +362,9 @@ class Hp_test_varchar_key_flag The heap_prepare_hp_create_info fix (field->key_part_flag() instead of key_part->key_part_flag) is deferred to Phase 1. */ -#if 0 /* Phase 1: garbage_key_part_flag assertion */ ok(!(seg->flag & HA_BLOB_PART), "garbage_flag: seg->flag (0x%x) does NOT have HA_BLOB_PART", (uint) seg->flag); -#endif HP_KEYDEF *kd= &hp_ci.keydef[0]; @@ -402,13 +412,1002 @@ class Hp_test_varchar_key_flag }; +/* + rebuild_key_from_group_buff: mixed blob + varchar GROUP BY key. + + Simulates the GROUP BY key format for: + GROUP BY city (TEXT), libname (VARCHAR(21)) + The GROUP BY buffer uses Field_varstring format (2B length + data) + for all parts, with store_length advancing by fixed amounts. + rebuild_key_from_group_buff must correctly parse the key buffer and populate + record[0]'s blob field (packlength + pointer) and varchar field + (length_bytes + data). + + Test wrapper in ha_heap.cc: +*/ +extern void test_rebuild_key_from_group_buff(ha_heap *handler, TABLE *tbl, + HP_INFO *fake_file, HP_KEYDEF *keydef, + const uchar *key, uint key_index, + const uchar **rebuilt_key); + +/* + Record layout for mixed blob+varchar GROUP BY test: + byte 0: null bitmap + bytes 1-2: blob packlength=2 (length, little-endian) + bytes 3-10: blob data pointer (8 bytes) + byte 11: varchar length_bytes=1 (field_length=21 < 256) + bytes 12-32: varchar data (21 bytes max) + reclength = 33 +*/ +#define MIX_REC_NULL_OFFSET 0 +#define MIX_BLOB_OFFSET 1 +#define MIX_BLOB_PACKLEN 2 +#define MIX_VARCHAR_OFFSET 11 +#define MIX_VARCHAR_FIELD_LEN 21 +#define MIX_REC_LENGTH 33 + +static void test_rebuild_key_from_group_buff_mixed() +{ + uchar rec[MIX_REC_LENGTH]; + memset(rec, 0xA5, sizeof(rec)); /* poison with known pattern */ + + TABLE_SHARE share; + memset(static_cast(&share), 0, sizeof(share)); + share.fields= 2; + share.blob_fields= 0; + share.keys= 1; + share.reclength= MIX_REC_LENGTH; + share.rec_buff_length= MIX_REC_LENGTH; + share.db_record_offset= 1; + + /* Create blob field: city TEXT (packlength=2) */ + alignas(Field_blob) char bf_storage[sizeof(Field_blob)]; + Field_blob *bfp= make_test_field_blob(bf_storage, + rec + MIX_BLOB_OFFSET, + rec + MIX_REC_NULL_OFFSET, + 2, &share, + MIX_BLOB_PACKLEN, + &my_charset_latin1); + bfp->field_index= 0; + + /* Create varchar field: libname VARCHAR(21) */ + static const LEX_CSTRING vs_name= {STRING_WITH_LEN("")}; + alignas(Field_varstring) char vs_storage[sizeof(Field_varstring)]; + Field_varstring *vfp= ::new (vs_storage) Field_varstring( + rec + MIX_VARCHAR_OFFSET, + MIX_VARCHAR_FIELD_LEN, + 1, /* length_bytes: 1 for field_length < 256 */ + rec + MIX_REC_NULL_OFFSET, + 4, /* null_bit */ + Field::NONE, + &vs_name, + &share, + DTCollation(&my_charset_latin1)); + vfp->field_index= 1; + + Field *field_array[3]= { bfp, vfp, NULL }; + + /* + GROUP BY key: two parts. + Part 0: blob (city) — null_bit=2, key_part_flag=HA_BLOB_PART, length=0 + Part 1: varchar (libname) — null_bit=4, key_part_flag=HA_VAR_LENGTH_PART, length=21 + */ + KEY_PART_INFO kpi[2]; + memset(kpi, 0, sizeof(kpi)); + + /* Blob key part */ + kpi[0].field= bfp; + kpi[0].offset= MIX_BLOB_OFFSET; + kpi[0].length= 0; /* Field_blob::key_length() */ + kpi[0].key_part_flag= HA_BLOB_PART; + kpi[0].null_bit= 2; + kpi[0].null_offset= 0; + kpi[0].type= bfp->key_type(); + /* + GROUP BY store_length: computed from group buffer Field_varstring. + For blob with key_field_length=16382: + Field_varstring(16382).pack_length() = 16384 + + 1 (maybe_null) = 16385 + For this test use a smaller key_field_length = 100 for simplicity. + */ + uint blob_key_field_len= 100; + kpi[0].store_length= blob_key_field_len + 2 /* len_bytes */ + 1 /* null */; + + /* Varchar key part */ + kpi[1].field= vfp; + kpi[1].offset= MIX_VARCHAR_OFFSET; + kpi[1].length= MIX_VARCHAR_FIELD_LEN; + kpi[1].key_part_flag= HA_VAR_LENGTH_PART; + kpi[1].null_bit= 4; + kpi[1].null_offset= 0; + kpi[1].type= vfp->key_type(); + /* + VARCHAR store_length in GROUP BY buffer: + Field_varstring(21).pack_length() = 21 + 2 (key_part_length_bytes always 2) + + 1 (maybe_null) = 24 + */ + kpi[1].store_length= MIX_VARCHAR_FIELD_LEN + 2 /* len_bytes */ + 1 /* null */; + + KEY sql_key; + memset(&sql_key, 0, sizeof(sql_key)); + sql_key.user_defined_key_parts= 2; + sql_key.usable_key_parts= 2; + sql_key.key_part= kpi; + sql_key.algorithm= HA_KEY_ALG_HASH; + + TABLE test_table; + memset(static_cast(&test_table), 0, sizeof(test_table)); + test_table.record[0]= rec; + test_table.s= &share; + test_table.field= field_array; + test_table.key_info= &sql_key; + share.key_info= &sql_key; + bfp->table= &test_table; + vfp->table= &test_table; + + uint blob_offsets[1]= { 0 }; + share.blob_field= blob_offsets; + + /* + Build a GROUP BY key buffer in the same format as end_update(). + Layout per key part: [null_flag_byte] [2B_length] [data...] + padded to store_length. + + Part 0 (blob "New York"): + byte 0: null=0 + bytes 1-2: length=8 (LE) + bytes 3-10: "New York" + bytes 11-102: padding (zero) + Part 1 (varchar "NYC Lib"): + byte 103: null=0 + bytes 104-105: length=7 (LE) + bytes 106-112: "NYC Lib" + bytes 113-126: padding (zero) + */ + uint key_buf_len= kpi[0].store_length + kpi[1].store_length; + uchar *key_buf= (uchar*) calloc(1, key_buf_len); + + /* Part 0: blob "New York" */ + uchar *p= key_buf; + p[0]= 0; /* not null */ + int2store(p + 1, 8); /* length = 8 */ + memcpy(p + 3, "New York", 8); + + /* Part 1: varchar "NYC Lib" */ + p= key_buf + kpi[0].store_length; + p[0]= 0; /* not null */ + int2store(p + 1, 7); /* length = 7 */ + memcpy(p + 3, "NYC Lib", 7); + + /* + Now set up HEAP structures for hp_make_key. + Use heap_prepare_hp_create_info to create them. + */ + Fake_thd_guard thd_guard; + + HP_CREATE_INFO hp_ci; + memset(&hp_ci, 0, sizeof(hp_ci)); + hp_ci.max_table_size= 1024*1024; + hp_ci.keys= 1; + hp_ci.reclength= MIX_REC_LENGTH; + + int err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); + ok(err == 0, "rebuild_key_from_group_buff_mixed: heap_prepare succeeded (err=%d)", err); + + /* Verify blob segment */ + HP_KEYDEF *kd= &hp_ci.keydef[0]; + ok(kd->keysegs == 2, + "rebuild_key_from_group_buff_mixed: keysegs=%u (expected 2)", kd->keysegs); + ok(kd->has_blob_seg != 0, + "rebuild_key_from_group_buff_mixed: has_blob_seg is set"); + + /* + Create a minimal ha_heap + fake HP_INFO for rebuild_key_from_group_buff. + rebuild_key_from_group_buff reads from table->key_info (SQL-layer) and + writes to table->record[0], then calls hp_make_key into + file->lastkey. + */ + uchar lastkey_buf[512]; + memset(lastkey_buf, 0, sizeof(lastkey_buf)); + HP_INFO fake_file; + memset(&fake_file, 0, sizeof(fake_file)); + fake_file.lastkey= (uchar*) lastkey_buf; + + ha_heap handler(heap_hton, &share); + + /* Reset record[0] to poison to detect unwritten bytes */ + memset(rec, 0xA5, sizeof(rec)); + + const uchar *rebuilt= NULL; + test_rebuild_key_from_group_buff(&handler, &test_table, &fake_file, + kd, key_buf, 0, &rebuilt); + + /* Verify record[0] was populated correctly */ + /* Blob field: packlength=2 bytes of length + 8 bytes of pointer */ + uint16 blob_len_in_rec; + memcpy(&blob_len_in_rec, rec + MIX_BLOB_OFFSET, 2); + ok(blob_len_in_rec == 8, + "rebuild_key_from_group_buff_mixed: blob length in record[0] = %u (expected 8)", + (uint) blob_len_in_rec); + + const uchar *blob_ptr_in_rec; + memcpy(&blob_ptr_in_rec, rec + MIX_BLOB_OFFSET + 2, sizeof(void*)); + ok(memcmp(blob_ptr_in_rec, "New York", 8) == 0, + "rebuild_key_from_group_buff_mixed: blob data = 'New York'"); + + /* Varchar field: length_bytes=1 byte of length + data */ + uint8 varchar_len_in_rec= rec[MIX_VARCHAR_OFFSET]; + ok(varchar_len_in_rec == 7, + "rebuild_key_from_group_buff_mixed: varchar length in record[0] = %u (expected 7)", + (uint) varchar_len_in_rec); + ok(memcmp(rec + MIX_VARCHAR_OFFSET + 1, "NYC Lib", 7) == 0, + "rebuild_key_from_group_buff_mixed: varchar data = 'NYC Lib'"); + + free(key_buf); + my_free(hp_ci.keydef); + my_free(hp_ci.blob_descs); + vfp->~Field_varstring(); + bfp->~Field_blob(); +} + + +/* + Test: heap_prepare_hp_create_info for various non-blob key types. + + Verifies that has_blob_seg is false and seg->flag does not contain + HA_BLOB_PART for: + - VARCHAR-only keys (Field_varstring, length_bytes=1) + - Fixed-length keys (Field_long = INT) + - ENUM keys (Field_enum) + - Mixed VARCHAR + INT keys + + Also verifies seg->length, seg->type, seg->bit_start are correct. +*/ + +/* Helper: set up a single-field TABLE + KEY for heap_prepare testing */ +struct Hp_test_single_key +{ + TABLE_SHARE share; + TABLE test_table; + KEY_PART_INFO kpi; + KEY sql_key; + Field *field_array[2]; + uchar rec_buf[64]; + uint blob_offsets[1]; + + void init(Field *field, uint offset, uint rec_length) + { + memset(rec_buf, 0, sizeof(rec_buf)); + memset(static_cast(&share), 0, sizeof(share)); + share.fields= 1; + share.keys= 1; + share.reclength= rec_length; + share.rec_buff_length= rec_length; + share.db_record_offset= 1; + share.blob_fields= 0; + blob_offsets[0]= 0; + share.blob_field= blob_offsets; + + field_array[0]= field; + field_array[1]= NULL; + + memset(&kpi, 0, sizeof(kpi)); + kpi.field= field; + kpi.offset= offset; + kpi.length= (uint16) field->key_length(); + kpi.key_part_flag= field->key_part_flag(); + kpi.type= field->key_type(); + kpi.store_length= kpi.length; + if (field->real_maybe_null()) + kpi.store_length+= HA_KEY_NULL_LENGTH; + if (field->key_part_flag() & HA_VAR_LENGTH_PART) + kpi.store_length+= field->key_part_length_bytes(); + + memset(&sql_key, 0, sizeof(sql_key)); + sql_key.user_defined_key_parts= 1; + sql_key.usable_key_parts= 1; + sql_key.key_part= &kpi; + sql_key.algorithm= HA_KEY_ALG_HASH; + sql_key.key_length= kpi.store_length; + + memset(static_cast(&test_table), 0, sizeof(test_table)); + test_table.record[0]= rec_buf; + test_table.s= &share; + test_table.field= field_array; + test_table.key_info= &sql_key; + share.key_info= &sql_key; + + field->table= &test_table; + } + + int run_hp_create(HP_CREATE_INFO *hp_ci) + { + Fake_thd_guard thd_guard; + + memset(hp_ci, 0, sizeof(*hp_ci)); + hp_ci->max_table_size= 1024*1024; + hp_ci->keys= 1; + hp_ci->reclength= share.reclength; + + return test_heap_prepare_hp_create_info(&test_table, TRUE, hp_ci); + } +}; + + +static void test_varchar_only_key() +{ + /* VARCHAR(28) NOT NULL, length_bytes=1 */ + static const LEX_CSTRING fname= {STRING_WITH_LEN("v1")}; + TABLE_SHARE dummy_share; + memset(static_cast(&dummy_share), 0, sizeof(dummy_share)); + alignas(Field_varstring) char vs_storage[sizeof(Field_varstring)]; + Field_varstring *vs= ::new (vs_storage) Field_varstring( + (uchar*) NULL + 1, 28, 1, (uchar*) 0, 0, + Field::NONE, &fname, &dummy_share, + DTCollation(&my_charset_latin1)); + vs->field_index= 0; + + Hp_test_single_key ctx; + ctx.init(vs, 1, 30); + + HP_CREATE_INFO hp_ci; + int err= ctx.run_hp_create(&hp_ci); + ok(err == 0, "varchar_only: heap_prepare succeeded (err=%d)", err); + + HA_KEYSEG *seg= hp_ci.keydef[0].seg; + ok(seg->length == 28, + "varchar_only: seg->length = %u (expected 28)", (uint) seg->length); + ok(seg->type == HA_KEYTYPE_VARTEXT1, + "varchar_only: seg->type = %d (expected VARTEXT1=%d)", + (int) seg->type, (int) HA_KEYTYPE_VARTEXT1); + /* + bit_start for varchar is set by hp_create(), not + heap_prepare_hp_create_info(). After prepare it's 0. + */ + ok(seg->bit_start == 0, + "varchar_only: seg->bit_start = %u (expected 0 — set later by hp_create)", + (uint) seg->bit_start); + ok(!(seg->flag & HA_BLOB_PART), + "varchar_only: seg->flag (0x%x) has NO HA_BLOB_PART", + (uint) seg->flag); + ok((seg->flag & HA_VAR_LENGTH_PART), + "varchar_only: seg->flag (0x%x) has HA_VAR_LENGTH_PART", + (uint) seg->flag); + ok(!hp_ci.keydef[0].has_blob_seg, + "varchar_only: has_blob_seg is FALSE (no blob segments)"); + + my_free(hp_ci.keydef); + vs->~Field_varstring(); +} + + +static void test_int_only_key() +{ + /* INT NOT NULL */ + static const LEX_CSTRING fname= {STRING_WITH_LEN("i1")}; + TABLE_SHARE dummy_share; + memset(static_cast(&dummy_share), 0, sizeof(dummy_share)); + alignas(Field_long) char fl_storage[sizeof(Field_long)]; + Field_long *fl= ::new (fl_storage) Field_long( + (uchar*) NULL + 1, 11, (uchar*) 0, 0, + Field::NONE, &fname, false, false); + fl->field_index= 0; + + Hp_test_single_key ctx; + ctx.init(fl, 1, 5); + + HP_CREATE_INFO hp_ci; + int err= ctx.run_hp_create(&hp_ci); + ok(err == 0, "int_only: heap_prepare succeeded (err=%d)", err); + + HA_KEYSEG *seg= hp_ci.keydef[0].seg; + ok(seg->length == 4, + "int_only: seg->length = %u (expected 4)", (uint) seg->length); + ok(seg->type == HA_KEYTYPE_BINARY, + "int_only: seg->type = %d (expected BINARY=%d)", + (int) seg->type, (int) HA_KEYTYPE_BINARY); + ok(!(seg->flag & HA_BLOB_PART), + "int_only: seg->flag (0x%x) has NO HA_BLOB_PART", + (uint) seg->flag); + ok(!(seg->flag & HA_VAR_LENGTH_PART), + "int_only: seg->flag (0x%x) has NO HA_VAR_LENGTH_PART", + (uint) seg->flag); + ok(!hp_ci.keydef[0].has_blob_seg, + "int_only: has_blob_seg is FALSE"); + + my_free(hp_ci.keydef); + fl->~Field_long(); +} + + +static void test_enum_key() +{ + /* ENUM('a','','b') NULLABLE */ + static const LEX_CSTRING fname= {STRING_WITH_LEN("e1")}; + static const char *enum_names[]= { "a", "", "b", NULL }; + static unsigned int enum_lengths[]= { 1, 0, 1 }; + TYPELIB enum_typelib= { 3, "", enum_names, enum_lengths }; + TABLE_SHARE dummy_share; + memset(static_cast(&dummy_share), 0, sizeof(dummy_share)); + alignas(Field_enum) char fe_storage[sizeof(Field_enum)]; + /* + Field_enum(ptr, len, null_ptr, null_bit, unireg, name, + packlength, typelib, collation) + */ + Field_enum *fe= ::new (fe_storage) Field_enum( + (uchar*) NULL + 1, 1, (uchar*) NULL, 2, + Field::NONE, &fname, 1, &enum_typelib, + &my_charset_latin1); + fe->field_index= 0; + + Hp_test_single_key ctx; + ctx.init(fe, 1, 3); + + HP_CREATE_INFO hp_ci; + int err= ctx.run_hp_create(&hp_ci); + ok(err == 0, "enum: heap_prepare succeeded (err=%d)", err); + + HA_KEYSEG *seg= hp_ci.keydef[0].seg; + ok(seg->length == 1, + "enum: seg->length = %u (expected 1 = packlength)", (uint) seg->length); + ok(seg->type == HA_KEYTYPE_BINARY, + "enum: seg->type = %d (expected BINARY=%d)", + (int) seg->type, (int) HA_KEYTYPE_BINARY); + ok(!(seg->flag & HA_BLOB_PART), + "enum: seg->flag (0x%x) has NO HA_BLOB_PART", (uint) seg->flag); + ok(!hp_ci.keydef[0].has_blob_seg, + "enum: has_blob_seg is FALSE"); + + my_free(hp_ci.keydef); + fe->~Field_enum(); +} + + +static void test_mixed_int_varchar_key() +{ + /* + Two-part key: INT(4 bytes) + VARCHAR(20), simulating the + main.having GROUP BY (bigint, varchar(20)). + */ + static const LEX_CSTRING fname_i= {STRING_WITH_LEN("id")}; + static const LEX_CSTRING fname_v= {STRING_WITH_LEN("description")}; + TABLE_SHARE dummy_share; + memset(static_cast(&dummy_share), 0, sizeof(dummy_share)); + dummy_share.fields= 2; + dummy_share.keys= 1; + dummy_share.reclength= 26; /* 1 null + 4 int + 1 len + 20 varchar */ + dummy_share.rec_buff_length= 26; + dummy_share.db_record_offset= 1; + dummy_share.blob_fields= 0; + uint blob_offsets[1]= { 0 }; + dummy_share.blob_field= blob_offsets; + + alignas(Field_long) char fl_storage[sizeof(Field_long)]; + Field_long *fl= ::new (fl_storage) Field_long( + (uchar*) NULL + 1, 11, (uchar*) 0, 0, + Field::NONE, &fname_i, false, false); + fl->field_index= 0; + + alignas(Field_varstring) char vs_storage[sizeof(Field_varstring)]; + Field_varstring *vs= ::new (vs_storage) Field_varstring( + (uchar*) NULL + 5, 20, 1, (uchar*) 0, 0, + Field::NONE, &fname_v, &dummy_share, + DTCollation(&my_charset_latin1)); + vs->field_index= 1; + + Field *field_array[3]= { fl, vs, NULL }; + + KEY_PART_INFO kpis[2]; + memset(kpis, 0, sizeof(kpis)); + kpis[0].field= fl; + kpis[0].offset= 1; + kpis[0].length= 4; + kpis[0].key_part_flag= fl->key_part_flag(); + kpis[0].type= fl->key_type(); + kpis[0].store_length= 4; + + kpis[1].field= vs; + kpis[1].offset= 5; + kpis[1].length= 20; + kpis[1].key_part_flag= vs->key_part_flag(); + kpis[1].type= vs->key_type(); + kpis[1].store_length= 20 + 2; /* + key_part_length_bytes */ + + KEY sql_key; + memset(&sql_key, 0, sizeof(sql_key)); + sql_key.user_defined_key_parts= 2; + sql_key.usable_key_parts= 2; + sql_key.key_part= kpis; + sql_key.algorithm= HA_KEY_ALG_HASH; + sql_key.key_length= 4 + 20 + 2; + + TABLE test_table; + uchar rec_buf[26]; + memset(rec_buf, 0, sizeof(rec_buf)); + memset(static_cast(&test_table), 0, sizeof(test_table)); + test_table.record[0]= rec_buf; + test_table.s= &dummy_share; + test_table.field= field_array; + test_table.key_info= &sql_key; + dummy_share.key_info= &sql_key; + + fl->table= &test_table; + vs->table= &test_table; + + Fake_thd_guard thd_guard; + + HP_CREATE_INFO hp_ci; + memset(&hp_ci, 0, sizeof(hp_ci)); + hp_ci.max_table_size= 1024*1024; + hp_ci.keys= 1; + hp_ci.reclength= 26; + + int err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); + + ok(err == 0, "int_varchar: heap_prepare succeeded (err=%d)", err); + + HP_KEYDEF *kd= &hp_ci.keydef[0]; + ok(kd->keysegs == 2, + "int_varchar: keysegs = %u (expected 2)", kd->keysegs); + { + my_bool any_blob= FALSE; + uint j; + for (j= 0; j < kd->keysegs; j++) + if (kd->seg[j].flag & HA_BLOB_PART) + any_blob= TRUE; + ok(!any_blob, + "int_varchar: no keydef seg has HA_BLOB_PART"); + } + + HA_KEYSEG *seg0= &kd->seg[0]; + ok(seg0->length == 4, + "int_varchar: seg[0].length = %u (expected 4)", (uint) seg0->length); + ok(!(seg0->flag & HA_BLOB_PART), + "int_varchar: seg[0] has NO HA_BLOB_PART"); + + HA_KEYSEG *seg1= &kd->seg[1]; + ok(seg1->length == 20, + "int_varchar: seg[1].length = %u (expected 20)", (uint) seg1->length); + ok(!(seg1->flag & HA_BLOB_PART), + "int_varchar: seg[1] has NO HA_BLOB_PART"); + ok((seg1->flag & HA_VAR_LENGTH_PART), + "int_varchar: seg[1] has HA_VAR_LENGTH_PART"); + + my_free(hp_ci.keydef); + vs->~Field_varstring(); + fl->~Field_long(); +} + + +/* + Test: varchar→blob promotion in tmp table (main.having scenario). + + Simulates the case where: + 1. The SQL layer sets up KEY_PART_INFO with length=20 (varchar-sized) + 2. create_tmp_field promotes the field to Field_blob in the tmp table + 3. heap_prepare_hp_create_info is called with this mismatch + + The key_part has varchar-like setup (non-zero length, HA_VAR_LENGTH_PART + flag), but the actual field is a blob. heap_prepare_hp_create_info + must detect this via field->key_part_flag() and set seg->flag to + HA_BLOB_PART, seg->length to 0, and widen key_part->length. +*/ +static void test_varchar_promoted_to_blob() +{ + static const LEX_CSTRING fname_i= {STRING_WITH_LEN("id")}; + + /* + Record layout (mimics the tmp table after promotion): + byte 0: null bitmap + bytes 1-8: bigint (8 bytes) + bytes 9-10: blob packlength=2 + bytes 11-18: blob data pointer + reclength = 19 + */ + TABLE_SHARE share; + memset(static_cast(&share), 0, sizeof(share)); + share.fields= 2; + share.keys= 1; + share.reclength= 19; + share.rec_buff_length= 19; + share.db_record_offset= 1; + share.blob_fields= 0; /* Field_blob ctor increments */ + + uchar rec_buf[24]; + memset(rec_buf, 0, sizeof(rec_buf)); + + /* Field 0: bigint at offset 1 */ + alignas(Field_long) char fl_storage[sizeof(Field_long)]; + Field_long *fl= ::new (fl_storage) Field_long( + rec_buf + 1, 11, (uchar*) 0, 0, + Field::NONE, &fname_i, false, false); + fl->field_index= 0; + + /* Field 1: Field_blob at offset 9 (promoted from varchar(20)) */ + alignas(Field_blob) char bf_storage[sizeof(Field_blob)]; + Field_blob *bf= make_test_field_blob(bf_storage, + rec_buf + 9, + (uchar*) 0, 0, + &share, 2, + &my_charset_latin1); + bf->field_index= 1; + + Field *field_array[3]= { fl, bf, NULL }; + + uint blob_offsets[1]= { 1 }; + share.blob_field= blob_offsets; + + /* + KEY_PART_INFO: set up as if the SQL layer still thinks it's varchar. + key_part[1].length = 20 (varchar-like, non-zero). + key_part[1].key_part_flag = HA_VAR_LENGTH_PART (from original varchar). + But key_part[1].field = Field_blob (the promoted field). + */ + KEY_PART_INFO kpis[2]; + memset(kpis, 0, sizeof(kpis)); + + kpis[0].field= fl; + kpis[0].offset= 1; + kpis[0].length= 8; + kpis[0].key_part_flag= 0; + kpis[0].type= fl->key_type(); + kpis[0].store_length= 8; + + kpis[1].field= bf; /* promoted blob */ + kpis[1].offset= 9; + kpis[1].length= 20; /* varchar-like, NOT 0 */ + kpis[1].key_part_flag= HA_VAR_LENGTH_PART; /* stale from varchar setup */ + kpis[1].type= HA_KEYTYPE_VARTEXT1; + kpis[1].store_length= 20 + 2; /* varchar store_length */ + + KEY sql_key; + memset(&sql_key, 0, sizeof(sql_key)); + sql_key.user_defined_key_parts= 2; + sql_key.usable_key_parts= 2; + sql_key.key_part= kpis; + sql_key.algorithm= HA_KEY_ALG_HASH; + sql_key.key_length= 8 + 20 + 2; + + TABLE test_table; + memset(static_cast(&test_table), 0, sizeof(test_table)); + test_table.record[0]= rec_buf; + test_table.s= &share; + test_table.field= field_array; + test_table.key_info= &sql_key; + share.key_info= &sql_key; + + fl->table= &test_table; + bf->table= &test_table; + + Fake_thd_guard thd_guard; + + HP_CREATE_INFO hp_ci; + memset(&hp_ci, 0, sizeof(hp_ci)); + hp_ci.max_table_size= 1024*1024; + hp_ci.keys= 1; + hp_ci.reclength= 19; + + int err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); + + ok(err == 0, + "promoted_blob: heap_prepare succeeded (err=%d)", err); + + HP_KEYDEF *kd= &hp_ci.keydef[0]; + ok(kd->keysegs == 2, + "promoted_blob: keysegs = %u (expected 2)", kd->keysegs); + + /* seg[0]: bigint — should be untouched */ + ok(kd->seg[0].length == 8, + "promoted_blob: seg[0].length = %u (expected 8)", (uint) kd->seg[0].length); + ok(!(kd->seg[0].flag & HA_BLOB_PART), + "promoted_blob: seg[0] has NO HA_BLOB_PART"); + + /* + seg[1]: the promoted blob. + heap_prepare_hp_create_info uses field->key_part_flag() which returns + HA_BLOB_PART for Field_blob. It must: + - set seg->flag to HA_BLOB_PART (not HA_VAR_LENGTH_PART) + - set seg->length to 0 (blob convention) + - widen key_part->length to max_data_length() + */ + ok(kd->seg[1].flag & HA_BLOB_PART, + "promoted_blob: seg[1].flag (0x%x) has HA_BLOB_PART", + (uint) kd->seg[1].flag); + ok(kd->seg[1].length == 0, + "promoted_blob: seg[1].length = %u (expected 0 = blob convention)", + (uint) kd->seg[1].length); + ok(kpis[1].length == bf->max_data_length(), + "promoted_blob: key_part.length widened to %u (expected %u)", + (uint) kpis[1].length, (uint) bf->max_data_length()); + + my_free(hp_ci.keydef); + my_free(hp_ci.blob_descs); + bf->~Field_blob(); + fl->~Field_long(); +} + + + + +/* + Test: needs_key_rebuild_from_group_buff flag on HP_KEYDEF. + + Verifies that heap_prepare_hp_create_info sets needs_key_rebuild_from_group_buff=TRUE + only when table->group is set and key 0 has blob segments (GROUP BY path). + Without table->group (DISTINCT/sj-materialize), the flag is FALSE even + if the key has blob segments. +*/ +static void test_needs_key_rebuild_from_group_buff() +{ + /* + Reuse the mixed blob+varchar layout from test_rebuild_key_from_group_buff_mixed. + Two key parts: blob (city TEXT) + varchar (libname VARCHAR(21)). + */ + uchar rec[MIX_REC_LENGTH]; + memset(rec, 0, sizeof(rec)); + + TABLE_SHARE share; + memset(static_cast(&share), 0, sizeof(share)); + share.fields= 2; + share.blob_fields= 0; + share.keys= 1; + share.reclength= MIX_REC_LENGTH; + share.rec_buff_length= MIX_REC_LENGTH; + share.db_record_offset= 1; + + alignas(Field_blob) char bf_storage[sizeof(Field_blob)]; + Field_blob *bfp= make_test_field_blob(bf_storage, + rec + MIX_BLOB_OFFSET, + rec + MIX_REC_NULL_OFFSET, + 2, &share, + MIX_BLOB_PACKLEN, + &my_charset_latin1); + bfp->field_index= 0; + + static const LEX_CSTRING vs_name= {STRING_WITH_LEN("")}; + alignas(Field_varstring) char vs_storage[sizeof(Field_varstring)]; + Field_varstring *vfp= ::new (vs_storage) Field_varstring( + rec + MIX_VARCHAR_OFFSET, + MIX_VARCHAR_FIELD_LEN, + 1, + rec + MIX_REC_NULL_OFFSET, + 4, + Field::NONE, + &vs_name, + &share, + DTCollation(&my_charset_latin1)); + vfp->field_index= 1; + + Field *field_array[3]= { bfp, vfp, NULL }; + + KEY_PART_INFO kpi[2]; + memset(kpi, 0, sizeof(kpi)); + kpi[0].field= bfp; + kpi[0].offset= MIX_BLOB_OFFSET; + kpi[0].length= 0; + kpi[0].key_part_flag= HA_BLOB_PART; + kpi[0].null_bit= 2; + kpi[0].type= bfp->key_type(); + kpi[0].store_length= 103; + + kpi[1].field= vfp; + kpi[1].offset= MIX_VARCHAR_OFFSET; + kpi[1].length= MIX_VARCHAR_FIELD_LEN; + kpi[1].key_part_flag= HA_VAR_LENGTH_PART; + kpi[1].null_bit= 4; + kpi[1].type= vfp->key_type(); + kpi[1].store_length= MIX_VARCHAR_FIELD_LEN + 2 + 1; + + KEY sql_key; + memset(&sql_key, 0, sizeof(sql_key)); + sql_key.user_defined_key_parts= 2; + sql_key.usable_key_parts= 2; + sql_key.key_part= kpi; + sql_key.algorithm= HA_KEY_ALG_HASH; + + TABLE test_table; + memset(static_cast(&test_table), 0, sizeof(test_table)); + test_table.record[0]= rec; + test_table.s= &share; + test_table.field= field_array; + test_table.key_info= &sql_key; + share.key_info= &sql_key; + bfp->table= &test_table; + vfp->table= &test_table; + + uint blob_offsets[1]= { 0 }; + share.blob_field= blob_offsets; + + /* + A minimal ORDER group list (just needs to be non-NULL for detection). + We don't actually traverse it — only test_table.group != NULL matters. + */ + ORDER group_item; + memset(&group_item, 0, sizeof(group_item)); + + /* Test 1: with table->group set → needs_key_rebuild_from_group_buff = TRUE */ + test_table.group= &group_item; + + Fake_thd_guard thd_guard; + + HP_CREATE_INFO hp_ci; + memset(&hp_ci, 0, sizeof(hp_ci)); + hp_ci.max_table_size= 1024*1024; + hp_ci.keys= 1; + hp_ci.reclength= MIX_REC_LENGTH; + + int err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); + ok(err == 0, "needs_rebuild: with group, heap_prepare succeeded (err=%d)", err); + ok(hp_ci.keydef[0].needs_key_rebuild_from_group_buff != 0, + "needs_rebuild: with group + blob seg, flag is TRUE"); + + my_free(hp_ci.keydef); + my_free(hp_ci.blob_descs); + + /* Test 2: without table->group → needs_key_rebuild_from_group_buff = FALSE */ + test_table.group= NULL; + + memset(&hp_ci, 0, sizeof(hp_ci)); + hp_ci.max_table_size= 1024*1024; + hp_ci.keys= 1; + hp_ci.reclength= MIX_REC_LENGTH; + + err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); + ok(err == 0, "needs_rebuild: no group, heap_prepare succeeded (err=%d)", err); + ok(hp_ci.keydef[0].needs_key_rebuild_from_group_buff == 0, + "needs_rebuild: no group + blob seg, flag is FALSE"); + + my_free(hp_ci.keydef); + my_free(hp_ci.blob_descs); + vfp->~Field_varstring(); + bfp->~Field_blob(); +} + + +/* + Test: geometry GROUP BY key must NOT trigger blob key widening. + + Field_geom::key_length() returns packlength (4), not 0 like Field_blob. + The widening condition in heap_prepare_hp_create_info must skip when + key_part->length <= pack_length_no_ptr(). Without this, len_delta + overflows (~4 billion), corrupting store_length and key_length, which + causes rebuild_key_from_group_buff() to read uninitialized memory. + + This test simulates a GROUP BY on a GEOMETRY(POINT) column: + - key_part->length = 4 (from Field_geom::key_length() = packlength) + - key_part->store_length = small (from GROUP BY buffer sizing) + After heap_prepare, key_part->length must still be 4 (not widened), + and store_length must not overflow. +*/ +static void test_geometry_group_by_no_widening() +{ + /* + Record layout: nullable geometry (POINT, packlength=4) + byte 0: null bitmap + bytes 1-4: blob packlength=4 + bytes 5-12: blob data pointer + reclength = 13 + */ + uchar rec[16]; + memset(rec, 0, sizeof(rec)); + + TABLE_SHARE share; + memset(static_cast(&share), 0, sizeof(share)); + share.fields= 1; + share.blob_fields= 0; + share.keys= 1; + share.reclength= 13; + share.rec_buff_length= 13; + share.db_record_offset= 1; + + /* GEOMETRY is a LONGBLOB (packlength=4) */ + alignas(Field_blob) char bf_storage[sizeof(Field_blob)]; + Field_blob *bfp= make_test_field_blob(bf_storage, + rec + 1, + rec + 0, + 2, &share, + 4 /* packlength for LONGBLOB */, + &my_charset_bin); + bfp->field_index= 0; + + Field *field_array[2]= { bfp, NULL }; + + KEY_PART_INFO kpi; + memset(&kpi, 0, sizeof(kpi)); + kpi.field= bfp; + kpi.offset= 1; + /* + GROUP BY path: Field_geom::key_length() returns packlength = 4. + finalize() sets m_key_part_info->length = field->key_length() = 4. + */ + kpi.length= 4; + kpi.key_part_flag= HA_BLOB_PART; + kpi.null_bit= 2; + kpi.null_offset= 0; + kpi.type= bfp->key_type(); + /* + GROUP BY store_length: set by finalize() from the group buffer + Field_varstring. Use a reasonable value (e.g. 100 + 2 + 1 = 103). + */ + kpi.store_length= 103; + + KEY sql_key; + memset(&sql_key, 0, sizeof(sql_key)); + sql_key.user_defined_key_parts= 1; + sql_key.usable_key_parts= 1; + sql_key.key_part= &kpi; + sql_key.algorithm= HA_KEY_ALG_HASH; + sql_key.key_length= kpi.store_length; + + TABLE test_table; + memset(static_cast(&test_table), 0, sizeof(test_table)); + test_table.record[0]= rec; + test_table.s= &share; + test_table.field= field_array; + test_table.key_info= &sql_key; + share.key_info= &sql_key; + bfp->table= &test_table; + + uint blob_offsets[1]= { 0 }; + share.blob_field= blob_offsets; + + /* Set group to simulate GROUP BY path */ + ORDER group_item; + memset(&group_item, 0, sizeof(group_item)); + test_table.group= &group_item; + + Fake_thd_guard thd_guard; + + HP_CREATE_INFO hp_ci; + memset(&hp_ci, 0, sizeof(hp_ci)); + hp_ci.max_table_size= 1024*1024; + hp_ci.keys= 1; + hp_ci.reclength= 13; + + uint16 orig_length= kpi.length; + uint orig_store_length= kpi.store_length; + uint orig_key_length= sql_key.key_length; + + int err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); + ok(err == 0, "geom_group_by: heap_prepare succeeded (err=%d)", err); + + /* key_part->length must NOT be widened — must stay at packlength (4) */ + ok(kpi.length == orig_length, + "geom_group_by: key_part.length = %u (expected %u, NOT widened)", + (uint) kpi.length, (uint) orig_length); + + /* store_length must not overflow */ + ok(kpi.store_length == orig_store_length, + "geom_group_by: store_length = %u (expected %u, NOT overflowed)", + (uint) kpi.store_length, (uint) orig_store_length); + + /* key_length must not overflow */ + ok(sql_key.key_length == orig_key_length, + "geom_group_by: key_length = %u (expected %u, NOT overflowed)", + (uint) sql_key.key_length, (uint) orig_key_length); + + /* seg->length must be 0 (blob convention) */ + ok(hp_ci.keydef[0].seg[0].length == 0, + "geom_group_by: seg->length = %u (expected 0 = blob convention)", + (uint) hp_ci.keydef[0].seg[0].length); + + /* has_blob_seg must be set */ + ok(hp_ci.keydef[0].has_blob_seg != 0, + "geom_group_by: has_blob_seg is set"); + + my_free(hp_ci.keydef); + my_free(hp_ci.blob_descs); + bfp->~Field_blob(); +} + + int main(int argc __attribute__((unused)), char **argv __attribute__((unused))) { MY_INIT("hp_test_key_setup"); /* Field constructors reference system_charset_info via DTCollation */ system_charset_info= &my_charset_latin1; - plan(9); + plan(63); diag("distinct_key_truncation: key_part->length widened for blob key parts"); test_distinct_key_truncation(); @@ -417,6 +1416,30 @@ int main(int argc __attribute__((unused)), Hp_test_varchar_key_flag t2; t2.test_garbage_key_part_flag(); + diag("rebuild_key_from_group_buff: mixed blob + varchar GROUP BY key"); + test_rebuild_key_from_group_buff_mixed(); + + diag("varchar_only: VARCHAR key has no blob flag"); + test_varchar_only_key(); + + diag("int_only: INT key has no blob flag"); + test_int_only_key(); + + diag("enum: ENUM key has no blob flag"); + test_enum_key(); + + diag("int_varchar: mixed INT+VARCHAR key has no blob flag"); + test_mixed_int_varchar_key(); + + diag("promoted_blob: varchar promoted to blob in tmp table"); + test_varchar_promoted_to_blob(); + + diag("needs_rebuild: needs_key_rebuild_from_group_buff flag with/without table->group"); + test_needs_key_rebuild_from_group_buff(); + + diag("geom_group_by: geometry GROUP BY key must not trigger blob key widening"); + test_geometry_group_by_no_widening(); + my_end(0); return exit_status(); } From 2156c8f348cb709ff0360d176736cebb454986f7 Mon Sep 17 00:00:00 2001 From: Arcadiy Ivanov Date: Wed, 11 Mar 2026 22:46:07 -0400 Subject: [PATCH 7/7] Promote wide VARCHAR to BLOB for HEAP internal temp tables (Phase 1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **VARCHAR-to-BLOB promotion for HEAP engine** (`HEAP_CONVERT_IF_BIGGER_TO_BLOB = 32`): Promote VARCHAR fields wider than 32 bytes to BLOB when creating HEAP internal temporary tables. This avoids wasting memory on fixed-width rows (HEAP stores VARCHAR at declared maximum width). The promotion is transparent: the SQL layer sees VARCHAR, only the HEAP storage uses blob continuation chains internally. **Key changes:** 1. `sql/sql_type.cc` — `varstring_type_handler()`: thread-local `creating_heap_tmp_table` flag triggers `blob_type_handler()` for fields exceeding the HEAP threshold 2. `sql/sql_select.cc` — `finalize()`: - Set `key_part_flag` from `field->key_part_flag()` in GROUP BY key setup (was unconditionally 0, masking blob key handling) - `key_field_length` override for `new_key_field()` when blob `key_length()` returns 0 - Skip packed rows and ensure non-zero first byte for HEAP tables - Skip null-bits helper key part for HEAP (handles NULLs per-segment) 3. `storage/heap/ha_heap.cc`: - `rebuild_blob_key()`: materializes blob data from continuation chains back into `record[0]` for correct hash rebuilds - `heap_prepare_hp_create_info()`: blob key segment setup with `key_part->length` widening to `max_data_length()` for DISTINCT path; uses `field->key_part_flag()` instead of `key_part->key_part_flag` to avoid corruption from uninitialized flags in SJ weedout and expression cache paths 4. `storage/heap/hp_hash.c`: - Blob-aware `hp_hashnr()`, `hp_rec_hashnr()`, `hp_key_cmp()`, `hp_rec_key_cmp()`, `hp_make_key()` with proper PAD SPACE handling - Hash pre-check (`hash_of_key`) to skip expensive blob materialization for non-matching hash chain entries - VARCHAR `hp_make_key()` rewrite: always writes 2-byte length prefix regardless of `bit_start` (fixes key format mismatch for promoted TINYBLOB with `pack_length=1`) 5. `storage/heap/hp_create.c`: - `HA_BLOB_PART` validation against `blob_descs` array (strips spurious blob flags from non-blob fields) - Blob segment `bit_start`/`length` normalization - Continuation header size enforcement for blob tables 6. `storage/heap/hp_blob.c` (new): - Blob continuation chain read/write/free/materialize operations - Run-based storage with configurable slot reuse threshold 7. `sql/sql_expression_cache.cc` — disable expression cache for HEAP tables with blob fields (key format incompatibility) 8. `sql/item_sum.cc`, `sql/item_func.cc` — blob-aware overflow-to-disk and FULLTEXT engine swap 9. `derived_with_keys` ref access for BLOB columns on HEAP: - `add_key_field()`: accept all BLOB columns (no size restriction) on materialized derived tables for KEYUSE creation - `check_tmp_key()`: accept BLOB columns using metadata-only contribution to key length validation - `add_tmp_key()`: leave BLOB `key_part->length = 0` and `store_length` as metadata-only (2-3 bytes) - New `heap_store_key_blob_ref` store_key subclass: writes lookup values directly into `record[0]`'s `Field_blob`, bypassing the SQL-layer key buffer entirely. Used in `get_store_key()`, `create_ref_for_key()`, and `tmp_table_index_lookup_init()` when `key_part->length == 0 && HA_BLOB_PART && heap_hton` - `create_ref_for_key()`: skip early-const optimization for HEAP BLOB key parts (record[0] overwritten during materialization); disable ref cache (key buffer lacks BLOB data for memcmp) - `rebuild_blob_key_from_segments()`: dual-mode via `blob_data_in_record` flag — new mode skips BLOB data in key buffer (already in record[0] via `heap_store_key_blob_ref`); old mode extracts from key buffer (SJ-materialize path). Both modes copy non-BLOB data and null flags from key buffer to record[0] (fixes pre-existing bug with mixed BLOB+non-BLOB ref access) - `heap_prepare_hp_create_info()`: sets `blob_data_in_record` flag on `HP_KEYDEF` when all BLOB key parts have `length == 0` - New `HP_KEYDEF::blob_data_in_record` field in `include/heap.h` This gives all BLOB sizes (including LONGBLOB/JSON) ref access on HEAP derived tables. No `uint16` key buffer size limit applies since the key buffer is bypassed. **Test coverage:** - `heap.heap_blob`, `heap.heap_blob_ops`, `heap.heap_blob_groupby`, `heap.heap_geometry`, `heap.blob_dedup` — HEAP blob functionality - `heap.heap_blob_derived_keys` — derived_with_keys ref access on promoted BLOB columns + LONGTEXT/JSON/mixed/const tests - `main.sj_mat_blob`, `main.blob_sj_test` — SJ materialization - Unit tests in `hp_test_hash-t`, `hp_test_key_setup-t` and `hp_test_blob_promotion-t` covering blob hash/compare, key rebuild, key_part_flag corruption, derived_with_keys widening guard, LONGBLOB metadata-only store_length --- include/heap.h | 1 + mysql-test/main/create.result | 26 +- mysql-test/main/ctype_binary.result | 2 +- mysql-test/main/ctype_cp1251.result | 2 +- mysql-test/main/ctype_latin1.result | 2 +- mysql-test/main/ctype_ucs.result | 16 +- mysql-test/main/ctype_utf8.result | 24 +- mysql-test/main/ctype_utf8_uca.result | 368 +++---- mysql-test/main/ctype_utf8mb4_uca.result | 368 +++---- mysql-test/main/derived.result | 6 +- mysql-test/main/derived_view.result | 10 +- mysql-test/main/gis.result | 20 +- mysql-test/main/information_schema.result | 346 +++++- mysql-test/main/information_schema.test | 2 +- .../main/information_schema_parameters.result | 84 +- .../main/information_schema_routines.result | 204 ++-- mysql-test/main/mysqldump.result | 16 +- mysql-test/main/partition_error.result | 8 +- .../main/partition_explicit_prune.result | 21 + mysql-test/main/show_check.result | 206 ++-- mysql-test/main/sj_mat_blob.result | 44 + mysql-test/main/sj_mat_blob.test | 47 + mysql-test/main/sp-anchor-type.result | 2 +- mysql-test/main/subselect_mat.result | 5 +- mysql-test/main/subselect_sj_mat.result | 33 +- mysql-test/main/thread_pool_info.result | 2 +- mysql-test/main/userstat.result | 14 +- mysql-test/suite/compat/oracle/r/sp.result | 2 +- .../suite/funcs_1/r/is_character_sets.result | 18 +- .../funcs_1/r/is_coll_char_set_appl.result | 18 +- .../suite/funcs_1/r/is_collations.result | 12 +- .../funcs_1/r/is_column_privileges.result | 36 +- mysql-test/suite/funcs_1/r/is_columns.result | 60 +- .../suite/funcs_1/r/is_columns_is.result | 992 +++++++++--------- .../funcs_1/r/is_columns_is_embedded.result | 992 +++++++++--------- mysql-test/suite/funcs_1/r/is_engines.result | 12 +- mysql-test/suite/funcs_1/r/is_events.result | 84 +- .../funcs_1/r/is_key_column_usage.result | 60 +- .../r/is_key_column_usage_embedded.result | 60 +- mysql-test/suite/funcs_1/r/is_routines.result | 102 +- .../funcs_1/r/is_routines_embedded.result | 102 +- .../funcs_1/r/is_schema_privileges.result | 24 +- mysql-test/suite/funcs_1/r/is_schemata.result | 36 +- .../funcs_1/r/is_schemata_embedded.result | 36 +- .../suite/funcs_1/r/is_statistics.result | 54 +- .../funcs_1/r/is_table_constraints.result | 36 +- .../funcs_1/r/is_table_privileges.result | 30 +- mysql-test/suite/funcs_1/r/is_tables.result | 48 +- .../suite/funcs_1/r/is_tables_embedded.result | 48 +- mysql-test/suite/funcs_1/r/is_triggers.result | 78 +- .../funcs_1/r/is_triggers_embedded.result | 78 +- .../suite/funcs_1/r/is_user_privileges.result | 18 +- mysql-test/suite/funcs_1/r/is_views.result | 36 +- .../suite/funcs_1/r/is_views_embedded.result | 36 +- .../funcs_1/r/processlist_priv_no_prot.result | 20 +- .../funcs_1/r/processlist_priv_ps.result | 20 +- .../funcs_1/r/processlist_val_no_prot.result | 10 +- .../suite/funcs_1/r/processlist_val_ps.result | 10 +- .../suite/heap/heap_blob_derived_keys.result | 224 ++++ .../suite/heap/heap_blob_derived_keys.test | 209 ++++ .../suite/innodb/r/innodb-mdev-7408.result | 6 +- .../innodb/r/innodb_i_s_innodb_trx.result | 10 +- .../innodb/r/innodb_information_schema.result | Bin 7516 -> 7498 bytes .../suite/innodb/t/innodb-mdev-7408.test | 6 +- .../innodb_i_s/innodb_buffer_page.result | 6 +- .../innodb_i_s/innodb_buffer_page_lru.result | 6 +- .../innodb_i_s/innodb_cmp_per_index.result | 6 +- .../innodb_cmp_per_index_reset.result | 6 +- .../suite/innodb_i_s/innodb_ft_config.result | 4 +- .../innodb_ft_default_stopword.result | 2 +- .../innodb_i_s/innodb_ft_index_cache.result | 2 +- .../innodb_i_s/innodb_ft_index_table.result | 2 +- .../suite/innodb_i_s/innodb_lock_waits.result | 4 +- .../suite/innodb_i_s/innodb_locks.result | 8 +- .../suite/innodb_i_s/innodb_metrics.result | 6 +- .../innodb_i_s/innodb_sys_columns.result | 2 +- .../suite/innodb_i_s/innodb_sys_fields.result | 2 +- .../innodb_i_s/innodb_sys_foreign.result | 6 +- .../innodb_i_s/innodb_sys_foreign_cols.result | 6 +- .../innodb_i_s/innodb_sys_indexes.result | 2 +- .../suite/innodb_i_s/innodb_sys_tables.result | 2 +- .../innodb_i_s/innodb_sys_tablespaces.result | 6 +- .../innodb_i_s/innodb_sys_tablestats.result | 2 +- .../innodb_tablespaces_encryption.result | 2 +- mysql-test/suite/innodb_i_s/innodb_trx.result | 10 +- .../rpl/r/rpl_empty_string_is_null.result | 2 +- .../suite/sysschema/r/v_host_summary.result | 4 +- .../r/v_host_summary_by_file_io.result | 4 +- .../r/v_host_summary_by_file_io_type.result | 4 +- .../r/v_host_summary_by_stages.result | 4 +- ...v_host_summary_by_statement_latency.result | 4 +- .../r/v_host_summary_by_statement_type.result | 8 +- .../r/v_innodb_buffer_stats_by_schema.result | 4 +- .../r/v_innodb_buffer_stats_by_table.result | 8 +- .../sysschema/r/v_innodb_lock_waits.result | 28 +- .../r/v_io_by_thread_by_latency.result | 4 +- .../r/v_io_global_by_wait_by_bytes.result | 4 +- .../r/v_io_global_by_wait_by_latency.result | 4 +- .../suite/sysschema/r/v_latest_file_io.result | 4 +- .../v_memory_by_host_by_current_bytes.result | 4 +- ...v_memory_by_thread_by_current_bytes.result | 4 +- .../v_memory_by_user_by_current_bytes.result | 4 +- mysql-test/suite/sysschema/r/v_metrics.result | 4 +- .../suite/sysschema/r/v_processlist.result | 6 +- .../r/v_schema_auto_increment_columns.result | 8 +- .../r/v_schema_object_overview.result | 4 +- .../r/v_schema_redundant_indexes.result | 16 +- .../r/v_schema_table_lock_waits.result | 8 +- mysql-test/suite/sysschema/r/v_session.result | 6 +- .../suite/sysschema/r/v_user_summary.result | 4 +- .../r/v_user_summary_by_file_io.result | 4 +- .../r/v_user_summary_by_file_io_type.result | 4 +- .../r/v_user_summary_by_stages.result | 4 +- ...v_user_summary_by_statement_latency.result | 4 +- .../r/v_user_summary_by_statement_type.result | 8 +- ..._wait_classes_global_by_avg_latency.result | 4 +- .../r/v_wait_classes_global_by_latency.result | 4 +- .../r/v_waits_by_host_by_latency.result | 4 +- .../r/v_waits_by_user_by_latency.result | 4 +- plugin/disks/mysql-test/disks/disks.result | 4 +- .../query_response_time/basic.result | 4 +- .../mysql-test/user_variables/basic.result | 8 +- sql/item.h | 8 +- sql/sql_const.h | 1 + sql/sql_expression_cache.cc | 25 +- sql/sql_select.cc | 158 ++- sql/sql_select.h | 34 + sql/sql_type.cc | 11 +- sql/sql_type.h | 1 + sql/table.cc | 37 +- storage/heap/CMakeLists.txt | 7 + storage/heap/ha_heap.cc | 158 ++- storage/heap/ha_heap.h | 2 + storage/heap/hp_test_blob_promotion-t.cc | 200 ++++ storage/heap/hp_test_key_setup-t.cc | 340 +++++- .../spider/bugfix/r/mdev_33538.result | 4 +- tests/mysql_client_test.c | 10 +- 137 files changed, 4260 insertions(+), 2540 deletions(-) create mode 100644 mysql-test/main/sj_mat_blob.result create mode 100644 mysql-test/main/sj_mat_blob.test create mode 100644 mysql-test/suite/heap/heap_blob_derived_keys.result create mode 100644 mysql-test/suite/heap/heap_blob_derived_keys.test create mode 100644 storage/heap/hp_test_blob_promotion-t.cc diff --git a/include/heap.h b/include/heap.h index f696ee5c9ebf7..71e6912e7f3dd 100644 --- a/include/heap.h +++ b/include/heap.h @@ -118,6 +118,7 @@ typedef struct st_hp_keydef /* Key definition with open */ uint8 algorithm; /* HASH / BTREE */ my_bool has_blob_seg; /* Key has HA_BLOB_PART segments */ my_bool needs_key_rebuild_from_group_buff; /* GROUP BY key must be rebuilt from group_buff */ + my_bool blob_data_in_record; /* BLOB data written to record[0] by heap_store_key_blob_ref */ HA_KEYSEG *seg; HP_BLOCK block; /* Where keys are saved */ /* diff --git a/mysql-test/main/create.result b/mysql-test/main/create.result index ba5836e2999f0..d43413d1940bc 100644 --- a/mysql-test/main/create.result +++ b/mysql-test/main/create.result @@ -1069,12 +1069,12 @@ show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `ID` bigint(4) NOT NULL, - `USER` varchar(128) NOT NULL, - `HOST` varchar(64) NOT NULL, - `DB` varchar(64), - `COMMAND` varchar(16) NOT NULL, + `USER` longtext NOT NULL, + `HOST` longtext NOT NULL, + `DB` longtext, + `COMMAND` longtext NOT NULL, `TIME` int(7) NOT NULL, - `STATE` varchar(64), + `STATE` longtext, `INFO` longtext, `TIME_MS` decimal(22,3) NOT NULL, `STAGE` tinyint(2) NOT NULL, @@ -1093,12 +1093,12 @@ show create table t1; Table Create Table t1 CREATE TEMPORARY TABLE `t1` ( `ID` bigint(4) NOT NULL, - `USER` varchar(128) NOT NULL, - `HOST` varchar(64) NOT NULL, - `DB` varchar(64), - `COMMAND` varchar(16) NOT NULL, + `USER` longtext NOT NULL, + `HOST` longtext NOT NULL, + `DB` longtext, + `COMMAND` longtext NOT NULL, `TIME` int(7) NOT NULL, - `STATE` varchar(64), + `STATE` longtext, `INFO` longtext, `TIME_MS` decimal(22,3) NOT NULL, `STAGE` tinyint(2) NOT NULL, @@ -1116,9 +1116,9 @@ create table t1 like information_schema.character_sets; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `CHARACTER_SET_NAME` varchar(32) NOT NULL, - `DEFAULT_COLLATE_NAME` varchar(64) NOT NULL, - `DESCRIPTION` varchar(60) NOT NULL, + `CHARACTER_SET_NAME` longtext NOT NULL, + `DEFAULT_COLLATE_NAME` longtext NOT NULL, + `DESCRIPTION` longtext NOT NULL, `MAXLEN` bigint(3) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci drop table t1; diff --git a/mysql-test/main/ctype_binary.result b/mysql-test/main/ctype_binary.result index e52d30808e7e0..a398f4e828801 100644 --- a/mysql-test/main/ctype_binary.result +++ b/mysql-test/main/ctype_binary.result @@ -2382,7 +2382,7 @@ insert into t1 values (1); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varbinary(64) YES NULL +a tinyblob YES NULL select hex(a) from v1; hex(a) 0000000000000001 diff --git a/mysql-test/main/ctype_cp1251.result b/mysql-test/main/ctype_cp1251.result index 04f1c9bae224d..e5e6d0ece7583 100644 --- a/mysql-test/main/ctype_cp1251.result +++ b/mysql-test/main/ctype_cp1251.result @@ -2794,7 +2794,7 @@ insert into t1 values (1); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varbinary(64) YES NULL +a tinyblob YES NULL select hex(a) from v1; hex(a) 0000000000000001 diff --git a/mysql-test/main/ctype_latin1.result b/mysql-test/main/ctype_latin1.result index 1497c53df4d8f..8a689c3efb8cc 100644 --- a/mysql-test/main/ctype_latin1.result +++ b/mysql-test/main/ctype_latin1.result @@ -3103,7 +3103,7 @@ insert into t1 values (1); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varbinary(64) YES NULL +a tinyblob YES NULL select hex(a) from v1; hex(a) 0000000000000001 diff --git a/mysql-test/main/ctype_ucs.result b/mysql-test/main/ctype_ucs.result index 0a32d7d3118fe..773ebaa75771c 100644 --- a/mysql-test/main/ctype_ucs.result +++ b/mysql-test/main/ctype_ucs.result @@ -3779,7 +3779,7 @@ insert into t1 values (1), (10), (100); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(30) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 003000300030003000300030003000300030003000300030003000300030003000300030003000300030003000300030003000300030003000300031 @@ -3881,7 +3881,7 @@ insert into t1 values (1); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(20) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 0031 @@ -3892,7 +3892,7 @@ insert into t1 values (1), (10), (100), (1000), (10000); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(20) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 00300030003000300030003000300030003000300030003000300030003000300030003000300031 @@ -3936,7 +3936,7 @@ concat(a) create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(22) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 003100320033002E003400350036 @@ -3947,7 +3947,7 @@ insert into t1 values (1.1), (10.1), (100.1), (1000.1), (10000.1); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(22) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 00300030003000300030003000300030003000300030003000300030003000300030003000300031002E0031 @@ -3986,7 +3986,7 @@ insert into t1 values (1); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varbinary(64) YES NULL +a tinyblob YES NULL select hex(a) from v1; hex(a) 0000000000000001 @@ -4000,7 +4000,7 @@ insert into t1 values ('2001-02-03 04:05:06'); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(19) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 0030003000300030002D00300030002D00300030002000300030003A00300030003A00300030 @@ -4041,7 +4041,7 @@ insert into t1 values (20010203040506); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(19) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 0032003000300031002D00300032002D00300033002000300034003A00300035003A00300036 diff --git a/mysql-test/main/ctype_utf8.result b/mysql-test/main/ctype_utf8.result index 939e5b9627fcf..04726d894c8ef 100644 --- a/mysql-test/main/ctype_utf8.result +++ b/mysql-test/main/ctype_utf8.result @@ -4647,7 +4647,7 @@ insert into t1 values (1), (10), (100); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(30) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 303030303030303030303030303030303030303030303030303030303031 @@ -4660,7 +4660,7 @@ insert into t1 values (123.45); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(12) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 3132332E3435 @@ -4723,7 +4723,7 @@ insert into t1 values (1); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(11) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 31 @@ -4749,7 +4749,7 @@ insert into t1 values (1); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(20) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 31 @@ -4760,7 +4760,7 @@ insert into t1 values (1), (10), (100), (1000), (10000); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(20) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 3030303030303030303030303030303030303031 @@ -4775,7 +4775,7 @@ insert into t1 values (123.456); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(12) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 3132332E343536 @@ -4786,7 +4786,7 @@ insert into t1 values (1.1), (10.1), (100.1), (1000.1), (10000.1); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(12) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 303030303030303030312E31 @@ -4804,7 +4804,7 @@ concat(a) create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(22) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 3132332E343536 @@ -4815,7 +4815,7 @@ insert into t1 values (1.1), (10.1), (100.1), (1000.1), (10000.1); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(22) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 30303030303030303030303030303030303030312E31 @@ -4854,7 +4854,7 @@ insert into t1 values (1); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varbinary(64) YES NULL +a tinyblob YES NULL select hex(a) from v1; hex(a) 0000000000000001 @@ -4868,7 +4868,7 @@ insert into t1 values ('2001-02-03 04:05:06'); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(19) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 303030302D30302D30302030303A30303A3030 @@ -4909,7 +4909,7 @@ insert into t1 values (20010203040506); create view v1(a) as select concat(a) from t1; show columns from v1; Field Type Null Key Default Extra -a varchar(19) YES NULL +a tinytext YES NULL select hex(a) from v1; hex(a) 323030312D30322D30332030343A30353A3036 diff --git a/mysql-test/main/ctype_utf8_uca.result b/mysql-test/main/ctype_utf8_uca.result index 9506b231431dd..e833869d35da8 100644 --- a/mysql-test/main/ctype_utf8_uca.result +++ b/mysql-test/main/ctype_utf8_uca.result @@ -1229,739 +1229,739 @@ SELECT rec.COLLATION_NAME; END FOR; $$ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 13 Y 0 0 192 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 13 Y 16 0 192 rec.COLLATION_NAME uca1400_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 13 Y 0 0 192 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 13 Y 16 0 192 rec.COLLATION_NAME uca1400_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 13 Y 0 0 192 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 13 Y 16 0 192 rec.COLLATION_NAME uca1400_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 13 Y 0 0 192 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 13 Y 16 0 192 rec.COLLATION_NAME uca1400_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 192 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 192 rec.COLLATION_NAME uca1400_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 192 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 192 rec.COLLATION_NAME uca1400_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 192 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 192 rec.COLLATION_NAME uca1400_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 192 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 192 rec.COLLATION_NAME uca1400_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 193 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 193 rec.COLLATION_NAME uca1400_icelandic_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 193 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 193 rec.COLLATION_NAME uca1400_icelandic_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 193 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 193 rec.COLLATION_NAME uca1400_icelandic_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 193 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 193 rec.COLLATION_NAME uca1400_icelandic_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 193 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 193 rec.COLLATION_NAME uca1400_icelandic_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 193 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 193 rec.COLLATION_NAME uca1400_icelandic_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 193 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 193 rec.COLLATION_NAME uca1400_icelandic_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 193 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 193 rec.COLLATION_NAME uca1400_icelandic_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 194 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 194 rec.COLLATION_NAME uca1400_latvian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 194 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 194 rec.COLLATION_NAME uca1400_latvian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 194 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 194 rec.COLLATION_NAME uca1400_latvian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 194 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 194 rec.COLLATION_NAME uca1400_latvian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 194 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 194 rec.COLLATION_NAME uca1400_latvian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 194 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 194 rec.COLLATION_NAME uca1400_latvian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 194 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 194 rec.COLLATION_NAME uca1400_latvian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 194 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 194 rec.COLLATION_NAME uca1400_latvian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 195 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 195 rec.COLLATION_NAME uca1400_romanian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 195 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 195 rec.COLLATION_NAME uca1400_romanian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 195 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 195 rec.COLLATION_NAME uca1400_romanian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 195 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 195 rec.COLLATION_NAME uca1400_romanian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 195 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 195 rec.COLLATION_NAME uca1400_romanian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 195 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 195 rec.COLLATION_NAME uca1400_romanian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 195 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 195 rec.COLLATION_NAME uca1400_romanian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 195 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 195 rec.COLLATION_NAME uca1400_romanian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 196 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 196 rec.COLLATION_NAME uca1400_slovenian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 196 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 196 rec.COLLATION_NAME uca1400_slovenian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 196 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 196 rec.COLLATION_NAME uca1400_slovenian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 196 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 196 rec.COLLATION_NAME uca1400_slovenian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 196 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 196 rec.COLLATION_NAME uca1400_slovenian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 196 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 196 rec.COLLATION_NAME uca1400_slovenian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 196 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 196 rec.COLLATION_NAME uca1400_slovenian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 196 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 196 rec.COLLATION_NAME uca1400_slovenian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 197 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 197 rec.COLLATION_NAME uca1400_polish_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 197 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 197 rec.COLLATION_NAME uca1400_polish_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 197 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 197 rec.COLLATION_NAME uca1400_polish_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 197 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 197 rec.COLLATION_NAME uca1400_polish_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 197 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 197 rec.COLLATION_NAME uca1400_polish_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 197 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 197 rec.COLLATION_NAME uca1400_polish_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 197 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 197 rec.COLLATION_NAME uca1400_polish_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 197 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 197 rec.COLLATION_NAME uca1400_polish_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 198 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 198 rec.COLLATION_NAME uca1400_estonian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 198 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 198 rec.COLLATION_NAME uca1400_estonian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 198 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 198 rec.COLLATION_NAME uca1400_estonian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 198 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 198 rec.COLLATION_NAME uca1400_estonian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 198 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 198 rec.COLLATION_NAME uca1400_estonian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 198 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 198 rec.COLLATION_NAME uca1400_estonian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 198 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 198 rec.COLLATION_NAME uca1400_estonian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 198 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 198 rec.COLLATION_NAME uca1400_estonian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 199 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 199 rec.COLLATION_NAME uca1400_spanish_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 199 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 199 rec.COLLATION_NAME uca1400_spanish_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 199 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 199 rec.COLLATION_NAME uca1400_spanish_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 199 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 199 rec.COLLATION_NAME uca1400_spanish_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 199 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 199 rec.COLLATION_NAME uca1400_spanish_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 199 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 199 rec.COLLATION_NAME uca1400_spanish_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 199 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 199 rec.COLLATION_NAME uca1400_spanish_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 199 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 199 rec.COLLATION_NAME uca1400_spanish_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 200 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 200 rec.COLLATION_NAME uca1400_swedish_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 200 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 200 rec.COLLATION_NAME uca1400_swedish_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 200 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 200 rec.COLLATION_NAME uca1400_swedish_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 200 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 200 rec.COLLATION_NAME uca1400_swedish_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 200 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 200 rec.COLLATION_NAME uca1400_swedish_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 200 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 200 rec.COLLATION_NAME uca1400_swedish_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 200 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 200 rec.COLLATION_NAME uca1400_swedish_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 200 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 200 rec.COLLATION_NAME uca1400_swedish_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 201 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 201 rec.COLLATION_NAME uca1400_turkish_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 201 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 201 rec.COLLATION_NAME uca1400_turkish_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 201 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 201 rec.COLLATION_NAME uca1400_turkish_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 201 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 201 rec.COLLATION_NAME uca1400_turkish_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 201 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 201 rec.COLLATION_NAME uca1400_turkish_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 201 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 201 rec.COLLATION_NAME uca1400_turkish_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 201 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 201 rec.COLLATION_NAME uca1400_turkish_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 201 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 201 rec.COLLATION_NAME uca1400_turkish_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 202 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 202 rec.COLLATION_NAME uca1400_czech_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 202 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 202 rec.COLLATION_NAME uca1400_czech_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 202 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 202 rec.COLLATION_NAME uca1400_czech_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 202 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 202 rec.COLLATION_NAME uca1400_czech_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 202 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 202 rec.COLLATION_NAME uca1400_czech_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 202 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 202 rec.COLLATION_NAME uca1400_czech_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 202 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 202 rec.COLLATION_NAME uca1400_czech_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 202 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 202 rec.COLLATION_NAME uca1400_czech_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 203 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 203 rec.COLLATION_NAME uca1400_danish_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 203 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 203 rec.COLLATION_NAME uca1400_danish_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 203 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 203 rec.COLLATION_NAME uca1400_danish_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 203 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 203 rec.COLLATION_NAME uca1400_danish_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 203 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 203 rec.COLLATION_NAME uca1400_danish_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 203 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 203 rec.COLLATION_NAME uca1400_danish_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 203 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 203 rec.COLLATION_NAME uca1400_danish_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 203 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 203 rec.COLLATION_NAME uca1400_danish_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 204 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 204 rec.COLLATION_NAME uca1400_lithuanian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 204 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 204 rec.COLLATION_NAME uca1400_lithuanian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 204 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 204 rec.COLLATION_NAME uca1400_lithuanian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 204 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 204 rec.COLLATION_NAME uca1400_lithuanian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 204 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 204 rec.COLLATION_NAME uca1400_lithuanian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 204 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 204 rec.COLLATION_NAME uca1400_lithuanian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 204 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 204 rec.COLLATION_NAME uca1400_lithuanian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 204 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 204 rec.COLLATION_NAME uca1400_lithuanian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 205 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 205 rec.COLLATION_NAME uca1400_slovak_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 205 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 205 rec.COLLATION_NAME uca1400_slovak_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 205 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 205 rec.COLLATION_NAME uca1400_slovak_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 205 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 205 rec.COLLATION_NAME uca1400_slovak_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 205 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 205 rec.COLLATION_NAME uca1400_slovak_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 205 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 205 rec.COLLATION_NAME uca1400_slovak_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 205 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 205 rec.COLLATION_NAME uca1400_slovak_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 205 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 205 rec.COLLATION_NAME uca1400_slovak_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 206 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 206 rec.COLLATION_NAME uca1400_spanish2_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 206 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 206 rec.COLLATION_NAME uca1400_spanish2_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 206 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 206 rec.COLLATION_NAME uca1400_spanish2_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 206 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 206 rec.COLLATION_NAME uca1400_spanish2_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 206 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 206 rec.COLLATION_NAME uca1400_spanish2_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 206 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 206 rec.COLLATION_NAME uca1400_spanish2_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 206 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 206 rec.COLLATION_NAME uca1400_spanish2_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 206 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 206 rec.COLLATION_NAME uca1400_spanish2_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 207 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 207 rec.COLLATION_NAME uca1400_roman_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 207 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 207 rec.COLLATION_NAME uca1400_roman_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 207 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 207 rec.COLLATION_NAME uca1400_roman_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 207 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 207 rec.COLLATION_NAME uca1400_roman_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 207 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 207 rec.COLLATION_NAME uca1400_roman_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 207 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 207 rec.COLLATION_NAME uca1400_roman_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 207 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 207 rec.COLLATION_NAME uca1400_roman_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 207 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 207 rec.COLLATION_NAME uca1400_roman_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 208 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 208 rec.COLLATION_NAME uca1400_persian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 208 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 208 rec.COLLATION_NAME uca1400_persian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 208 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 208 rec.COLLATION_NAME uca1400_persian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 208 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 208 rec.COLLATION_NAME uca1400_persian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 208 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 208 rec.COLLATION_NAME uca1400_persian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 208 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 208 rec.COLLATION_NAME uca1400_persian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 208 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 208 rec.COLLATION_NAME uca1400_persian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 208 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 208 rec.COLLATION_NAME uca1400_persian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 209 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 209 rec.COLLATION_NAME uca1400_esperanto_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 209 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 209 rec.COLLATION_NAME uca1400_esperanto_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 209 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 209 rec.COLLATION_NAME uca1400_esperanto_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 209 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 209 rec.COLLATION_NAME uca1400_esperanto_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 209 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 209 rec.COLLATION_NAME uca1400_esperanto_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 209 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 209 rec.COLLATION_NAME uca1400_esperanto_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 209 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 209 rec.COLLATION_NAME uca1400_esperanto_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 209 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 209 rec.COLLATION_NAME uca1400_esperanto_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 210 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 210 rec.COLLATION_NAME uca1400_hungarian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 210 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 210 rec.COLLATION_NAME uca1400_hungarian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 210 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 210 rec.COLLATION_NAME uca1400_hungarian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 210 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 210 rec.COLLATION_NAME uca1400_hungarian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 210 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 210 rec.COLLATION_NAME uca1400_hungarian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 210 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 210 rec.COLLATION_NAME uca1400_hungarian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 210 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 210 rec.COLLATION_NAME uca1400_hungarian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 210 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 210 rec.COLLATION_NAME uca1400_hungarian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 211 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 211 rec.COLLATION_NAME uca1400_sinhala_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 211 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 211 rec.COLLATION_NAME uca1400_sinhala_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 211 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 211 rec.COLLATION_NAME uca1400_sinhala_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 211 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 211 rec.COLLATION_NAME uca1400_sinhala_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 211 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 211 rec.COLLATION_NAME uca1400_sinhala_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 211 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 211 rec.COLLATION_NAME uca1400_sinhala_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 211 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 211 rec.COLLATION_NAME uca1400_sinhala_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 211 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 211 rec.COLLATION_NAME uca1400_sinhala_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 212 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 212 rec.COLLATION_NAME uca1400_german2_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 212 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 212 rec.COLLATION_NAME uca1400_german2_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 212 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 212 rec.COLLATION_NAME uca1400_german2_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 212 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 212 rec.COLLATION_NAME uca1400_german2_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 212 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 212 rec.COLLATION_NAME uca1400_german2_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 212 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 212 rec.COLLATION_NAME uca1400_german2_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 212 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 212 rec.COLLATION_NAME uca1400_german2_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 212 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 212 rec.COLLATION_NAME uca1400_german2_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 215 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 215 rec.COLLATION_NAME uca1400_vietnamese_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 215 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 215 rec.COLLATION_NAME uca1400_vietnamese_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 215 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 215 rec.COLLATION_NAME uca1400_vietnamese_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 215 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 215 rec.COLLATION_NAME uca1400_vietnamese_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 215 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 215 rec.COLLATION_NAME uca1400_vietnamese_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 215 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 215 rec.COLLATION_NAME uca1400_vietnamese_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 215 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 215 rec.COLLATION_NAME uca1400_vietnamese_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 215 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 215 rec.COLLATION_NAME uca1400_vietnamese_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 576 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 576 rec.COLLATION_NAME uca1400_croatian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 576 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 576 rec.COLLATION_NAME uca1400_croatian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 576 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 576 rec.COLLATION_NAME uca1400_croatian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 576 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 576 rec.COLLATION_NAME uca1400_croatian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 576 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 576 rec.COLLATION_NAME uca1400_croatian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 576 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 576 rec.COLLATION_NAME uca1400_croatian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 576 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 576 rec.COLLATION_NAME uca1400_croatian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 576 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 576 rec.COLLATION_NAME uca1400_croatian_nopad_as_cs # diff --git a/mysql-test/main/ctype_utf8mb4_uca.result b/mysql-test/main/ctype_utf8mb4_uca.result index 20a041ba9c0cd..67b4a53c61d30 100644 --- a/mysql-test/main/ctype_utf8mb4_uca.result +++ b/mysql-test/main/ctype_utf8mb4_uca.result @@ -6943,739 +6943,739 @@ SELECT rec.COLLATION_NAME; END FOR; $$ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 13 Y 0 0 224 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 13 Y 16 0 224 rec.COLLATION_NAME uca1400_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 13 Y 0 0 224 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 13 Y 16 0 224 rec.COLLATION_NAME uca1400_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 13 Y 0 0 224 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 13 Y 16 0 224 rec.COLLATION_NAME uca1400_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 13 Y 0 0 224 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 13 Y 16 0 224 rec.COLLATION_NAME uca1400_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 224 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 224 rec.COLLATION_NAME uca1400_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 224 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 224 rec.COLLATION_NAME uca1400_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 224 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 224 rec.COLLATION_NAME uca1400_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 224 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 224 rec.COLLATION_NAME uca1400_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 225 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 225 rec.COLLATION_NAME uca1400_icelandic_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 225 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 225 rec.COLLATION_NAME uca1400_icelandic_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 225 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 225 rec.COLLATION_NAME uca1400_icelandic_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 225 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 225 rec.COLLATION_NAME uca1400_icelandic_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 225 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 225 rec.COLLATION_NAME uca1400_icelandic_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 225 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 225 rec.COLLATION_NAME uca1400_icelandic_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 225 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 225 rec.COLLATION_NAME uca1400_icelandic_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 225 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 225 rec.COLLATION_NAME uca1400_icelandic_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 226 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 226 rec.COLLATION_NAME uca1400_latvian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 226 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 226 rec.COLLATION_NAME uca1400_latvian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 226 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 226 rec.COLLATION_NAME uca1400_latvian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 226 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 226 rec.COLLATION_NAME uca1400_latvian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 226 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 226 rec.COLLATION_NAME uca1400_latvian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 226 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 226 rec.COLLATION_NAME uca1400_latvian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 226 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 226 rec.COLLATION_NAME uca1400_latvian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 226 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 226 rec.COLLATION_NAME uca1400_latvian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 227 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 227 rec.COLLATION_NAME uca1400_romanian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 227 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 227 rec.COLLATION_NAME uca1400_romanian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 227 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 227 rec.COLLATION_NAME uca1400_romanian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 227 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 227 rec.COLLATION_NAME uca1400_romanian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 227 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 227 rec.COLLATION_NAME uca1400_romanian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 227 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 227 rec.COLLATION_NAME uca1400_romanian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 227 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 227 rec.COLLATION_NAME uca1400_romanian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 227 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 227 rec.COLLATION_NAME uca1400_romanian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 228 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 228 rec.COLLATION_NAME uca1400_slovenian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 228 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 228 rec.COLLATION_NAME uca1400_slovenian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 228 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 228 rec.COLLATION_NAME uca1400_slovenian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 228 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 228 rec.COLLATION_NAME uca1400_slovenian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 228 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 228 rec.COLLATION_NAME uca1400_slovenian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 228 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 228 rec.COLLATION_NAME uca1400_slovenian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 228 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 228 rec.COLLATION_NAME uca1400_slovenian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 228 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 228 rec.COLLATION_NAME uca1400_slovenian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 229 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 229 rec.COLLATION_NAME uca1400_polish_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 229 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 229 rec.COLLATION_NAME uca1400_polish_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 229 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 229 rec.COLLATION_NAME uca1400_polish_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 229 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 229 rec.COLLATION_NAME uca1400_polish_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 229 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 229 rec.COLLATION_NAME uca1400_polish_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 229 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 229 rec.COLLATION_NAME uca1400_polish_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 229 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 229 rec.COLLATION_NAME uca1400_polish_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 229 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 229 rec.COLLATION_NAME uca1400_polish_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 230 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 230 rec.COLLATION_NAME uca1400_estonian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 230 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 230 rec.COLLATION_NAME uca1400_estonian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 230 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 230 rec.COLLATION_NAME uca1400_estonian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 230 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 230 rec.COLLATION_NAME uca1400_estonian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 230 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 230 rec.COLLATION_NAME uca1400_estonian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 230 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 230 rec.COLLATION_NAME uca1400_estonian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 230 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 230 rec.COLLATION_NAME uca1400_estonian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 230 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 230 rec.COLLATION_NAME uca1400_estonian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 231 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 231 rec.COLLATION_NAME uca1400_spanish_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 231 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 231 rec.COLLATION_NAME uca1400_spanish_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 231 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 231 rec.COLLATION_NAME uca1400_spanish_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 231 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 231 rec.COLLATION_NAME uca1400_spanish_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 231 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 231 rec.COLLATION_NAME uca1400_spanish_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 231 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 231 rec.COLLATION_NAME uca1400_spanish_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 231 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 231 rec.COLLATION_NAME uca1400_spanish_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 231 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 231 rec.COLLATION_NAME uca1400_spanish_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 232 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 232 rec.COLLATION_NAME uca1400_swedish_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 232 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 232 rec.COLLATION_NAME uca1400_swedish_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 232 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 232 rec.COLLATION_NAME uca1400_swedish_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 232 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 232 rec.COLLATION_NAME uca1400_swedish_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 232 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 232 rec.COLLATION_NAME uca1400_swedish_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 232 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 232 rec.COLLATION_NAME uca1400_swedish_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 232 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 232 rec.COLLATION_NAME uca1400_swedish_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 232 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 232 rec.COLLATION_NAME uca1400_swedish_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 233 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 233 rec.COLLATION_NAME uca1400_turkish_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 233 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 233 rec.COLLATION_NAME uca1400_turkish_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 233 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 233 rec.COLLATION_NAME uca1400_turkish_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 233 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 233 rec.COLLATION_NAME uca1400_turkish_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 233 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 233 rec.COLLATION_NAME uca1400_turkish_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 233 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 233 rec.COLLATION_NAME uca1400_turkish_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 233 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 233 rec.COLLATION_NAME uca1400_turkish_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 233 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 233 rec.COLLATION_NAME uca1400_turkish_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 234 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 234 rec.COLLATION_NAME uca1400_czech_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 234 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 234 rec.COLLATION_NAME uca1400_czech_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 234 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 234 rec.COLLATION_NAME uca1400_czech_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 234 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 234 rec.COLLATION_NAME uca1400_czech_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 234 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 234 rec.COLLATION_NAME uca1400_czech_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 234 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 234 rec.COLLATION_NAME uca1400_czech_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 234 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 234 rec.COLLATION_NAME uca1400_czech_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 234 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 234 rec.COLLATION_NAME uca1400_czech_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 235 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 235 rec.COLLATION_NAME uca1400_danish_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 235 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 235 rec.COLLATION_NAME uca1400_danish_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 235 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 235 rec.COLLATION_NAME uca1400_danish_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 235 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 235 rec.COLLATION_NAME uca1400_danish_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 235 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 235 rec.COLLATION_NAME uca1400_danish_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 235 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 235 rec.COLLATION_NAME uca1400_danish_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 235 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 235 rec.COLLATION_NAME uca1400_danish_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 235 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 235 rec.COLLATION_NAME uca1400_danish_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 236 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 236 rec.COLLATION_NAME uca1400_lithuanian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 236 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 236 rec.COLLATION_NAME uca1400_lithuanian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 236 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 236 rec.COLLATION_NAME uca1400_lithuanian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 236 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 236 rec.COLLATION_NAME uca1400_lithuanian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 236 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 236 rec.COLLATION_NAME uca1400_lithuanian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 236 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 236 rec.COLLATION_NAME uca1400_lithuanian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 236 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 236 rec.COLLATION_NAME uca1400_lithuanian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 236 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 236 rec.COLLATION_NAME uca1400_lithuanian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 237 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 237 rec.COLLATION_NAME uca1400_slovak_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 237 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 237 rec.COLLATION_NAME uca1400_slovak_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 237 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 237 rec.COLLATION_NAME uca1400_slovak_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 237 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 20 Y 16 0 237 rec.COLLATION_NAME uca1400_slovak_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 237 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 237 rec.COLLATION_NAME uca1400_slovak_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 237 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 237 rec.COLLATION_NAME uca1400_slovak_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 237 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 237 rec.COLLATION_NAME uca1400_slovak_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 237 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 26 Y 16 0 237 rec.COLLATION_NAME uca1400_slovak_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 238 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 238 rec.COLLATION_NAME uca1400_spanish2_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 238 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 238 rec.COLLATION_NAME uca1400_spanish2_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 238 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 238 rec.COLLATION_NAME uca1400_spanish2_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 238 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 238 rec.COLLATION_NAME uca1400_spanish2_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 238 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 238 rec.COLLATION_NAME uca1400_spanish2_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 238 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 238 rec.COLLATION_NAME uca1400_spanish2_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 238 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 238 rec.COLLATION_NAME uca1400_spanish2_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 238 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 238 rec.COLLATION_NAME uca1400_spanish2_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 239 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 239 rec.COLLATION_NAME uca1400_roman_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 239 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 239 rec.COLLATION_NAME uca1400_roman_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 239 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 239 rec.COLLATION_NAME uca1400_roman_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 239 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 19 Y 16 0 239 rec.COLLATION_NAME uca1400_roman_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 239 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 239 rec.COLLATION_NAME uca1400_roman_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 239 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 239 rec.COLLATION_NAME uca1400_roman_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 239 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 239 rec.COLLATION_NAME uca1400_roman_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 239 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 25 Y 16 0 239 rec.COLLATION_NAME uca1400_roman_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 240 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 240 rec.COLLATION_NAME uca1400_persian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 240 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 240 rec.COLLATION_NAME uca1400_persian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 240 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 240 rec.COLLATION_NAME uca1400_persian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 240 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 240 rec.COLLATION_NAME uca1400_persian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 240 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 240 rec.COLLATION_NAME uca1400_persian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 240 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 240 rec.COLLATION_NAME uca1400_persian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 240 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 240 rec.COLLATION_NAME uca1400_persian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 240 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 240 rec.COLLATION_NAME uca1400_persian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 241 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 241 rec.COLLATION_NAME uca1400_esperanto_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 241 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 241 rec.COLLATION_NAME uca1400_esperanto_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 241 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 241 rec.COLLATION_NAME uca1400_esperanto_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 241 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 241 rec.COLLATION_NAME uca1400_esperanto_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 241 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 241 rec.COLLATION_NAME uca1400_esperanto_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 241 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 241 rec.COLLATION_NAME uca1400_esperanto_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 241 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 241 rec.COLLATION_NAME uca1400_esperanto_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 241 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 241 rec.COLLATION_NAME uca1400_esperanto_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 242 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 242 rec.COLLATION_NAME uca1400_hungarian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 242 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 242 rec.COLLATION_NAME uca1400_hungarian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 242 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 242 rec.COLLATION_NAME uca1400_hungarian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 242 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 23 Y 16 0 242 rec.COLLATION_NAME uca1400_hungarian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 242 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 242 rec.COLLATION_NAME uca1400_hungarian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 242 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 242 rec.COLLATION_NAME uca1400_hungarian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 242 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 242 rec.COLLATION_NAME uca1400_hungarian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 242 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 29 Y 16 0 242 rec.COLLATION_NAME uca1400_hungarian_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 243 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 243 rec.COLLATION_NAME uca1400_sinhala_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 243 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 243 rec.COLLATION_NAME uca1400_sinhala_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 243 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 243 rec.COLLATION_NAME uca1400_sinhala_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 243 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 243 rec.COLLATION_NAME uca1400_sinhala_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 243 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 243 rec.COLLATION_NAME uca1400_sinhala_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 243 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 243 rec.COLLATION_NAME uca1400_sinhala_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 243 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 243 rec.COLLATION_NAME uca1400_sinhala_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 243 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 243 rec.COLLATION_NAME uca1400_sinhala_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 244 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 244 rec.COLLATION_NAME uca1400_german2_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 244 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 244 rec.COLLATION_NAME uca1400_german2_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 244 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 244 rec.COLLATION_NAME uca1400_german2_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 244 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 21 Y 16 0 244 rec.COLLATION_NAME uca1400_german2_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 244 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 244 rec.COLLATION_NAME uca1400_german2_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 244 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 244 rec.COLLATION_NAME uca1400_german2_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 244 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 244 rec.COLLATION_NAME uca1400_german2_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 244 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 27 Y 16 0 244 rec.COLLATION_NAME uca1400_german2_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 247 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 247 rec.COLLATION_NAME uca1400_vietnamese_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 247 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 247 rec.COLLATION_NAME uca1400_vietnamese_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 247 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 247 rec.COLLATION_NAME uca1400_vietnamese_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 247 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 24 Y 16 0 247 rec.COLLATION_NAME uca1400_vietnamese_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 247 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 247 rec.COLLATION_NAME uca1400_vietnamese_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 247 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 247 rec.COLLATION_NAME uca1400_vietnamese_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 247 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 247 rec.COLLATION_NAME uca1400_vietnamese_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 247 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 30 Y 16 0 247 rec.COLLATION_NAME uca1400_vietnamese_nopad_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 608 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 608 rec.COLLATION_NAME uca1400_croatian_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 608 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 608 rec.COLLATION_NAME uca1400_croatian_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 608 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 608 rec.COLLATION_NAME uca1400_croatian_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 608 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 22 Y 16 0 608 rec.COLLATION_NAME uca1400_croatian_as_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 608 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 608 rec.COLLATION_NAME uca1400_croatian_nopad_ai_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 608 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 608 rec.COLLATION_NAME uca1400_croatian_nopad_ai_cs Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 608 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 608 rec.COLLATION_NAME uca1400_croatian_nopad_as_ci Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 608 +def COLLATION_NAME rec.COLLATION_NAME 252 4294967295 28 Y 16 0 608 rec.COLLATION_NAME uca1400_croatian_nopad_as_cs # diff --git a/mysql-test/main/derived.result b/mysql-test/main/derived.result index 884fc161cb12a..b52f263b0f433 100644 --- a/mysql-test/main/derived.result +++ b/mysql-test/main/derived.result @@ -1109,8 +1109,8 @@ INSERT INTO t2 VALUES ('b',2), ('c',3); CREATE ALGORITHM=TEMPTABLE VIEW v1 AS SELECT * FROM t1; explain SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1; id select_type table type possible_keys key key_len ref rows Extra -1 PRIMARY t2 ALL NULL NULL NULL NULL 2 -1 PRIMARY ALL NULL NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join) +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY ref key0 key0 3 blob_ref 2 2 DERIVED t1 ALL NULL NULL NULL NULL 5 SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1; c1 c2 c1 c2 @@ -1121,7 +1121,7 @@ set @@join_cache_level=4; explain SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where -1 PRIMARY hash_ALL NULL #hash#$hj 3 test.t2.c1 5 Using where; Using join buffer (flat, BNLH join) +1 PRIMARY ref key0 key0 3 blob_ref 2 2 DERIVED t1 ALL NULL NULL NULL NULL 5 SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1; c1 c2 c1 c2 diff --git a/mysql-test/main/derived_view.result b/mysql-test/main/derived_view.result index c673d201329b8..8b8c350353627 100644 --- a/mysql-test/main/derived_view.result +++ b/mysql-test/main/derived_view.result @@ -2372,7 +2372,7 @@ GROUP BY TABLE_SCHEMA) AS UNIQUES ON ( COLUMNS.TABLE_SCHEMA = UNIQUES.TABLE_SCHEMA); id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY COLUMNS ALL NULL NULL NULL NULL NULL Open_frm_only; Scanned all databases -1 PRIMARY ref key0 key0 194 information_schema.COLUMNS.TABLE_SCHEMA 2 +1 PRIMARY ref key0 key0 2 blob_ref 2 2 DERIVED STATISTICS ALL NULL NULL NULL NULL NULL Open_frm_only; Scanned all databases; Using filesort SELECT COUNT(*) > 0 FROM INFORMATION_SCHEMA.COLUMNS @@ -2600,7 +2600,7 @@ EXPLAIN EXTENDED SELECT v1.c1, v1.c2 FROM v1, t2 WHERE v1.c1=t2.c1 AND v1.c2=t2.c2; id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where -1 PRIMARY ref key0 key0 5 test.t2.c2 2 100.00 Using where +1 PRIMARY ref key0 key0 8 blob_ref,test.t2.c2 2 100.00 2 DERIVED t1 ALL NULL NULL NULL NULL 5 100.00 Warnings: Note 1003 /* select#1 */ select `v1`.`c1` AS `c1`,`v1`.`c2` AS `c2` from `test`.`v1` join `test`.`t2` where `v1`.`c1` = `test`.`t2`.`c1` and `v1`.`c2` = `test`.`t2`.`c2` @@ -2613,7 +2613,7 @@ SELECT t2.c1, t2.c2 FROM (SELECT c1 g, MAX(c2) m FROM t1 GROUP BY c1) t, t2 WHERE t.g=t2.c1 AND t.m=t2.c2; id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where -1 PRIMARY ref key0 key0 5 test.t2.c2 2 100.00 Using where +1 PRIMARY ref key0 key0 8 blob_ref,test.t2.c2 2 100.00 2 DERIVED t1 ALL NULL NULL NULL NULL 5 100.00 Using temporary; Using filesort Warnings: Note 1003 /* select#1 */ select `test`.`t2`.`c1` AS `c1`,`test`.`t2`.`c2` AS `c2` from (/* select#2 */ select `test`.`t1`.`c1` AS `g`,max(`test`.`t1`.`c2`) AS `m` from `test`.`t1` group by `test`.`t1`.`c1`) `t` join `test`.`t2` where `t`.`g` = `test`.`t2`.`c1` and `t`.`m` = `test`.`t2`.`c2` @@ -2624,8 +2624,8 @@ c 3 EXPLAIN EXTENDED SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1; id select_type table type possible_keys key key_len ref rows filtered Extra -1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 -1 PRIMARY ALL NULL NULL NULL NULL 5 100.00 Using where; Using join buffer (flat, BNL join) +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where +1 PRIMARY ref key0 key0 3 blob_ref 2 100.00 2 DERIVED t1 ALL NULL NULL NULL NULL 5 100.00 Warnings: Note 1003 /* select#1 */ select `v1`.`c1` AS `c1`,`v1`.`c2` AS `c2`,`test`.`t2`.`c1` AS `c1`,`test`.`t2`.`c2` AS `c2` from `test`.`v1` join `test`.`t2` where `v1`.`c1` = `test`.`t2`.`c1` diff --git a/mysql-test/main/gis.result b/mysql-test/main/gis.result index 9491585300cc9..5c388a3f30d49 100644 --- a/mysql-test/main/gis.result +++ b/mysql-test/main/gis.result @@ -1739,14 +1739,14 @@ drop table t1; SHOW CREATE TABLE information_schema.geometry_columns; Table Create Table GEOMETRY_COLUMNS CREATE TEMPORARY TABLE `GEOMETRY_COLUMNS` ( - `F_TABLE_CATALOG` varchar(512) NOT NULL, - `F_TABLE_SCHEMA` varchar(64) NOT NULL, - `F_TABLE_NAME` varchar(64) NOT NULL, - `F_GEOMETRY_COLUMN` varchar(64) NOT NULL, - `G_TABLE_CATALOG` varchar(512) NOT NULL, - `G_TABLE_SCHEMA` varchar(64) NOT NULL, - `G_TABLE_NAME` varchar(64) NOT NULL, - `G_GEOMETRY_COLUMN` varchar(64) NOT NULL, + `F_TABLE_CATALOG` longtext NOT NULL, + `F_TABLE_SCHEMA` longtext NOT NULL, + `F_TABLE_NAME` longtext NOT NULL, + `F_GEOMETRY_COLUMN` longtext NOT NULL, + `G_TABLE_CATALOG` longtext NOT NULL, + `G_TABLE_SCHEMA` longtext NOT NULL, + `G_TABLE_NAME` longtext NOT NULL, + `G_GEOMETRY_COLUMN` longtext NOT NULL, `STORAGE_TYPE` tinyint(2) NOT NULL, `GEOMETRY_TYPE` int(7) NOT NULL, `COORD_DIMENSION` tinyint(2) NOT NULL, @@ -1757,9 +1757,9 @@ SHOW CREATE TABLE information_schema.spatial_ref_sys; Table Create Table SPATIAL_REF_SYS CREATE TEMPORARY TABLE `SPATIAL_REF_SYS` ( `SRID` smallint(5) NOT NULL, - `AUTH_NAME` varchar(512) NOT NULL, + `AUTH_NAME` longtext NOT NULL, `AUTH_SRID` int(5) NOT NULL, - `SRTEXT` varchar(2048) NOT NULL + `SRTEXT` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci create table t1(g GEOMETRY, pt POINT); create table t2(g LINESTRING, pl POLYGON); diff --git a/mysql-test/main/information_schema.result b/mysql-test/main/information_schema.result index f7d43fc58e5a6..60cdd8c01d7bf 100644 --- a/mysql-test/main/information_schema.result +++ b/mysql-test/main/information_schema.result @@ -230,7 +230,7 @@ Field Type Collation Null Key Default Extra Privileges Comment Insert_priv enum('N','Y') utf8mb3_general_ci NO N select,insert,update,references show full columns from v1; Field Type Collation Null Key Default Extra Privileges Comment -c varchar(64) utf8mb3_general_ci NO NULL select,insert,update,references +c longtext utf8mb3_general_ci NO NULL select,insert,update,references select * from information_schema.COLUMNS where table_name="t1" and column_name= "a"; TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT IS_GENERATED GENERATION_EXPRESSION @@ -609,18 +609,18 @@ drop table t1; SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets; Table Create Table CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` ( - `CHARACTER_SET_NAME` varchar(32) NOT NULL, - `DEFAULT_COLLATE_NAME` varchar(64) NOT NULL, - `DESCRIPTION` varchar(60) NOT NULL, + `CHARACTER_SET_NAME` longtext NOT NULL, + `DEFAULT_COLLATE_NAME` longtext NOT NULL, + `DESCRIPTION` longtext NOT NULL, `MAXLEN` bigint(3) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci set names latin2; SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets; Table Create Table CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` ( - `CHARACTER_SET_NAME` varchar(32) NOT NULL, - `DEFAULT_COLLATE_NAME` varchar(64) NOT NULL, - `DESCRIPTION` varchar(60) NOT NULL, + `CHARACTER_SET_NAME` longtext NOT NULL, + `DEFAULT_COLLATE_NAME` longtext NOT NULL, + `DESCRIPTION` longtext NOT NULL, `MAXLEN` bigint(3) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci set names latin1; @@ -633,9 +633,9 @@ alter table t1 default character set utf8; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `CHARACTER_SET_NAME` varchar(32) NOT NULL, - `DEFAULT_COLLATE_NAME` varchar(64) NOT NULL, - `DESCRIPTION` varchar(60) NOT NULL, + `CHARACTER_SET_NAME` longtext NOT NULL, + `DEFAULT_COLLATE_NAME` longtext NOT NULL, + `DESCRIPTION` longtext NOT NULL, `MAXLEN` bigint(3) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci drop table t1; @@ -827,8 +827,8 @@ select column_type from information_schema.columns where table_schema="information_schema" and table_name="COLUMNS" and (column_name="character_set_name" or column_name="collation_name"); column_type -varchar(32) -varchar(64) +longtext +longtext select TABLE_ROWS from information_schema.tables where table_schema="information_schema" and table_name="COLUMNS"; TABLE_ROWS @@ -868,33 +868,334 @@ information_schema.columns where data_type = 'longtext' and table_schema != 'performance_schema' order by binary table_name, ordinal_position; table_schema table_name column_name +information_schema ALL_PLUGINS PLUGIN_NAME +information_schema ALL_PLUGINS PLUGIN_VERSION +information_schema ALL_PLUGINS PLUGIN_STATUS +information_schema ALL_PLUGINS PLUGIN_TYPE +information_schema ALL_PLUGINS PLUGIN_TYPE_VERSION +information_schema ALL_PLUGINS PLUGIN_LIBRARY +information_schema ALL_PLUGINS PLUGIN_LIBRARY_VERSION +information_schema ALL_PLUGINS PLUGIN_AUTHOR information_schema ALL_PLUGINS PLUGIN_DESCRIPTION +information_schema ALL_PLUGINS PLUGIN_LICENSE +information_schema ALL_PLUGINS LOAD_OPTION +information_schema ALL_PLUGINS PLUGIN_MATURITY +information_schema ALL_PLUGINS PLUGIN_AUTH_VERSION +information_schema APPLICABLE_ROLES GRANTEE +information_schema APPLICABLE_ROLES ROLE_NAME +information_schema CHARACTER_SETS CHARACTER_SET_NAME +information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME +information_schema CHARACTER_SETS DESCRIPTION +information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG +information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA +information_schema CHECK_CONSTRAINTS TABLE_NAME +information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME information_schema CHECK_CONSTRAINTS CHECK_CLAUSE +information_schema CLIENT_STATISTICS CLIENT +information_schema COLLATIONS COLLATION_NAME +information_schema COLLATIONS CHARACTER_SET_NAME +information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME +information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME +information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME +information_schema COLUMNS TABLE_CATALOG +information_schema COLUMNS TABLE_SCHEMA +information_schema COLUMNS TABLE_NAME +information_schema COLUMNS COLUMN_NAME information_schema COLUMNS COLUMN_DEFAULT +information_schema COLUMNS DATA_TYPE +information_schema COLUMNS CHARACTER_SET_NAME +information_schema COLUMNS COLLATION_NAME information_schema COLUMNS COLUMN_TYPE +information_schema COLUMNS EXTRA +information_schema COLUMNS PRIVILEGES +information_schema COLUMNS COLUMN_COMMENT information_schema COLUMNS GENERATION_EXPRESSION +information_schema COLUMN_PRIVILEGES GRANTEE +information_schema COLUMN_PRIVILEGES TABLE_CATALOG +information_schema COLUMN_PRIVILEGES TABLE_SCHEMA +information_schema COLUMN_PRIVILEGES TABLE_NAME +information_schema COLUMN_PRIVILEGES COLUMN_NAME +information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE +information_schema ENABLED_ROLES ROLE_NAME +information_schema ENGINES ENGINE +information_schema ENGINES COMMENT +information_schema EVENTS EVENT_CATALOG +information_schema EVENTS EVENT_SCHEMA +information_schema EVENTS EVENT_NAME +information_schema EVENTS DEFINER +information_schema EVENTS TIME_ZONE information_schema EVENTS EVENT_DEFINITION +information_schema EVENTS INTERVAL_VALUE +information_schema EVENTS INTERVAL_FIELD +information_schema EVENTS SQL_MODE +information_schema EVENTS STATUS +information_schema EVENTS ON_COMPLETION +information_schema EVENTS EVENT_COMMENT +information_schema EVENTS CHARACTER_SET_CLIENT +information_schema EVENTS COLLATION_CONNECTION +information_schema EVENTS DATABASE_COLLATION +information_schema FILES FILE_NAME +information_schema FILES FILE_TYPE +information_schema FILES TABLESPACE_NAME +information_schema FILES TABLE_CATALOG +information_schema FILES TABLE_SCHEMA +information_schema FILES TABLE_NAME +information_schema FILES LOGFILE_GROUP_NAME +information_schema FILES ENGINE +information_schema FILES FULLTEXT_KEYS +information_schema FILES STATUS +information_schema FILES EXTRA +information_schema GEOMETRY_COLUMNS F_TABLE_CATALOG +information_schema GEOMETRY_COLUMNS F_TABLE_SCHEMA +information_schema GEOMETRY_COLUMNS F_TABLE_NAME +information_schema GEOMETRY_COLUMNS F_GEOMETRY_COLUMN +information_schema GEOMETRY_COLUMNS G_TABLE_CATALOG +information_schema GEOMETRY_COLUMNS G_TABLE_SCHEMA +information_schema GEOMETRY_COLUMNS G_TABLE_NAME +information_schema GEOMETRY_COLUMNS G_GEOMETRY_COLUMN +information_schema GLOBAL_STATUS VARIABLE_NAME +information_schema GLOBAL_STATUS VARIABLE_VALUE +information_schema GLOBAL_VARIABLES VARIABLE_NAME +information_schema GLOBAL_VARIABLES VARIABLE_VALUE +information_schema INDEX_STATISTICS TABLE_SCHEMA +information_schema INDEX_STATISTICS TABLE_NAME +information_schema INDEX_STATISTICS INDEX_NAME +information_schema INNODB_BUFFER_PAGE PAGE_TYPE +information_schema INNODB_BUFFER_PAGE TABLE_NAME +information_schema INNODB_BUFFER_PAGE INDEX_NAME +information_schema INNODB_BUFFER_PAGE_LRU PAGE_TYPE +information_schema INNODB_BUFFER_PAGE_LRU TABLE_NAME +information_schema INNODB_BUFFER_PAGE_LRU INDEX_NAME +information_schema INNODB_CMP_PER_INDEX database_name +information_schema INNODB_CMP_PER_INDEX table_name +information_schema INNODB_CMP_PER_INDEX index_name +information_schema INNODB_LOCKS lock_id +information_schema INNODB_LOCKS lock_table +information_schema INNODB_LOCKS lock_index +information_schema INNODB_LOCKS lock_data +information_schema INNODB_LOCK_WAITS requested_lock_id +information_schema INNODB_LOCK_WAITS blocking_lock_id +information_schema INNODB_METRICS NAME +information_schema INNODB_METRICS SUBSYSTEM +information_schema INNODB_METRICS COMMENT +information_schema INNODB_SYS_COLUMNS NAME +information_schema INNODB_SYS_FIELDS NAME +information_schema INNODB_SYS_FOREIGN ID +information_schema INNODB_SYS_FOREIGN FOR_NAME +information_schema INNODB_SYS_FOREIGN REF_NAME +information_schema INNODB_SYS_FOREIGN_COLS ID +information_schema INNODB_SYS_FOREIGN_COLS FOR_COL_NAME +information_schema INNODB_SYS_FOREIGN_COLS REF_COL_NAME +information_schema INNODB_SYS_INDEXES NAME +information_schema INNODB_SYS_TABLES NAME +information_schema INNODB_TRX trx_state +information_schema INNODB_TRX trx_requested_lock_id +information_schema INNODB_TRX trx_query +information_schema INNODB_TRX trx_operation_state +information_schema INNODB_TRX trx_last_foreign_key_error +information_schema KEYWORDS WORD +information_schema KEY_CACHES KEY_CACHE_NAME +information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG +information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA +information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME +information_schema KEY_COLUMN_USAGE TABLE_CATALOG +information_schema KEY_COLUMN_USAGE TABLE_SCHEMA +information_schema KEY_COLUMN_USAGE TABLE_NAME +information_schema KEY_COLUMN_USAGE COLUMN_NAME +information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA +information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME +information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME information_schema OPTIMIZER_TRACE QUERY information_schema OPTIMIZER_TRACE TRACE +information_schema PARAMETERS SPECIFIC_CATALOG +information_schema PARAMETERS SPECIFIC_SCHEMA +information_schema PARAMETERS SPECIFIC_NAME +information_schema PARAMETERS PARAMETER_NAME +information_schema PARAMETERS DATA_TYPE +information_schema PARAMETERS CHARACTER_SET_NAME +information_schema PARAMETERS COLLATION_NAME information_schema PARAMETERS DTD_IDENTIFIER +information_schema PARTITIONS TABLE_CATALOG +information_schema PARTITIONS TABLE_SCHEMA +information_schema PARTITIONS TABLE_NAME +information_schema PARTITIONS PARTITION_NAME +information_schema PARTITIONS SUBPARTITION_NAME +information_schema PARTITIONS PARTITION_METHOD +information_schema PARTITIONS SUBPARTITION_METHOD information_schema PARTITIONS PARTITION_EXPRESSION information_schema PARTITIONS SUBPARTITION_EXPRESSION information_schema PARTITIONS PARTITION_DESCRIPTION +information_schema PARTITIONS PARTITION_COMMENT +information_schema PARTITIONS NODEGROUP +information_schema PARTITIONS TABLESPACE_NAME +information_schema PLUGINS PLUGIN_NAME +information_schema PLUGINS PLUGIN_VERSION +information_schema PLUGINS PLUGIN_STATUS +information_schema PLUGINS PLUGIN_TYPE +information_schema PLUGINS PLUGIN_TYPE_VERSION +information_schema PLUGINS PLUGIN_LIBRARY +information_schema PLUGINS PLUGIN_LIBRARY_VERSION +information_schema PLUGINS PLUGIN_AUTHOR information_schema PLUGINS PLUGIN_DESCRIPTION +information_schema PLUGINS PLUGIN_LICENSE +information_schema PLUGINS LOAD_OPTION +information_schema PLUGINS PLUGIN_MATURITY +information_schema PLUGINS PLUGIN_AUTH_VERSION +information_schema PROCESSLIST USER +information_schema PROCESSLIST HOST +information_schema PROCESSLIST DB +information_schema PROCESSLIST COMMAND +information_schema PROCESSLIST STATE information_schema PROCESSLIST INFO +information_schema PROFILING STATE +information_schema PROFILING SOURCE_FUNCTION +information_schema PROFILING SOURCE_FILE +information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG +information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA +information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME +information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG +information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA +information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME +information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION +information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE +information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE +information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME +information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME +information_schema ROUTINES SPECIFIC_NAME +information_schema ROUTINES ROUTINE_CATALOG +information_schema ROUTINES ROUTINE_SCHEMA +information_schema ROUTINES ROUTINE_NAME +information_schema ROUTINES ROUTINE_TYPE +information_schema ROUTINES DATA_TYPE +information_schema ROUTINES CHARACTER_SET_NAME +information_schema ROUTINES COLLATION_NAME information_schema ROUTINES DTD_IDENTIFIER information_schema ROUTINES ROUTINE_DEFINITION +information_schema ROUTINES EXTERNAL_NAME +information_schema ROUTINES EXTERNAL_LANGUAGE +information_schema ROUTINES SQL_DATA_ACCESS +information_schema ROUTINES SQL_PATH +information_schema ROUTINES SQL_MODE information_schema ROUTINES ROUTINE_COMMENT +information_schema ROUTINES DEFINER +information_schema ROUTINES CHARACTER_SET_CLIENT +information_schema ROUTINES COLLATION_CONNECTION +information_schema ROUTINES DATABASE_COLLATION +information_schema SCHEMATA CATALOG_NAME +information_schema SCHEMATA SCHEMA_NAME +information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME +information_schema SCHEMATA DEFAULT_COLLATION_NAME +information_schema SCHEMATA SQL_PATH +information_schema SCHEMATA SCHEMA_COMMENT +information_schema SCHEMA_PRIVILEGES GRANTEE +information_schema SCHEMA_PRIVILEGES TABLE_CATALOG +information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA +information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE +information_schema SESSION_STATUS VARIABLE_NAME +information_schema SESSION_STATUS VARIABLE_VALUE +information_schema SESSION_VARIABLES VARIABLE_NAME +information_schema SESSION_VARIABLES VARIABLE_VALUE +information_schema SPATIAL_REF_SYS AUTH_NAME +information_schema SPATIAL_REF_SYS SRTEXT +information_schema SQL_FUNCTIONS FUNCTION +information_schema STATISTICS TABLE_CATALOG +information_schema STATISTICS TABLE_SCHEMA +information_schema STATISTICS TABLE_NAME +information_schema STATISTICS INDEX_SCHEMA +information_schema STATISTICS INDEX_NAME +information_schema STATISTICS COLUMN_NAME +information_schema STATISTICS INDEX_TYPE +information_schema STATISTICS COMMENT +information_schema STATISTICS INDEX_COMMENT +information_schema SYSTEM_VARIABLES VARIABLE_NAME +information_schema SYSTEM_VARIABLES SESSION_VALUE +information_schema SYSTEM_VARIABLES GLOBAL_VALUE +information_schema SYSTEM_VARIABLES GLOBAL_VALUE_ORIGIN +information_schema SYSTEM_VARIABLES DEFAULT_VALUE +information_schema SYSTEM_VARIABLES VARIABLE_SCOPE +information_schema SYSTEM_VARIABLES VARIABLE_TYPE +information_schema SYSTEM_VARIABLES VARIABLE_COMMENT +information_schema SYSTEM_VARIABLES NUMERIC_MIN_VALUE +information_schema SYSTEM_VARIABLES NUMERIC_MAX_VALUE +information_schema SYSTEM_VARIABLES NUMERIC_BLOCK_SIZE information_schema SYSTEM_VARIABLES ENUM_VALUE_LIST +information_schema SYSTEM_VARIABLES COMMAND_LINE_ARGUMENT +information_schema SYSTEM_VARIABLES GLOBAL_VALUE_PATH +information_schema TABLES TABLE_CATALOG +information_schema TABLES TABLE_SCHEMA +information_schema TABLES TABLE_NAME +information_schema TABLES TABLE_TYPE +information_schema TABLES ENGINE +information_schema TABLES TABLE_COLLATION +information_schema TABLES CREATE_OPTIONS +information_schema TABLES TABLE_COMMENT +information_schema TABLESPACES TABLESPACE_NAME +information_schema TABLESPACES ENGINE +information_schema TABLESPACES TABLESPACE_TYPE +information_schema TABLESPACES LOGFILE_GROUP_NAME +information_schema TABLESPACES TABLESPACE_COMMENT +information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG +information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA +information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME +information_schema TABLE_CONSTRAINTS TABLE_SCHEMA +information_schema TABLE_CONSTRAINTS TABLE_NAME +information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE +information_schema TABLE_PRIVILEGES GRANTEE +information_schema TABLE_PRIVILEGES TABLE_CATALOG +information_schema TABLE_PRIVILEGES TABLE_SCHEMA +information_schema TABLE_PRIVILEGES TABLE_NAME +information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE +information_schema TABLE_STATISTICS TABLE_SCHEMA +information_schema TABLE_STATISTICS TABLE_NAME +information_schema TRIGGERS TRIGGER_CATALOG +information_schema TRIGGERS TRIGGER_SCHEMA +information_schema TRIGGERS TRIGGER_NAME +information_schema TRIGGERS EVENT_OBJECT_CATALOG +information_schema TRIGGERS EVENT_OBJECT_SCHEMA +information_schema TRIGGERS EVENT_OBJECT_TABLE information_schema TRIGGERS ACTION_CONDITION information_schema TRIGGERS ACTION_STATEMENT +information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE +information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE +information_schema TRIGGERS SQL_MODE +information_schema TRIGGERS DEFINER +information_schema TRIGGERS CHARACTER_SET_CLIENT +information_schema TRIGGERS COLLATION_CONNECTION +information_schema TRIGGERS DATABASE_COLLATION +information_schema USER_PRIVILEGES GRANTEE +information_schema USER_PRIVILEGES TABLE_CATALOG +information_schema USER_PRIVILEGES PRIVILEGE_TYPE +information_schema USER_STATISTICS USER +information_schema VIEWS TABLE_CATALOG +information_schema VIEWS TABLE_SCHEMA +information_schema VIEWS TABLE_NAME information_schema VIEWS VIEW_DEFINITION +information_schema VIEWS DEFINER +information_schema VIEWS CHARACTER_SET_CLIENT +information_schema VIEWS COLLATION_CONNECTION mysql global_priv Priv +sys innodb_buffer_stats_by_table object_name +sys innodb_lock_waits locked_table +sys innodb_lock_waits locked_index sys innodb_lock_waits waiting_query +sys innodb_lock_waits waiting_lock_id sys innodb_lock_waits blocking_query +sys innodb_lock_waits blocking_lock_id +sys metrics Variable_name sys processlist current_statement sys processlist last_statement +sys schema_auto_increment_columns table_schema +sys schema_auto_increment_columns table_name +sys schema_auto_increment_columns column_name +sys schema_auto_increment_columns data_type sys schema_auto_increment_columns column_type +sys schema_object_overview db +sys schema_object_overview object_type +sys schema_redundant_indexes table_schema +sys schema_redundant_indexes table_name +sys schema_redundant_indexes redundant_index_name +sys schema_redundant_indexes dominant_index_name +sys schema_redundant_indexes sql_drop_index sys schema_table_lock_waits waiting_query sys session current_statement sys session last_statement @@ -911,8 +1212,18 @@ mysql user x509_subject mysql user plugin mysql user authentication_string mysql user default_role +sys x$innodb_buffer_stats_by_table object_name +sys x$innodb_lock_waits locked_table +sys x$innodb_lock_waits locked_index +sys x$innodb_lock_waits waiting_query +sys x$innodb_lock_waits waiting_lock_id +sys x$innodb_lock_waits blocking_query +sys x$innodb_lock_waits blocking_lock_id sys x$processlist current_statement sys x$processlist last_statement +sys x$schema_flattened_keys table_schema +sys x$schema_flattened_keys table_name +sys x$schema_flattened_keys index_name sys x$schema_table_lock_waits waiting_query sys x$session current_statement sys x$session last_statement @@ -1309,15 +1620,14 @@ DROP TABLE t1; DROP VIEW v1; DROP FUNCTION func1; DROP FUNCTION func2; -select column_type, group_concat(table_schema, '.', table_name), count(*) as num +select column_type, group_concat(table_schema, '.', table_name order by table_schema, table_name), count(*) as num from information_schema.columns where table_schema='information_schema' and (column_type = 'varchar(7)' or column_type = 'varchar(20)' or column_type = 'varchar(27)') group by column_type order by num; -column_type group_concat(table_schema, '.', table_name) num +column_type group_concat(table_schema, '.', table_name order by table_schema, table_name) num varchar(7) information_schema.ROUTINES,information_schema.VIEWS 2 -varchar(20) information_schema.ALL_PLUGINS,information_schema.ALL_PLUGINS,information_schema.ALL_PLUGINS,information_schema.FILES,information_schema.FILES,information_schema.PLUGINS,information_schema.PLUGINS,information_schema.PLUGINS,information_schema.PROFILING 9 create table t1(f1 char(1) not null, f2 char(9) not null) default character set utf8; select CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH from @@ -2505,16 +2815,16 @@ drop table t1; SET SQL_MODE= 'EMPTY_STRING_IS_NULL'; CREATE OR REPLACE TABLE t1 AS SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE 1 = 0; SHOW returned: CREATE TABLE `t1` ( - `TABLE_NAME` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL + `TABLE_NAME` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci DROP TABLE t1; CREATE TABLE `t1` ( - `TABLE_NAME` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL + `TABLE_NAME` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( - `TABLE_NAME` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL + `TABLE_NAME` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci DROP TABLE t1; SET SQL_MODE=DEFAULT; diff --git a/mysql-test/main/information_schema.test b/mysql-test/main/information_schema.test index 1ce70a52b341c..642e41dce4241 100644 --- a/mysql-test/main/information_schema.test +++ b/mysql-test/main/information_schema.test @@ -853,7 +853,7 @@ DROP FUNCTION func2; # # Bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema # -select column_type, group_concat(table_schema, '.', table_name), count(*) as num +select column_type, group_concat(table_schema, '.', table_name order by table_schema, table_name), count(*) as num from information_schema.columns where table_schema='information_schema' and (column_type = 'varchar(7)' or column_type = 'varchar(20)' diff --git a/mysql-test/main/information_schema_parameters.result b/mysql-test/main/information_schema_parameters.result index 0abc0f4f38838..8eb3d8d076342 100644 --- a/mysql-test/main/information_schema_parameters.result +++ b/mysql-test/main/information_schema_parameters.result @@ -3,20 +3,20 @@ USE INFORMATION_SCHEMA; SHOW CREATE TABLE INFORMATION_SCHEMA.PARAMETERS; Table Create Table PARAMETERS CREATE TEMPORARY TABLE `PARAMETERS` ( - `SPECIFIC_CATALOG` varchar(512) NOT NULL, - `SPECIFIC_SCHEMA` varchar(64) NOT NULL, - `SPECIFIC_NAME` varchar(64) NOT NULL, + `SPECIFIC_CATALOG` longtext NOT NULL, + `SPECIFIC_SCHEMA` longtext NOT NULL, + `SPECIFIC_NAME` longtext NOT NULL, `ORDINAL_POSITION` int(21) NOT NULL, `PARAMETER_MODE` varchar(5), - `PARAMETER_NAME` varchar(64), - `DATA_TYPE` varchar(64) NOT NULL, + `PARAMETER_NAME` longtext, + `DATA_TYPE` longtext NOT NULL, `CHARACTER_MAXIMUM_LENGTH` int(21), `CHARACTER_OCTET_LENGTH` int(21), `NUMERIC_PRECISION` int(21), `NUMERIC_SCALE` int(21), `DATETIME_PRECISION` bigint(21) unsigned, - `CHARACTER_SET_NAME` varchar(64), - `COLLATION_NAME` varchar(64), + `CHARACTER_SET_NAME` longtext, + `COLLATION_NAME` longtext, `DTD_IDENTIFIER` longtext NOT NULL, `ROUTINE_TYPE` varchar(9) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci @@ -31,15 +31,15 @@ COLUMN_NAME SPECIFIC_CATALOG ORDINAL_POSITION 1 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 512 -CHARACTER_OCTET_LENGTH 1536 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(512) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -53,15 +53,15 @@ COLUMN_NAME SPECIFIC_SCHEMA ORDINAL_POSITION 2 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -75,15 +75,15 @@ COLUMN_NAME SPECIFIC_NAME ORDINAL_POSITION 3 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -141,15 +141,15 @@ COLUMN_NAME PARAMETER_NAME ORDINAL_POSITION 6 COLUMN_DEFAULT NULL IS_NULLABLE YES -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -163,15 +163,15 @@ COLUMN_NAME DATA_TYPE ORDINAL_POSITION 7 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -295,15 +295,15 @@ COLUMN_NAME CHARACTER_SET_NAME ORDINAL_POSITION 13 COLUMN_DEFAULT NULL IS_NULLABLE YES -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -317,15 +317,15 @@ COLUMN_NAME COLLATION_NAME ORDINAL_POSITION 14 COLUMN_DEFAULT NULL IS_NULLABLE YES -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -378,20 +378,20 @@ IS_GENERATED NEVER GENERATION_EXPRESSION NULL DESCRIBE INFORMATION_SCHEMA.PARAMETERS; Field Type Null Key Default Extra -SPECIFIC_CATALOG varchar(512) NO NULL -SPECIFIC_SCHEMA varchar(64) NO NULL -SPECIFIC_NAME varchar(64) NO NULL +SPECIFIC_CATALOG longtext NO NULL +SPECIFIC_SCHEMA longtext NO NULL +SPECIFIC_NAME longtext NO NULL ORDINAL_POSITION int(21) NO NULL PARAMETER_MODE varchar(5) YES NULL -PARAMETER_NAME varchar(64) YES NULL -DATA_TYPE varchar(64) NO NULL +PARAMETER_NAME longtext YES NULL +DATA_TYPE longtext NO NULL CHARACTER_MAXIMUM_LENGTH int(21) YES NULL CHARACTER_OCTET_LENGTH int(21) YES NULL NUMERIC_PRECISION int(21) YES NULL NUMERIC_SCALE int(21) YES NULL DATETIME_PRECISION bigint(21) unsigned YES NULL -CHARACTER_SET_NAME varchar(64) YES NULL -COLLATION_NAME varchar(64) YES NULL +CHARACTER_SET_NAME longtext YES NULL +COLLATION_NAME longtext YES NULL DTD_IDENTIFIER longtext NO NULL ROUTINE_TYPE varchar(9) NO NULL # ========== parameters.2 ========== diff --git a/mysql-test/main/information_schema_routines.result b/mysql-test/main/information_schema_routines.result index 4d73258b4941d..983da5289eac9 100644 --- a/mysql-test/main/information_schema_routines.result +++ b/mysql-test/main/information_schema_routines.result @@ -5,37 +5,37 @@ USE INFORMATION_SCHEMA; SHOW CREATE TABLE INFORMATION_SCHEMA.ROUTINES; Table Create Table ROUTINES CREATE TEMPORARY TABLE `ROUTINES` ( - `SPECIFIC_NAME` varchar(64) NOT NULL, - `ROUTINE_CATALOG` varchar(512) NOT NULL, - `ROUTINE_SCHEMA` varchar(64) NOT NULL, - `ROUTINE_NAME` varchar(64) NOT NULL, - `ROUTINE_TYPE` varchar(13) NOT NULL, - `DATA_TYPE` varchar(64) NOT NULL, + `SPECIFIC_NAME` longtext NOT NULL, + `ROUTINE_CATALOG` longtext NOT NULL, + `ROUTINE_SCHEMA` longtext NOT NULL, + `ROUTINE_NAME` longtext NOT NULL, + `ROUTINE_TYPE` longtext NOT NULL, + `DATA_TYPE` longtext NOT NULL, `CHARACTER_MAXIMUM_LENGTH` int(21), `CHARACTER_OCTET_LENGTH` int(21), `NUMERIC_PRECISION` int(21), `NUMERIC_SCALE` int(21), `DATETIME_PRECISION` bigint(21) unsigned, - `CHARACTER_SET_NAME` varchar(64), - `COLLATION_NAME` varchar(64), + `CHARACTER_SET_NAME` longtext, + `COLLATION_NAME` longtext, `DTD_IDENTIFIER` longtext, `ROUTINE_BODY` varchar(8) NOT NULL, `ROUTINE_DEFINITION` longtext, - `EXTERNAL_NAME` varchar(64), - `EXTERNAL_LANGUAGE` varchar(64), + `EXTERNAL_NAME` longtext, + `EXTERNAL_LANGUAGE` longtext, `PARAMETER_STYLE` varchar(8) NOT NULL, `IS_DETERMINISTIC` varchar(3) NOT NULL, - `SQL_DATA_ACCESS` varchar(64) NOT NULL, - `SQL_PATH` varchar(64), + `SQL_DATA_ACCESS` longtext NOT NULL, + `SQL_PATH` longtext, `SECURITY_TYPE` varchar(7) NOT NULL, `CREATED` datetime NOT NULL, `LAST_ALTERED` datetime NOT NULL, - `SQL_MODE` varchar(8192) NOT NULL, + `SQL_MODE` longtext NOT NULL, `ROUTINE_COMMENT` longtext NOT NULL, - `DEFINER` varchar(384) NOT NULL, - `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, - `COLLATION_CONNECTION` varchar(64) NOT NULL, - `DATABASE_COLLATION` varchar(64) NOT NULL + `DEFINER` longtext NOT NULL, + `CHARACTER_SET_CLIENT` longtext NOT NULL, + `COLLATION_CONNECTION` longtext NOT NULL, + `DATABASE_COLLATION` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SELECT * FROM information_schema.columns WHERE table_schema = 'information_schema' @@ -48,15 +48,15 @@ COLUMN_NAME SPECIFIC_NAME ORDINAL_POSITION 1 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -70,15 +70,15 @@ COLUMN_NAME ROUTINE_CATALOG ORDINAL_POSITION 2 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 512 -CHARACTER_OCTET_LENGTH 1536 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(512) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -92,15 +92,15 @@ COLUMN_NAME ROUTINE_SCHEMA ORDINAL_POSITION 3 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -114,15 +114,15 @@ COLUMN_NAME ROUTINE_NAME ORDINAL_POSITION 4 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -136,15 +136,15 @@ COLUMN_NAME ROUTINE_TYPE ORDINAL_POSITION 5 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 13 -CHARACTER_OCTET_LENGTH 39 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(13) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -158,15 +158,15 @@ COLUMN_NAME DATA_TYPE ORDINAL_POSITION 6 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -290,15 +290,15 @@ COLUMN_NAME CHARACTER_SET_NAME ORDINAL_POSITION 12 COLUMN_DEFAULT NULL IS_NULLABLE YES -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -312,15 +312,15 @@ COLUMN_NAME COLLATION_NAME ORDINAL_POSITION 13 COLUMN_DEFAULT NULL IS_NULLABLE YES -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -400,15 +400,15 @@ COLUMN_NAME EXTERNAL_NAME ORDINAL_POSITION 17 COLUMN_DEFAULT NULL IS_NULLABLE YES -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -422,15 +422,15 @@ COLUMN_NAME EXTERNAL_LANGUAGE ORDINAL_POSITION 18 COLUMN_DEFAULT NULL IS_NULLABLE YES -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -488,15 +488,15 @@ COLUMN_NAME SQL_DATA_ACCESS ORDINAL_POSITION 21 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -510,15 +510,15 @@ COLUMN_NAME SQL_PATH ORDINAL_POSITION 22 COLUMN_DEFAULT NULL IS_NULLABLE YES -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -598,15 +598,15 @@ COLUMN_NAME SQL_MODE ORDINAL_POSITION 26 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 8192 -CHARACTER_OCTET_LENGTH 24576 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(8192) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -642,15 +642,15 @@ COLUMN_NAME DEFINER ORDINAL_POSITION 28 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 384 -CHARACTER_OCTET_LENGTH 1152 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(384) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -664,15 +664,15 @@ COLUMN_NAME CHARACTER_SET_CLIENT ORDINAL_POSITION 29 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 32 -CHARACTER_OCTET_LENGTH 96 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(32) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -686,15 +686,15 @@ COLUMN_NAME COLLATION_CONNECTION ORDINAL_POSITION 30 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -708,15 +708,15 @@ COLUMN_NAME DATABASE_COLLATION ORDINAL_POSITION 31 COLUMN_DEFAULT NULL IS_NULLABLE NO -DATA_TYPE varchar -CHARACTER_MAXIMUM_LENGTH 64 -CHARACTER_OCTET_LENGTH 192 +DATA_TYPE longtext +CHARACTER_MAXIMUM_LENGTH 4294967295 +CHARACTER_OCTET_LENGTH 4294967295 NUMERIC_PRECISION NULL NUMERIC_SCALE NULL DATETIME_PRECISION NULL CHARACTER_SET_NAME utf8mb3 COLLATION_NAME utf8mb3_general_ci -COLUMN_TYPE varchar(64) +COLUMN_TYPE longtext COLUMN_KEY EXTRA PRIVILEGES # @@ -725,37 +725,37 @@ IS_GENERATED NEVER GENERATION_EXPRESSION NULL DESCRIBE INFORMATION_SCHEMA.ROUTINES; Field Type Null Key Default Extra -SPECIFIC_NAME varchar(64) NO NULL -ROUTINE_CATALOG varchar(512) NO NULL -ROUTINE_SCHEMA varchar(64) NO NULL -ROUTINE_NAME varchar(64) NO NULL -ROUTINE_TYPE varchar(13) NO NULL -DATA_TYPE varchar(64) NO NULL +SPECIFIC_NAME longtext NO NULL +ROUTINE_CATALOG longtext NO NULL +ROUTINE_SCHEMA longtext NO NULL +ROUTINE_NAME longtext NO NULL +ROUTINE_TYPE longtext NO NULL +DATA_TYPE longtext NO NULL CHARACTER_MAXIMUM_LENGTH int(21) YES NULL CHARACTER_OCTET_LENGTH int(21) YES NULL NUMERIC_PRECISION int(21) YES NULL NUMERIC_SCALE int(21) YES NULL DATETIME_PRECISION bigint(21) unsigned YES NULL -CHARACTER_SET_NAME varchar(64) YES NULL -COLLATION_NAME varchar(64) YES NULL +CHARACTER_SET_NAME longtext YES NULL +COLLATION_NAME longtext YES NULL DTD_IDENTIFIER longtext YES NULL ROUTINE_BODY varchar(8) NO NULL ROUTINE_DEFINITION longtext YES NULL -EXTERNAL_NAME varchar(64) YES NULL -EXTERNAL_LANGUAGE varchar(64) YES NULL +EXTERNAL_NAME longtext YES NULL +EXTERNAL_LANGUAGE longtext YES NULL PARAMETER_STYLE varchar(8) NO NULL IS_DETERMINISTIC varchar(3) NO NULL -SQL_DATA_ACCESS varchar(64) NO NULL -SQL_PATH varchar(64) YES NULL +SQL_DATA_ACCESS longtext NO NULL +SQL_PATH longtext YES NULL SECURITY_TYPE varchar(7) NO NULL CREATED datetime NO NULL LAST_ALTERED datetime NO NULL -SQL_MODE varchar(8192) NO NULL +SQL_MODE longtext NO NULL ROUTINE_COMMENT longtext NO NULL -DEFINER varchar(384) NO NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL -DATABASE_COLLATION varchar(64) NO NULL +DEFINER longtext NO NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL +DATABASE_COLLATION longtext NO NULL # ========== routines.2 ========== DROP DATABASE IF EXISTS i_s_routines_test; CREATE DATABASE i_s_routines_test; diff --git a/mysql-test/main/mysqldump.result b/mysql-test/main/mysqldump.result index d7b884aadd41b..9bca57b249d6b 100644 --- a/mysql-test/main/mysqldump.result +++ b/mysql-test/main/mysqldump.result @@ -3871,11 +3871,11 @@ DROP TABLE IF EXISTS `TABLES`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TEMPORARY TABLE `TABLES` ( - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, - `TABLE_TYPE` varchar(64) NOT NULL, - `ENGINE` varchar(64), + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, + `TABLE_TYPE` longtext NOT NULL, + `ENGINE` longtext, `VERSION` bigint(21) unsigned, `ROW_FORMAT` varchar(10), `TABLE_ROWS` bigint(21) unsigned, @@ -3888,10 +3888,10 @@ CREATE TEMPORARY TABLE `TABLES` ( `CREATE_TIME` datetime, `UPDATE_TIME` datetime, `CHECK_TIME` datetime, - `TABLE_COLLATION` varchar(64), + `TABLE_COLLATION` longtext, `CHECKSUM` bigint(21) unsigned, - `CREATE_OPTIONS` varchar(2048), - `TABLE_COMMENT` varchar(2048) NOT NULL, + `CREATE_OPTIONS` longtext, + `TABLE_COMMENT` longtext NOT NULL, `MAX_INDEX_LENGTH` bigint(21) unsigned, `TEMPORARY` varchar(1) ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; diff --git a/mysql-test/main/partition_error.result b/mysql-test/main/partition_error.result index 13b3d229661fc..9c15fd08975c8 100644 --- a/mysql-test/main/partition_error.result +++ b/mysql-test/main/partition_error.result @@ -1872,10 +1872,10 @@ SUBPARTITION BY HASH (`a`) SELECT PARTITION_NAME, SUBPARTITION_NAME, PARTITION_COMMENT FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test'; PARTITION_NAME SUBPARTITION_NAME PARTITION_COMMENT -pUpTo10 p-10sp0 This is a long comment (2050 ascii characters) 50 pUpTo10 partition ......80-! -pUpTo10 p-10sp1 This is a long comment (2050 ascii characters) 50 pUpTo10 partition ......80-! -pMax pMaxsp0 This is a long comment (2050 ascii characters) 50 pMax partition comment .80-! -pMax pMaxsp1 This is a long comment (2050 ascii characters) 50 pMax partition comment .80-! +pUpTo10 p-10sp0 This is a long comment (2050 ascii characters) 50 pUpTo10 partition ......80-!.................. 100 ................................................................................................ 200....................................................................................................................................................................................................................................................................................................... 500 ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 1000 ..............1024-| +pUpTo10 p-10sp1 This is a long comment (2050 ascii characters) 50 pUpTo10 partition ......80-!.................. 100 ................................................................................................ 200....................................................................................................................................................................................................................................................................................................... 500 ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 1000 ..............1024-| +pMax pMaxsp0 This is a long comment (2050 ascii characters) 50 pMax partition comment .80-!.................. 100 ................................................................................................ 200....................................................................................................................................................................................................................................................................................................... 500 ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 1000 ..............1024-| +pMax pMaxsp1 This is a long comment (2050 ascii characters) 50 pMax partition comment .80-!.................. 100 ................................................................................................ 200....................................................................................................................................................................................................................................................................................................... 500 ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 1000 ..............1024-| DROP TABLE t1; CREATE OR REPLACE TABLE t1 ( pk INT PRIMARY KEY, diff --git a/mysql-test/main/partition_explicit_prune.result b/mysql-test/main/partition_explicit_prune.result index 8b49210d11975..58814e504af0d 100644 --- a/mysql-test/main/partition_explicit_prune.result +++ b/mysql-test/main/partition_explicit_prune.result @@ -170,6 +170,7 @@ HANDLER_TMP_WRITE 24 SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE +HANDLER_READ_RND_DELETED 54 HANDLER_READ_RND_NEXT 28 HANDLER_TMP_WRITE 51 # OK, seems to add number of variables processed before HANDLER_WRITE @@ -272,6 +273,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 +HANDLER_READ_RND_DELETED 54 HANDLER_READ_RND_NEXT 28 HANDLER_TMP_WRITE 51 HANDLER_WRITE 2 @@ -283,6 +285,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 +HANDLER_READ_RND_DELETED 108 HANDLER_READ_RND_NEXT 56 HANDLER_TMP_WRITE 78 HANDLER_WRITE 2 @@ -400,6 +403,7 @@ VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_READ_FIRST 1 HANDLER_READ_NEXT 3 +HANDLER_READ_RND_DELETED 54 HANDLER_READ_RND_NEXT 28 HANDLER_TMP_WRITE 51 # + 1 commit @@ -417,6 +421,7 @@ VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 3 HANDLER_READ_FIRST 3 HANDLER_READ_NEXT 4 +HANDLER_READ_RND_DELETED 108 HANDLER_READ_RND_NEXT 56 HANDLER_TMP_WRITE 78 # + 1 commit @@ -433,6 +438,7 @@ VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 4 HANDLER_READ_FIRST 3 HANDLER_READ_NEXT 4 +HANDLER_READ_RND_DELETED 162 HANDLER_READ_RND_NEXT 84 HANDLER_TMP_WRITE 105 # No matching partition, only internal I_S. @@ -445,6 +451,7 @@ VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 5 HANDLER_READ_FIRST 3 HANDLER_READ_NEXT 4 +HANDLER_READ_RND_DELETED 216 HANDLER_READ_RND_NEXT 112 HANDLER_TMP_WRITE 132 # + 18 for unlock (same as lock above) (100 is not in pNeg, no match) @@ -580,6 +587,7 @@ HANDLER_COMMIT 2 HANDLER_DELETE 2 HANDLER_READ_KEY 1 HANDLER_READ_NEXT 1 +HANDLER_READ_RND_DELETED 54 HANDLER_READ_RND_NEXT 28 HANDLER_TMP_WRITE 51 # + 1 commit @@ -598,6 +606,7 @@ HANDLER_COMMIT 2 HANDLER_DELETE 2 HANDLER_READ_KEY 1 HANDLER_READ_NEXT 1 +HANDLER_READ_RND_DELETED 108 HANDLER_READ_RND_NEXT 56 HANDLER_ROLLBACK 1 HANDLER_TMP_WRITE 78 @@ -614,6 +623,7 @@ HANDLER_COMMIT 3 HANDLER_DELETE 2 HANDLER_READ_KEY 1 HANDLER_READ_NEXT 1 +HANDLER_READ_RND_DELETED 162 HANDLER_READ_RND_NEXT 84 HANDLER_ROLLBACK 1 HANDLER_TMP_WRITE 105 @@ -629,6 +639,7 @@ HANDLER_COMMIT 4 HANDLER_DELETE 2 HANDLER_READ_KEY 2 HANDLER_READ_NEXT 1 +HANDLER_READ_RND_DELETED 216 HANDLER_READ_RND_NEXT 112 HANDLER_ROLLBACK 1 HANDLER_TMP_WRITE 132 @@ -652,6 +663,7 @@ HANDLER_DELETE 2 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 2 HANDLER_READ_NEXT 4 +HANDLER_READ_RND_DELETED 270 HANDLER_READ_RND_NEXT 140 HANDLER_ROLLBACK 1 HANDLER_TMP_WRITE 159 @@ -672,6 +684,7 @@ HANDLER_DELETE 2 HANDLER_READ_FIRST 1 HANDLER_READ_KEY 2 HANDLER_READ_NEXT 4 +HANDLER_READ_RND_DELETED 324 HANDLER_READ_RND_NEXT 168 HANDLER_ROLLBACK 1 HANDLER_TMP_WRITE 186 @@ -754,6 +767,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 +HANDLER_READ_RND_DELETED 54 HANDLER_READ_RND_NEXT 28 HANDLER_TMP_WRITE 51 HANDLER_WRITE 10 @@ -763,6 +777,7 @@ SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 +HANDLER_READ_RND_DELETED 108 HANDLER_READ_RND_NEXT 56 HANDLER_TMP_WRITE 78 HANDLER_WRITE 10 @@ -932,6 +947,7 @@ VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_READ_KEY 1 HANDLER_READ_RND 1 +HANDLER_READ_RND_DELETED 54 HANDLER_READ_RND_NEXT 28 HANDLER_TMP_WRITE 51 HANDLER_UPDATE 2 @@ -946,6 +962,7 @@ HANDLER_COMMIT 3 HANDLER_DELETE 1 HANDLER_READ_KEY 2 HANDLER_READ_RND 2 +HANDLER_READ_RND_DELETED 108 HANDLER_READ_RND_NEXT 56 HANDLER_TMP_WRITE 78 HANDLER_UPDATE 3 @@ -962,6 +979,7 @@ HANDLER_COMMIT 3 HANDLER_DELETE 1 HANDLER_READ_KEY 2 HANDLER_READ_RND 2 +HANDLER_READ_RND_DELETED 162 HANDLER_READ_RND_NEXT 84 HANDLER_TMP_WRITE 105 HANDLER_UPDATE 3 @@ -1023,6 +1041,7 @@ WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VARIABLE_VALUE > 0; VARIABLE_NAME VARIABLE_VALUE HANDLER_COMMIT 2 HANDLER_READ_KEY 1 +HANDLER_READ_RND_DELETED 54 HANDLER_READ_RND_NEXT 28 HANDLER_TMP_WRITE 51 # + 3 read key (1 innodb_get_index in records_in_range @@ -1035,6 +1054,7 @@ HANDLER_COMMIT 3 HANDLER_DELETE 2 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 +HANDLER_READ_RND_DELETED 108 HANDLER_READ_RND_NEXT 56 HANDLER_TMP_WRITE 78 # + 1 delete @@ -1048,6 +1068,7 @@ HANDLER_COMMIT 3 HANDLER_DELETE 2 HANDLER_READ_KEY 3 HANDLER_READ_NEXT 1 +HANDLER_READ_RND_DELETED 162 HANDLER_READ_RND_NEXT 84 HANDLER_TMP_WRITE 105 # + 9 locks diff --git a/mysql-test/main/show_check.result b/mysql-test/main/show_check.result index 7b884cb7692a9..7afc02b076abf 100644 --- a/mysql-test/main/show_check.result +++ b/mysql-test/main/show_check.result @@ -63,19 +63,19 @@ Table Op Msg_type Msg_text test.t1 check status OK show index from t1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema STATISTICS STATISTICS TABLE_NAME Table 253 64 2 N 4097 0 8 +def information_schema STATISTICS STATISTICS TABLE_NAME Table 252 192 2 N 4113 0 8 def information_schema STATISTICS STATISTICS NON_UNIQUE Non_unique 8 1 1 N 36865 0 63 -def information_schema STATISTICS STATISTICS INDEX_NAME Key_name 253 64 7 N 4097 0 8 +def information_schema STATISTICS STATISTICS INDEX_NAME Key_name 252 192 7 N 4113 0 8 def information_schema STATISTICS STATISTICS SEQ_IN_INDEX Seq_in_index 3 2 1 N 36897 0 63 -def information_schema STATISTICS STATISTICS COLUMN_NAME Column_name 253 64 1 N 4097 0 8 +def information_schema STATISTICS STATISTICS COLUMN_NAME Column_name 252 192 1 N 4113 0 8 def information_schema STATISTICS STATISTICS COLLATION Collation 253 1 1 Y 4096 0 8 def information_schema STATISTICS STATISTICS CARDINALITY Cardinality 8 21 1 Y 36864 0 63 def information_schema STATISTICS STATISTICS SUB_PART Sub_part 8 3 0 Y 36864 0 63 def information_schema STATISTICS STATISTICS PACKED Packed 253 10 0 Y 4096 0 8 def information_schema STATISTICS STATISTICS NULLABLE Null 253 3 0 N 4097 0 8 -def information_schema STATISTICS STATISTICS INDEX_TYPE Index_type 253 16 5 N 4097 0 8 -def information_schema STATISTICS STATISTICS COMMENT Comment 253 16 0 Y 4096 0 8 -def information_schema STATISTICS STATISTICS INDEX_COMMENT Index_comment 253 1024 0 N 4097 0 8 +def information_schema STATISTICS STATISTICS INDEX_TYPE Index_type 252 48 5 N 4113 0 8 +def information_schema STATISTICS STATISTICS COMMENT Comment 252 48 0 Y 4112 0 8 +def information_schema STATISTICS STATISTICS INDEX_COMMENT Index_comment 252 3072 0 N 4113 0 8 def information_schema STATISTICS STATISTICS IGNORED Ignored 253 3 2 N 4097 0 8 Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Ignored t1 0 PRIMARY 1 a A 5 NULL NULL BTREE NO @@ -103,25 +103,25 @@ drop table t1; -- after Bug#29394 is implemented. show variables like "wait_timeout%"; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_NAME Variable_name 253 64 12 N 4097 0 8 -def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_VALUE Value 253 4096 5 N 4097 0 8 +def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_NAME Variable_name 252 192 12 N 4113 0 8 +def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_VALUE Value 252 12288 5 N 4113 0 8 Variable_name Value wait_timeout 28800 show variables like "WAIT_timeout%"; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_NAME Variable_name 253 64 12 N 4097 0 8 -def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_VALUE Value 253 4096 5 N 4097 0 8 +def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_NAME Variable_name 252 192 12 N 4113 0 8 +def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_VALUE Value 252 12288 5 N 4113 0 8 Variable_name Value wait_timeout 28800 show variables like "this_doesn't_exists%"; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_NAME Variable_name 253 64 0 N 4097 0 8 -def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_VALUE Value 253 4096 0 N 4097 0 8 +def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_NAME Variable_name 252 192 0 N 4113 0 8 +def information_schema SESSION_VARIABLES SESSION_VARIABLES VARIABLE_VALUE Value 252 12288 0 N 4113 0 8 Variable_name Value show table status from test like "this_doesn't_exists%"; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema TABLES TABLES TABLE_NAME Name 253 64 0 N 4097 0 8 -def information_schema TABLES TABLES ENGINE Engine 253 64 0 Y 4096 0 8 +def information_schema TABLES TABLES TABLE_NAME Name 252 192 0 N 4113 0 8 +def information_schema TABLES TABLES ENGINE Engine 252 192 0 Y 4112 0 8 def information_schema TABLES TABLES VERSION Version 8 21 0 Y 36896 0 63 def information_schema TABLES TABLES ROW_FORMAT Row_format 253 10 0 Y 4096 0 8 def information_schema TABLES TABLES TABLE_ROWS Rows 8 21 0 Y 36896 0 63 @@ -134,16 +134,16 @@ def information_schema TABLES TABLES AUTO_INCREMENT Auto_increment 8 21 0 Y 3689 def information_schema TABLES TABLES CREATE_TIME Create_time 12 19 0 Y 4224 0 63 def information_schema TABLES TABLES UPDATE_TIME Update_time 12 19 0 Y 4224 0 63 def information_schema TABLES TABLES CHECK_TIME Check_time 12 19 0 Y 4224 0 63 -def information_schema TABLES TABLES TABLE_COLLATION Collation 253 64 0 Y 4096 0 8 +def information_schema TABLES TABLES TABLE_COLLATION Collation 252 192 0 Y 4112 0 8 def information_schema TABLES TABLES CHECKSUM Checksum 8 21 0 Y 36896 0 63 -def information_schema TABLES TABLES CREATE_OPTIONS Create_options 253 2048 0 Y 4096 0 8 -def information_schema TABLES TABLES TABLE_COMMENT Comment 253 2048 0 N 4097 0 8 +def information_schema TABLES TABLES CREATE_OPTIONS Create_options 252 6144 0 Y 4112 0 8 +def information_schema TABLES TABLES TABLE_COMMENT Comment 252 6144 0 N 4113 0 8 def information_schema TABLES TABLES MAX_INDEX_LENGTH Max_index_length 8 21 0 Y 36896 0 63 def information_schema TABLES TABLES TEMPORARY Temporary 253 1 0 Y 4096 0 8 Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment Max_index_length Temporary show databases; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema SCHEMATA SCHEMATA SCHEMA_NAME Database 253 64 18 N 4097 0 8 +def information_schema SCHEMATA SCHEMATA SCHEMA_NAME Database 252 192 18 N 4113 0 8 Database information_schema mtr @@ -153,7 +153,7 @@ sys test show databases like "test%"; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema SCHEMATA SCHEMATA SCHEMA_NAME Database (test%) 253 64 4 N 4097 0 8 +def information_schema SCHEMATA SCHEMATA SCHEMA_NAME Database (test%) 252 192 4 N 4113 0 8 Database (test%) test create table t1 (f1 int not null, f2 int not null, f3 int not null, f4 int not null, primary key(f1,f2,f3,f4)); @@ -649,19 +649,19 @@ PRIMARY KEY(field1(1000)) ); show index from t1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema STATISTICS STATISTICS TABLE_NAME Table 253 64 2 N 4097 0 63 +def information_schema STATISTICS STATISTICS TABLE_NAME Table 252 192 2 N 4113 0 63 def information_schema STATISTICS STATISTICS NON_UNIQUE Non_unique 8 1 1 N 36865 0 63 -def information_schema STATISTICS STATISTICS INDEX_NAME Key_name 253 64 7 N 4097 0 63 +def information_schema STATISTICS STATISTICS INDEX_NAME Key_name 252 192 7 N 4113 0 63 def information_schema STATISTICS STATISTICS SEQ_IN_INDEX Seq_in_index 3 2 1 N 36897 0 63 -def information_schema STATISTICS STATISTICS COLUMN_NAME Column_name 253 64 6 N 4097 0 63 +def information_schema STATISTICS STATISTICS COLUMN_NAME Column_name 252 192 6 N 4113 0 63 def information_schema STATISTICS STATISTICS COLLATION Collation 253 1 1 Y 4096 0 63 def information_schema STATISTICS STATISTICS CARDINALITY Cardinality 8 21 1 Y 36864 0 63 def information_schema STATISTICS STATISTICS SUB_PART Sub_part 8 3 4 Y 36864 0 63 def information_schema STATISTICS STATISTICS PACKED Packed 253 10 0 Y 4096 0 63 def information_schema STATISTICS STATISTICS NULLABLE Null 253 3 0 N 4097 0 63 -def information_schema STATISTICS STATISTICS INDEX_TYPE Index_type 253 16 5 N 4097 0 63 -def information_schema STATISTICS STATISTICS COMMENT Comment 253 16 0 Y 4096 0 63 -def information_schema STATISTICS STATISTICS INDEX_COMMENT Index_comment 253 1024 0 N 4097 0 63 +def information_schema STATISTICS STATISTICS INDEX_TYPE Index_type 252 48 5 N 4113 0 63 +def information_schema STATISTICS STATISTICS COMMENT Comment 252 48 0 Y 4112 0 63 +def information_schema STATISTICS STATISTICS INDEX_COMMENT Index_comment 252 3072 0 N 4113 0 63 def information_schema STATISTICS STATISTICS IGNORED Ignored 253 3 2 N 4097 0 63 Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Ignored t1 0 PRIMARY 1 field1 A 0 1000 NULL BTREE NO @@ -877,17 +877,17 @@ set names utf8; ---------------------------------------------------------------- SHOW CHARACTER SET LIKE 'utf8mb3'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema CHARACTER_SETS CHARACTER_SETS CHARACTER_SET_NAME Charset 253 96 7 N 4097 0 33 -def information_schema CHARACTER_SETS CHARACTER_SETS DESCRIPTION Description 253 180 13 N 4097 0 33 -def information_schema CHARACTER_SETS CHARACTER_SETS DEFAULT_COLLATE_NAME Default collation 253 192 18 N 4097 0 33 +def information_schema CHARACTER_SETS CHARACTER_SETS CHARACTER_SET_NAME Charset 252 288 7 N 4113 0 33 +def information_schema CHARACTER_SETS CHARACTER_SETS DESCRIPTION Description 252 540 13 N 4113 0 33 +def information_schema CHARACTER_SETS CHARACTER_SETS DEFAULT_COLLATE_NAME Default collation 252 576 18 N 4113 0 33 def information_schema CHARACTER_SETS CHARACTER_SETS MAXLEN Maxlen 8 3 1 N 36865 0 63 Charset Description Default collation Maxlen utf8mb3 UTF-8 Unicode utf8mb3_general_ci 3 ---------------------------------------------------------------- SHOW COLLATION LIKE 'latin1_bin'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema COLLATIONS COLLATIONS COLLATION_NAME Collation 253 192 10 N 4097 0 33 -def information_schema COLLATIONS COLLATIONS CHARACTER_SET_NAME Charset 253 96 6 Y 4096 0 33 +def information_schema COLLATIONS COLLATIONS COLLATION_NAME Collation 252 576 10 N 4113 0 33 +def information_schema COLLATIONS COLLATIONS CHARACTER_SET_NAME Charset 252 288 6 Y 4112 0 33 def information_schema COLLATIONS COLLATIONS ID Id 8 11 2 Y 36864 0 63 def information_schema COLLATIONS COLLATIONS IS_DEFAULT Default 253 9 0 Y 4096 0 33 def information_schema COLLATIONS COLLATIONS IS_COMPILED Compiled 253 9 3 N 4097 0 33 @@ -904,7 +904,7 @@ mysqltest1 CREATE DATABASE `mysqltest1` /*!40100 DEFAULT CHARACTER SET latin1 CO ---------------------------------------------------------------- SHOW DATABASES LIKE 'mysqltest1'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema SCHEMATA SCHEMATA SCHEMA_NAME Database (mysqltest1) 253 192 10 N 4097 0 33 +def information_schema SCHEMATA SCHEMATA SCHEMA_NAME Database (mysqltest1) 252 576 10 N 4113 0 33 Database (mysqltest1) mysqltest1 ---------------------------------------------------------------- @@ -920,19 +920,19 @@ t1 CREATE TABLE `t1` ( ---------------------------------------------------------------- SHOW INDEX FROM t1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema STATISTICS STATISTICS TABLE_NAME Table 253 192 2 N 4097 0 33 +def information_schema STATISTICS STATISTICS TABLE_NAME Table 252 576 2 N 4113 0 33 def information_schema STATISTICS STATISTICS NON_UNIQUE Non_unique 8 1 1 N 36865 0 63 -def information_schema STATISTICS STATISTICS INDEX_NAME Key_name 253 192 7 N 4097 0 33 +def information_schema STATISTICS STATISTICS INDEX_NAME Key_name 252 576 7 N 4113 0 33 def information_schema STATISTICS STATISTICS SEQ_IN_INDEX Seq_in_index 3 2 1 N 36897 0 63 -def information_schema STATISTICS STATISTICS COLUMN_NAME Column_name 253 192 1 N 4097 0 33 +def information_schema STATISTICS STATISTICS COLUMN_NAME Column_name 252 576 1 N 4113 0 33 def information_schema STATISTICS STATISTICS COLLATION Collation 253 3 1 Y 4096 0 33 def information_schema STATISTICS STATISTICS CARDINALITY Cardinality 8 21 1 Y 36864 0 63 def information_schema STATISTICS STATISTICS SUB_PART Sub_part 8 3 0 Y 36864 0 63 def information_schema STATISTICS STATISTICS PACKED Packed 253 30 0 Y 4096 0 33 def information_schema STATISTICS STATISTICS NULLABLE Null 253 9 0 N 4097 0 33 -def information_schema STATISTICS STATISTICS INDEX_TYPE Index_type 253 48 5 N 4097 0 33 -def information_schema STATISTICS STATISTICS COMMENT Comment 253 48 0 Y 4096 0 33 -def information_schema STATISTICS STATISTICS INDEX_COMMENT Index_comment 253 3072 0 N 4097 0 33 +def information_schema STATISTICS STATISTICS INDEX_TYPE Index_type 252 144 5 N 4113 0 33 +def information_schema STATISTICS STATISTICS COMMENT Comment 252 144 0 Y 4112 0 33 +def information_schema STATISTICS STATISTICS INDEX_COMMENT Index_comment 252 9216 0 N 4113 0 33 def information_schema STATISTICS STATISTICS IGNORED Ignored 253 9 2 N 4097 0 33 Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Ignored t1 0 PRIMARY 1 c A 0 NULL NULL BTREE NO @@ -950,15 +950,15 @@ TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't1'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema TABLES TABLES TABLE_CATALOG TABLE_CATALOG 253 1536 3 N 4097 0 33 -def information_schema TABLES TABLES TABLE_SCHEMA TABLE_SCHEMA 253 192 4 N 4097 0 33 -def information_schema TABLES TABLES TABLE_NAME TABLE_NAME 253 192 2 N 4097 0 33 -def information_schema TABLES TABLES TABLE_TYPE TABLE_TYPE 253 192 10 N 4097 0 33 -def information_schema TABLES TABLES ENGINE ENGINE 253 192 6 Y 4096 0 33 +def information_schema TABLES TABLES TABLE_CATALOG TABLE_CATALOG 252 4608 3 N 4113 0 33 +def information_schema TABLES TABLES TABLE_SCHEMA TABLE_SCHEMA 252 576 4 N 4113 0 33 +def information_schema TABLES TABLES TABLE_NAME TABLE_NAME 252 576 2 N 4113 0 33 +def information_schema TABLES TABLES TABLE_TYPE TABLE_TYPE 252 576 10 N 4113 0 33 +def information_schema TABLES TABLES ENGINE ENGINE 252 576 6 Y 4112 0 33 def information_schema TABLES TABLES ROW_FORMAT ROW_FORMAT 253 30 5 Y 4096 0 33 -def information_schema TABLES TABLES TABLE_COLLATION TABLE_COLLATION 253 192 17 Y 4096 0 33 -def information_schema TABLES TABLES CREATE_OPTIONS CREATE_OPTIONS 253 6144 0 Y 4096 0 33 -def information_schema TABLES TABLES TABLE_COMMENT TABLE_COMMENT 253 6144 0 N 4097 0 33 +def information_schema TABLES TABLES TABLE_COLLATION TABLE_COLLATION 252 576 17 Y 4112 0 33 +def information_schema TABLES TABLES CREATE_OPTIONS CREATE_OPTIONS 252 18432 0 Y 4112 0 33 +def information_schema TABLES TABLES TABLE_COMMENT TABLE_COMMENT 252 18432 0 N 4113 0 33 TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE ROW_FORMAT TABLE_COLLATION CREATE_OPTIONS TABLE_COMMENT def test t1 BASE TABLE MyISAM Fixed latin1_swedish_ci ---------------------------------------------------------------- @@ -980,53 +980,53 @@ COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 't1'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema COLUMNS COLUMNS TABLE_CATALOG TABLE_CATALOG 253 1536 3 N 4097 0 33 -def information_schema COLUMNS COLUMNS TABLE_SCHEMA TABLE_SCHEMA 253 192 4 N 4097 0 33 -def information_schema COLUMNS COLUMNS TABLE_NAME TABLE_NAME 253 192 2 N 4097 0 33 -def information_schema COLUMNS COLUMNS COLUMN_NAME COLUMN_NAME 253 192 1 N 4097 0 33 +def information_schema COLUMNS COLUMNS TABLE_CATALOG TABLE_CATALOG 252 4608 3 N 4113 0 33 +def information_schema COLUMNS COLUMNS TABLE_SCHEMA TABLE_SCHEMA 252 576 4 N 4113 0 33 +def information_schema COLUMNS COLUMNS TABLE_NAME TABLE_NAME 252 576 2 N 4113 0 33 +def information_schema COLUMNS COLUMNS COLUMN_NAME COLUMN_NAME 252 576 1 N 4113 0 33 def information_schema COLUMNS COLUMNS COLUMN_DEFAULT COLUMN_DEFAULT 252 589788 0 Y 4112 0 33 def information_schema COLUMNS COLUMNS IS_NULLABLE IS_NULLABLE 253 9 2 N 4097 0 33 -def information_schema COLUMNS COLUMNS DATA_TYPE DATA_TYPE 253 192 3 N 4097 0 33 -def information_schema COLUMNS COLUMNS CHARACTER_SET_NAME CHARACTER_SET_NAME 253 96 0 Y 4096 0 33 -def information_schema COLUMNS COLUMNS COLLATION_NAME COLLATION_NAME 253 192 0 Y 4096 0 33 +def information_schema COLUMNS COLUMNS DATA_TYPE DATA_TYPE 252 576 3 N 4113 0 33 +def information_schema COLUMNS COLUMNS CHARACTER_SET_NAME CHARACTER_SET_NAME 252 288 0 Y 4112 0 33 +def information_schema COLUMNS COLUMNS COLLATION_NAME COLLATION_NAME 252 576 0 Y 4112 0 33 def information_schema COLUMNS COLUMNS COLUMN_TYPE COLUMN_TYPE 252 589815 7 N 4113 0 33 def information_schema COLUMNS COLUMNS COLUMN_KEY COLUMN_KEY 253 9 3 N 4097 0 33 -def information_schema COLUMNS COLUMNS EXTRA EXTRA 253 240 0 N 4097 0 33 -def information_schema COLUMNS COLUMNS PRIVILEGES PRIVILEGES 253 240 31 N 4097 0 33 -def information_schema COLUMNS COLUMNS COLUMN_COMMENT COLUMN_COMMENT 253 3072 0 N 4097 0 33 +def information_schema COLUMNS COLUMNS EXTRA EXTRA 252 720 0 N 4113 0 33 +def information_schema COLUMNS COLUMNS PRIVILEGES PRIVILEGES 252 720 31 N 4113 0 33 +def information_schema COLUMNS COLUMNS COLUMN_COMMENT COLUMN_COMMENT 252 9216 0 N 4113 0 33 TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT def test t1 c NULL NO int NULL NULL int(11) PRI select,insert,update,references ---------------------------------------------------------------- SHOW TABLES LIKE 't1'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema TABLE_NAMES TABLE_NAMES TABLE_NAME Tables_in_test (t1) 253 219 2 N 4097 0 33 +def information_schema TABLE_NAMES TABLE_NAMES TABLE_NAME Tables_in_test (t1) 252 657 2 N 4113 0 33 Tables_in_test (t1) t1 ---------------------------------------------------------------- SHOW COLUMNS FROM t1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema COLUMNS COLUMNS COLUMN_NAME Field 253 192 1 N 4097 0 33 +def information_schema COLUMNS COLUMNS COLUMN_NAME Field 252 576 1 N 4113 0 33 def information_schema COLUMNS COLUMNS COLUMN_TYPE Type 252 589815 7 N 4113 0 33 def information_schema COLUMNS COLUMNS IS_NULLABLE Null 253 9 2 N 4097 0 33 def information_schema COLUMNS COLUMNS COLUMN_KEY Key 253 9 3 N 4097 0 33 def information_schema COLUMNS COLUMNS COLUMN_DEFAULT Default 252 589788 0 Y 4112 0 33 -def information_schema COLUMNS COLUMNS EXTRA Extra 253 240 0 N 4097 0 33 +def information_schema COLUMNS COLUMNS EXTRA Extra 252 720 0 N 4113 0 33 Field Type Null Key Default Extra c int(11) NO PRI NULL ---------------------------------------------------------------- SHOW TRIGGERS LIKE 't1'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema TRIGGERS TRIGGERS TRIGGER_NAME Trigger 253 192 5 N 4097 0 33 +def information_schema TRIGGERS TRIGGERS TRIGGER_NAME Trigger 252 576 5 N 4113 0 33 def information_schema TRIGGERS TRIGGERS EVENT_MANIPULATION Event 253 18 6 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_TABLE Table 253 192 2 N 4097 0 33 +def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_TABLE Table 252 576 2 N 4113 0 33 def information_schema TRIGGERS TRIGGERS ACTION_STATEMENT Statement 252 589815 10 Y 4112 0 33 def information_schema TRIGGERS TRIGGERS ACTION_TIMING Timing 253 18 6 N 4097 0 33 def information_schema TRIGGERS TRIGGERS CREATED Created 12 22 22 Y 4224 2 63 -def information_schema TRIGGERS TRIGGERS SQL_MODE sql_mode 253 24576 89 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS DEFINER Definer 253 1152 14 Y 4096 0 33 -def information_schema TRIGGERS TRIGGERS CHARACTER_SET_CLIENT character_set_client 253 96 6 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS COLLATION_CONNECTION collation_connection 253 192 6 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS DATABASE_COLLATION Database Collation 253 192 17 N 4097 0 33 +def information_schema TRIGGERS TRIGGERS SQL_MODE sql_mode 252 73728 89 N 4113 0 33 +def information_schema TRIGGERS TRIGGERS DEFINER Definer 252 3456 14 Y 4112 0 33 +def information_schema TRIGGERS TRIGGERS CHARACTER_SET_CLIENT character_set_client 252 288 6 N 4113 0 33 +def information_schema TRIGGERS TRIGGERS COLLATION_CONNECTION collation_connection 252 576 6 N 4113 0 33 +def information_schema TRIGGERS TRIGGERS DATABASE_COLLATION Database Collation 252 576 17 N 4113 0 33 Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation t1_bi INSERT t1 SET @a = 1 BEFORE # STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION root@localhost binary binary latin1_swedish_ci ---------------------------------------------------------------- @@ -1051,23 +1051,23 @@ DEFINER FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 't1_bi'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema TRIGGERS TRIGGERS TRIGGER_CATALOG TRIGGER_CATALOG 253 1536 3 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS TRIGGER_SCHEMA TRIGGER_SCHEMA 253 192 4 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS TRIGGER_NAME TRIGGER_NAME 253 192 5 N 4097 0 33 +def information_schema TRIGGERS TRIGGERS TRIGGER_CATALOG TRIGGER_CATALOG 252 4608 3 N 4113 0 33 +def information_schema TRIGGERS TRIGGERS TRIGGER_SCHEMA TRIGGER_SCHEMA 252 576 4 N 4113 0 33 +def information_schema TRIGGERS TRIGGERS TRIGGER_NAME TRIGGER_NAME 252 576 5 N 4113 0 33 def information_schema TRIGGERS TRIGGERS EVENT_MANIPULATION EVENT_MANIPULATION 253 18 6 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_CATALOG EVENT_OBJECT_CATALOG 253 1536 3 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_SCHEMA EVENT_OBJECT_SCHEMA 253 192 4 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_TABLE EVENT_OBJECT_TABLE 253 192 2 N 4097 0 33 +def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_CATALOG EVENT_OBJECT_CATALOG 252 4608 3 N 4113 0 33 +def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_SCHEMA EVENT_OBJECT_SCHEMA 252 576 4 N 4113 0 33 +def information_schema TRIGGERS TRIGGERS EVENT_OBJECT_TABLE EVENT_OBJECT_TABLE 252 576 2 N 4113 0 33 def information_schema TRIGGERS TRIGGERS ACTION_CONDITION ACTION_CONDITION 252 589815 0 Y 4112 0 33 def information_schema TRIGGERS TRIGGERS ACTION_STATEMENT ACTION_STATEMENT 252 589815 10 Y 4112 0 33 def information_schema TRIGGERS TRIGGERS ACTION_ORIENTATION ACTION_ORIENTATION 253 27 3 N 4097 0 33 def information_schema TRIGGERS TRIGGERS ACTION_TIMING ACTION_TIMING 253 18 6 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_OLD_TABLE 253 192 0 Y 4096 0 33 -def information_schema TRIGGERS TRIGGERS ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_NEW_TABLE 253 192 0 Y 4096 0 33 +def information_schema TRIGGERS TRIGGERS ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_OLD_TABLE 252 576 0 Y 4112 0 33 +def information_schema TRIGGERS TRIGGERS ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_NEW_TABLE 252 576 0 Y 4112 0 33 def information_schema TRIGGERS TRIGGERS ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_OLD_ROW 253 9 3 N 4097 0 33 def information_schema TRIGGERS TRIGGERS ACTION_REFERENCE_NEW_ROW ACTION_REFERENCE_NEW_ROW 253 9 3 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS SQL_MODE SQL_MODE 253 24576 89 N 4097 0 33 -def information_schema TRIGGERS TRIGGERS DEFINER DEFINER 253 1152 14 Y 4096 0 33 +def information_schema TRIGGERS TRIGGERS SQL_MODE SQL_MODE 252 73728 89 N 4113 0 33 +def information_schema TRIGGERS TRIGGERS DEFINER DEFINER 252 3456 14 Y 4112 0 33 TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW SQL_MODE DEFINER def test t1_bi INSERT def test t1 NULL SET @a = 1 ROW BEFORE NULL NULL OLD NEW STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION root@localhost SELECT CREATED FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name='t1_bi'; @@ -1089,16 +1089,16 @@ SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v1'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema VIEWS VIEWS TABLE_CATALOG TABLE_CATALOG 253 1536 3 N 4097 0 33 -def information_schema VIEWS VIEWS TABLE_SCHEMA TABLE_SCHEMA 253 192 4 N 4097 0 33 -def information_schema VIEWS VIEWS TABLE_NAME TABLE_NAME 253 192 2 N 4097 0 33 +def information_schema VIEWS VIEWS TABLE_CATALOG TABLE_CATALOG 252 4608 3 N 4113 0 33 +def information_schema VIEWS VIEWS TABLE_SCHEMA TABLE_SCHEMA 252 576 4 N 4113 0 33 +def information_schema VIEWS VIEWS TABLE_NAME TABLE_NAME 252 576 2 N 4113 0 33 def information_schema VIEWS VIEWS VIEW_DEFINITION VIEW_DEFINITION 252 589815 15 N 4113 0 33 def information_schema VIEWS VIEWS CHECK_OPTION CHECK_OPTION 253 24 4 N 4097 0 33 def information_schema VIEWS VIEWS IS_UPDATABLE IS_UPDATABLE 253 9 2 N 4097 0 33 -def information_schema VIEWS VIEWS DEFINER DEFINER 253 1152 14 N 4097 0 33 +def information_schema VIEWS VIEWS DEFINER DEFINER 252 3456 14 N 4113 0 33 def information_schema VIEWS VIEWS SECURITY_TYPE SECURITY_TYPE 253 21 7 N 4097 0 33 -def information_schema VIEWS VIEWS CHARACTER_SET_CLIENT CHARACTER_SET_CLIENT 253 96 6 N 4097 0 33 -def information_schema VIEWS VIEWS COLLATION_CONNECTION COLLATION_CONNECTION 253 192 6 N 4097 0 33 +def information_schema VIEWS VIEWS CHARACTER_SET_CLIENT CHARACTER_SET_CLIENT 252 288 6 N 4113 0 33 +def information_schema VIEWS VIEWS COLLATION_CONNECTION COLLATION_CONNECTION 252 576 6 N 4113 0 33 def information_schema VIEWS VIEWS ALGORITHM ALGORITHM 253 30 9 N 4097 0 33 TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM def test v1 select 1 AS `1` NONE NO root@localhost DEFINER binary binary UNDEFINED @@ -1137,24 +1137,24 @@ DEFINER FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema ROUTINES ROUTINES SPECIFIC_NAME SPECIFIC_NAME 253 192 2 N 4097 0 33 -def information_schema ROUTINES ROUTINES ROUTINE_CATALOG ROUTINE_CATALOG 253 1536 3 N 4097 0 33 -def information_schema ROUTINES ROUTINES ROUTINE_SCHEMA ROUTINE_SCHEMA 253 192 4 N 4097 0 33 -def information_schema ROUTINES ROUTINES ROUTINE_NAME ROUTINE_NAME 253 192 2 N 4097 0 33 -def information_schema ROUTINES ROUTINES ROUTINE_TYPE ROUTINE_TYPE 253 39 9 N 4097 0 33 +def information_schema ROUTINES ROUTINES SPECIFIC_NAME SPECIFIC_NAME 252 576 2 N 4113 0 33 +def information_schema ROUTINES ROUTINES ROUTINE_CATALOG ROUTINE_CATALOG 252 4608 3 N 4113 0 33 +def information_schema ROUTINES ROUTINES ROUTINE_SCHEMA ROUTINE_SCHEMA 252 576 4 N 4113 0 33 +def information_schema ROUTINES ROUTINES ROUTINE_NAME ROUTINE_NAME 252 576 2 N 4113 0 33 +def information_schema ROUTINES ROUTINES ROUTINE_TYPE ROUTINE_TYPE 252 117 9 N 4113 0 33 def information_schema ROUTINES ROUTINES DTD_IDENTIFIER DTD_IDENTIFIER 252 589815 0 Y 4112 0 33 def information_schema ROUTINES ROUTINES ROUTINE_BODY ROUTINE_BODY 253 24 3 N 4097 0 33 def information_schema ROUTINES ROUTINES ROUTINE_DEFINITION ROUTINE_DEFINITION 252 589815 8 Y 4112 0 33 -def information_schema ROUTINES ROUTINES EXTERNAL_NAME EXTERNAL_NAME 253 192 0 Y 4096 0 33 -def information_schema ROUTINES ROUTINES EXTERNAL_LANGUAGE EXTERNAL_LANGUAGE 253 192 0 Y 4096 0 33 +def information_schema ROUTINES ROUTINES EXTERNAL_NAME EXTERNAL_NAME 252 576 0 Y 4112 0 33 +def information_schema ROUTINES ROUTINES EXTERNAL_LANGUAGE EXTERNAL_LANGUAGE 252 576 0 Y 4112 0 33 def information_schema ROUTINES ROUTINES PARAMETER_STYLE PARAMETER_STYLE 253 24 3 N 4097 0 33 def information_schema ROUTINES ROUTINES IS_DETERMINISTIC IS_DETERMINISTIC 253 9 2 N 4097 0 33 -def information_schema ROUTINES ROUTINES SQL_DATA_ACCESS SQL_DATA_ACCESS 253 192 12 N 4097 0 33 -def information_schema ROUTINES ROUTINES SQL_PATH SQL_PATH 253 192 0 Y 4096 0 33 +def information_schema ROUTINES ROUTINES SQL_DATA_ACCESS SQL_DATA_ACCESS 252 576 12 N 4113 0 33 +def information_schema ROUTINES ROUTINES SQL_PATH SQL_PATH 252 576 0 Y 4112 0 33 def information_schema ROUTINES ROUTINES SECURITY_TYPE SECURITY_TYPE 253 21 7 N 4097 0 33 -def information_schema ROUTINES ROUTINES SQL_MODE SQL_MODE 253 24576 89 N 4097 0 33 +def information_schema ROUTINES ROUTINES SQL_MODE SQL_MODE 252 73728 89 N 4113 0 33 def information_schema ROUTINES ROUTINES ROUTINE_COMMENT ROUTINE_COMMENT 252 589815 0 N 4113 0 33 -def information_schema ROUTINES ROUTINES DEFINER DEFINER 253 1152 14 N 4097 0 33 +def information_schema ROUTINES ROUTINES DEFINER DEFINER 252 3456 14 N 4113 0 33 SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE SQL_MODE ROUTINE_COMMENT DEFINER p1 def test p1 PROCEDURE NULL SQL SELECT 1 NULL NULL SQL NO CONTAINS SQL NULL DEFINER STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION root@localhost ---------------------------------------------------------------- @@ -1192,24 +1192,24 @@ DEFINER FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'f1'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def information_schema ROUTINES ROUTINES SPECIFIC_NAME SPECIFIC_NAME 253 192 2 N 4097 0 33 -def information_schema ROUTINES ROUTINES ROUTINE_CATALOG ROUTINE_CATALOG 253 1536 3 N 4097 0 33 -def information_schema ROUTINES ROUTINES ROUTINE_SCHEMA ROUTINE_SCHEMA 253 192 4 N 4097 0 33 -def information_schema ROUTINES ROUTINES ROUTINE_NAME ROUTINE_NAME 253 192 2 N 4097 0 33 -def information_schema ROUTINES ROUTINES ROUTINE_TYPE ROUTINE_TYPE 253 39 8 N 4097 0 33 +def information_schema ROUTINES ROUTINES SPECIFIC_NAME SPECIFIC_NAME 252 576 2 N 4113 0 33 +def information_schema ROUTINES ROUTINES ROUTINE_CATALOG ROUTINE_CATALOG 252 4608 3 N 4113 0 33 +def information_schema ROUTINES ROUTINES ROUTINE_SCHEMA ROUTINE_SCHEMA 252 576 4 N 4113 0 33 +def information_schema ROUTINES ROUTINES ROUTINE_NAME ROUTINE_NAME 252 576 2 N 4113 0 33 +def information_schema ROUTINES ROUTINES ROUTINE_TYPE ROUTINE_TYPE 252 117 8 N 4113 0 33 def information_schema ROUTINES ROUTINES DTD_IDENTIFIER DTD_IDENTIFIER 252 589815 7 Y 4112 0 33 def information_schema ROUTINES ROUTINES ROUTINE_BODY ROUTINE_BODY 253 24 3 N 4097 0 33 def information_schema ROUTINES ROUTINES ROUTINE_DEFINITION ROUTINE_DEFINITION 252 589815 8 Y 4112 0 33 -def information_schema ROUTINES ROUTINES EXTERNAL_NAME EXTERNAL_NAME 253 192 0 Y 4096 0 33 -def information_schema ROUTINES ROUTINES EXTERNAL_LANGUAGE EXTERNAL_LANGUAGE 253 192 0 Y 4096 0 33 +def information_schema ROUTINES ROUTINES EXTERNAL_NAME EXTERNAL_NAME 252 576 0 Y 4112 0 33 +def information_schema ROUTINES ROUTINES EXTERNAL_LANGUAGE EXTERNAL_LANGUAGE 252 576 0 Y 4112 0 33 def information_schema ROUTINES ROUTINES PARAMETER_STYLE PARAMETER_STYLE 253 24 3 N 4097 0 33 def information_schema ROUTINES ROUTINES IS_DETERMINISTIC IS_DETERMINISTIC 253 9 2 N 4097 0 33 -def information_schema ROUTINES ROUTINES SQL_DATA_ACCESS SQL_DATA_ACCESS 253 192 12 N 4097 0 33 -def information_schema ROUTINES ROUTINES SQL_PATH SQL_PATH 253 192 0 Y 4096 0 33 +def information_schema ROUTINES ROUTINES SQL_DATA_ACCESS SQL_DATA_ACCESS 252 576 12 N 4113 0 33 +def information_schema ROUTINES ROUTINES SQL_PATH SQL_PATH 252 576 0 Y 4112 0 33 def information_schema ROUTINES ROUTINES SECURITY_TYPE SECURITY_TYPE 253 21 7 N 4097 0 33 -def information_schema ROUTINES ROUTINES SQL_MODE SQL_MODE 253 24576 89 N 4097 0 33 +def information_schema ROUTINES ROUTINES SQL_MODE SQL_MODE 252 73728 89 N 4113 0 33 def information_schema ROUTINES ROUTINES ROUTINE_COMMENT ROUTINE_COMMENT 252 589815 0 N 4113 0 33 -def information_schema ROUTINES ROUTINES DEFINER DEFINER 253 1152 14 N 4097 0 33 +def information_schema ROUTINES ROUTINES DEFINER DEFINER 252 3456 14 N 4113 0 33 SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE SQL_MODE ROUTINE_COMMENT DEFINER f1 def test f1 FUNCTION int(11) SQL RETURN 1 NULL NULL SQL NO CONTAINS SQL NULL DEFINER STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION root@localhost ---------------------------------------------------------------- diff --git a/mysql-test/main/sj_mat_blob.result b/mysql-test/main/sj_mat_blob.result new file mode 100644 index 0000000000000..7e9df53572440 --- /dev/null +++ b/mysql-test/main/sj_mat_blob.result @@ -0,0 +1,44 @@ +set @save_optimizer_switch=@@optimizer_switch; +set optimizer_switch='materialization=on,in_to_exists=off,semijoin=off'; +create table t1_16 (a1 blob(16), a2 blob(16)); +create table t2_16 (b1 blob(16), b2 blob(16)); +insert into t1_16 values +(concat('1 - 00', repeat('x', 10)), concat('2 - 00', repeat('x', 10))); +insert into t1_16 values +(concat('1 - 01', repeat('x', 10)), concat('2 - 01', repeat('x', 10))); +insert into t1_16 values +(concat('1 - 02', repeat('x', 10)), concat('2 - 02', repeat('x', 10))); +insert into t2_16 values +(concat('1 - 01', repeat('x', 10)), concat('2 - 01', repeat('x', 10))); +insert into t2_16 values +(concat('1 - 02', repeat('x', 10)), concat('2 - 02', repeat('x', 10))); +insert into t2_16 values +(concat('1 - 03', repeat('x', 10)), concat('2 - 03', repeat('x', 10))); +set @@group_concat_max_len = 256; +EXPLAIN select left(a1,7), left(a2,7) +from t1_16 +where a1 in (select group_concat(b1) from t2_16 group by b2); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1_16 ALL NULL NULL NULL NULL 3 Using where +2 MATERIALIZED t2_16 ALL NULL NULL NULL NULL 3 Using filesort +select left(a1,7), left(a2,7) +from t1_16 +where a1 in (select group_concat(b1) from t2_16 group by b2); +left(a1,7) left(a2,7) +1 - 01x 2 - 01x +1 - 02x 2 - 02x +EXPLAIN select left(a1,7), left(a2,7) +from t1_16 +where a1 in (select substring(b1,1,16) from t2_16 where b1 > '0'); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1_16 ALL NULL NULL NULL NULL 3 Using where +2 MATERIALIZED t2_16 ALL NULL NULL NULL NULL 3 Using where +select left(a1,7), left(a2,7) +from t1_16 +where a1 in (select substring(b1,1,16) from t2_16 where b1 > '0'); +left(a1,7) left(a2,7) +1 - 01x 2 - 01x +1 - 02x 2 - 02x +drop table t1_16, t2_16; +set @@group_concat_max_len = DEFAULT; +set optimizer_switch=@save_optimizer_switch; diff --git a/mysql-test/main/sj_mat_blob.test b/mysql-test/main/sj_mat_blob.test new file mode 100644 index 0000000000000..ecb2abf36e758 --- /dev/null +++ b/mysql-test/main/sj_mat_blob.test @@ -0,0 +1,47 @@ +# sj-materialize wrong results reproducer: materialization with blobs + +set @save_optimizer_switch=@@optimizer_switch; +set optimizer_switch='materialization=on,in_to_exists=off,semijoin=off'; + +create table t1_16 (a1 blob(16), a2 blob(16)); +create table t2_16 (b1 blob(16), b2 blob(16)); + +insert into t1_16 values + (concat('1 - 00', repeat('x', 10)), concat('2 - 00', repeat('x', 10))); +insert into t1_16 values + (concat('1 - 01', repeat('x', 10)), concat('2 - 01', repeat('x', 10))); +insert into t1_16 values + (concat('1 - 02', repeat('x', 10)), concat('2 - 02', repeat('x', 10))); + +insert into t2_16 values + (concat('1 - 01', repeat('x', 10)), concat('2 - 01', repeat('x', 10))); +insert into t2_16 values + (concat('1 - 02', repeat('x', 10)), concat('2 - 02', repeat('x', 10))); +insert into t2_16 values + (concat('1 - 03', repeat('x', 10)), concat('2 - 03', repeat('x', 10))); + +# group_concat with materialization forced via group_concat_max_len +set @@group_concat_max_len = 256; + +EXPLAIN select left(a1,7), left(a2,7) +from t1_16 +where a1 in (select group_concat(b1) from t2_16 group by b2); + +--sorted_result +select left(a1,7), left(a2,7) +from t1_16 +where a1 in (select group_concat(b1) from t2_16 group by b2); + +# Simple IN (b1 is blob) with materialization forced +EXPLAIN select left(a1,7), left(a2,7) +from t1_16 +where a1 in (select substring(b1,1,16) from t2_16 where b1 > '0'); + +--sorted_result +select left(a1,7), left(a2,7) +from t1_16 +where a1 in (select substring(b1,1,16) from t2_16 where b1 > '0'); + +drop table t1_16, t2_16; +set @@group_concat_max_len = DEFAULT; +set optimizer_switch=@save_optimizer_switch; diff --git a/mysql-test/main/sp-anchor-type.result b/mysql-test/main/sp-anchor-type.result index 47bbed31e19d3..44580b8153d39 100644 --- a/mysql-test/main/sp-anchor-type.result +++ b/mysql-test/main/sp-anchor-type.result @@ -824,7 +824,7 @@ CALL p1(); SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( - `tables_table_name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, + `tables_table_name` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `tables_table_rows` bigint(21) unsigned DEFAULT NULL, `processlist_info` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `processlist_info_binary` blob DEFAULT NULL diff --git a/mysql-test/main/subselect_mat.result b/mysql-test/main/subselect_mat.result index b048dc54ab6cc..f7802e334d838 100644 --- a/mysql-test/main/subselect_mat.result +++ b/mysql-test/main/subselect_mat.result @@ -2194,9 +2194,8 @@ mysqltest1 EXPLAIN EXTENDED SELECT db FROM t1 WHERE db IN (SELECT SCHEMA_NAME FROM information_schema.schemata) ORDER BY db DESC; id select_type table type possible_keys key key_len ref rows filtered Extra -1 PRIMARY ALL distinct_key NULL NULL NULL 2 100.00 Using temporary; Using filesort -1 PRIMARY t1 eq_ref db db 764 information_schema.schemata.SCHEMA_NAME 1 100.00 Using where; Using index -2 MATERIALIZED schemata ALL NULL NULL NULL NULL NULL NULL +1 PRIMARY schemata ALL NULL NULL NULL NULL NULL NULL Start temporary; Using temporary; Using filesort +1 PRIMARY t1 eq_ref db db 764 information_schema.schemata.SCHEMA_NAME 1 100.00 Using where; Using index; End temporary Warnings: Note 1003 select `test`.`t1`.`db` AS `db` from `test`.`t1` semi join (`information_schema`.`schemata`) where `test`.`t1`.`db` = `information_schema`.`schemata`.`SCHEMA_NAME` order by `test`.`t1`.`db` desc drop table t1; diff --git a/mysql-test/main/subselect_sj_mat.result b/mysql-test/main/subselect_sj_mat.result index 3e30d3828e587..ed46bb07c5f4e 100644 --- a/mysql-test/main/subselect_sj_mat.result +++ b/mysql-test/main/subselect_sj_mat.result @@ -716,7 +716,7 @@ from t1_16 where a1 in (select group_concat(b1) from t2_16 group by b2); id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1_16 ALL NULL NULL NULL NULL 3 100.00 Using where -1 PRIMARY eq_ref distinct_key distinct_key 260 test.t1_16.a1 1 100.00 Using where +1 PRIMARY eq_ref distinct_key distinct_key 65537 test.t1_16.a1 1 100.00 Using where 2 MATERIALIZED t2_16 ALL NULL NULL NULL NULL 3 100.00 Using filesort Warnings: Note 1003 /* select#1 */ select left(`test`.`t1_16`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_16`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_16`.`b1` separator ',') from `test`.`t2_16` group by `test`.`t2_16`.`b2`) join `test`.`t1_16` where `test`.`t1_16`.`a1` = ``.`group_concat(b1)` @@ -801,7 +801,7 @@ from t1_512 where a1 in (select substring(b1,1,512) from t2_512 where b1 > '0'); id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1_512 ALL NULL NULL NULL NULL 3 100.00 -1 PRIMARY eq_ref distinct_key distinct_key 516 func 1 100.00 Using where +1 PRIMARY eq_ref distinct_key distinct_key 65537 func 1 100.00 Using where 2 MATERIALIZED t2_512 ALL NULL NULL NULL NULL 3 100.00 Using where Warnings: Note 1003 select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from `test`.`t1_512` semi join (`test`.`t2_512`) where `test`.`t2_512`.`b1` > '0' and `test`.`t1_512`.`a1` = substr(`test`.`t2_512`.`b1`,1,512) @@ -816,10 +816,10 @@ from t1_512 where a1 in (select group_concat(b1) from t2_512 group by b2); id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1_512 ALL NULL NULL NULL NULL 3 100.00 Using where -1 PRIMARY eq_ref distinct_key distinct_key 260 test.t1_512.a1 1 100.00 Using where +1 PRIMARY eq_ref distinct_key distinct_key 65537 test.t1_512.a1 1 100.00 2 MATERIALIZED t2_512 ALL NULL NULL NULL NULL 3 100.00 Using filesort Warnings: -Note 1003 /* select#1 */ select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_512`.`b1` separator ',') from `test`.`t2_512` group by `test`.`t2_512`.`b2`) join `test`.`t1_512` where `test`.`t1_512`.`a1` = ``.`group_concat(b1)` +Note 1003 /* select#1 */ select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_512`.`b1` separator ',') from `test`.`t2_512` group by `test`.`t2_512`.`b2`) join `test`.`t1_512` where ``.`group_concat(b1)` = `test`.`t1_512`.`a1` select left(a1,7), left(a2,7) from t1_512 where a1 in (select group_concat(b1) from t2_512 group by b2); @@ -834,10 +834,10 @@ from t1_512 where a1 in (select group_concat(b1) from t2_512 group by b2); id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1_512 ALL NULL NULL NULL NULL 3 100.00 Using where -1 PRIMARY eq_ref distinct_key distinct_key 260 test.t1_512.a1 1 100.00 Using where +1 PRIMARY eq_ref distinct_key distinct_key 65537 test.t1_512.a1 1 100.00 2 MATERIALIZED t2_512 ALL NULL NULL NULL NULL 3 100.00 Using filesort Warnings: -Note 1003 /* select#1 */ select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_512`.`b1` separator ',') from `test`.`t2_512` group by `test`.`t2_512`.`b2`) join `test`.`t1_512` where `test`.`t1_512`.`a1` = ``.`group_concat(b1)` +Note 1003 /* select#1 */ select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_512`.`b1` separator ',') from `test`.`t2_512` group by `test`.`t2_512`.`b2`) join `test`.`t1_512` where ``.`group_concat(b1)` = `test`.`t1_512`.`a1` select left(a1,7), left(a2,7) from t1_512 where a1 in (select group_concat(b1) from t2_512 group by b2); @@ -919,10 +919,10 @@ from t1_1024 where a1 in (select group_concat(b1) from t2_1024 group by b2); id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1_1024 ALL NULL NULL NULL NULL 3 100.00 Using where -1 PRIMARY eq_ref distinct_key distinct_key 260 test.t1_1024.a1 1 100.00 Using where +1 PRIMARY eq_ref distinct_key distinct_key 65537 test.t1_1024.a1 1 100.00 2 MATERIALIZED t2_1024 ALL NULL NULL NULL NULL 3 100.00 Using filesort Warnings: -Note 1003 /* select#1 */ select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_1024`.`b1` separator ',') from `test`.`t2_1024` group by `test`.`t2_1024`.`b2`) join `test`.`t1_1024` where `test`.`t1_1024`.`a1` = ``.`group_concat(b1)` +Note 1003 /* select#1 */ select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_1024`.`b1` separator ',') from `test`.`t2_1024` group by `test`.`t2_1024`.`b2`) join `test`.`t1_1024` where ``.`group_concat(b1)` = `test`.`t1_1024`.`a1` select left(a1,7), left(a2,7) from t1_1024 where a1 in (select group_concat(b1) from t2_1024 group by b2); @@ -937,10 +937,10 @@ from t1_1024 where a1 in (select group_concat(b1) from t2_1024 group by b2); id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1_1024 ALL NULL NULL NULL NULL 3 100.00 Using where -1 PRIMARY eq_ref distinct_key distinct_key 260 test.t1_1024.a1 1 100.00 Using where +1 PRIMARY eq_ref distinct_key distinct_key 65537 test.t1_1024.a1 1 100.00 2 MATERIALIZED t2_1024 ALL NULL NULL NULL NULL 3 100.00 Using filesort Warnings: -Note 1003 /* select#1 */ select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_1024`.`b1` separator ',') from `test`.`t2_1024` group by `test`.`t2_1024`.`b2`) join `test`.`t1_1024` where `test`.`t1_1024`.`a1` = ``.`group_concat(b1)` +Note 1003 /* select#1 */ select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_1024`.`b1` separator ',') from `test`.`t2_1024` group by `test`.`t2_1024`.`b2`) join `test`.`t1_1024` where ``.`group_concat(b1)` = `test`.`t1_1024`.`a1` select left(a1,7), left(a2,7) from t1_1024 where a1 in (select group_concat(b1) from t2_1024 group by b2); @@ -1022,10 +1022,10 @@ from t1_1025 where a1 in (select group_concat(b1) from t2_1025 group by b2); id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1_1025 ALL NULL NULL NULL NULL 3 100.00 Using where -1 PRIMARY eq_ref distinct_key distinct_key 260 test.t1_1025.a1 1 100.00 Using where +1 PRIMARY eq_ref distinct_key distinct_key 65537 test.t1_1025.a1 1 100.00 2 MATERIALIZED t2_1025 ALL NULL NULL NULL NULL 3 100.00 Using filesort Warnings: -Note 1003 /* select#1 */ select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_1025`.`b1` separator ',') from `test`.`t2_1025` group by `test`.`t2_1025`.`b2`) join `test`.`t1_1025` where `test`.`t1_1025`.`a1` = ``.`group_concat(b1)` +Note 1003 /* select#1 */ select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_1025`.`b1` separator ',') from `test`.`t2_1025` group by `test`.`t2_1025`.`b2`) join `test`.`t1_1025` where ``.`group_concat(b1)` = `test`.`t1_1025`.`a1` select left(a1,7), left(a2,7) from t1_1025 where a1 in (select group_concat(b1) from t2_1025 group by b2); @@ -1040,10 +1040,10 @@ from t1_1025 where a1 in (select group_concat(b1) from t2_1025 group by b2); id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1_1025 ALL NULL NULL NULL NULL 3 100.00 Using where -1 PRIMARY eq_ref distinct_key distinct_key 260 test.t1_1025.a1 1 100.00 Using where +1 PRIMARY eq_ref distinct_key distinct_key 65537 test.t1_1025.a1 1 100.00 2 MATERIALIZED t2_1025 ALL NULL NULL NULL NULL 3 100.00 Using filesort Warnings: -Note 1003 /* select#1 */ select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_1025`.`b1` separator ',') from `test`.`t2_1025` group by `test`.`t2_1025`.`b2`) join `test`.`t1_1025` where `test`.`t1_1025`.`a1` = ``.`group_concat(b1)` +Note 1003 /* select#1 */ select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from (/* select#2 */ select group_concat(`test`.`t2_1025`.`b1` separator ',') from `test`.`t2_1025` group by `test`.`t2_1025`.`b2`) join `test`.`t1_1025` where ``.`group_concat(b1)` = `test`.`t1_1025`.`a1` select left(a1,7), left(a2,7) from t1_1025 where a1 in (select group_concat(b1) from t2_1025 group by b2); @@ -2236,9 +2236,8 @@ mysqltest1 EXPLAIN EXTENDED SELECT db FROM t1 WHERE db IN (SELECT SCHEMA_NAME FROM information_schema.schemata) ORDER BY db DESC; id select_type table type possible_keys key key_len ref rows filtered Extra -1 PRIMARY ALL distinct_key NULL NULL NULL 2 100.00 Using temporary; Using filesort -1 PRIMARY t1 eq_ref db db 764 information_schema.schemata.SCHEMA_NAME 1 100.00 Using where; Using index -2 MATERIALIZED schemata ALL NULL NULL NULL NULL NULL NULL +1 PRIMARY schemata ALL NULL NULL NULL NULL NULL NULL Start temporary; Using temporary; Using filesort +1 PRIMARY t1 eq_ref db db 764 information_schema.schemata.SCHEMA_NAME 1 100.00 Using where; Using index; End temporary Warnings: Note 1003 select `test`.`t1`.`db` AS `db` from `test`.`t1` semi join (`information_schema`.`schemata`) where `test`.`t1`.`db` = `information_schema`.`schemata`.`SCHEMA_NAME` order by `test`.`t1`.`db` desc drop table t1; diff --git a/mysql-test/main/thread_pool_info.result b/mysql-test/main/thread_pool_info.result index d79a4f8d50b05..c0a87676ef2c4 100644 --- a/mysql-test/main/thread_pool_info.result +++ b/mysql-test/main/thread_pool_info.result @@ -57,7 +57,7 @@ SUM(POLLS_BY_WORKER) 0 DESC INFORMATION_SCHEMA.THREAD_POOL_WAITS; Field Type Null Key Default Extra -REASON varchar(16) NO NULL +REASON longtext NO NULL COUNT bigint(19) NO NULL SELECT REASON FROM INFORMATION_SCHEMA.THREAD_POOL_WAITS; REASON diff --git a/mysql-test/main/userstat.result b/mysql-test/main/userstat.result index 64f93c9a7d2f8..77759c15280a3 100644 --- a/mysql-test/main/userstat.result +++ b/mysql-test/main/userstat.result @@ -3,7 +3,7 @@ Warnings: Warning 1287 ' INTO FROM...' instead show columns from information_schema.client_statistics; Field Type Null Key Default Extra -CLIENT varchar(64) NO NULL +CLIENT longtext NO NULL TOTAL_CONNECTIONS bigint(21) NO NULL CONCURRENT_CONNECTIONS bigint(21) NO NULL CONNECTED_TIME bigint(21) NO NULL @@ -30,7 +30,7 @@ TOTAL_SSL_CONNECTIONS bigint(21) unsigned NO NULL MAX_STATEMENT_TIME_EXCEEDED bigint(21) NO NULL show columns from information_schema.user_statistics; Field Type Null Key Default Extra -USER varchar(128) NO NULL +USER longtext NO NULL TOTAL_CONNECTIONS int(11) NO NULL CONCURRENT_CONNECTIONS int(11) NO NULL CONNECTED_TIME int(11) NO NULL @@ -57,14 +57,14 @@ TOTAL_SSL_CONNECTIONS bigint(21) unsigned NO NULL MAX_STATEMENT_TIME_EXCEEDED bigint(21) NO NULL show columns from information_schema.index_statistics; Field Type Null Key Default Extra -TABLE_SCHEMA varchar(192) NO NULL -TABLE_NAME varchar(192) NO NULL -INDEX_NAME varchar(192) NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +INDEX_NAME longtext NO NULL ROWS_READ bigint(21) NO NULL show columns from information_schema.table_statistics; Field Type Null Key Default Extra -TABLE_SCHEMA varchar(192) NO NULL -TABLE_NAME varchar(192) NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL ROWS_READ bigint(21) NO NULL ROWS_CHANGED bigint(21) NO NULL ROWS_CHANGED_X_INDEXES bigint(21) NO NULL diff --git a/mysql-test/suite/compat/oracle/r/sp.result b/mysql-test/suite/compat/oracle/r/sp.result index 409ea3b8e3f42..652a4e3f6f6b3 100644 --- a/mysql-test/suite/compat/oracle/r/sp.result +++ b/mysql-test/suite/compat/oracle/r/sp.result @@ -2061,7 +2061,7 @@ CALL p1(); SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE "t1" ( - "tables_table_name" varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, + "tables_table_name" longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, "tables_table_rows" bigint(21) unsigned DEFAULT NULL, "processlist_info" longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, "processlist_info_binary" blob(65535) DEFAULT NULL diff --git a/mysql-test/suite/funcs_1/r/is_character_sets.result b/mysql-test/suite/funcs_1/r/is_character_sets.result index 5721569397948..1e103be6f89a7 100644 --- a/mysql-test/suite/funcs_1/r/is_character_sets.result +++ b/mysql-test/suite/funcs_1/r/is_character_sets.result @@ -28,23 +28,23 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.CHARACTER_SETS; Field Type Null Key Default Extra -CHARACTER_SET_NAME varchar(32) NO NULL -DEFAULT_COLLATE_NAME varchar(64) NO NULL -DESCRIPTION varchar(60) NO NULL +CHARACTER_SET_NAME longtext NO NULL +DEFAULT_COLLATE_NAME longtext NO NULL +DESCRIPTION longtext NO NULL MAXLEN bigint(3) NO NULL SHOW CREATE TABLE information_schema.CHARACTER_SETS; Table Create Table CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` ( - `CHARACTER_SET_NAME` varchar(32) NOT NULL, - `DEFAULT_COLLATE_NAME` varchar(64) NOT NULL, - `DESCRIPTION` varchar(60) NOT NULL, + `CHARACTER_SET_NAME` longtext NOT NULL, + `DEFAULT_COLLATE_NAME` longtext NOT NULL, + `DESCRIPTION` longtext NOT NULL, `MAXLEN` bigint(3) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.CHARACTER_SETS; Field Type Null Key Default Extra -CHARACTER_SET_NAME varchar(32) NO NULL -DEFAULT_COLLATE_NAME varchar(64) NO NULL -DESCRIPTION varchar(60) NO NULL +CHARACTER_SET_NAME longtext NO NULL +DEFAULT_COLLATE_NAME longtext NO NULL +DESCRIPTION longtext NO NULL MAXLEN bigint(3) NO NULL # Testcases 3.2.2.2 and 3.2.2.3 are checked in suite/funcs_1/t/charset_collation*.test ######################################################################## diff --git a/mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result b/mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result index fbd7654984e27..d099718d8e3da 100644 --- a/mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result +++ b/mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result @@ -28,25 +28,25 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.COLLATION_CHARACTER_SET_APPLICABILITY; Field Type Null Key Default Extra -COLLATION_NAME varchar(64) NO NULL -CHARACTER_SET_NAME varchar(32) NO NULL -FULL_COLLATION_NAME varchar(64) NO NULL +COLLATION_NAME longtext NO NULL +CHARACTER_SET_NAME longtext NO NULL +FULL_COLLATION_NAME longtext NO NULL ID bigint(11) NO NULL IS_DEFAULT varchar(3) NO NULL SHOW CREATE TABLE information_schema.COLLATION_CHARACTER_SET_APPLICABILITY; Table Create Table COLLATION_CHARACTER_SET_APPLICABILITY CREATE TEMPORARY TABLE `COLLATION_CHARACTER_SET_APPLICABILITY` ( - `COLLATION_NAME` varchar(64) NOT NULL, - `CHARACTER_SET_NAME` varchar(32) NOT NULL, - `FULL_COLLATION_NAME` varchar(64) NOT NULL, + `COLLATION_NAME` longtext NOT NULL, + `CHARACTER_SET_NAME` longtext NOT NULL, + `FULL_COLLATION_NAME` longtext NOT NULL, `ID` bigint(11) NOT NULL, `IS_DEFAULT` varchar(3) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.COLLATION_CHARACTER_SET_APPLICABILITY; Field Type Null Key Default Extra -COLLATION_NAME varchar(64) NO NULL -CHARACTER_SET_NAME varchar(32) NO NULL -FULL_COLLATION_NAME varchar(64) NO NULL +COLLATION_NAME longtext NO NULL +CHARACTER_SET_NAME longtext NO NULL +FULL_COLLATION_NAME longtext NO NULL ID bigint(11) NO NULL IS_DEFAULT varchar(3) NO NULL # Testcases 3.2.4.2 and 3.2.4.3 are checked in suite/funcs_1/t/charset_collation*.test diff --git a/mysql-test/suite/funcs_1/r/is_collations.result b/mysql-test/suite/funcs_1/r/is_collations.result index 979b477b8bc04..707b6c4b3f402 100644 --- a/mysql-test/suite/funcs_1/r/is_collations.result +++ b/mysql-test/suite/funcs_1/r/is_collations.result @@ -28,8 +28,8 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.COLLATIONS; Field Type Null Key Default Extra -COLLATION_NAME varchar(64) NO NULL -CHARACTER_SET_NAME varchar(32) YES NULL +COLLATION_NAME longtext NO NULL +CHARACTER_SET_NAME longtext YES NULL ID bigint(11) YES NULL IS_DEFAULT varchar(3) YES NULL IS_COMPILED varchar(3) NO NULL @@ -37,8 +37,8 @@ SORTLEN bigint(3) NO NULL SHOW CREATE TABLE information_schema.COLLATIONS; Table Create Table COLLATIONS CREATE TEMPORARY TABLE `COLLATIONS` ( - `COLLATION_NAME` varchar(64) NOT NULL, - `CHARACTER_SET_NAME` varchar(32), + `COLLATION_NAME` longtext NOT NULL, + `CHARACTER_SET_NAME` longtext, `ID` bigint(11), `IS_DEFAULT` varchar(3), `IS_COMPILED` varchar(3) NOT NULL, @@ -46,8 +46,8 @@ COLLATIONS CREATE TEMPORARY TABLE `COLLATIONS` ( ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.COLLATIONS; Field Type Null Key Default Extra -COLLATION_NAME varchar(64) NO NULL -CHARACTER_SET_NAME varchar(32) YES NULL +COLLATION_NAME longtext NO NULL +CHARACTER_SET_NAME longtext YES NULL ID bigint(11) YES NULL IS_DEFAULT varchar(3) YES NULL IS_COMPILED varchar(3) NO NULL diff --git a/mysql-test/suite/funcs_1/r/is_column_privileges.result b/mysql-test/suite/funcs_1/r/is_column_privileges.result index 10aa8128d89bf..99ad56d283e79 100644 --- a/mysql-test/suite/funcs_1/r/is_column_privileges.result +++ b/mysql-test/suite/funcs_1/r/is_column_privileges.result @@ -28,32 +28,32 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.COLUMN_PRIVILEGES; Field Type Null Key Default Extra -GRANTEE varchar(385) NO NULL -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -COLUMN_NAME varchar(64) NO NULL -PRIVILEGE_TYPE varchar(64) NO NULL +GRANTEE longtext NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +COLUMN_NAME longtext NO NULL +PRIVILEGE_TYPE longtext NO NULL IS_GRANTABLE varchar(3) NO NULL SHOW CREATE TABLE information_schema.COLUMN_PRIVILEGES; Table Create Table COLUMN_PRIVILEGES CREATE TEMPORARY TABLE `COLUMN_PRIVILEGES` ( - `GRANTEE` varchar(385) NOT NULL, - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, - `COLUMN_NAME` varchar(64) NOT NULL, - `PRIVILEGE_TYPE` varchar(64) NOT NULL, + `GRANTEE` longtext NOT NULL, + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, + `COLUMN_NAME` longtext NOT NULL, + `PRIVILEGE_TYPE` longtext NOT NULL, `IS_GRANTABLE` varchar(3) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.COLUMN_PRIVILEGES; Field Type Null Key Default Extra -GRANTEE varchar(385) NO NULL -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -COLUMN_NAME varchar(64) NO NULL -PRIVILEGE_TYPE varchar(64) NO NULL +GRANTEE longtext NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +COLUMN_NAME longtext NO NULL +PRIVILEGE_TYPE longtext NO NULL IS_GRANTABLE varchar(3) NO NULL SELECT table_catalog, table_schema, table_name, column_name, privilege_type FROM information_schema.column_privileges WHERE table_catalog IS NOT NULL; diff --git a/mysql-test/suite/funcs_1/r/is_columns.result b/mysql-test/suite/funcs_1/r/is_columns.result index 75996b16f4dc7..6bb947c74c1d9 100644 --- a/mysql-test/suite/funcs_1/r/is_columns.result +++ b/mysql-test/suite/funcs_1/r/is_columns.result @@ -28,76 +28,76 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.COLUMNS; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -COLUMN_NAME varchar(64) NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +COLUMN_NAME longtext NO NULL ORDINAL_POSITION bigint(21) unsigned NO NULL COLUMN_DEFAULT longtext YES NULL IS_NULLABLE varchar(3) NO NULL -DATA_TYPE varchar(64) NO NULL +DATA_TYPE longtext NO NULL CHARACTER_MAXIMUM_LENGTH bigint(21) unsigned YES NULL CHARACTER_OCTET_LENGTH bigint(21) unsigned YES NULL NUMERIC_PRECISION bigint(21) unsigned YES NULL NUMERIC_SCALE bigint(21) unsigned YES NULL DATETIME_PRECISION bigint(21) unsigned YES NULL -CHARACTER_SET_NAME varchar(32) YES NULL -COLLATION_NAME varchar(64) YES NULL +CHARACTER_SET_NAME longtext YES NULL +COLLATION_NAME longtext YES NULL COLUMN_TYPE longtext NO NULL COLUMN_KEY varchar(3) NO NULL -EXTRA varchar(80) NO NULL -PRIVILEGES varchar(80) NO NULL -COLUMN_COMMENT varchar(1024) NO NULL +EXTRA longtext NO NULL +PRIVILEGES longtext NO NULL +COLUMN_COMMENT longtext NO NULL IS_GENERATED varchar(6) NO NULL GENERATION_EXPRESSION longtext YES NULL SHOW CREATE TABLE information_schema.COLUMNS; Table Create Table COLUMNS CREATE TEMPORARY TABLE `COLUMNS` ( - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, - `COLUMN_NAME` varchar(64) NOT NULL, + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, + `COLUMN_NAME` longtext NOT NULL, `ORDINAL_POSITION` bigint(21) unsigned NOT NULL, `COLUMN_DEFAULT` longtext, `IS_NULLABLE` varchar(3) NOT NULL, - `DATA_TYPE` varchar(64) NOT NULL, + `DATA_TYPE` longtext NOT NULL, `CHARACTER_MAXIMUM_LENGTH` bigint(21) unsigned, `CHARACTER_OCTET_LENGTH` bigint(21) unsigned, `NUMERIC_PRECISION` bigint(21) unsigned, `NUMERIC_SCALE` bigint(21) unsigned, `DATETIME_PRECISION` bigint(21) unsigned, - `CHARACTER_SET_NAME` varchar(32), - `COLLATION_NAME` varchar(64), + `CHARACTER_SET_NAME` longtext, + `COLLATION_NAME` longtext, `COLUMN_TYPE` longtext NOT NULL, `COLUMN_KEY` varchar(3) NOT NULL, - `EXTRA` varchar(80) NOT NULL, - `PRIVILEGES` varchar(80) NOT NULL, - `COLUMN_COMMENT` varchar(1024) NOT NULL, + `EXTRA` longtext NOT NULL, + `PRIVILEGES` longtext NOT NULL, + `COLUMN_COMMENT` longtext NOT NULL, `IS_GENERATED` varchar(6) NOT NULL, `GENERATION_EXPRESSION` longtext ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.COLUMNS; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -COLUMN_NAME varchar(64) NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +COLUMN_NAME longtext NO NULL ORDINAL_POSITION bigint(21) unsigned NO NULL COLUMN_DEFAULT longtext YES NULL IS_NULLABLE varchar(3) NO NULL -DATA_TYPE varchar(64) NO NULL +DATA_TYPE longtext NO NULL CHARACTER_MAXIMUM_LENGTH bigint(21) unsigned YES NULL CHARACTER_OCTET_LENGTH bigint(21) unsigned YES NULL NUMERIC_PRECISION bigint(21) unsigned YES NULL NUMERIC_SCALE bigint(21) unsigned YES NULL DATETIME_PRECISION bigint(21) unsigned YES NULL -CHARACTER_SET_NAME varchar(32) YES NULL -COLLATION_NAME varchar(64) YES NULL +CHARACTER_SET_NAME longtext YES NULL +COLLATION_NAME longtext YES NULL COLUMN_TYPE longtext NO NULL COLUMN_KEY varchar(3) NO NULL -EXTRA varchar(80) NO NULL -PRIVILEGES varchar(80) NO NULL -COLUMN_COMMENT varchar(1024) NO NULL +EXTRA longtext NO NULL +PRIVILEGES longtext NO NULL +COLUMN_COMMENT longtext NO NULL IS_GENERATED varchar(6) NO NULL GENERATION_EXPRESSION longtext YES NULL SELECT table_catalog, table_schema, table_name, column_name diff --git a/mysql-test/suite/funcs_1/r/is_columns_is.result b/mysql-test/suite/funcs_1/r/is_columns_is.result index 9b0684a191385..64528bac10616 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_is.result +++ b/mysql-test/suite/funcs_1/r/is_columns_is.result @@ -3,39 +3,39 @@ WHERE table_schema = 'information_schema' AND table_name <> 'profiling' AND table_name not like 'innodb_%' ORDER BY table_schema, table_name, column_name; TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT IS_GENERATED GENERATION_EXPRESSION -def information_schema ALL_PLUGINS LOAD_OPTION 11 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_AUTH_VERSION 13 NULL YES varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) select NEVER NULL +def information_schema ALL_PLUGINS LOAD_OPTION 11 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_AUTHOR 8 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_AUTH_VERSION 13 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema ALL_PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) select NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_LICENSE 10 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) select NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_MATURITY 12 NULL NO varchar 12 36 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(12) select NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_STATUS 3 NULL NO varchar 16 48 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(16) select NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_TYPE 4 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) select NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_TYPE_VERSION 5 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) select NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_VERSION 2 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) select NEVER NULL -def information_schema APPLICABLE_ROLES GRANTEE 1 NULL NO varchar 385 1155 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(385) select NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_LIBRARY 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_LICENSE 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_MATURITY 12 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_STATUS 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_TYPE 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_TYPE_VERSION 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_VERSION 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema APPLICABLE_ROLES GRANTEE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema APPLICABLE_ROLES IS_DEFAULT 4 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL def information_schema APPLICABLE_ROLES IS_GRANTABLE 3 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL -def information_schema APPLICABLE_ROLES ROLE_NAME 2 NULL NO varchar 128 384 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(128) select NEVER NULL -def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL -def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema CHARACTER_SETS DESCRIPTION 3 NULL NO varchar 60 180 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(60) select NEVER NULL +def information_schema APPLICABLE_ROLES ROLE_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema CHARACTER_SETS DESCRIPTION 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema CHARACTER_SETS MAXLEN 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) select NEVER NULL def information_schema CHECK_CONSTRAINTS CHECK_CLAUSE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL -def information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema CHECK_CONSTRAINTS LEVEL 5 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) select NEVER NULL -def information_schema CHECK_CONSTRAINTS TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema CHECK_CONSTRAINTS TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema CLIENT_STATISTICS ACCESS_DENIED 22 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL def information_schema CLIENT_STATISTICS BINLOG_BYTES_WRITTEN 9 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL def information_schema CLIENT_STATISTICS BUSY_TIME 5 NULL NO double NULL NULL 21 NULL NULL NULL NULL double select NEVER NULL def information_schema CLIENT_STATISTICS BYTES_RECEIVED 7 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL def information_schema CLIENT_STATISTICS BYTES_SENT 8 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL -def information_schema CLIENT_STATISTICS CLIENT 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema CLIENT_STATISTICS CLIENT 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema CLIENT_STATISTICS COMMIT_TRANSACTIONS 18 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL def information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS 3 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL def information_schema CLIENT_STATISTICS CONNECTED_TIME 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL @@ -55,77 +55,77 @@ def information_schema CLIENT_STATISTICS SELECT_COMMANDS 15 NULL NO bigint NULL def information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS 2 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL def information_schema CLIENT_STATISTICS TOTAL_SSL_CONNECTIONS 24 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema CLIENT_STATISTICS UPDATE_COMMANDS 16 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL -def information_schema COLLATIONS CHARACTER_SET_NAME 2 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL -def information_schema COLLATIONS COLLATION_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema COLLATIONS CHARACTER_SET_NAME 2 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLLATIONS COLLATION_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema COLLATIONS ID 3 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(11) select NEVER NULL def information_schema COLLATIONS IS_COMPILED 5 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL def information_schema COLLATIONS IS_DEFAULT 4 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL def information_schema COLLATIONS SORTLEN 6 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) select NEVER NULL -def information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL -def information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema COLLATION_CHARACTER_SET_APPLICABILITY ID 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(11) select NEVER NULL def information_schema COLLATION_CHARACTER_SET_APPLICABILITY IS_DEFAULT 5 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL def information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema COLUMNS CHARACTER_SET_NAME 14 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL -def information_schema COLUMNS COLLATION_NAME 15 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema COLUMNS COLUMN_COMMENT 20 NULL NO varchar 1024 3072 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1024) select NEVER NULL +def information_schema COLUMNS CHARACTER_SET_NAME 14 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLUMNS COLLATION_NAME 15 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLUMNS COLUMN_COMMENT 20 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema COLUMNS COLUMN_KEY 17 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL -def information_schema COLUMNS COLUMN_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema COLUMNS COLUMN_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema COLUMNS COLUMN_TYPE 16 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL -def information_schema COLUMNS DATA_TYPE 8 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema COLUMNS DATA_TYPE 8 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema COLUMNS DATETIME_PRECISION 13 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema COLUMNS EXTRA 18 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) select NEVER NULL +def information_schema COLUMNS EXTRA 18 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema COLUMNS GENERATION_EXPRESSION 22 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema COLUMNS IS_GENERATED 21 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) select NEVER NULL def information_schema COLUMNS IS_NULLABLE 7 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL def information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema COLUMNS ORDINAL_POSITION 5 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema COLUMNS PRIVILEGES 19 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) select NEVER NULL -def information_schema COLUMNS TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema COLUMNS TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema COLUMNS TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema COLUMN_PRIVILEGES COLUMN_NAME 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema COLUMN_PRIVILEGES GRANTEE 1 NULL NO varchar 385 1155 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(385) select NEVER NULL +def information_schema COLUMNS PRIVILEGES 19 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLUMNS TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLUMNS TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLUMNS TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLUMN_PRIVILEGES COLUMN_NAME 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLUMN_PRIVILEGES GRANTEE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema COLUMN_PRIVILEGES IS_GRANTABLE 7 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL -def information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ENABLED_ROLES ROLE_NAME 1 NULL YES varchar 128 384 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(128) select NEVER NULL -def information_schema ENGINES COMMENT 3 NULL NO varchar 160 480 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(160) select NEVER NULL -def information_schema ENGINES ENGINE 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ENABLED_ROLES ROLE_NAME 1 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ENGINES COMMENT 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ENGINES ENGINE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema ENGINES SAVEPOINTS 6 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL def information_schema ENGINES SUPPORT 2 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) select NEVER NULL def information_schema ENGINES TRANSACTIONS 4 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL def information_schema ENGINES XA 5 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL -def information_schema EVENTS CHARACTER_SET_CLIENT 22 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL -def information_schema EVENTS COLLATION_CONNECTION 23 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema EVENTS CHARACTER_SET_CLIENT 22 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema EVENTS COLLATION_CONNECTION 23 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema EVENTS CREATED 17 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL -def information_schema EVENTS DATABASE_COLLATION 24 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema EVENTS DEFINER 4 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) select NEVER NULL +def information_schema EVENTS DATABASE_COLLATION 24 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema EVENTS DEFINER 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema EVENTS ENDS 14 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL def information_schema EVENTS EVENT_BODY 6 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) select NEVER NULL -def information_schema EVENTS EVENT_CATALOG 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema EVENTS EVENT_COMMENT 20 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema EVENTS EVENT_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema EVENTS EVENT_COMMENT 20 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema EVENTS EVENT_DEFINITION 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL -def information_schema EVENTS EVENT_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema EVENTS EVENT_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema EVENTS EVENT_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema EVENTS EVENT_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema EVENTS EVENT_TYPE 8 NULL NO varchar 9 27 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(9) select NEVER NULL def information_schema EVENTS EXECUTE_AT 9 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL -def information_schema EVENTS INTERVAL_FIELD 11 NULL YES varchar 18 54 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(18) select NEVER NULL -def information_schema EVENTS INTERVAL_VALUE 10 NULL YES varchar 256 768 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(256) select NEVER NULL +def information_schema EVENTS INTERVAL_FIELD 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema EVENTS INTERVAL_VALUE 10 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema EVENTS LAST_ALTERED 18 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL def information_schema EVENTS LAST_EXECUTED 19 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL -def information_schema EVENTS ON_COMPLETION 16 NULL NO varchar 12 36 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(12) select NEVER NULL +def information_schema EVENTS ON_COMPLETION 16 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema EVENTS ORIGINATOR 21 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(10) select NEVER NULL -def information_schema EVENTS SQL_MODE 12 NULL NO varchar 8192 24576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8192) select NEVER NULL +def information_schema EVENTS SQL_MODE 12 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema EVENTS STARTS 13 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL -def information_schema EVENTS STATUS 15 NULL NO varchar 18 54 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(18) select NEVER NULL -def information_schema EVENTS TIME_ZONE 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema EVENTS STATUS 15 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema EVENTS TIME_ZONE 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema FILES AUTOEXTEND_SIZE 19 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema FILES AVG_ROW_LENGTH 28 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema FILES CHECKSUM 36 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL @@ -135,61 +135,61 @@ def information_schema FILES CREATION_TIME 20 NULL YES datetime NULL NULL NULL N def information_schema FILES DATA_FREE 32 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema FILES DATA_LENGTH 29 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema FILES DELETED_ROWS 12 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL -def information_schema FILES ENGINE 10 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema FILES ENGINE 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema FILES EXTENT_SIZE 16 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL -def information_schema FILES EXTRA 38 NULL YES varchar 255 765 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(255) select NEVER NULL +def information_schema FILES EXTRA 38 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema FILES FILE_ID 1 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL -def information_schema FILES FILE_NAME 2 NULL YES varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema FILES FILE_TYPE 3 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) select NEVER NULL +def information_schema FILES FILE_NAME 2 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema FILES FILE_TYPE 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema FILES FREE_EXTENTS 14 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL -def information_schema FILES FULLTEXT_KEYS 11 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema FILES FULLTEXT_KEYS 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema FILES INDEX_LENGTH 31 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema FILES INITIAL_SIZE 17 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema FILES LAST_ACCESS_TIME 22 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL def information_schema FILES LAST_UPDATE_TIME 21 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL -def information_schema FILES LOGFILE_GROUP_NAME 8 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema FILES LOGFILE_GROUP_NAME 8 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema FILES LOGFILE_GROUP_NUMBER 9 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL def information_schema FILES MAXIMUM_SIZE 18 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema FILES MAX_DATA_LENGTH 30 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema FILES RECOVER_TIME 23 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL def information_schema FILES ROW_FORMAT 26 NULL YES varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) select NEVER NULL -def information_schema FILES STATUS 37 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) select NEVER NULL -def information_schema FILES TABLESPACE_NAME 4 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema FILES TABLE_CATALOG 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema FILES TABLE_NAME 7 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema FILES STATUS 37 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema FILES TABLESPACE_NAME 4 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema FILES TABLE_CATALOG 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema FILES TABLE_NAME 7 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema FILES TABLE_ROWS 27 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema FILES TABLE_SCHEMA 6 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema FILES TABLE_SCHEMA 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema FILES TOTAL_EXTENTS 15 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL def information_schema FILES TRANSACTION_COUNTER 24 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL def information_schema FILES UPDATE_COUNT 13 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL def information_schema FILES UPDATE_TIME 34 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL def information_schema FILES VERSION 25 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema GEOMETRY_COLUMNS COORD_DIMENSION 11 NULL NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(2) select NEVER NULL -def information_schema GEOMETRY_COLUMNS F_GEOMETRY_COLUMN 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema GEOMETRY_COLUMNS F_TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema GEOMETRY_COLUMNS F_TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema GEOMETRY_COLUMNS F_TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema GEOMETRY_COLUMNS F_GEOMETRY_COLUMN 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema GEOMETRY_COLUMNS F_TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema GEOMETRY_COLUMNS F_TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema GEOMETRY_COLUMNS F_TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema GEOMETRY_COLUMNS GEOMETRY_TYPE 10 NULL NO int NULL NULL 10 0 NULL NULL NULL int(7) select NEVER NULL -def information_schema GEOMETRY_COLUMNS G_GEOMETRY_COLUMN 8 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema GEOMETRY_COLUMNS G_TABLE_CATALOG 5 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema GEOMETRY_COLUMNS G_TABLE_NAME 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema GEOMETRY_COLUMNS G_TABLE_SCHEMA 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema GEOMETRY_COLUMNS G_GEOMETRY_COLUMN 8 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema GEOMETRY_COLUMNS G_TABLE_CATALOG 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema GEOMETRY_COLUMNS G_TABLE_NAME 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema GEOMETRY_COLUMNS G_TABLE_SCHEMA 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema GEOMETRY_COLUMNS MAX_PPR 12 NULL NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(2) select NEVER NULL def information_schema GEOMETRY_COLUMNS SRID 13 NULL NO smallint NULL NULL 5 0 NULL NULL NULL smallint(5) select NEVER NULL def information_schema GEOMETRY_COLUMNS STORAGE_TYPE 9 NULL NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(2) select NEVER NULL -def information_schema GLOBAL_STATUS VARIABLE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL NO varchar 4096 12288 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(4096) select NEVER NULL -def information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL NO varchar 4096 12288 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(4096) select NEVER NULL -def information_schema INDEX_STATISTICS INDEX_NAME 3 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) select NEVER NULL +def information_schema GLOBAL_STATUS VARIABLE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema INDEX_STATISTICS INDEX_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema INDEX_STATISTICS ROWS_READ 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL -def information_schema INDEX_STATISTICS TABLE_NAME 2 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) select NEVER NULL -def information_schema INDEX_STATISTICS TABLE_SCHEMA 1 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) select NEVER NULL -def information_schema KEYWORDS WORD 1 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema INDEX_STATISTICS TABLE_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema INDEX_STATISTICS TABLE_SCHEMA 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema KEYWORDS WORD 1 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema KEY_CACHES BLOCK_SIZE 5 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema KEY_CACHES DIRTY_BLOCKS 8 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema KEY_CACHES FULL_SIZE 4 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema KEY_CACHES KEY_CACHE_NAME 1 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) select NEVER NULL +def information_schema KEY_CACHES KEY_CACHE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema KEY_CACHES READS 10 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema KEY_CACHES READ_REQUESTS 9 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema KEY_CACHES SEGMENTS 2 NULL YES int NULL NULL 10 0 NULL NULL NULL int(3) unsigned select NEVER NULL @@ -198,38 +198,38 @@ def information_schema KEY_CACHES UNUSED_BLOCKS 7 NULL NO bigint NULL NULL 20 0 def information_schema KEY_CACHES USED_BLOCKS 6 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema KEY_CACHES WRITES 12 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema KEY_CACHES WRITE_REQUESTS 11 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema KEY_COLUMN_USAGE ORDINAL_POSITION 8 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(10) select NEVER NULL def information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT 9 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(10) select NEVER NULL -def information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME 12 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME 11 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME 12 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema OPTIMIZER_TRACE INSUFFICIENT_PRIVILEGES 4 NULL NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(1) select NEVER NULL def information_schema OPTIMIZER_TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE 3 NULL NO int NULL NULL 10 0 NULL NULL NULL int(20) select NEVER NULL def information_schema OPTIMIZER_TRACE QUERY 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema OPTIMIZER_TRACE TRACE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) select NEVER NULL def information_schema PARAMETERS CHARACTER_OCTET_LENGTH 9 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) select NEVER NULL -def information_schema PARAMETERS CHARACTER_SET_NAME 13 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema PARAMETERS COLLATION_NAME 14 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema PARAMETERS DATA_TYPE 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema PARAMETERS CHARACTER_SET_NAME 13 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PARAMETERS COLLATION_NAME 14 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PARAMETERS DATA_TYPE 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PARAMETERS DATETIME_PRECISION 12 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema PARAMETERS DTD_IDENTIFIER 15 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PARAMETERS NUMERIC_PRECISION 10 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) select NEVER NULL def information_schema PARAMETERS NUMERIC_SCALE 11 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) select NEVER NULL def information_schema PARAMETERS ORDINAL_POSITION 4 NULL NO int NULL NULL 10 0 NULL NULL NULL int(21) select NEVER NULL def information_schema PARAMETERS PARAMETER_MODE 5 NULL YES varchar 5 15 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(5) select NEVER NULL -def information_schema PARAMETERS PARAMETER_NAME 6 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema PARAMETERS PARAMETER_NAME 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PARAMETERS ROUTINE_TYPE 16 NULL NO varchar 9 27 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(9) select NEVER NULL -def information_schema PARAMETERS SPECIFIC_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema PARAMETERS SPECIFIC_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema PARAMETERS SPECIFIC_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema PARAMETERS SPECIFIC_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PARAMETERS SPECIFIC_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PARAMETERS SPECIFIC_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PARTITIONS AVG_ROW_LENGTH 14 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema PARTITIONS CHECK_TIME 21 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL @@ -238,40 +238,40 @@ def information_schema PARTITIONS DATA_FREE 18 NULL NO bigint NULL NULL 20 0 NUL def information_schema PARTITIONS DATA_LENGTH 15 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema PARTITIONS INDEX_LENGTH 17 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema PARTITIONS MAX_DATA_LENGTH 16 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema PARTITIONS NODEGROUP 24 NULL NO varchar 12 36 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(12) select NEVER NULL -def information_schema PARTITIONS PARTITION_COMMENT 23 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) select NEVER NULL +def information_schema PARTITIONS NODEGROUP 24 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PARTITIONS PARTITION_COMMENT 23 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PARTITIONS PARTITION_DESCRIPTION 12 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PARTITIONS PARTITION_EXPRESSION 10 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL -def information_schema PARTITIONS PARTITION_METHOD 8 NULL YES varchar 18 54 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(18) select NEVER NULL -def information_schema PARTITIONS PARTITION_NAME 4 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema PARTITIONS PARTITION_METHOD 8 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PARTITIONS PARTITION_NAME 4 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema PARTITIONS SUBPARTITION_EXPRESSION 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL -def information_schema PARTITIONS SUBPARTITION_METHOD 9 NULL YES varchar 12 36 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(12) select NEVER NULL -def information_schema PARTITIONS SUBPARTITION_NAME 5 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema PARTITIONS SUBPARTITION_METHOD 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PARTITIONS SUBPARTITION_NAME 5 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION 7 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema PARTITIONS TABLESPACE_NAME 25 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema PARTITIONS TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema PARTITIONS TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema PARTITIONS TABLESPACE_NAME 25 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PARTITIONS TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PARTITIONS TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PARTITIONS TABLE_ROWS 13 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema PARTITIONS TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema PARTITIONS TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PARTITIONS UPDATE_TIME 20 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL -def information_schema PLUGINS LOAD_OPTION 11 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema PLUGINS PLUGIN_AUTH_VERSION 13 NULL YES varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) select NEVER NULL +def information_schema PLUGINS LOAD_OPTION 11 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PLUGINS PLUGIN_AUTH_VERSION 13 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL -def information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) select NEVER NULL -def information_schema PLUGINS PLUGIN_LICENSE 10 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) select NEVER NULL -def information_schema PLUGINS PLUGIN_MATURITY 12 NULL NO varchar 12 36 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(12) select NEVER NULL -def information_schema PLUGINS PLUGIN_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema PLUGINS PLUGIN_STATUS 3 NULL NO varchar 16 48 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(16) select NEVER NULL -def information_schema PLUGINS PLUGIN_TYPE 4 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) select NEVER NULL -def information_schema PLUGINS PLUGIN_TYPE_VERSION 5 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) select NEVER NULL -def information_schema PLUGINS PLUGIN_VERSION 2 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) select NEVER NULL -def information_schema PROCESSLIST COMMAND 5 NULL NO varchar 16 48 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(16) select NEVER NULL -def information_schema PROCESSLIST DB 4 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PLUGINS PLUGIN_LICENSE 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PLUGINS PLUGIN_MATURITY 12 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PLUGINS PLUGIN_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PLUGINS PLUGIN_STATUS 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PLUGINS PLUGIN_TYPE 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PLUGINS PLUGIN_TYPE_VERSION 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PLUGINS PLUGIN_VERSION 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PROCESSLIST COMMAND 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema PROCESSLIST DB 4 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PROCESSLIST EXAMINED_ROWS 15 NULL NO int NULL NULL 10 0 NULL NULL NULL int(7) select NEVER NULL -def information_schema PROCESSLIST HOST 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema PROCESSLIST HOST 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PROCESSLIST ID 1 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL def information_schema PROCESSLIST INFO 8 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PROCESSLIST INFO_BINARY 17 NULL YES blob 65535 65535 NULL NULL NULL NULL NULL blob select NEVER NULL @@ -281,180 +281,180 @@ def information_schema PROCESSLIST MEMORY_USED 13 NULL NO bigint NULL NULL 19 0 def information_schema PROCESSLIST PROGRESS 12 NULL NO decimal NULL NULL 7 3 NULL NULL NULL decimal(7,3) select NEVER NULL def information_schema PROCESSLIST QUERY_ID 16 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL def information_schema PROCESSLIST STAGE 10 NULL NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(2) select NEVER NULL -def information_schema PROCESSLIST STATE 7 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema PROCESSLIST STATE 7 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema PROCESSLIST TID 18 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL def information_schema PROCESSLIST TIME 6 NULL NO int NULL NULL 10 0 NULL NULL NULL int(7) select NEVER NULL def information_schema PROCESSLIST TIME_MS 9 NULL NO decimal NULL NULL 22 3 NULL NULL NULL decimal(22,3) select NEVER NULL -def information_schema PROCESSLIST USER 2 NULL NO varchar 128 384 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(128) select NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE 9 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME 11 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME 10 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema PROCESSLIST USER 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE 9 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH 7 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) select NEVER NULL def information_schema ROUTINES CHARACTER_OCTET_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) select NEVER NULL -def information_schema ROUTINES CHARACTER_SET_CLIENT 29 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL -def information_schema ROUTINES CHARACTER_SET_NAME 12 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ROUTINES COLLATION_CONNECTION 30 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ROUTINES COLLATION_NAME 13 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema ROUTINES CHARACTER_SET_CLIENT 29 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ROUTINES CHARACTER_SET_NAME 12 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ROUTINES COLLATION_CONNECTION 30 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ROUTINES COLLATION_NAME 13 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema ROUTINES CREATED 24 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL -def information_schema ROUTINES DATABASE_COLLATION 31 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ROUTINES DATA_TYPE 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema ROUTINES DATABASE_COLLATION 31 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ROUTINES DATA_TYPE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema ROUTINES DATETIME_PRECISION 11 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema ROUTINES DEFINER 28 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) select NEVER NULL +def information_schema ROUTINES DEFINER 28 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema ROUTINES DTD_IDENTIFIER 14 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL -def information_schema ROUTINES EXTERNAL_LANGUAGE 18 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ROUTINES EXTERNAL_NAME 17 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema ROUTINES EXTERNAL_LANGUAGE 18 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ROUTINES EXTERNAL_NAME 17 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema ROUTINES IS_DETERMINISTIC 20 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL def information_schema ROUTINES LAST_ALTERED 25 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL def information_schema ROUTINES NUMERIC_PRECISION 9 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) select NEVER NULL def information_schema ROUTINES NUMERIC_SCALE 10 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) select NEVER NULL def information_schema ROUTINES PARAMETER_STYLE 19 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) select NEVER NULL def information_schema ROUTINES ROUTINE_BODY 15 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) select NEVER NULL -def information_schema ROUTINES ROUTINE_CATALOG 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL +def information_schema ROUTINES ROUTINE_CATALOG 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema ROUTINES ROUTINE_COMMENT 27 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema ROUTINES ROUTINE_DEFINITION 16 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL -def information_schema ROUTINES ROUTINE_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ROUTINES ROUTINE_SCHEMA 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ROUTINES ROUTINE_TYPE 5 NULL NO varchar 13 39 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(13) select NEVER NULL +def information_schema ROUTINES ROUTINE_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ROUTINES ROUTINE_SCHEMA 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ROUTINES ROUTINE_TYPE 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema ROUTINES SECURITY_TYPE 23 NULL NO varchar 7 21 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(7) select NEVER NULL -def information_schema ROUTINES SPECIFIC_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ROUTINES SQL_DATA_ACCESS 21 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema ROUTINES SQL_MODE 26 NULL NO varchar 8192 24576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8192) select NEVER NULL -def information_schema ROUTINES SQL_PATH 22 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SCHEMATA CATALOG_NAME 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL -def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SCHEMATA SCHEMA_COMMENT 6 NULL NO varchar 1024 3072 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1024) select NEVER NULL -def information_schema SCHEMATA SCHEMA_NAME 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema SCHEMA_PRIVILEGES GRANTEE 1 NULL NO varchar 385 1155 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(385) select NEVER NULL +def information_schema ROUTINES SPECIFIC_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ROUTINES SQL_DATA_ACCESS 21 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ROUTINES SQL_MODE 26 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema ROUTINES SQL_PATH 22 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SCHEMATA CATALOG_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SCHEMATA SCHEMA_COMMENT 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SCHEMATA SCHEMA_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SCHEMATA SQL_PATH 5 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SCHEMA_PRIVILEGES GRANTEE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema SCHEMA_PRIVILEGES IS_GRANTABLE 5 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL -def information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SESSION_STATUS VARIABLE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL NO varchar 4096 12288 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(4096) select NEVER NULL -def information_schema SESSION_VARIABLES VARIABLE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL NO varchar 4096 12288 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(4096) select NEVER NULL -def information_schema SPATIAL_REF_SYS AUTH_NAME 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL +def information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SESSION_STATUS VARIABLE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SESSION_VARIABLES VARIABLE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SPATIAL_REF_SYS AUTH_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema SPATIAL_REF_SYS AUTH_SRID 3 NULL NO int NULL NULL 10 0 NULL NULL NULL int(5) select NEVER NULL def information_schema SPATIAL_REF_SYS SRID 1 NULL NO smallint NULL NULL 5 0 NULL NULL NULL smallint(5) select NEVER NULL -def information_schema SPATIAL_REF_SYS SRTEXT 4 NULL NO varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) select NEVER NULL -def information_schema SQL_FUNCTIONS FUNCTION 1 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema SPATIAL_REF_SYS SRTEXT 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SQL_FUNCTIONS FUNCTION 1 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema STATISTICS CARDINALITY 10 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL def information_schema STATISTICS COLLATION 9 NULL YES varchar 1 3 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1) select NEVER NULL -def information_schema STATISTICS COLUMN_NAME 8 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema STATISTICS COMMENT 15 NULL YES varchar 16 48 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(16) select NEVER NULL +def information_schema STATISTICS COLUMN_NAME 8 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema STATISTICS COMMENT 15 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema STATISTICS IGNORED 17 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL -def information_schema STATISTICS INDEX_COMMENT 16 NULL NO varchar 1024 3072 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1024) select NEVER NULL -def information_schema STATISTICS INDEX_NAME 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema STATISTICS INDEX_SCHEMA 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema STATISTICS INDEX_TYPE 14 NULL NO varchar 16 48 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(16) select NEVER NULL +def information_schema STATISTICS INDEX_COMMENT 16 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema STATISTICS INDEX_NAME 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema STATISTICS INDEX_SCHEMA 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema STATISTICS INDEX_TYPE 14 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema STATISTICS NON_UNIQUE 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(1) select NEVER NULL def information_schema STATISTICS NULLABLE 13 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL def information_schema STATISTICS PACKED 12 NULL YES varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) select NEVER NULL def information_schema STATISTICS SEQ_IN_INDEX 7 NULL NO int NULL NULL 10 0 NULL NULL NULL int(2) unsigned select NEVER NULL def information_schema STATISTICS SUB_PART 11 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(3) select NEVER NULL -def information_schema STATISTICS TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema STATISTICS TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema STATISTICS TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SYSTEM_VARIABLES COMMAND_LINE_ARGUMENT 14 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SYSTEM_VARIABLES DEFAULT_VALUE 5 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) select NEVER NULL +def information_schema STATISTICS TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema STATISTICS TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema STATISTICS TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SYSTEM_VARIABLES COMMAND_LINE_ARGUMENT 14 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SYSTEM_VARIABLES DEFAULT_VALUE 5 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema SYSTEM_VARIABLES ENUM_VALUE_LIST 12 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL -def information_schema SYSTEM_VARIABLES GLOBAL_VALUE 3 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) select NEVER NULL -def information_schema SYSTEM_VARIABLES GLOBAL_VALUE_ORIGIN 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SYSTEM_VARIABLES GLOBAL_VALUE_PATH 15 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) select NEVER NULL -def information_schema SYSTEM_VARIABLES NUMERIC_BLOCK_SIZE 11 NULL YES varchar 21 63 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(21) select NEVER NULL -def information_schema SYSTEM_VARIABLES NUMERIC_MAX_VALUE 10 NULL YES varchar 21 63 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(21) select NEVER NULL -def information_schema SYSTEM_VARIABLES NUMERIC_MIN_VALUE 9 NULL YES varchar 21 63 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(21) select NEVER NULL +def information_schema SYSTEM_VARIABLES GLOBAL_VALUE 3 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SYSTEM_VARIABLES GLOBAL_VALUE_ORIGIN 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SYSTEM_VARIABLES GLOBAL_VALUE_PATH 15 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SYSTEM_VARIABLES NUMERIC_BLOCK_SIZE 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SYSTEM_VARIABLES NUMERIC_MAX_VALUE 10 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SYSTEM_VARIABLES NUMERIC_MIN_VALUE 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema SYSTEM_VARIABLES READ_ONLY 13 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL -def information_schema SYSTEM_VARIABLES SESSION_VALUE 2 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) select NEVER NULL -def information_schema SYSTEM_VARIABLES VARIABLE_COMMENT 8 NULL NO varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) select NEVER NULL -def information_schema SYSTEM_VARIABLES VARIABLE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SYSTEM_VARIABLES VARIABLE_SCOPE 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema SYSTEM_VARIABLES VARIABLE_TYPE 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema SYSTEM_VARIABLES SESSION_VALUE 2 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SYSTEM_VARIABLES VARIABLE_COMMENT 8 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SYSTEM_VARIABLES VARIABLE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SYSTEM_VARIABLES VARIABLE_SCOPE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema SYSTEM_VARIABLES VARIABLE_TYPE 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema TABLES CHECK_TIME 17 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL -def information_schema TABLES CREATE_OPTIONS 20 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) select NEVER NULL +def information_schema TABLES CREATE_OPTIONS 20 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TABLES CREATE_TIME 15 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL def information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema TABLES ENGINE 5 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema TABLES ENGINE 5 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema TABLES MAX_INDEX_LENGTH 22 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) select NEVER NULL -def information_schema TABLES TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TABLES TABLE_COMMENT 21 NULL NO varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) select NEVER NULL -def information_schema TABLES TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema TABLES TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLES TABLE_COLLATION 18 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLES TABLE_COMMENT 21 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLES TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema TABLES TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TABLES TABLE_TYPE 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema TABLES TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLES TABLE_TYPE 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TABLES TEMPORARY 23 NULL YES varchar 1 3 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1) select NEVER NULL def information_schema TABLES UPDATE_TIME 16 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL def information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema TABLESPACES AUTOEXTEND_SIZE 6 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema TABLESPACES ENGINE 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema TABLESPACES ENGINE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TABLESPACES EXTENT_SIZE 5 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema TABLESPACES LOGFILE_GROUP_NAME 4 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema TABLESPACES LOGFILE_GROUP_NAME 4 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TABLESPACES MAXIMUM_SIZE 7 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema TABLESPACES NODEGROUP_ID 8 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL -def information_schema TABLESPACES TABLESPACE_COMMENT 9 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) select NEVER NULL -def information_schema TABLESPACES TABLESPACE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TABLESPACES TABLESPACE_TYPE 3 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TABLE_CONSTRAINTS TABLE_NAME 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TABLE_CONSTRAINTS TABLE_SCHEMA 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TABLE_PRIVILEGES GRANTEE 1 NULL NO varchar 385 1155 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(385) select NEVER NULL +def information_schema TABLESPACES TABLESPACE_COMMENT 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLESPACES TABLESPACE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLESPACES TABLESPACE_TYPE 3 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLE_CONSTRAINTS TABLE_NAME 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLE_CONSTRAINTS TABLE_SCHEMA 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLE_PRIVILEGES GRANTEE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TABLE_PRIVILEGES IS_GRANTABLE 6 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL -def information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema TABLE_PRIVILEGES TABLE_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLE_PRIVILEGES TABLE_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TABLE_STATISTICS ROWS_CHANGED 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL def information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES 5 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL def information_schema TABLE_STATISTICS ROWS_READ 3 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL -def information_schema TABLE_STATISTICS TABLE_NAME 2 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) select NEVER NULL -def information_schema TABLE_STATISTICS TABLE_SCHEMA 1 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) select NEVER NULL +def information_schema TABLE_STATISTICS TABLE_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TABLE_STATISTICS TABLE_SCHEMA 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TRIGGERS ACTION_CONDITION 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TRIGGERS ACTION_ORDER 8 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) select NEVER NULL def information_schema TRIGGERS ACTION_ORIENTATION 11 NULL NO varchar 9 27 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(9) select NEVER NULL def information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW 16 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL -def information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE 14 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE 14 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW 15 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL -def information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TRIGGERS ACTION_STATEMENT 10 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TRIGGERS ACTION_TIMING 12 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) select NEVER NULL -def information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL -def information_schema TRIGGERS COLLATION_CONNECTION 21 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TRIGGERS COLLATION_CONNECTION 21 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TRIGGERS CREATED 17 NULL YES datetime NULL NULL NULL NULL 2 NULL NULL datetime(2) select NEVER NULL -def information_schema TRIGGERS DATABASE_COLLATION 22 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TRIGGERS DEFINER 19 NULL YES varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) select NEVER NULL +def information_schema TRIGGERS DATABASE_COLLATION 22 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TRIGGERS DEFINER 19 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema TRIGGERS EVENT_MANIPULATION 4 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) select NEVER NULL -def information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema TRIGGERS EVENT_OBJECT_SCHEMA 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TRIGGERS EVENT_OBJECT_TABLE 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TRIGGERS SQL_MODE 18 NULL NO varchar 8192 24576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8192) select NEVER NULL -def information_schema TRIGGERS TRIGGER_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema TRIGGERS TRIGGER_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema TRIGGERS TRIGGER_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema USER_PRIVILEGES GRANTEE 1 NULL NO varchar 385 1155 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(385) select NEVER NULL +def information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TRIGGERS EVENT_OBJECT_SCHEMA 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TRIGGERS EVENT_OBJECT_TABLE 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TRIGGERS SQL_MODE 18 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TRIGGERS TRIGGER_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TRIGGERS TRIGGER_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema TRIGGERS TRIGGER_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema USER_PRIVILEGES GRANTEE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema USER_PRIVILEGES IS_GRANTABLE 4 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL -def information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema USER_PRIVILEGES TABLE_CATALOG 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL +def information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema USER_PRIVILEGES TABLE_CATALOG 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema USER_STATISTICS ACCESS_DENIED 22 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL def information_schema USER_STATISTICS BINLOG_BYTES_WRITTEN 9 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL def information_schema USER_STATISTICS BUSY_TIME 5 NULL NO double NULL NULL 21 NULL NULL NULL NULL double select NEVER NULL @@ -479,17 +479,17 @@ def information_schema USER_STATISTICS SELECT_COMMANDS 15 NULL NO bigint NULL NU def information_schema USER_STATISTICS TOTAL_CONNECTIONS 2 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) select NEVER NULL def information_schema USER_STATISTICS TOTAL_SSL_CONNECTIONS 24 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL def information_schema USER_STATISTICS UPDATE_COMMANDS 16 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL -def information_schema USER_STATISTICS USER 1 NULL NO varchar 128 384 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(128) select NEVER NULL +def information_schema USER_STATISTICS USER 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema VIEWS ALGORITHM 11 NULL NO varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) select NEVER NULL -def information_schema VIEWS CHARACTER_SET_CLIENT 9 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL +def information_schema VIEWS CHARACTER_SET_CLIENT 9 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema VIEWS CHECK_OPTION 5 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) select NEVER NULL -def information_schema VIEWS COLLATION_CONNECTION 10 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema VIEWS DEFINER 7 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) select NEVER NULL +def information_schema VIEWS COLLATION_CONNECTION 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema VIEWS DEFINER 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema VIEWS IS_UPDATABLE 6 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL def information_schema VIEWS SECURITY_TYPE 8 NULL NO varchar 7 21 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(7) select NEVER NULL -def information_schema VIEWS TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL -def information_schema VIEWS TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL -def information_schema VIEWS TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL +def information_schema VIEWS TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema VIEWS TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL +def information_schema VIEWS TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL def information_schema VIEWS VIEW_DEFINITION 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL ########################################################################## # Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH @@ -554,34 +554,34 @@ WHERE table_schema = 'information_schema' AND table_name <> 'profiling' AND table_name not like 'innodb_%' ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION; COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE -3.0000 information_schema ALL_PLUGINS PLUGIN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ALL_PLUGINS PLUGIN_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema ALL_PLUGINS PLUGIN_STATUS varchar 16 48 utf8mb3 utf8mb3_general_ci varchar(16) -3.0000 information_schema ALL_PLUGINS PLUGIN_TYPE varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema ALL_PLUGINS PLUGIN_TYPE_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema ALL_PLUGINS PLUGIN_LIBRARY varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ALL_PLUGINS PLUGIN_LIBRARY_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema ALL_PLUGINS PLUGIN_AUTHOR varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ALL_PLUGINS PLUGIN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_STATUS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_TYPE_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_LIBRARY longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_LIBRARY_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_AUTHOR longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema ALL_PLUGINS PLUGIN_DESCRIPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema ALL_PLUGINS PLUGIN_LICENSE varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema ALL_PLUGINS LOAD_OPTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ALL_PLUGINS PLUGIN_MATURITY varchar 12 36 utf8mb3 utf8mb3_general_ci varchar(12) -3.0000 information_schema ALL_PLUGINS PLUGIN_AUTH_VERSION varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema APPLICABLE_ROLES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385) -3.0000 information_schema APPLICABLE_ROLES ROLE_NAME varchar 128 384 utf8mb3 utf8mb3_general_ci varchar(128) +1.0000 information_schema ALL_PLUGINS PLUGIN_LICENSE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS LOAD_OPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_MATURITY longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_AUTH_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema APPLICABLE_ROLES GRANTEE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema APPLICABLE_ROLES ROLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema APPLICABLE_ROLES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) 3.0000 information_schema APPLICABLE_ROLES IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8mb3 utf8mb3_general_ci varchar(60) +1.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema CHARACTER_SETS DESCRIPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(3) -3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema CHECK_CONSTRAINTS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema CHECK_CONSTRAINTS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema CHECK_CONSTRAINTS LEVEL varchar 6 18 utf8mb3 utf8mb3_general_ci varchar(6) 1.0000 information_schema CHECK_CONSTRAINTS CHECK_CLAUSE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema CLIENT_STATISTICS CLIENT varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema CLIENT_STATISTICS CLIENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) NULL information_schema CLIENT_STATISTICS CONNECTED_TIME bigint NULL NULL NULL NULL bigint(21) @@ -606,88 +606,88 @@ NULL information_schema CLIENT_STATISTICS ACCESS_DENIED bigint NULL NULL NULL NU NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES bigint NULL NULL NULL NULL bigint(21) NULL information_schema CLIENT_STATISTICS TOTAL_SSL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema CLIENT_STATISTICS MAX_STATEMENT_TIME_EXCEEDED bigint NULL NULL NULL NULL bigint(21) -3.0000 information_schema COLLATIONS COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLLATIONS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) +1.0000 information_schema COLLATIONS COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLLATIONS CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema COLLATIONS ID bigint NULL NULL NULL NULL bigint(11) 3.0000 information_schema COLLATIONS IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) 3.0000 information_schema COLLATIONS IS_COMPILED varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) NULL information_schema COLLATIONS SORTLEN bigint NULL NULL NULL NULL bigint(3) -3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY ID bigint NULL NULL NULL NULL bigint(11) 3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema COLUMNS TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema COLUMNS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLUMNS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLUMNS COLUMN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema COLUMNS TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS COLUMN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema COLUMNS ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned 1.0000 information_schema COLUMNS COLUMN_DEFAULT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema COLUMNS IS_NULLABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema COLUMNS DATA_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema COLUMNS DATA_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema COLUMNS NUMERIC_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema COLUMNS NUMERIC_SCALE bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema COLUMNS DATETIME_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema COLUMNS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema COLUMNS COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema COLUMNS CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema COLUMNS COLUMN_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema COLUMNS COLUMN_KEY varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema COLUMNS EXTRA varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema COLUMNS PRIVILEGES varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema COLUMNS COLUMN_COMMENT varchar 1024 3072 utf8mb3 utf8mb3_general_ci varchar(1024) +1.0000 information_schema COLUMNS EXTRA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS PRIVILEGES longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS COLUMN_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema COLUMNS IS_GENERATED varchar 6 18 utf8mb3 utf8mb3_general_ci varchar(6) 1.0000 information_schema COLUMNS GENERATION_EXPRESSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema COLUMN_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385) -3.0000 information_schema COLUMN_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema COLUMN_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLUMN_PRIVILEGES TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLUMN_PRIVILEGES COLUMN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema COLUMN_PRIVILEGES GRANTEE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMN_PRIVILEGES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMN_PRIVILEGES TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMN_PRIVILEGES TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMN_PRIVILEGES COLUMN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema COLUMN_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema ENABLED_ROLES ROLE_NAME varchar 128 384 utf8mb3 utf8mb3_general_ci varchar(128) -3.0000 information_schema ENGINES ENGINE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ENABLED_ROLES ROLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ENGINES ENGINE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema ENGINES SUPPORT varchar 8 24 utf8mb3 utf8mb3_general_ci varchar(8) -3.0000 information_schema ENGINES COMMENT varchar 160 480 utf8mb3 utf8mb3_general_ci varchar(160) +1.0000 information_schema ENGINES COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema ENGINES TRANSACTIONS varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) 3.0000 information_schema ENGINES XA varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) 3.0000 information_schema ENGINES SAVEPOINTS varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema EVENTS EVENT_CATALOG varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema EVENTS EVENT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema EVENTS EVENT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema EVENTS DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384) -3.0000 information_schema EVENTS TIME_ZONE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema EVENTS EVENT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS EVENT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS EVENT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS DEFINER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS TIME_ZONE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema EVENTS EVENT_BODY varchar 8 24 utf8mb3 utf8mb3_general_ci varchar(8) 1.0000 information_schema EVENTS EVENT_DEFINITION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema EVENTS EVENT_TYPE varchar 9 27 utf8mb3 utf8mb3_general_ci varchar(9) NULL information_schema EVENTS EXECUTE_AT datetime NULL NULL NULL NULL datetime -3.0000 information_schema EVENTS INTERVAL_VALUE varchar 256 768 utf8mb3 utf8mb3_general_ci varchar(256) -3.0000 information_schema EVENTS INTERVAL_FIELD varchar 18 54 utf8mb3 utf8mb3_general_ci varchar(18) -3.0000 information_schema EVENTS SQL_MODE varchar 8192 24576 utf8mb3 utf8mb3_general_ci varchar(8192) +1.0000 information_schema EVENTS INTERVAL_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS INTERVAL_FIELD longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS SQL_MODE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema EVENTS STARTS datetime NULL NULL NULL NULL datetime NULL information_schema EVENTS ENDS datetime NULL NULL NULL NULL datetime -3.0000 information_schema EVENTS STATUS varchar 18 54 utf8mb3 utf8mb3_general_ci varchar(18) -3.0000 information_schema EVENTS ON_COMPLETION varchar 12 36 utf8mb3 utf8mb3_general_ci varchar(12) +1.0000 information_schema EVENTS STATUS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS ON_COMPLETION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema EVENTS CREATED datetime NULL NULL NULL NULL datetime NULL information_schema EVENTS LAST_ALTERED datetime NULL NULL NULL NULL datetime NULL information_schema EVENTS LAST_EXECUTED datetime NULL NULL NULL NULL datetime -3.0000 information_schema EVENTS EVENT_COMMENT varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema EVENTS EVENT_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema EVENTS ORIGINATOR bigint NULL NULL NULL NULL bigint(10) -3.0000 information_schema EVENTS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema EVENTS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema EVENTS DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema EVENTS CHARACTER_SET_CLIENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS COLLATION_CONNECTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS DATABASE_COLLATION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema FILES FILE_ID bigint NULL NULL NULL NULL bigint(4) -3.0000 information_schema FILES FILE_NAME varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema FILES FILE_TYPE varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema FILES TABLESPACE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema FILES TABLE_CATALOG varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema FILES TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema FILES TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema FILES LOGFILE_GROUP_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema FILES FILE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES FILE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES TABLESPACE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES LOGFILE_GROUP_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema FILES LOGFILE_GROUP_NUMBER bigint NULL NULL NULL NULL bigint(4) -3.0000 information_schema FILES ENGINE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema FILES FULLTEXT_KEYS varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema FILES ENGINE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES FULLTEXT_KEYS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema FILES DELETED_ROWS bigint NULL NULL NULL NULL bigint(4) NULL information_schema FILES UPDATE_COUNT bigint NULL NULL NULL NULL bigint(4) NULL information_schema FILES FREE_EXTENTS bigint NULL NULL NULL NULL bigint(4) @@ -713,31 +713,31 @@ NULL information_schema FILES CREATE_TIME datetime NULL NULL NULL NULL datetime NULL information_schema FILES UPDATE_TIME datetime NULL NULL NULL NULL datetime NULL information_schema FILES CHECK_TIME datetime NULL NULL NULL NULL datetime NULL information_schema FILES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema FILES STATUS varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema FILES EXTRA varchar 255 765 utf8mb3 utf8mb3_general_ci varchar(255) -3.0000 information_schema GEOMETRY_COLUMNS F_TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema GEOMETRY_COLUMNS F_TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GEOMETRY_COLUMNS F_TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GEOMETRY_COLUMNS F_GEOMETRY_COLUMN varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GEOMETRY_COLUMNS G_TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema GEOMETRY_COLUMNS G_TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GEOMETRY_COLUMNS G_TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GEOMETRY_COLUMNS G_GEOMETRY_COLUMN varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema FILES STATUS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES EXTRA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS F_TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS F_TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS F_TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS F_GEOMETRY_COLUMN longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS G_TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS G_TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS G_TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS G_GEOMETRY_COLUMN longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema GEOMETRY_COLUMNS STORAGE_TYPE tinyint NULL NULL NULL NULL tinyint(2) NULL information_schema GEOMETRY_COLUMNS GEOMETRY_TYPE int NULL NULL NULL NULL int(7) NULL information_schema GEOMETRY_COLUMNS COORD_DIMENSION tinyint NULL NULL NULL NULL tinyint(2) NULL information_schema GEOMETRY_COLUMNS MAX_PPR tinyint NULL NULL NULL NULL tinyint(2) NULL information_schema GEOMETRY_COLUMNS SRID smallint NULL NULL NULL NULL smallint(5) -3.0000 information_schema GLOBAL_STATUS VARIABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GLOBAL_STATUS VARIABLE_VALUE varchar 4096 12288 utf8mb3 utf8mb3_general_ci varchar(4096) -3.0000 information_schema GLOBAL_VARIABLES VARIABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GLOBAL_VARIABLES VARIABLE_VALUE varchar 4096 12288 utf8mb3 utf8mb3_general_ci varchar(4096) -3.0000 information_schema INDEX_STATISTICS TABLE_SCHEMA varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) -3.0000 information_schema INDEX_STATISTICS TABLE_NAME varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) -3.0000 information_schema INDEX_STATISTICS INDEX_NAME varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) +1.0000 information_schema GLOBAL_STATUS VARIABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GLOBAL_STATUS VARIABLE_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GLOBAL_VARIABLES VARIABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GLOBAL_VARIABLES VARIABLE_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema INDEX_STATISTICS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema INDEX_STATISTICS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema INDEX_STATISTICS INDEX_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema INDEX_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21) -3.0000 information_schema KEYWORDS WORD varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_CACHES KEY_CACHE_NAME varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) +1.0000 information_schema KEYWORDS WORD longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_CACHES KEY_CACHE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema KEY_CACHES SEGMENTS int NULL NULL NULL NULL int(3) unsigned NULL information_schema KEY_CACHES SEGMENT_NUMBER int NULL NULL NULL NULL int(3) unsigned NULL information_schema KEY_CACHES FULL_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned @@ -749,47 +749,47 @@ NULL information_schema KEY_CACHES READ_REQUESTS bigint NULL NULL NULL NULL bigi NULL information_schema KEY_CACHES READS bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema KEY_CACHES WRITE_REQUESTS bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema KEY_CACHES WRITES bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema KEY_COLUMN_USAGE TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE COLUMN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE COLUMN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema KEY_COLUMN_USAGE ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(10) NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NULL NULL NULL NULL bigint(10) -3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema OPTIMIZER_TRACE QUERY longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema OPTIMIZER_TRACE TRACE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema OPTIMIZER_TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE int NULL NULL NULL NULL int(20) NULL information_schema OPTIMIZER_TRACE INSUFFICIENT_PRIVILEGES tinyint NULL NULL NULL NULL tinyint(1) -3.0000 information_schema PARAMETERS SPECIFIC_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema PARAMETERS SPECIFIC_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARAMETERS SPECIFIC_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PARAMETERS SPECIFIC_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARAMETERS SPECIFIC_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARAMETERS SPECIFIC_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PARAMETERS ORDINAL_POSITION int NULL NULL NULL NULL int(21) 3.0000 information_schema PARAMETERS PARAMETER_MODE varchar 5 15 utf8mb3 utf8mb3_general_ci varchar(5) -3.0000 information_schema PARAMETERS PARAMETER_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARAMETERS DATA_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PARAMETERS PARAMETER_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARAMETERS DATA_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21) NULL information_schema PARAMETERS CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21) NULL information_schema PARAMETERS NUMERIC_PRECISION int NULL NULL NULL NULL int(21) NULL information_schema PARAMETERS NUMERIC_SCALE int NULL NULL NULL NULL int(21) NULL information_schema PARAMETERS DATETIME_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema PARAMETERS CHARACTER_SET_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARAMETERS COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PARAMETERS CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARAMETERS COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PARAMETERS DTD_IDENTIFIER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema PARAMETERS ROUTINE_TYPE varchar 9 27 utf8mb3 utf8mb3_general_ci varchar(9) -3.0000 information_schema PARTITIONS TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema PARTITIONS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARTITIONS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARTITIONS PARTITION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARTITIONS SUBPARTITION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PARTITIONS TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS PARTITION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS SUBPARTITION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema PARTITIONS PARTITION_METHOD varchar 18 54 utf8mb3 utf8mb3_general_ci varchar(18) -3.0000 information_schema PARTITIONS SUBPARTITION_METHOD varchar 12 36 utf8mb3 utf8mb3_general_ci varchar(12) +1.0000 information_schema PARTITIONS PARTITION_METHOD longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS SUBPARTITION_METHOD longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PARTITIONS PARTITION_EXPRESSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PARTITIONS SUBPARTITION_EXPRESSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PARTITIONS PARTITION_DESCRIPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext @@ -803,29 +803,29 @@ NULL information_schema PARTITIONS CREATE_TIME datetime NULL NULL NULL NULL date NULL information_schema PARTITIONS UPDATE_TIME datetime NULL NULL NULL NULL datetime NULL information_schema PARTITIONS CHECK_TIME datetime NULL NULL NULL NULL datetime NULL information_schema PARTITIONS CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema PARTITIONS PARTITION_COMMENT varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema PARTITIONS NODEGROUP varchar 12 36 utf8mb3 utf8mb3_general_ci varchar(12) -3.0000 information_schema PARTITIONS TABLESPACE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PLUGINS PLUGIN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PLUGINS PLUGIN_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema PLUGINS PLUGIN_STATUS varchar 16 48 utf8mb3 utf8mb3_general_ci varchar(16) -3.0000 information_schema PLUGINS PLUGIN_TYPE varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema PLUGINS PLUGIN_TYPE_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema PLUGINS PLUGIN_LIBRARY varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PLUGINS PLUGIN_LIBRARY_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema PLUGINS PLUGIN_AUTHOR varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PARTITIONS PARTITION_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS NODEGROUP longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS TABLESPACE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_STATUS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_TYPE_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_LIBRARY longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_LIBRARY_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_AUTHOR longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PLUGINS PLUGIN_DESCRIPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema PLUGINS PLUGIN_LICENSE varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema PLUGINS LOAD_OPTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PLUGINS PLUGIN_MATURITY varchar 12 36 utf8mb3 utf8mb3_general_ci varchar(12) -3.0000 information_schema PLUGINS PLUGIN_AUTH_VERSION varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) +1.0000 information_schema PLUGINS PLUGIN_LICENSE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS LOAD_OPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_MATURITY longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_AUTH_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PROCESSLIST ID bigint NULL NULL NULL NULL bigint(4) -3.0000 information_schema PROCESSLIST USER varchar 128 384 utf8mb3 utf8mb3_general_ci varchar(128) -3.0000 information_schema PROCESSLIST HOST varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PROCESSLIST DB varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PROCESSLIST COMMAND varchar 16 48 utf8mb3 utf8mb3_general_ci varchar(16) +1.0000 information_schema PROCESSLIST USER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PROCESSLIST HOST longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PROCESSLIST DB longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PROCESSLIST COMMAND longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7) -3.0000 information_schema PROCESSLIST STATE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PROCESSLIST STATE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PROCESSLIST INFO longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PROCESSLIST TIME_MS decimal NULL NULL NULL NULL decimal(22,3) NULL information_schema PROCESSLIST STAGE tinyint NULL NULL NULL NULL tinyint(2) @@ -837,105 +837,105 @@ NULL information_schema PROCESSLIST EXAMINED_ROWS int NULL NULL NULL NULL int(7) NULL information_schema PROCESSLIST QUERY_ID bigint NULL NULL NULL NULL bigint(4) 1.0000 information_schema PROCESSLIST INFO_BINARY blob 65535 65535 NULL NULL blob NULL information_schema PROCESSLIST TID bigint NULL NULL NULL NULL bigint(4) -3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES SPECIFIC_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES ROUTINE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema ROUTINES ROUTINE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES ROUTINE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES ROUTINE_TYPE varchar 13 39 utf8mb3 utf8mb3_general_ci varchar(13) -3.0000 information_schema ROUTINES DATA_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES SPECIFIC_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES ROUTINE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES ROUTINE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES ROUTINE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES ROUTINE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES DATA_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21) NULL information_schema ROUTINES CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21) NULL information_schema ROUTINES NUMERIC_PRECISION int NULL NULL NULL NULL int(21) NULL information_schema ROUTINES NUMERIC_SCALE int NULL NULL NULL NULL int(21) NULL information_schema ROUTINES DATETIME_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema ROUTINES CHARACTER_SET_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ROUTINES CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema ROUTINES DTD_IDENTIFIER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema ROUTINES ROUTINE_BODY varchar 8 24 utf8mb3 utf8mb3_general_ci varchar(8) 1.0000 information_schema ROUTINES ROUTINE_DEFINITION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema ROUTINES EXTERNAL_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES EXTERNAL_LANGUAGE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ROUTINES EXTERNAL_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES EXTERNAL_LANGUAGE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema ROUTINES PARAMETER_STYLE varchar 8 24 utf8mb3 utf8mb3_general_ci varchar(8) 3.0000 information_schema ROUTINES IS_DETERMINISTIC varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema ROUTINES SQL_DATA_ACCESS varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES SQL_PATH varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ROUTINES SQL_DATA_ACCESS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES SQL_PATH longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema ROUTINES SECURITY_TYPE varchar 7 21 utf8mb3 utf8mb3_general_ci varchar(7) NULL information_schema ROUTINES CREATED datetime NULL NULL NULL NULL datetime NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datetime -3.0000 information_schema ROUTINES SQL_MODE varchar 8192 24576 utf8mb3 utf8mb3_general_ci varchar(8192) +1.0000 information_schema ROUTINES SQL_MODE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema ROUTINES ROUTINE_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema ROUTINES DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384) -3.0000 information_schema ROUTINES CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema ROUTINES COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SCHEMATA CATALOG_NAME varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema SCHEMATA SCHEMA_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SCHEMATA SQL_PATH varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema SCHEMATA SCHEMA_COMMENT varchar 1024 3072 utf8mb3 utf8mb3_general_ci varchar(1024) -3.0000 information_schema SCHEMA_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385) -3.0000 information_schema SCHEMA_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ROUTINES DEFINER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES CHARACTER_SET_CLIENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES COLLATION_CONNECTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES DATABASE_COLLATION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA CATALOG_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA SCHEMA_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA SQL_PATH longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA SCHEMA_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMA_PRIVILEGES GRANTEE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMA_PRIVILEGES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema SCHEMA_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema SESSION_STATUS VARIABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SESSION_STATUS VARIABLE_VALUE varchar 4096 12288 utf8mb3 utf8mb3_general_ci varchar(4096) -3.0000 information_schema SESSION_VARIABLES VARIABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SESSION_VARIABLES VARIABLE_VALUE varchar 4096 12288 utf8mb3 utf8mb3_general_ci varchar(4096) +1.0000 information_schema SESSION_STATUS VARIABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SESSION_STATUS VARIABLE_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SESSION_VARIABLES VARIABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SESSION_VARIABLES VARIABLE_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema SPATIAL_REF_SYS SRID smallint NULL NULL NULL NULL smallint(5) -3.0000 information_schema SPATIAL_REF_SYS AUTH_NAME varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) +1.0000 information_schema SPATIAL_REF_SYS AUTH_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema SPATIAL_REF_SYS AUTH_SRID int NULL NULL NULL NULL int(5) -3.0000 information_schema SPATIAL_REF_SYS SRTEXT varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema SQL_FUNCTIONS FUNCTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema STATISTICS TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema STATISTICS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema STATISTICS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema SPATIAL_REF_SYS SRTEXT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SQL_FUNCTIONS FUNCTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema STATISTICS NON_UNIQUE bigint NULL NULL NULL NULL bigint(1) -3.0000 information_schema STATISTICS INDEX_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema STATISTICS INDEX_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema STATISTICS INDEX_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS INDEX_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema STATISTICS SEQ_IN_INDEX int NULL NULL NULL NULL int(2) unsigned -3.0000 information_schema STATISTICS COLUMN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema STATISTICS COLUMN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema STATISTICS COLLATION varchar 1 3 utf8mb3 utf8mb3_general_ci varchar(1) NULL information_schema STATISTICS CARDINALITY bigint NULL NULL NULL NULL bigint(21) NULL information_schema STATISTICS SUB_PART bigint NULL NULL NULL NULL bigint(3) 3.0000 information_schema STATISTICS PACKED varchar 10 30 utf8mb3 utf8mb3_general_ci varchar(10) 3.0000 information_schema STATISTICS NULLABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema STATISTICS INDEX_TYPE varchar 16 48 utf8mb3 utf8mb3_general_ci varchar(16) -3.0000 information_schema STATISTICS COMMENT varchar 16 48 utf8mb3 utf8mb3_general_ci varchar(16) -3.0000 information_schema STATISTICS INDEX_COMMENT varchar 1024 3072 utf8mb3 utf8mb3_general_ci varchar(1024) +1.0000 information_schema STATISTICS INDEX_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS INDEX_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema STATISTICS IGNORED varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema SYSTEM_VARIABLES VARIABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SYSTEM_VARIABLES SESSION_VALUE varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE_ORIGIN varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SYSTEM_VARIABLES DEFAULT_VALUE varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema SYSTEM_VARIABLES VARIABLE_SCOPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SYSTEM_VARIABLES VARIABLE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SYSTEM_VARIABLES VARIABLE_COMMENT varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema SYSTEM_VARIABLES NUMERIC_MIN_VALUE varchar 21 63 utf8mb3 utf8mb3_general_ci varchar(21) -3.0000 information_schema SYSTEM_VARIABLES NUMERIC_MAX_VALUE varchar 21 63 utf8mb3 utf8mb3_general_ci varchar(21) -3.0000 information_schema SYSTEM_VARIABLES NUMERIC_BLOCK_SIZE varchar 21 63 utf8mb3 utf8mb3_general_ci varchar(21) +1.0000 information_schema SYSTEM_VARIABLES VARIABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES SESSION_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE_ORIGIN longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES DEFAULT_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES VARIABLE_SCOPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES VARIABLE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES VARIABLE_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES NUMERIC_MIN_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES NUMERIC_MAX_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES NUMERIC_BLOCK_SIZE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema SYSTEM_VARIABLES ENUM_VALUE_LIST longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema SYSTEM_VARIABLES READ_ONLY varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema SYSTEM_VARIABLES COMMAND_LINE_ARGUMENT varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE_PATH varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema TABLES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema TABLES TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLES TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLES TABLE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLES ENGINE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema SYSTEM_VARIABLES COMMAND_LINE_ARGUMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE_PATH longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES TABLE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES ENGINE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TABLES VERSION bigint NULL NULL NULL NULL bigint(21) unsigned 3.0000 information_schema TABLES ROW_FORMAT varchar 10 30 utf8mb3 utf8mb3_general_ci varchar(10) NULL information_schema TABLES TABLE_ROWS bigint NULL NULL NULL NULL bigint(21) unsigned @@ -948,65 +948,65 @@ NULL information_schema TABLES AUTO_INCREMENT bigint NULL NULL NULL NULL bigint( NULL information_schema TABLES CREATE_TIME datetime NULL NULL NULL NULL datetime NULL information_schema TABLES UPDATE_TIME datetime NULL NULL NULL NULL datetime NULL information_schema TABLES CHECK_TIME datetime NULL NULL NULL NULL datetime -3.0000 information_schema TABLES TABLE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TABLES TABLE_COLLATION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema TABLES CREATE_OPTIONS varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema TABLES TABLE_COMMENT varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) +1.0000 information_schema TABLES CREATE_OPTIONS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES TABLE_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TABLES MAX_INDEX_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned 3.0000 information_schema TABLES TEMPORARY varchar 1 3 utf8mb3 utf8mb3_general_ci varchar(1) -3.0000 information_schema TABLESPACES TABLESPACE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLESPACES ENGINE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLESPACES TABLESPACE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLESPACES LOGFILE_GROUP_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TABLESPACES TABLESPACE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLESPACES ENGINE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLESPACES TABLESPACE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLESPACES LOGFILE_GROUP_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TABLESPACES EXTENT_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema TABLESPACES AUTOEXTEND_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema TABLESPACES MAXIMUM_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema TABLESPACES NODEGROUP_ID bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema TABLESPACES TABLESPACE_COMMENT varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_CONSTRAINTS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_CONSTRAINTS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385) -3.0000 information_schema TABLE_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema TABLE_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_PRIVILEGES TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TABLESPACES TABLESPACE_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_PRIVILEGES GRANTEE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_PRIVILEGES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_PRIVILEGES TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_PRIVILEGES TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema TABLE_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema TABLE_STATISTICS TABLE_SCHEMA varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) -3.0000 information_schema TABLE_STATISTICS TABLE_NAME varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) +1.0000 information_schema TABLE_STATISTICS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_STATISTICS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TABLE_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21) NULL information_schema TABLE_STATISTICS ROWS_CHANGED bigint NULL NULL NULL NULL bigint(21) NULL information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES bigint NULL NULL NULL NULL bigint(21) -3.0000 information_schema TRIGGERS TRIGGER_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema TRIGGERS TRIGGER_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TRIGGERS TRIGGER_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TRIGGERS TRIGGER_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS TRIGGER_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS TRIGGER_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema TRIGGERS EVENT_MANIPULATION varchar 6 18 utf8mb3 utf8mb3_general_ci varchar(6) -3.0000 information_schema TRIGGERS EVENT_OBJECT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema TRIGGERS EVENT_OBJECT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TRIGGERS EVENT_OBJECT_TABLE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TRIGGERS EVENT_OBJECT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS EVENT_OBJECT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS EVENT_OBJECT_TABLE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TRIGGERS ACTION_ORDER bigint NULL NULL NULL NULL bigint(4) 1.0000 information_schema TRIGGERS ACTION_CONDITION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema TRIGGERS ACTION_STATEMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema TRIGGERS ACTION_ORIENTATION varchar 9 27 utf8mb3 utf8mb3_general_ci varchar(9) 3.0000 information_schema TRIGGERS ACTION_TIMING varchar 6 18 utf8mb3 utf8mb3_general_ci varchar(6) -3.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) 3.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) NULL information_schema TRIGGERS CREATED datetime NULL NULL NULL NULL datetime(2) -3.0000 information_schema TRIGGERS SQL_MODE varchar 8192 24576 utf8mb3 utf8mb3_general_ci varchar(8192) -3.0000 information_schema TRIGGERS DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384) -3.0000 information_schema TRIGGERS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema TRIGGERS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TRIGGERS DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema USER_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385) -3.0000 information_schema USER_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema USER_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TRIGGERS SQL_MODE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS DEFINER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS CHARACTER_SET_CLIENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS COLLATION_CONNECTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS DATABASE_COLLATION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema USER_PRIVILEGES GRANTEE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema USER_PRIVILEGES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema USER_PRIVILEGES PRIVILEGE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema USER_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema USER_STATISTICS USER varchar 128 384 utf8mb3 utf8mb3_general_ci varchar(128) +1.0000 information_schema USER_STATISTICS USER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema USER_STATISTICS TOTAL_CONNECTIONS int NULL NULL NULL NULL int(11) NULL information_schema USER_STATISTICS CONCURRENT_CONNECTIONS int NULL NULL NULL NULL int(11) NULL information_schema USER_STATISTICS CONNECTED_TIME int NULL NULL NULL NULL int(11) @@ -1031,14 +1031,14 @@ NULL information_schema USER_STATISTICS ACCESS_DENIED bigint NULL NULL NULL NULL NULL information_schema USER_STATISTICS EMPTY_QUERIES bigint NULL NULL NULL NULL bigint(21) NULL information_schema USER_STATISTICS TOTAL_SSL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema USER_STATISTICS MAX_STATEMENT_TIME_EXCEEDED bigint NULL NULL NULL NULL bigint(21) -3.0000 information_schema VIEWS TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema VIEWS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema VIEWS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema VIEWS TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema VIEWS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema VIEWS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema VIEWS VIEW_DEFINITION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema VIEWS CHECK_OPTION varchar 8 24 utf8mb3 utf8mb3_general_ci varchar(8) 3.0000 information_schema VIEWS IS_UPDATABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema VIEWS DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384) +1.0000 information_schema VIEWS DEFINER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema VIEWS SECURITY_TYPE varchar 7 21 utf8mb3 utf8mb3_general_ci varchar(7) -3.0000 information_schema VIEWS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema VIEWS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema VIEWS CHARACTER_SET_CLIENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema VIEWS COLLATION_CONNECTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema VIEWS ALGORITHM varchar 10 30 utf8mb3 utf8mb3_general_ci varchar(10) diff --git a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result index b52413f324479..9e7bca8e44948 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result @@ -3,39 +3,39 @@ WHERE table_schema = 'information_schema' AND table_name <> 'profiling' AND table_name not like 'innodb_%' ORDER BY table_schema, table_name, column_name; TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT IS_GENERATED GENERATION_EXPRESSION -def information_schema ALL_PLUGINS LOAD_OPTION 11 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_AUTH_VERSION 13 NULL YES varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) NEVER NULL +def information_schema ALL_PLUGINS LOAD_OPTION 11 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_AUTHOR 8 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_AUTH_VERSION 13 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema ALL_PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_LICENSE 10 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_MATURITY 12 NULL NO varchar 12 36 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(12) NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_STATUS 3 NULL NO varchar 16 48 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(16) NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_TYPE 4 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_TYPE_VERSION 5 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) NEVER NULL -def information_schema ALL_PLUGINS PLUGIN_VERSION 2 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) NEVER NULL -def information_schema APPLICABLE_ROLES GRANTEE 1 NULL NO varchar 385 1155 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(385) NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_LIBRARY 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_LICENSE 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_MATURITY 12 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_STATUS 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_TYPE 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_TYPE_VERSION 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ALL_PLUGINS PLUGIN_VERSION 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema APPLICABLE_ROLES GRANTEE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema APPLICABLE_ROLES IS_DEFAULT 4 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL def information_schema APPLICABLE_ROLES IS_GRANTABLE 3 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL -def information_schema APPLICABLE_ROLES ROLE_NAME 2 NULL NO varchar 128 384 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(128) NEVER NULL -def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL -def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema CHARACTER_SETS DESCRIPTION 3 NULL NO varchar 60 180 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(60) NEVER NULL +def information_schema APPLICABLE_ROLES ROLE_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema CHARACTER_SETS DESCRIPTION 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema CHARACTER_SETS MAXLEN 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) NEVER NULL def information_schema CHECK_CONSTRAINTS CHECK_CLAUSE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL -def information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema CHECK_CONSTRAINTS LEVEL 5 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) NEVER NULL -def information_schema CHECK_CONSTRAINTS TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema CHECK_CONSTRAINTS TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema CLIENT_STATISTICS ACCESS_DENIED 22 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL def information_schema CLIENT_STATISTICS BINLOG_BYTES_WRITTEN 9 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL def information_schema CLIENT_STATISTICS BUSY_TIME 5 NULL NO double NULL NULL 21 NULL NULL NULL NULL double NEVER NULL def information_schema CLIENT_STATISTICS BYTES_RECEIVED 7 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL def information_schema CLIENT_STATISTICS BYTES_SENT 8 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL -def information_schema CLIENT_STATISTICS CLIENT 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema CLIENT_STATISTICS CLIENT 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema CLIENT_STATISTICS COMMIT_TRANSACTIONS 18 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL def information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS 3 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL def information_schema CLIENT_STATISTICS CONNECTED_TIME 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL @@ -55,77 +55,77 @@ def information_schema CLIENT_STATISTICS SELECT_COMMANDS 15 NULL NO bigint NULL def information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS 2 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL def information_schema CLIENT_STATISTICS TOTAL_SSL_CONNECTIONS 24 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema CLIENT_STATISTICS UPDATE_COMMANDS 16 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL -def information_schema COLLATIONS CHARACTER_SET_NAME 2 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL -def information_schema COLLATIONS COLLATION_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema COLLATIONS CHARACTER_SET_NAME 2 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLLATIONS COLLATION_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema COLLATIONS ID 3 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(11) NEVER NULL def information_schema COLLATIONS IS_COMPILED 5 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL def information_schema COLLATIONS IS_DEFAULT 4 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL def information_schema COLLATIONS SORTLEN 6 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) NEVER NULL -def information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL -def information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema COLLATION_CHARACTER_SET_APPLICABILITY ID 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(11) NEVER NULL def information_schema COLLATION_CHARACTER_SET_APPLICABILITY IS_DEFAULT 5 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL def information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema COLUMNS CHARACTER_SET_NAME 14 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL -def information_schema COLUMNS COLLATION_NAME 15 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema COLUMNS COLUMN_COMMENT 20 NULL NO varchar 1024 3072 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1024) NEVER NULL +def information_schema COLUMNS CHARACTER_SET_NAME 14 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLUMNS COLLATION_NAME 15 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLUMNS COLUMN_COMMENT 20 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema COLUMNS COLUMN_KEY 17 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL -def information_schema COLUMNS COLUMN_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema COLUMNS COLUMN_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema COLUMNS COLUMN_TYPE 16 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL -def information_schema COLUMNS DATA_TYPE 8 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema COLUMNS DATA_TYPE 8 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema COLUMNS DATETIME_PRECISION 13 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema COLUMNS EXTRA 18 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) NEVER NULL +def information_schema COLUMNS EXTRA 18 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema COLUMNS GENERATION_EXPRESSION 22 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema COLUMNS IS_GENERATED 21 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) NEVER NULL def information_schema COLUMNS IS_NULLABLE 7 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL def information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema COLUMNS ORDINAL_POSITION 5 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema COLUMNS PRIVILEGES 19 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) NEVER NULL -def information_schema COLUMNS TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema COLUMNS TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema COLUMNS TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema COLUMN_PRIVILEGES COLUMN_NAME 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema COLUMN_PRIVILEGES GRANTEE 1 NULL NO varchar 385 1155 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(385) NEVER NULL +def information_schema COLUMNS PRIVILEGES 19 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLUMNS TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLUMNS TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLUMNS TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLUMN_PRIVILEGES COLUMN_NAME 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLUMN_PRIVILEGES GRANTEE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema COLUMN_PRIVILEGES IS_GRANTABLE 7 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL -def information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ENABLED_ROLES ROLE_NAME 1 NULL YES varchar 128 384 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(128) NEVER NULL -def information_schema ENGINES COMMENT 3 NULL NO varchar 160 480 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(160) NEVER NULL -def information_schema ENGINES ENGINE 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ENABLED_ROLES ROLE_NAME 1 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ENGINES COMMENT 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ENGINES ENGINE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema ENGINES SAVEPOINTS 6 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL def information_schema ENGINES SUPPORT 2 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) NEVER NULL def information_schema ENGINES TRANSACTIONS 4 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL def information_schema ENGINES XA 5 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL -def information_schema EVENTS CHARACTER_SET_CLIENT 22 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL -def information_schema EVENTS COLLATION_CONNECTION 23 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema EVENTS CHARACTER_SET_CLIENT 22 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema EVENTS COLLATION_CONNECTION 23 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema EVENTS CREATED 17 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL -def information_schema EVENTS DATABASE_COLLATION 24 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema EVENTS DEFINER 4 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) NEVER NULL +def information_schema EVENTS DATABASE_COLLATION 24 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema EVENTS DEFINER 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema EVENTS ENDS 14 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL def information_schema EVENTS EVENT_BODY 6 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) NEVER NULL -def information_schema EVENTS EVENT_CATALOG 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema EVENTS EVENT_COMMENT 20 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema EVENTS EVENT_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema EVENTS EVENT_COMMENT 20 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema EVENTS EVENT_DEFINITION 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL -def information_schema EVENTS EVENT_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema EVENTS EVENT_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema EVENTS EVENT_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema EVENTS EVENT_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema EVENTS EVENT_TYPE 8 NULL NO varchar 9 27 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(9) NEVER NULL def information_schema EVENTS EXECUTE_AT 9 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL -def information_schema EVENTS INTERVAL_FIELD 11 NULL YES varchar 18 54 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(18) NEVER NULL -def information_schema EVENTS INTERVAL_VALUE 10 NULL YES varchar 256 768 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(256) NEVER NULL +def information_schema EVENTS INTERVAL_FIELD 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema EVENTS INTERVAL_VALUE 10 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema EVENTS LAST_ALTERED 18 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL def information_schema EVENTS LAST_EXECUTED 19 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL -def information_schema EVENTS ON_COMPLETION 16 NULL NO varchar 12 36 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(12) NEVER NULL +def information_schema EVENTS ON_COMPLETION 16 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema EVENTS ORIGINATOR 21 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(10) NEVER NULL -def information_schema EVENTS SQL_MODE 12 NULL NO varchar 8192 24576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8192) NEVER NULL +def information_schema EVENTS SQL_MODE 12 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema EVENTS STARTS 13 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL -def information_schema EVENTS STATUS 15 NULL NO varchar 18 54 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(18) NEVER NULL -def information_schema EVENTS TIME_ZONE 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema EVENTS STATUS 15 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema EVENTS TIME_ZONE 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema FILES AUTOEXTEND_SIZE 19 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema FILES AVG_ROW_LENGTH 28 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema FILES CHECKSUM 36 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL @@ -135,61 +135,61 @@ def information_schema FILES CREATION_TIME 20 NULL YES datetime NULL NULL NULL N def information_schema FILES DATA_FREE 32 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema FILES DATA_LENGTH 29 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema FILES DELETED_ROWS 12 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL -def information_schema FILES ENGINE 10 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema FILES ENGINE 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema FILES EXTENT_SIZE 16 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL -def information_schema FILES EXTRA 38 NULL YES varchar 255 765 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(255) NEVER NULL +def information_schema FILES EXTRA 38 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema FILES FILE_ID 1 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL -def information_schema FILES FILE_NAME 2 NULL YES varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema FILES FILE_TYPE 3 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) NEVER NULL +def information_schema FILES FILE_NAME 2 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema FILES FILE_TYPE 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema FILES FREE_EXTENTS 14 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL -def information_schema FILES FULLTEXT_KEYS 11 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema FILES FULLTEXT_KEYS 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema FILES INDEX_LENGTH 31 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema FILES INITIAL_SIZE 17 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema FILES LAST_ACCESS_TIME 22 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL def information_schema FILES LAST_UPDATE_TIME 21 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL -def information_schema FILES LOGFILE_GROUP_NAME 8 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema FILES LOGFILE_GROUP_NAME 8 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema FILES LOGFILE_GROUP_NUMBER 9 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL def information_schema FILES MAXIMUM_SIZE 18 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema FILES MAX_DATA_LENGTH 30 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema FILES RECOVER_TIME 23 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL def information_schema FILES ROW_FORMAT 26 NULL YES varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) NEVER NULL -def information_schema FILES STATUS 37 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) NEVER NULL -def information_schema FILES TABLESPACE_NAME 4 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema FILES TABLE_CATALOG 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema FILES TABLE_NAME 7 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema FILES STATUS 37 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema FILES TABLESPACE_NAME 4 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema FILES TABLE_CATALOG 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema FILES TABLE_NAME 7 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema FILES TABLE_ROWS 27 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema FILES TABLE_SCHEMA 6 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema FILES TABLE_SCHEMA 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema FILES TOTAL_EXTENTS 15 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL def information_schema FILES TRANSACTION_COUNTER 24 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL def information_schema FILES UPDATE_COUNT 13 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL def information_schema FILES UPDATE_TIME 34 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL def information_schema FILES VERSION 25 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema GEOMETRY_COLUMNS COORD_DIMENSION 11 NULL NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(2) NEVER NULL -def information_schema GEOMETRY_COLUMNS F_GEOMETRY_COLUMN 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema GEOMETRY_COLUMNS F_TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema GEOMETRY_COLUMNS F_TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema GEOMETRY_COLUMNS F_TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema GEOMETRY_COLUMNS F_GEOMETRY_COLUMN 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema GEOMETRY_COLUMNS F_TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema GEOMETRY_COLUMNS F_TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema GEOMETRY_COLUMNS F_TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema GEOMETRY_COLUMNS GEOMETRY_TYPE 10 NULL NO int NULL NULL 10 0 NULL NULL NULL int(7) NEVER NULL -def information_schema GEOMETRY_COLUMNS G_GEOMETRY_COLUMN 8 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema GEOMETRY_COLUMNS G_TABLE_CATALOG 5 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema GEOMETRY_COLUMNS G_TABLE_NAME 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema GEOMETRY_COLUMNS G_TABLE_SCHEMA 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema GEOMETRY_COLUMNS G_GEOMETRY_COLUMN 8 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema GEOMETRY_COLUMNS G_TABLE_CATALOG 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema GEOMETRY_COLUMNS G_TABLE_NAME 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema GEOMETRY_COLUMNS G_TABLE_SCHEMA 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema GEOMETRY_COLUMNS MAX_PPR 12 NULL NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(2) NEVER NULL def information_schema GEOMETRY_COLUMNS SRID 13 NULL NO smallint NULL NULL 5 0 NULL NULL NULL smallint(5) NEVER NULL def information_schema GEOMETRY_COLUMNS STORAGE_TYPE 9 NULL NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(2) NEVER NULL -def information_schema GLOBAL_STATUS VARIABLE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL NO varchar 4096 12288 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(4096) NEVER NULL -def information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL NO varchar 4096 12288 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(4096) NEVER NULL -def information_schema INDEX_STATISTICS INDEX_NAME 3 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) NEVER NULL +def information_schema GLOBAL_STATUS VARIABLE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema INDEX_STATISTICS INDEX_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema INDEX_STATISTICS ROWS_READ 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL -def information_schema INDEX_STATISTICS TABLE_NAME 2 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) NEVER NULL -def information_schema INDEX_STATISTICS TABLE_SCHEMA 1 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) NEVER NULL -def information_schema KEYWORDS WORD 1 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema INDEX_STATISTICS TABLE_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema INDEX_STATISTICS TABLE_SCHEMA 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema KEYWORDS WORD 1 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema KEY_CACHES BLOCK_SIZE 5 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema KEY_CACHES DIRTY_BLOCKS 8 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema KEY_CACHES FULL_SIZE 4 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema KEY_CACHES KEY_CACHE_NAME 1 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) NEVER NULL +def information_schema KEY_CACHES KEY_CACHE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema KEY_CACHES READS 10 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema KEY_CACHES READ_REQUESTS 9 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema KEY_CACHES SEGMENTS 2 NULL YES int NULL NULL 10 0 NULL NULL NULL int(3) unsigned NEVER NULL @@ -198,38 +198,38 @@ def information_schema KEY_CACHES UNUSED_BLOCKS 7 NULL NO bigint NULL NULL 20 0 def information_schema KEY_CACHES USED_BLOCKS 6 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema KEY_CACHES WRITES 12 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema KEY_CACHES WRITE_REQUESTS 11 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema KEY_COLUMN_USAGE ORDINAL_POSITION 8 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(10) NEVER NULL def information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT 9 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(10) NEVER NULL -def information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME 12 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME 11 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME 12 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema OPTIMIZER_TRACE INSUFFICIENT_PRIVILEGES 4 NULL NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(1) NEVER NULL def information_schema OPTIMIZER_TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE 3 NULL NO int NULL NULL 10 0 NULL NULL NULL int(20) NEVER NULL def information_schema OPTIMIZER_TRACE QUERY 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema OPTIMIZER_TRACE TRACE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) NEVER NULL def information_schema PARAMETERS CHARACTER_OCTET_LENGTH 9 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) NEVER NULL -def information_schema PARAMETERS CHARACTER_SET_NAME 13 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema PARAMETERS COLLATION_NAME 14 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema PARAMETERS DATA_TYPE 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema PARAMETERS CHARACTER_SET_NAME 13 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PARAMETERS COLLATION_NAME 14 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PARAMETERS DATA_TYPE 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PARAMETERS DATETIME_PRECISION 12 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema PARAMETERS DTD_IDENTIFIER 15 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PARAMETERS NUMERIC_PRECISION 10 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) NEVER NULL def information_schema PARAMETERS NUMERIC_SCALE 11 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) NEVER NULL def information_schema PARAMETERS ORDINAL_POSITION 4 NULL NO int NULL NULL 10 0 NULL NULL NULL int(21) NEVER NULL def information_schema PARAMETERS PARAMETER_MODE 5 NULL YES varchar 5 15 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(5) NEVER NULL -def information_schema PARAMETERS PARAMETER_NAME 6 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema PARAMETERS PARAMETER_NAME 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PARAMETERS ROUTINE_TYPE 16 NULL NO varchar 9 27 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(9) NEVER NULL -def information_schema PARAMETERS SPECIFIC_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema PARAMETERS SPECIFIC_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema PARAMETERS SPECIFIC_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema PARAMETERS SPECIFIC_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PARAMETERS SPECIFIC_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PARAMETERS SPECIFIC_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PARTITIONS AVG_ROW_LENGTH 14 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema PARTITIONS CHECK_TIME 21 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL @@ -238,40 +238,40 @@ def information_schema PARTITIONS DATA_FREE 18 NULL NO bigint NULL NULL 20 0 NUL def information_schema PARTITIONS DATA_LENGTH 15 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema PARTITIONS INDEX_LENGTH 17 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema PARTITIONS MAX_DATA_LENGTH 16 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema PARTITIONS NODEGROUP 24 NULL NO varchar 12 36 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(12) NEVER NULL -def information_schema PARTITIONS PARTITION_COMMENT 23 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) NEVER NULL +def information_schema PARTITIONS NODEGROUP 24 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PARTITIONS PARTITION_COMMENT 23 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PARTITIONS PARTITION_DESCRIPTION 12 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PARTITIONS PARTITION_EXPRESSION 10 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL -def information_schema PARTITIONS PARTITION_METHOD 8 NULL YES varchar 18 54 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(18) NEVER NULL -def information_schema PARTITIONS PARTITION_NAME 4 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema PARTITIONS PARTITION_METHOD 8 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PARTITIONS PARTITION_NAME 4 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema PARTITIONS SUBPARTITION_EXPRESSION 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL -def information_schema PARTITIONS SUBPARTITION_METHOD 9 NULL YES varchar 12 36 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(12) NEVER NULL -def information_schema PARTITIONS SUBPARTITION_NAME 5 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema PARTITIONS SUBPARTITION_METHOD 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PARTITIONS SUBPARTITION_NAME 5 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION 7 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema PARTITIONS TABLESPACE_NAME 25 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema PARTITIONS TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema PARTITIONS TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema PARTITIONS TABLESPACE_NAME 25 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PARTITIONS TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PARTITIONS TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PARTITIONS TABLE_ROWS 13 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema PARTITIONS TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema PARTITIONS TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PARTITIONS UPDATE_TIME 20 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL -def information_schema PLUGINS LOAD_OPTION 11 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema PLUGINS PLUGIN_AUTH_VERSION 13 NULL YES varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) NEVER NULL +def information_schema PLUGINS LOAD_OPTION 11 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PLUGINS PLUGIN_AUTH_VERSION 13 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL -def information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) NEVER NULL -def information_schema PLUGINS PLUGIN_LICENSE 10 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) NEVER NULL -def information_schema PLUGINS PLUGIN_MATURITY 12 NULL NO varchar 12 36 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(12) NEVER NULL -def information_schema PLUGINS PLUGIN_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema PLUGINS PLUGIN_STATUS 3 NULL NO varchar 16 48 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(16) NEVER NULL -def information_schema PLUGINS PLUGIN_TYPE 4 NULL NO varchar 80 240 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(80) NEVER NULL -def information_schema PLUGINS PLUGIN_TYPE_VERSION 5 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) NEVER NULL -def information_schema PLUGINS PLUGIN_VERSION 2 NULL NO varchar 20 60 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(20) NEVER NULL -def information_schema PROCESSLIST COMMAND 5 NULL NO varchar 16 48 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(16) NEVER NULL -def information_schema PROCESSLIST DB 4 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PLUGINS PLUGIN_LIBRARY_VERSION 7 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PLUGINS PLUGIN_LICENSE 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PLUGINS PLUGIN_MATURITY 12 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PLUGINS PLUGIN_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PLUGINS PLUGIN_STATUS 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PLUGINS PLUGIN_TYPE 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PLUGINS PLUGIN_TYPE_VERSION 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PLUGINS PLUGIN_VERSION 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PROCESSLIST COMMAND 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema PROCESSLIST DB 4 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PROCESSLIST EXAMINED_ROWS 15 NULL NO int NULL NULL 10 0 NULL NULL NULL int(7) NEVER NULL -def information_schema PROCESSLIST HOST 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema PROCESSLIST HOST 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PROCESSLIST ID 1 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL def information_schema PROCESSLIST INFO 8 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PROCESSLIST INFO_BINARY 17 NULL YES blob 65535 65535 NULL NULL NULL NULL NULL blob NEVER NULL @@ -281,180 +281,180 @@ def information_schema PROCESSLIST MEMORY_USED 13 NULL NO bigint NULL NULL 19 0 def information_schema PROCESSLIST PROGRESS 12 NULL NO decimal NULL NULL 7 3 NULL NULL NULL decimal(7,3) NEVER NULL def information_schema PROCESSLIST QUERY_ID 16 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL def information_schema PROCESSLIST STAGE 10 NULL NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(2) NEVER NULL -def information_schema PROCESSLIST STATE 7 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema PROCESSLIST STATE 7 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema PROCESSLIST TID 18 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL def information_schema PROCESSLIST TIME 6 NULL NO int NULL NULL 10 0 NULL NULL NULL int(7) NEVER NULL def information_schema PROCESSLIST TIME_MS 9 NULL NO decimal NULL NULL 22 3 NULL NULL NULL decimal(22,3) NEVER NULL -def information_schema PROCESSLIST USER 2 NULL NO varchar 128 384 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(128) NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE 9 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME 11 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME 10 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema PROCESSLIST USER 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE 9 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH 7 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) NEVER NULL def information_schema ROUTINES CHARACTER_OCTET_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) NEVER NULL -def information_schema ROUTINES CHARACTER_SET_CLIENT 29 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL -def information_schema ROUTINES CHARACTER_SET_NAME 12 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ROUTINES COLLATION_CONNECTION 30 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ROUTINES COLLATION_NAME 13 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema ROUTINES CHARACTER_SET_CLIENT 29 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ROUTINES CHARACTER_SET_NAME 12 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ROUTINES COLLATION_CONNECTION 30 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ROUTINES COLLATION_NAME 13 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema ROUTINES CREATED 24 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL -def information_schema ROUTINES DATABASE_COLLATION 31 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ROUTINES DATA_TYPE 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema ROUTINES DATABASE_COLLATION 31 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ROUTINES DATA_TYPE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema ROUTINES DATETIME_PRECISION 11 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema ROUTINES DEFINER 28 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) NEVER NULL +def information_schema ROUTINES DEFINER 28 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema ROUTINES DTD_IDENTIFIER 14 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL -def information_schema ROUTINES EXTERNAL_LANGUAGE 18 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ROUTINES EXTERNAL_NAME 17 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema ROUTINES EXTERNAL_LANGUAGE 18 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ROUTINES EXTERNAL_NAME 17 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema ROUTINES IS_DETERMINISTIC 20 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL def information_schema ROUTINES LAST_ALTERED 25 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL def information_schema ROUTINES NUMERIC_PRECISION 9 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) NEVER NULL def information_schema ROUTINES NUMERIC_SCALE 10 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) NEVER NULL def information_schema ROUTINES PARAMETER_STYLE 19 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) NEVER NULL def information_schema ROUTINES ROUTINE_BODY 15 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) NEVER NULL -def information_schema ROUTINES ROUTINE_CATALOG 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL +def information_schema ROUTINES ROUTINE_CATALOG 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema ROUTINES ROUTINE_COMMENT 27 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema ROUTINES ROUTINE_DEFINITION 16 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL -def information_schema ROUTINES ROUTINE_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ROUTINES ROUTINE_SCHEMA 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ROUTINES ROUTINE_TYPE 5 NULL NO varchar 13 39 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(13) NEVER NULL +def information_schema ROUTINES ROUTINE_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ROUTINES ROUTINE_SCHEMA 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ROUTINES ROUTINE_TYPE 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema ROUTINES SECURITY_TYPE 23 NULL NO varchar 7 21 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(7) NEVER NULL -def information_schema ROUTINES SPECIFIC_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ROUTINES SQL_DATA_ACCESS 21 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema ROUTINES SQL_MODE 26 NULL NO varchar 8192 24576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8192) NEVER NULL -def information_schema ROUTINES SQL_PATH 22 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SCHEMATA CATALOG_NAME 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL -def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SCHEMATA SCHEMA_COMMENT 6 NULL NO varchar 1024 3072 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1024) NEVER NULL -def information_schema SCHEMATA SCHEMA_NAME 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema SCHEMA_PRIVILEGES GRANTEE 1 NULL NO varchar 385 1155 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(385) NEVER NULL +def information_schema ROUTINES SPECIFIC_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ROUTINES SQL_DATA_ACCESS 21 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ROUTINES SQL_MODE 26 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema ROUTINES SQL_PATH 22 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SCHEMATA CATALOG_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SCHEMATA SCHEMA_COMMENT 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SCHEMATA SCHEMA_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SCHEMATA SQL_PATH 5 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SCHEMA_PRIVILEGES GRANTEE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema SCHEMA_PRIVILEGES IS_GRANTABLE 5 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL -def information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SESSION_STATUS VARIABLE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL NO varchar 4096 12288 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(4096) NEVER NULL -def information_schema SESSION_VARIABLES VARIABLE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL NO varchar 4096 12288 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(4096) NEVER NULL -def information_schema SPATIAL_REF_SYS AUTH_NAME 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL +def information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SESSION_STATUS VARIABLE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SESSION_VARIABLES VARIABLE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SPATIAL_REF_SYS AUTH_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema SPATIAL_REF_SYS AUTH_SRID 3 NULL NO int NULL NULL 10 0 NULL NULL NULL int(5) NEVER NULL def information_schema SPATIAL_REF_SYS SRID 1 NULL NO smallint NULL NULL 5 0 NULL NULL NULL smallint(5) NEVER NULL -def information_schema SPATIAL_REF_SYS SRTEXT 4 NULL NO varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) NEVER NULL -def information_schema SQL_FUNCTIONS FUNCTION 1 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema SPATIAL_REF_SYS SRTEXT 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SQL_FUNCTIONS FUNCTION 1 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema STATISTICS CARDINALITY 10 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL def information_schema STATISTICS COLLATION 9 NULL YES varchar 1 3 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1) NEVER NULL -def information_schema STATISTICS COLUMN_NAME 8 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema STATISTICS COMMENT 15 NULL YES varchar 16 48 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(16) NEVER NULL +def information_schema STATISTICS COLUMN_NAME 8 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema STATISTICS COMMENT 15 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema STATISTICS IGNORED 17 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL -def information_schema STATISTICS INDEX_COMMENT 16 NULL NO varchar 1024 3072 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1024) NEVER NULL -def information_schema STATISTICS INDEX_NAME 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema STATISTICS INDEX_SCHEMA 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema STATISTICS INDEX_TYPE 14 NULL NO varchar 16 48 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(16) NEVER NULL +def information_schema STATISTICS INDEX_COMMENT 16 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema STATISTICS INDEX_NAME 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema STATISTICS INDEX_SCHEMA 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema STATISTICS INDEX_TYPE 14 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema STATISTICS NON_UNIQUE 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(1) NEVER NULL def information_schema STATISTICS NULLABLE 13 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL def information_schema STATISTICS PACKED 12 NULL YES varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) NEVER NULL def information_schema STATISTICS SEQ_IN_INDEX 7 NULL NO int NULL NULL 10 0 NULL NULL NULL int(2) unsigned NEVER NULL def information_schema STATISTICS SUB_PART 11 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(3) NEVER NULL -def information_schema STATISTICS TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema STATISTICS TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema STATISTICS TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SYSTEM_VARIABLES COMMAND_LINE_ARGUMENT 14 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SYSTEM_VARIABLES DEFAULT_VALUE 5 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) NEVER NULL +def information_schema STATISTICS TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema STATISTICS TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema STATISTICS TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SYSTEM_VARIABLES COMMAND_LINE_ARGUMENT 14 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SYSTEM_VARIABLES DEFAULT_VALUE 5 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema SYSTEM_VARIABLES ENUM_VALUE_LIST 12 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL -def information_schema SYSTEM_VARIABLES GLOBAL_VALUE 3 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) NEVER NULL -def information_schema SYSTEM_VARIABLES GLOBAL_VALUE_ORIGIN 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SYSTEM_VARIABLES GLOBAL_VALUE_PATH 15 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) NEVER NULL -def information_schema SYSTEM_VARIABLES NUMERIC_BLOCK_SIZE 11 NULL YES varchar 21 63 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(21) NEVER NULL -def information_schema SYSTEM_VARIABLES NUMERIC_MAX_VALUE 10 NULL YES varchar 21 63 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(21) NEVER NULL -def information_schema SYSTEM_VARIABLES NUMERIC_MIN_VALUE 9 NULL YES varchar 21 63 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(21) NEVER NULL +def information_schema SYSTEM_VARIABLES GLOBAL_VALUE 3 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SYSTEM_VARIABLES GLOBAL_VALUE_ORIGIN 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SYSTEM_VARIABLES GLOBAL_VALUE_PATH 15 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SYSTEM_VARIABLES NUMERIC_BLOCK_SIZE 11 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SYSTEM_VARIABLES NUMERIC_MAX_VALUE 10 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SYSTEM_VARIABLES NUMERIC_MIN_VALUE 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema SYSTEM_VARIABLES READ_ONLY 13 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL -def information_schema SYSTEM_VARIABLES SESSION_VALUE 2 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) NEVER NULL -def information_schema SYSTEM_VARIABLES VARIABLE_COMMENT 8 NULL NO varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) NEVER NULL -def information_schema SYSTEM_VARIABLES VARIABLE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SYSTEM_VARIABLES VARIABLE_SCOPE 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema SYSTEM_VARIABLES VARIABLE_TYPE 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema SYSTEM_VARIABLES SESSION_VALUE 2 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SYSTEM_VARIABLES VARIABLE_COMMENT 8 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SYSTEM_VARIABLES VARIABLE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SYSTEM_VARIABLES VARIABLE_SCOPE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema SYSTEM_VARIABLES VARIABLE_TYPE 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema TABLES CHECK_TIME 17 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL -def information_schema TABLES CREATE_OPTIONS 20 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) NEVER NULL +def information_schema TABLES CREATE_OPTIONS 20 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TABLES CREATE_TIME 15 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL def information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema TABLES ENGINE 5 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema TABLES ENGINE 5 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema TABLES MAX_INDEX_LENGTH 22 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) NEVER NULL -def information_schema TABLES TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TABLES TABLE_COMMENT 21 NULL NO varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) NEVER NULL -def information_schema TABLES TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema TABLES TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLES TABLE_COLLATION 18 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLES TABLE_COMMENT 21 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLES TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema TABLES TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TABLES TABLE_TYPE 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema TABLES TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLES TABLE_TYPE 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TABLES TEMPORARY 23 NULL YES varchar 1 3 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1) NEVER NULL def information_schema TABLES UPDATE_TIME 16 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL def information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema TABLESPACES AUTOEXTEND_SIZE 6 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema TABLESPACES ENGINE 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema TABLESPACES ENGINE 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TABLESPACES EXTENT_SIZE 5 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema TABLESPACES LOGFILE_GROUP_NAME 4 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema TABLESPACES LOGFILE_GROUP_NAME 4 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TABLESPACES MAXIMUM_SIZE 7 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema TABLESPACES NODEGROUP_ID 8 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL -def information_schema TABLESPACES TABLESPACE_COMMENT 9 NULL YES varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) NEVER NULL -def information_schema TABLESPACES TABLESPACE_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TABLESPACES TABLESPACE_TYPE 3 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TABLE_CONSTRAINTS TABLE_NAME 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TABLE_CONSTRAINTS TABLE_SCHEMA 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TABLE_PRIVILEGES GRANTEE 1 NULL NO varchar 385 1155 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(385) NEVER NULL +def information_schema TABLESPACES TABLESPACE_COMMENT 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLESPACES TABLESPACE_NAME 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLESPACES TABLESPACE_TYPE 3 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLE_CONSTRAINTS TABLE_NAME 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLE_CONSTRAINTS TABLE_SCHEMA 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLE_PRIVILEGES GRANTEE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TABLE_PRIVILEGES IS_GRANTABLE 6 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL -def information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema TABLE_PRIVILEGES TABLE_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLE_PRIVILEGES TABLE_NAME 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TABLE_STATISTICS ROWS_CHANGED 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL def information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES 5 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL def information_schema TABLE_STATISTICS ROWS_READ 3 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL -def information_schema TABLE_STATISTICS TABLE_NAME 2 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) NEVER NULL -def information_schema TABLE_STATISTICS TABLE_SCHEMA 1 NULL NO varchar 192 576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(192) NEVER NULL +def information_schema TABLE_STATISTICS TABLE_NAME 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TABLE_STATISTICS TABLE_SCHEMA 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TRIGGERS ACTION_CONDITION 9 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TRIGGERS ACTION_ORDER 8 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4) NEVER NULL def information_schema TRIGGERS ACTION_ORIENTATION 11 NULL NO varchar 9 27 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(9) NEVER NULL def information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW 16 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL -def information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE 14 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE 14 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW 15 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL -def information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TRIGGERS ACTION_STATEMENT 10 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TRIGGERS ACTION_TIMING 12 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) NEVER NULL -def information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL -def information_schema TRIGGERS COLLATION_CONNECTION 21 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TRIGGERS COLLATION_CONNECTION 21 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TRIGGERS CREATED 17 NULL YES datetime NULL NULL NULL NULL 2 NULL NULL datetime(2) NEVER NULL -def information_schema TRIGGERS DATABASE_COLLATION 22 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TRIGGERS DEFINER 19 NULL YES varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) NEVER NULL +def information_schema TRIGGERS DATABASE_COLLATION 22 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TRIGGERS DEFINER 19 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema TRIGGERS EVENT_MANIPULATION 4 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) NEVER NULL -def information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema TRIGGERS EVENT_OBJECT_SCHEMA 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TRIGGERS EVENT_OBJECT_TABLE 7 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TRIGGERS SQL_MODE 18 NULL NO varchar 8192 24576 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8192) NEVER NULL -def information_schema TRIGGERS TRIGGER_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema TRIGGERS TRIGGER_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema TRIGGERS TRIGGER_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema USER_PRIVILEGES GRANTEE 1 NULL NO varchar 385 1155 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(385) NEVER NULL +def information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TRIGGERS EVENT_OBJECT_SCHEMA 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TRIGGERS EVENT_OBJECT_TABLE 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TRIGGERS SQL_MODE 18 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TRIGGERS TRIGGER_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TRIGGERS TRIGGER_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema TRIGGERS TRIGGER_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema USER_PRIVILEGES GRANTEE 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema USER_PRIVILEGES IS_GRANTABLE 4 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL -def information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema USER_PRIVILEGES TABLE_CATALOG 2 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL +def information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema USER_PRIVILEGES TABLE_CATALOG 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema USER_STATISTICS ACCESS_DENIED 22 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL def information_schema USER_STATISTICS BINLOG_BYTES_WRITTEN 9 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL def information_schema USER_STATISTICS BUSY_TIME 5 NULL NO double NULL NULL 21 NULL NULL NULL NULL double NEVER NULL @@ -479,17 +479,17 @@ def information_schema USER_STATISTICS SELECT_COMMANDS 15 NULL NO bigint NULL NU def information_schema USER_STATISTICS TOTAL_CONNECTIONS 2 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) NEVER NULL def information_schema USER_STATISTICS TOTAL_SSL_CONNECTIONS 24 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL def information_schema USER_STATISTICS UPDATE_COMMANDS 16 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL -def information_schema USER_STATISTICS USER 1 NULL NO varchar 128 384 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(128) NEVER NULL +def information_schema USER_STATISTICS USER 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema VIEWS ALGORITHM 11 NULL NO varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) NEVER NULL -def information_schema VIEWS CHARACTER_SET_CLIENT 9 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL +def information_schema VIEWS CHARACTER_SET_CLIENT 9 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema VIEWS CHECK_OPTION 5 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) NEVER NULL -def information_schema VIEWS COLLATION_CONNECTION 10 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema VIEWS DEFINER 7 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) NEVER NULL +def information_schema VIEWS COLLATION_CONNECTION 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema VIEWS DEFINER 7 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema VIEWS IS_UPDATABLE 6 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL def information_schema VIEWS SECURITY_TYPE 8 NULL NO varchar 7 21 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(7) NEVER NULL -def information_schema VIEWS TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL -def information_schema VIEWS TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL -def information_schema VIEWS TABLE_SCHEMA 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL +def information_schema VIEWS TABLE_CATALOG 1 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema VIEWS TABLE_NAME 3 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL +def information_schema VIEWS TABLE_SCHEMA 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL def information_schema VIEWS VIEW_DEFINITION 4 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL ########################################################################## # Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH @@ -554,34 +554,34 @@ WHERE table_schema = 'information_schema' AND table_name <> 'profiling' AND table_name not like 'innodb_%' ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION; COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE -3.0000 information_schema ALL_PLUGINS PLUGIN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ALL_PLUGINS PLUGIN_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema ALL_PLUGINS PLUGIN_STATUS varchar 16 48 utf8mb3 utf8mb3_general_ci varchar(16) -3.0000 information_schema ALL_PLUGINS PLUGIN_TYPE varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema ALL_PLUGINS PLUGIN_TYPE_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema ALL_PLUGINS PLUGIN_LIBRARY varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ALL_PLUGINS PLUGIN_LIBRARY_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema ALL_PLUGINS PLUGIN_AUTHOR varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ALL_PLUGINS PLUGIN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_STATUS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_TYPE_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_LIBRARY longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_LIBRARY_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_AUTHOR longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema ALL_PLUGINS PLUGIN_DESCRIPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema ALL_PLUGINS PLUGIN_LICENSE varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema ALL_PLUGINS LOAD_OPTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ALL_PLUGINS PLUGIN_MATURITY varchar 12 36 utf8mb3 utf8mb3_general_ci varchar(12) -3.0000 information_schema ALL_PLUGINS PLUGIN_AUTH_VERSION varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema APPLICABLE_ROLES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385) -3.0000 information_schema APPLICABLE_ROLES ROLE_NAME varchar 128 384 utf8mb3 utf8mb3_general_ci varchar(128) +1.0000 information_schema ALL_PLUGINS PLUGIN_LICENSE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS LOAD_OPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_MATURITY longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ALL_PLUGINS PLUGIN_AUTH_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema APPLICABLE_ROLES GRANTEE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema APPLICABLE_ROLES ROLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema APPLICABLE_ROLES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) 3.0000 information_schema APPLICABLE_ROLES IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8mb3 utf8mb3_general_ci varchar(60) +1.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema CHARACTER_SETS DESCRIPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(3) -3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema CHECK_CONSTRAINTS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema CHECK_CONSTRAINTS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema CHECK_CONSTRAINTS LEVEL varchar 6 18 utf8mb3 utf8mb3_general_ci varchar(6) 1.0000 information_schema CHECK_CONSTRAINTS CHECK_CLAUSE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema CLIENT_STATISTICS CLIENT varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema CLIENT_STATISTICS CLIENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) NULL information_schema CLIENT_STATISTICS CONNECTED_TIME bigint NULL NULL NULL NULL bigint(21) @@ -606,88 +606,88 @@ NULL information_schema CLIENT_STATISTICS ACCESS_DENIED bigint NULL NULL NULL NU NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES bigint NULL NULL NULL NULL bigint(21) NULL information_schema CLIENT_STATISTICS TOTAL_SSL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema CLIENT_STATISTICS MAX_STATEMENT_TIME_EXCEEDED bigint NULL NULL NULL NULL bigint(21) -3.0000 information_schema COLLATIONS COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLLATIONS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) +1.0000 information_schema COLLATIONS COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLLATIONS CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema COLLATIONS ID bigint NULL NULL NULL NULL bigint(11) 3.0000 information_schema COLLATIONS IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) 3.0000 information_schema COLLATIONS IS_COMPILED varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) NULL information_schema COLLATIONS SORTLEN bigint NULL NULL NULL NULL bigint(3) -3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY ID bigint NULL NULL NULL NULL bigint(11) 3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema COLUMNS TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema COLUMNS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLUMNS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLUMNS COLUMN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema COLUMNS TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS COLUMN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema COLUMNS ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned 1.0000 information_schema COLUMNS COLUMN_DEFAULT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema COLUMNS IS_NULLABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema COLUMNS DATA_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema COLUMNS DATA_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema COLUMNS NUMERIC_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema COLUMNS NUMERIC_SCALE bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema COLUMNS DATETIME_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema COLUMNS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema COLUMNS COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema COLUMNS CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema COLUMNS COLUMN_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema COLUMNS COLUMN_KEY varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema COLUMNS EXTRA varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema COLUMNS PRIVILEGES varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema COLUMNS COLUMN_COMMENT varchar 1024 3072 utf8mb3 utf8mb3_general_ci varchar(1024) +1.0000 information_schema COLUMNS EXTRA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS PRIVILEGES longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMNS COLUMN_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema COLUMNS IS_GENERATED varchar 6 18 utf8mb3 utf8mb3_general_ci varchar(6) 1.0000 information_schema COLUMNS GENERATION_EXPRESSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema COLUMN_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385) -3.0000 information_schema COLUMN_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema COLUMN_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLUMN_PRIVILEGES TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLUMN_PRIVILEGES COLUMN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema COLUMN_PRIVILEGES GRANTEE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMN_PRIVILEGES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMN_PRIVILEGES TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMN_PRIVILEGES TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMN_PRIVILEGES COLUMN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema COLUMN_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema ENABLED_ROLES ROLE_NAME varchar 128 384 utf8mb3 utf8mb3_general_ci varchar(128) -3.0000 information_schema ENGINES ENGINE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ENABLED_ROLES ROLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ENGINES ENGINE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema ENGINES SUPPORT varchar 8 24 utf8mb3 utf8mb3_general_ci varchar(8) -3.0000 information_schema ENGINES COMMENT varchar 160 480 utf8mb3 utf8mb3_general_ci varchar(160) +1.0000 information_schema ENGINES COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema ENGINES TRANSACTIONS varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) 3.0000 information_schema ENGINES XA varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) 3.0000 information_schema ENGINES SAVEPOINTS varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema EVENTS EVENT_CATALOG varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema EVENTS EVENT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema EVENTS EVENT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema EVENTS DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384) -3.0000 information_schema EVENTS TIME_ZONE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema EVENTS EVENT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS EVENT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS EVENT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS DEFINER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS TIME_ZONE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema EVENTS EVENT_BODY varchar 8 24 utf8mb3 utf8mb3_general_ci varchar(8) 1.0000 information_schema EVENTS EVENT_DEFINITION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema EVENTS EVENT_TYPE varchar 9 27 utf8mb3 utf8mb3_general_ci varchar(9) NULL information_schema EVENTS EXECUTE_AT datetime NULL NULL NULL NULL datetime -3.0000 information_schema EVENTS INTERVAL_VALUE varchar 256 768 utf8mb3 utf8mb3_general_ci varchar(256) -3.0000 information_schema EVENTS INTERVAL_FIELD varchar 18 54 utf8mb3 utf8mb3_general_ci varchar(18) -3.0000 information_schema EVENTS SQL_MODE varchar 8192 24576 utf8mb3 utf8mb3_general_ci varchar(8192) +1.0000 information_schema EVENTS INTERVAL_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS INTERVAL_FIELD longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS SQL_MODE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema EVENTS STARTS datetime NULL NULL NULL NULL datetime NULL information_schema EVENTS ENDS datetime NULL NULL NULL NULL datetime -3.0000 information_schema EVENTS STATUS varchar 18 54 utf8mb3 utf8mb3_general_ci varchar(18) -3.0000 information_schema EVENTS ON_COMPLETION varchar 12 36 utf8mb3 utf8mb3_general_ci varchar(12) +1.0000 information_schema EVENTS STATUS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS ON_COMPLETION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema EVENTS CREATED datetime NULL NULL NULL NULL datetime NULL information_schema EVENTS LAST_ALTERED datetime NULL NULL NULL NULL datetime NULL information_schema EVENTS LAST_EXECUTED datetime NULL NULL NULL NULL datetime -3.0000 information_schema EVENTS EVENT_COMMENT varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema EVENTS EVENT_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema EVENTS ORIGINATOR bigint NULL NULL NULL NULL bigint(10) -3.0000 information_schema EVENTS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema EVENTS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema EVENTS DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema EVENTS CHARACTER_SET_CLIENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS COLLATION_CONNECTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema EVENTS DATABASE_COLLATION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema FILES FILE_ID bigint NULL NULL NULL NULL bigint(4) -3.0000 information_schema FILES FILE_NAME varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema FILES FILE_TYPE varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema FILES TABLESPACE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema FILES TABLE_CATALOG varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema FILES TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema FILES TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema FILES LOGFILE_GROUP_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema FILES FILE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES FILE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES TABLESPACE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES LOGFILE_GROUP_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema FILES LOGFILE_GROUP_NUMBER bigint NULL NULL NULL NULL bigint(4) -3.0000 information_schema FILES ENGINE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema FILES FULLTEXT_KEYS varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema FILES ENGINE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES FULLTEXT_KEYS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema FILES DELETED_ROWS bigint NULL NULL NULL NULL bigint(4) NULL information_schema FILES UPDATE_COUNT bigint NULL NULL NULL NULL bigint(4) NULL information_schema FILES FREE_EXTENTS bigint NULL NULL NULL NULL bigint(4) @@ -713,31 +713,31 @@ NULL information_schema FILES CREATE_TIME datetime NULL NULL NULL NULL datetime NULL information_schema FILES UPDATE_TIME datetime NULL NULL NULL NULL datetime NULL information_schema FILES CHECK_TIME datetime NULL NULL NULL NULL datetime NULL information_schema FILES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema FILES STATUS varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema FILES EXTRA varchar 255 765 utf8mb3 utf8mb3_general_ci varchar(255) -3.0000 information_schema GEOMETRY_COLUMNS F_TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema GEOMETRY_COLUMNS F_TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GEOMETRY_COLUMNS F_TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GEOMETRY_COLUMNS F_GEOMETRY_COLUMN varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GEOMETRY_COLUMNS G_TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema GEOMETRY_COLUMNS G_TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GEOMETRY_COLUMNS G_TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GEOMETRY_COLUMNS G_GEOMETRY_COLUMN varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema FILES STATUS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema FILES EXTRA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS F_TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS F_TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS F_TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS F_GEOMETRY_COLUMN longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS G_TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS G_TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS G_TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GEOMETRY_COLUMNS G_GEOMETRY_COLUMN longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema GEOMETRY_COLUMNS STORAGE_TYPE tinyint NULL NULL NULL NULL tinyint(2) NULL information_schema GEOMETRY_COLUMNS GEOMETRY_TYPE int NULL NULL NULL NULL int(7) NULL information_schema GEOMETRY_COLUMNS COORD_DIMENSION tinyint NULL NULL NULL NULL tinyint(2) NULL information_schema GEOMETRY_COLUMNS MAX_PPR tinyint NULL NULL NULL NULL tinyint(2) NULL information_schema GEOMETRY_COLUMNS SRID smallint NULL NULL NULL NULL smallint(5) -3.0000 information_schema GLOBAL_STATUS VARIABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GLOBAL_STATUS VARIABLE_VALUE varchar 4096 12288 utf8mb3 utf8mb3_general_ci varchar(4096) -3.0000 information_schema GLOBAL_VARIABLES VARIABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema GLOBAL_VARIABLES VARIABLE_VALUE varchar 4096 12288 utf8mb3 utf8mb3_general_ci varchar(4096) -3.0000 information_schema INDEX_STATISTICS TABLE_SCHEMA varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) -3.0000 information_schema INDEX_STATISTICS TABLE_NAME varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) -3.0000 information_schema INDEX_STATISTICS INDEX_NAME varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) +1.0000 information_schema GLOBAL_STATUS VARIABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GLOBAL_STATUS VARIABLE_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GLOBAL_VARIABLES VARIABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema GLOBAL_VARIABLES VARIABLE_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema INDEX_STATISTICS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema INDEX_STATISTICS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema INDEX_STATISTICS INDEX_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema INDEX_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21) -3.0000 information_schema KEYWORDS WORD varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_CACHES KEY_CACHE_NAME varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) +1.0000 information_schema KEYWORDS WORD longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_CACHES KEY_CACHE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema KEY_CACHES SEGMENTS int NULL NULL NULL NULL int(3) unsigned NULL information_schema KEY_CACHES SEGMENT_NUMBER int NULL NULL NULL NULL int(3) unsigned NULL information_schema KEY_CACHES FULL_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned @@ -749,47 +749,47 @@ NULL information_schema KEY_CACHES READ_REQUESTS bigint NULL NULL NULL NULL bigi NULL information_schema KEY_CACHES READS bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema KEY_CACHES WRITE_REQUESTS bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema KEY_CACHES WRITES bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema KEY_COLUMN_USAGE TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE COLUMN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE COLUMN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema KEY_COLUMN_USAGE ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(10) NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NULL NULL NULL NULL bigint(10) -3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema OPTIMIZER_TRACE QUERY longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema OPTIMIZER_TRACE TRACE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema OPTIMIZER_TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE int NULL NULL NULL NULL int(20) NULL information_schema OPTIMIZER_TRACE INSUFFICIENT_PRIVILEGES tinyint NULL NULL NULL NULL tinyint(1) -3.0000 information_schema PARAMETERS SPECIFIC_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema PARAMETERS SPECIFIC_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARAMETERS SPECIFIC_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PARAMETERS SPECIFIC_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARAMETERS SPECIFIC_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARAMETERS SPECIFIC_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PARAMETERS ORDINAL_POSITION int NULL NULL NULL NULL int(21) 3.0000 information_schema PARAMETERS PARAMETER_MODE varchar 5 15 utf8mb3 utf8mb3_general_ci varchar(5) -3.0000 information_schema PARAMETERS PARAMETER_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARAMETERS DATA_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PARAMETERS PARAMETER_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARAMETERS DATA_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21) NULL information_schema PARAMETERS CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21) NULL information_schema PARAMETERS NUMERIC_PRECISION int NULL NULL NULL NULL int(21) NULL information_schema PARAMETERS NUMERIC_SCALE int NULL NULL NULL NULL int(21) NULL information_schema PARAMETERS DATETIME_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema PARAMETERS CHARACTER_SET_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARAMETERS COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PARAMETERS CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARAMETERS COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PARAMETERS DTD_IDENTIFIER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema PARAMETERS ROUTINE_TYPE varchar 9 27 utf8mb3 utf8mb3_general_ci varchar(9) -3.0000 information_schema PARTITIONS TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema PARTITIONS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARTITIONS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARTITIONS PARTITION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PARTITIONS SUBPARTITION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PARTITIONS TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS PARTITION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS SUBPARTITION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema PARTITIONS PARTITION_METHOD varchar 18 54 utf8mb3 utf8mb3_general_ci varchar(18) -3.0000 information_schema PARTITIONS SUBPARTITION_METHOD varchar 12 36 utf8mb3 utf8mb3_general_ci varchar(12) +1.0000 information_schema PARTITIONS PARTITION_METHOD longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS SUBPARTITION_METHOD longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PARTITIONS PARTITION_EXPRESSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PARTITIONS SUBPARTITION_EXPRESSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PARTITIONS PARTITION_DESCRIPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext @@ -803,29 +803,29 @@ NULL information_schema PARTITIONS CREATE_TIME datetime NULL NULL NULL NULL date NULL information_schema PARTITIONS UPDATE_TIME datetime NULL NULL NULL NULL datetime NULL information_schema PARTITIONS CHECK_TIME datetime NULL NULL NULL NULL datetime NULL information_schema PARTITIONS CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema PARTITIONS PARTITION_COMMENT varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema PARTITIONS NODEGROUP varchar 12 36 utf8mb3 utf8mb3_general_ci varchar(12) -3.0000 information_schema PARTITIONS TABLESPACE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PLUGINS PLUGIN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PLUGINS PLUGIN_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema PLUGINS PLUGIN_STATUS varchar 16 48 utf8mb3 utf8mb3_general_ci varchar(16) -3.0000 information_schema PLUGINS PLUGIN_TYPE varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema PLUGINS PLUGIN_TYPE_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema PLUGINS PLUGIN_LIBRARY varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PLUGINS PLUGIN_LIBRARY_VERSION varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20) -3.0000 information_schema PLUGINS PLUGIN_AUTHOR varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PARTITIONS PARTITION_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS NODEGROUP longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PARTITIONS TABLESPACE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_STATUS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_TYPE_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_LIBRARY longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_LIBRARY_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_AUTHOR longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PLUGINS PLUGIN_DESCRIPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema PLUGINS PLUGIN_LICENSE varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) -3.0000 information_schema PLUGINS LOAD_OPTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PLUGINS PLUGIN_MATURITY varchar 12 36 utf8mb3 utf8mb3_general_ci varchar(12) -3.0000 information_schema PLUGINS PLUGIN_AUTH_VERSION varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80) +1.0000 information_schema PLUGINS PLUGIN_LICENSE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS LOAD_OPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_MATURITY longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PLUGINS PLUGIN_AUTH_VERSION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PROCESSLIST ID bigint NULL NULL NULL NULL bigint(4) -3.0000 information_schema PROCESSLIST USER varchar 128 384 utf8mb3 utf8mb3_general_ci varchar(128) -3.0000 information_schema PROCESSLIST HOST varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PROCESSLIST DB varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema PROCESSLIST COMMAND varchar 16 48 utf8mb3 utf8mb3_general_ci varchar(16) +1.0000 information_schema PROCESSLIST USER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PROCESSLIST HOST longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PROCESSLIST DB longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema PROCESSLIST COMMAND longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7) -3.0000 information_schema PROCESSLIST STATE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema PROCESSLIST STATE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema PROCESSLIST INFO longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema PROCESSLIST TIME_MS decimal NULL NULL NULL NULL decimal(22,3) NULL information_schema PROCESSLIST STAGE tinyint NULL NULL NULL NULL tinyint(2) @@ -837,105 +837,105 @@ NULL information_schema PROCESSLIST EXAMINED_ROWS int NULL NULL NULL NULL int(7) NULL information_schema PROCESSLIST QUERY_ID bigint NULL NULL NULL NULL bigint(4) 1.0000 information_schema PROCESSLIST INFO_BINARY blob 65535 65535 NULL NULL blob NULL information_schema PROCESSLIST TID bigint NULL NULL NULL NULL bigint(4) -3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES SPECIFIC_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES ROUTINE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema ROUTINES ROUTINE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES ROUTINE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES ROUTINE_TYPE varchar 13 39 utf8mb3 utf8mb3_general_ci varchar(13) -3.0000 information_schema ROUTINES DATA_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS DELETE_RULE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES SPECIFIC_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES ROUTINE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES ROUTINE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES ROUTINE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES ROUTINE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES DATA_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH int NULL NULL NULL NULL int(21) NULL information_schema ROUTINES CHARACTER_OCTET_LENGTH int NULL NULL NULL NULL int(21) NULL information_schema ROUTINES NUMERIC_PRECISION int NULL NULL NULL NULL int(21) NULL information_schema ROUTINES NUMERIC_SCALE int NULL NULL NULL NULL int(21) NULL information_schema ROUTINES DATETIME_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema ROUTINES CHARACTER_SET_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ROUTINES CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema ROUTINES DTD_IDENTIFIER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema ROUTINES ROUTINE_BODY varchar 8 24 utf8mb3 utf8mb3_general_ci varchar(8) 1.0000 information_schema ROUTINES ROUTINE_DEFINITION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema ROUTINES EXTERNAL_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES EXTERNAL_LANGUAGE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ROUTINES EXTERNAL_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES EXTERNAL_LANGUAGE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema ROUTINES PARAMETER_STYLE varchar 8 24 utf8mb3 utf8mb3_general_ci varchar(8) 3.0000 information_schema ROUTINES IS_DETERMINISTIC varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema ROUTINES SQL_DATA_ACCESS varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES SQL_PATH varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ROUTINES SQL_DATA_ACCESS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES SQL_PATH longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema ROUTINES SECURITY_TYPE varchar 7 21 utf8mb3 utf8mb3_general_ci varchar(7) NULL information_schema ROUTINES CREATED datetime NULL NULL NULL NULL datetime NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datetime -3.0000 information_schema ROUTINES SQL_MODE varchar 8192 24576 utf8mb3 utf8mb3_general_ci varchar(8192) +1.0000 information_schema ROUTINES SQL_MODE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema ROUTINES ROUTINE_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext -3.0000 information_schema ROUTINES DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384) -3.0000 information_schema ROUTINES CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema ROUTINES COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema ROUTINES DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SCHEMATA CATALOG_NAME varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema SCHEMATA SCHEMA_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SCHEMATA SQL_PATH varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema SCHEMATA SCHEMA_COMMENT varchar 1024 3072 utf8mb3 utf8mb3_general_ci varchar(1024) -3.0000 information_schema SCHEMA_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385) -3.0000 information_schema SCHEMA_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema ROUTINES DEFINER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES CHARACTER_SET_CLIENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES COLLATION_CONNECTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema ROUTINES DATABASE_COLLATION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA CATALOG_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA SCHEMA_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA SQL_PATH longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMATA SCHEMA_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMA_PRIVILEGES GRANTEE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMA_PRIVILEGES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema SCHEMA_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema SESSION_STATUS VARIABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SESSION_STATUS VARIABLE_VALUE varchar 4096 12288 utf8mb3 utf8mb3_general_ci varchar(4096) -3.0000 information_schema SESSION_VARIABLES VARIABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SESSION_VARIABLES VARIABLE_VALUE varchar 4096 12288 utf8mb3 utf8mb3_general_ci varchar(4096) +1.0000 information_schema SESSION_STATUS VARIABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SESSION_STATUS VARIABLE_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SESSION_VARIABLES VARIABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SESSION_VARIABLES VARIABLE_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema SPATIAL_REF_SYS SRID smallint NULL NULL NULL NULL smallint(5) -3.0000 information_schema SPATIAL_REF_SYS AUTH_NAME varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) +1.0000 information_schema SPATIAL_REF_SYS AUTH_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema SPATIAL_REF_SYS AUTH_SRID int NULL NULL NULL NULL int(5) -3.0000 information_schema SPATIAL_REF_SYS SRTEXT varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema SQL_FUNCTIONS FUNCTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema STATISTICS TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema STATISTICS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema STATISTICS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema SPATIAL_REF_SYS SRTEXT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SQL_FUNCTIONS FUNCTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema STATISTICS NON_UNIQUE bigint NULL NULL NULL NULL bigint(1) -3.0000 information_schema STATISTICS INDEX_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema STATISTICS INDEX_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema STATISTICS INDEX_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS INDEX_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema STATISTICS SEQ_IN_INDEX int NULL NULL NULL NULL int(2) unsigned -3.0000 information_schema STATISTICS COLUMN_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema STATISTICS COLUMN_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema STATISTICS COLLATION varchar 1 3 utf8mb3 utf8mb3_general_ci varchar(1) NULL information_schema STATISTICS CARDINALITY bigint NULL NULL NULL NULL bigint(21) NULL information_schema STATISTICS SUB_PART bigint NULL NULL NULL NULL bigint(3) 3.0000 information_schema STATISTICS PACKED varchar 10 30 utf8mb3 utf8mb3_general_ci varchar(10) 3.0000 information_schema STATISTICS NULLABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema STATISTICS INDEX_TYPE varchar 16 48 utf8mb3 utf8mb3_general_ci varchar(16) -3.0000 information_schema STATISTICS COMMENT varchar 16 48 utf8mb3 utf8mb3_general_ci varchar(16) -3.0000 information_schema STATISTICS INDEX_COMMENT varchar 1024 3072 utf8mb3 utf8mb3_general_ci varchar(1024) +1.0000 information_schema STATISTICS INDEX_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema STATISTICS INDEX_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema STATISTICS IGNORED varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema SYSTEM_VARIABLES VARIABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SYSTEM_VARIABLES SESSION_VALUE varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE_ORIGIN varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SYSTEM_VARIABLES DEFAULT_VALUE varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema SYSTEM_VARIABLES VARIABLE_SCOPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SYSTEM_VARIABLES VARIABLE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SYSTEM_VARIABLES VARIABLE_COMMENT varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema SYSTEM_VARIABLES NUMERIC_MIN_VALUE varchar 21 63 utf8mb3 utf8mb3_general_ci varchar(21) -3.0000 information_schema SYSTEM_VARIABLES NUMERIC_MAX_VALUE varchar 21 63 utf8mb3 utf8mb3_general_ci varchar(21) -3.0000 information_schema SYSTEM_VARIABLES NUMERIC_BLOCK_SIZE varchar 21 63 utf8mb3 utf8mb3_general_ci varchar(21) +1.0000 information_schema SYSTEM_VARIABLES VARIABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES SESSION_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE_ORIGIN longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES DEFAULT_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES VARIABLE_SCOPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES VARIABLE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES VARIABLE_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES NUMERIC_MIN_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES NUMERIC_MAX_VALUE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES NUMERIC_BLOCK_SIZE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema SYSTEM_VARIABLES ENUM_VALUE_LIST longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema SYSTEM_VARIABLES READ_ONLY varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema SYSTEM_VARIABLES COMMAND_LINE_ARGUMENT varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE_PATH varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema TABLES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema TABLES TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLES TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLES TABLE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLES ENGINE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema SYSTEM_VARIABLES COMMAND_LINE_ARGUMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema SYSTEM_VARIABLES GLOBAL_VALUE_PATH longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES TABLE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES ENGINE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TABLES VERSION bigint NULL NULL NULL NULL bigint(21) unsigned 3.0000 information_schema TABLES ROW_FORMAT varchar 10 30 utf8mb3 utf8mb3_general_ci varchar(10) NULL information_schema TABLES TABLE_ROWS bigint NULL NULL NULL NULL bigint(21) unsigned @@ -948,65 +948,65 @@ NULL information_schema TABLES AUTO_INCREMENT bigint NULL NULL NULL NULL bigint( NULL information_schema TABLES CREATE_TIME datetime NULL NULL NULL NULL datetime NULL information_schema TABLES UPDATE_TIME datetime NULL NULL NULL NULL datetime NULL information_schema TABLES CHECK_TIME datetime NULL NULL NULL NULL datetime -3.0000 information_schema TABLES TABLE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TABLES TABLE_COLLATION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema TABLES CREATE_OPTIONS varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema TABLES TABLE_COMMENT varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) +1.0000 information_schema TABLES CREATE_OPTIONS longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLES TABLE_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TABLES MAX_INDEX_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned 3.0000 information_schema TABLES TEMPORARY varchar 1 3 utf8mb3 utf8mb3_general_ci varchar(1) -3.0000 information_schema TABLESPACES TABLESPACE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLESPACES ENGINE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLESPACES TABLESPACE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLESPACES LOGFILE_GROUP_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TABLESPACES TABLESPACE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLESPACES ENGINE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLESPACES TABLESPACE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLESPACES LOGFILE_GROUP_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TABLESPACES EXTENT_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema TABLESPACES AUTOEXTEND_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema TABLESPACES MAXIMUM_SIZE bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema TABLESPACES NODEGROUP_ID bigint NULL NULL NULL NULL bigint(21) unsigned -3.0000 information_schema TABLESPACES TABLESPACE_COMMENT varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048) -3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_CONSTRAINTS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_CONSTRAINTS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385) -3.0000 information_schema TABLE_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema TABLE_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_PRIVILEGES TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TABLESPACES TABLESPACE_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_PRIVILEGES GRANTEE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_PRIVILEGES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_PRIVILEGES TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_PRIVILEGES TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema TABLE_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema TABLE_STATISTICS TABLE_SCHEMA varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) -3.0000 information_schema TABLE_STATISTICS TABLE_NAME varchar 192 576 utf8mb3 utf8mb3_general_ci varchar(192) +1.0000 information_schema TABLE_STATISTICS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TABLE_STATISTICS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TABLE_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21) NULL information_schema TABLE_STATISTICS ROWS_CHANGED bigint NULL NULL NULL NULL bigint(21) NULL information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES bigint NULL NULL NULL NULL bigint(21) -3.0000 information_schema TRIGGERS TRIGGER_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema TRIGGERS TRIGGER_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TRIGGERS TRIGGER_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TRIGGERS TRIGGER_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS TRIGGER_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS TRIGGER_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema TRIGGERS EVENT_MANIPULATION varchar 6 18 utf8mb3 utf8mb3_general_ci varchar(6) -3.0000 information_schema TRIGGERS EVENT_OBJECT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema TRIGGERS EVENT_OBJECT_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TRIGGERS EVENT_OBJECT_TABLE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TRIGGERS EVENT_OBJECT_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS EVENT_OBJECT_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS EVENT_OBJECT_TABLE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema TRIGGERS ACTION_ORDER bigint NULL NULL NULL NULL bigint(4) 1.0000 information_schema TRIGGERS ACTION_CONDITION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema TRIGGERS ACTION_STATEMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema TRIGGERS ACTION_ORIENTATION varchar 9 27 utf8mb3 utf8mb3_general_ci varchar(9) 3.0000 information_schema TRIGGERS ACTION_TIMING varchar 6 18 utf8mb3 utf8mb3_general_ci varchar(6) -3.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) 3.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) NULL information_schema TRIGGERS CREATED datetime NULL NULL NULL NULL datetime(2) -3.0000 information_schema TRIGGERS SQL_MODE varchar 8192 24576 utf8mb3 utf8mb3_general_ci varchar(8192) -3.0000 information_schema TRIGGERS DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384) -3.0000 information_schema TRIGGERS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema TRIGGERS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema TRIGGERS DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema USER_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385) -3.0000 information_schema USER_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema USER_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema TRIGGERS SQL_MODE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS DEFINER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS CHARACTER_SET_CLIENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS COLLATION_CONNECTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema TRIGGERS DATABASE_COLLATION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema USER_PRIVILEGES GRANTEE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema USER_PRIVILEGES TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema USER_PRIVILEGES PRIVILEGE_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema USER_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema USER_STATISTICS USER varchar 128 384 utf8mb3 utf8mb3_general_ci varchar(128) +1.0000 information_schema USER_STATISTICS USER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext NULL information_schema USER_STATISTICS TOTAL_CONNECTIONS int NULL NULL NULL NULL int(11) NULL information_schema USER_STATISTICS CONCURRENT_CONNECTIONS int NULL NULL NULL NULL int(11) NULL information_schema USER_STATISTICS CONNECTED_TIME int NULL NULL NULL NULL int(11) @@ -1031,14 +1031,14 @@ NULL information_schema USER_STATISTICS ACCESS_DENIED bigint NULL NULL NULL NULL NULL information_schema USER_STATISTICS EMPTY_QUERIES bigint NULL NULL NULL NULL bigint(21) NULL information_schema USER_STATISTICS TOTAL_SSL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema USER_STATISTICS MAX_STATEMENT_TIME_EXCEEDED bigint NULL NULL NULL NULL bigint(21) -3.0000 information_schema VIEWS TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512) -3.0000 information_schema VIEWS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) -3.0000 information_schema VIEWS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema VIEWS TABLE_CATALOG longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema VIEWS TABLE_SCHEMA longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema VIEWS TABLE_NAME longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 1.0000 information_schema VIEWS VIEW_DEFINITION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema VIEWS CHECK_OPTION varchar 8 24 utf8mb3 utf8mb3_general_ci varchar(8) 3.0000 information_schema VIEWS IS_UPDATABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3) -3.0000 information_schema VIEWS DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384) +1.0000 information_schema VIEWS DEFINER longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema VIEWS SECURITY_TYPE varchar 7 21 utf8mb3 utf8mb3_general_ci varchar(7) -3.0000 information_schema VIEWS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32) -3.0000 information_schema VIEWS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64) +1.0000 information_schema VIEWS CHARACTER_SET_CLIENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext +1.0000 information_schema VIEWS COLLATION_CONNECTION longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext 3.0000 information_schema VIEWS ALGORITHM varchar 10 30 utf8mb3 utf8mb3_general_ci varchar(10) diff --git a/mysql-test/suite/funcs_1/r/is_engines.result b/mysql-test/suite/funcs_1/r/is_engines.result index ad774caa11fe5..256af6e0fa1b3 100644 --- a/mysql-test/suite/funcs_1/r/is_engines.result +++ b/mysql-test/suite/funcs_1/r/is_engines.result @@ -28,27 +28,27 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.ENGINES; Field Type Null Key Default Extra -ENGINE varchar(64) NO NULL +ENGINE longtext NO NULL SUPPORT varchar(8) NO NULL -COMMENT varchar(160) NO NULL +COMMENT longtext NO NULL TRANSACTIONS varchar(3) YES NULL XA varchar(3) YES NULL SAVEPOINTS varchar(3) YES NULL SHOW CREATE TABLE information_schema.ENGINES; Table Create Table ENGINES CREATE TEMPORARY TABLE `ENGINES` ( - `ENGINE` varchar(64) NOT NULL, + `ENGINE` longtext NOT NULL, `SUPPORT` varchar(8) NOT NULL, - `COMMENT` varchar(160) NOT NULL, + `COMMENT` longtext NOT NULL, `TRANSACTIONS` varchar(3), `XA` varchar(3), `SAVEPOINTS` varchar(3) ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.ENGINES; Field Type Null Key Default Extra -ENGINE varchar(64) NO NULL +ENGINE longtext NO NULL SUPPORT varchar(8) NO NULL -COMMENT varchar(160) NO NULL +COMMENT longtext NO NULL TRANSACTIONS varchar(3) YES NULL XA varchar(3) YES NULL SAVEPOINTS varchar(3) YES NULL diff --git a/mysql-test/suite/funcs_1/r/is_events.result b/mysql-test/suite/funcs_1/r/is_events.result index 59afb2d81f2e9..82477c5da003b 100644 --- a/mysql-test/suite/funcs_1/r/is_events.result +++ b/mysql-test/suite/funcs_1/r/is_events.result @@ -28,84 +28,84 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.EVENTS; Field Type Null Key Default Extra -EVENT_CATALOG varchar(64) NO NULL -EVENT_SCHEMA varchar(64) NO NULL -EVENT_NAME varchar(64) NO NULL -DEFINER varchar(384) NO NULL -TIME_ZONE varchar(64) NO NULL +EVENT_CATALOG longtext NO NULL +EVENT_SCHEMA longtext NO NULL +EVENT_NAME longtext NO NULL +DEFINER longtext NO NULL +TIME_ZONE longtext NO NULL EVENT_BODY varchar(8) NO NULL EVENT_DEFINITION longtext NO NULL EVENT_TYPE varchar(9) NO NULL EXECUTE_AT datetime YES NULL -INTERVAL_VALUE varchar(256) YES NULL -INTERVAL_FIELD varchar(18) YES NULL -SQL_MODE varchar(8192) NO NULL +INTERVAL_VALUE longtext YES NULL +INTERVAL_FIELD longtext YES NULL +SQL_MODE longtext NO NULL STARTS datetime YES NULL ENDS datetime YES NULL -STATUS varchar(18) NO NULL -ON_COMPLETION varchar(12) NO NULL +STATUS longtext NO NULL +ON_COMPLETION longtext NO NULL CREATED datetime NO NULL LAST_ALTERED datetime NO NULL LAST_EXECUTED datetime YES NULL -EVENT_COMMENT varchar(64) NO NULL +EVENT_COMMENT longtext NO NULL ORIGINATOR bigint(10) NO NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL -DATABASE_COLLATION varchar(64) NO NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL +DATABASE_COLLATION longtext NO NULL SHOW CREATE TABLE information_schema.EVENTS; Table Create Table EVENTS CREATE TEMPORARY TABLE `EVENTS` ( - `EVENT_CATALOG` varchar(64) NOT NULL, - `EVENT_SCHEMA` varchar(64) NOT NULL, - `EVENT_NAME` varchar(64) NOT NULL, - `DEFINER` varchar(384) NOT NULL, - `TIME_ZONE` varchar(64) NOT NULL, + `EVENT_CATALOG` longtext NOT NULL, + `EVENT_SCHEMA` longtext NOT NULL, + `EVENT_NAME` longtext NOT NULL, + `DEFINER` longtext NOT NULL, + `TIME_ZONE` longtext NOT NULL, `EVENT_BODY` varchar(8) NOT NULL, `EVENT_DEFINITION` longtext NOT NULL, `EVENT_TYPE` varchar(9) NOT NULL, `EXECUTE_AT` datetime, - `INTERVAL_VALUE` varchar(256), - `INTERVAL_FIELD` varchar(18), - `SQL_MODE` varchar(8192) NOT NULL, + `INTERVAL_VALUE` longtext, + `INTERVAL_FIELD` longtext, + `SQL_MODE` longtext NOT NULL, `STARTS` datetime, `ENDS` datetime, - `STATUS` varchar(18) NOT NULL, - `ON_COMPLETION` varchar(12) NOT NULL, + `STATUS` longtext NOT NULL, + `ON_COMPLETION` longtext NOT NULL, `CREATED` datetime NOT NULL, `LAST_ALTERED` datetime NOT NULL, `LAST_EXECUTED` datetime, - `EVENT_COMMENT` varchar(64) NOT NULL, + `EVENT_COMMENT` longtext NOT NULL, `ORIGINATOR` bigint(10) NOT NULL, - `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, - `COLLATION_CONNECTION` varchar(64) NOT NULL, - `DATABASE_COLLATION` varchar(64) NOT NULL + `CHARACTER_SET_CLIENT` longtext NOT NULL, + `COLLATION_CONNECTION` longtext NOT NULL, + `DATABASE_COLLATION` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.EVENTS; Field Type Null Key Default Extra -EVENT_CATALOG varchar(64) NO NULL -EVENT_SCHEMA varchar(64) NO NULL -EVENT_NAME varchar(64) NO NULL -DEFINER varchar(384) NO NULL -TIME_ZONE varchar(64) NO NULL +EVENT_CATALOG longtext NO NULL +EVENT_SCHEMA longtext NO NULL +EVENT_NAME longtext NO NULL +DEFINER longtext NO NULL +TIME_ZONE longtext NO NULL EVENT_BODY varchar(8) NO NULL EVENT_DEFINITION longtext NO NULL EVENT_TYPE varchar(9) NO NULL EXECUTE_AT datetime YES NULL -INTERVAL_VALUE varchar(256) YES NULL -INTERVAL_FIELD varchar(18) YES NULL -SQL_MODE varchar(8192) NO NULL +INTERVAL_VALUE longtext YES NULL +INTERVAL_FIELD longtext YES NULL +SQL_MODE longtext NO NULL STARTS datetime YES NULL ENDS datetime YES NULL -STATUS varchar(18) NO NULL -ON_COMPLETION varchar(12) NO NULL +STATUS longtext NO NULL +ON_COMPLETION longtext NO NULL CREATED datetime NO NULL LAST_ALTERED datetime NO NULL LAST_EXECUTED datetime YES NULL -EVENT_COMMENT varchar(64) NO NULL +EVENT_COMMENT longtext NO NULL ORIGINATOR bigint(10) NO NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL -DATABASE_COLLATION varchar(64) NO NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL +DATABASE_COLLATION longtext NO NULL SELECT event_catalog, event_name, event_body, event_type, event_type, status, on_completion FROM information_schema.events diff --git a/mysql-test/suite/funcs_1/r/is_key_column_usage.result b/mysql-test/suite/funcs_1/r/is_key_column_usage.result index f721be917489f..3392c11223722 100644 --- a/mysql-test/suite/funcs_1/r/is_key_column_usage.result +++ b/mysql-test/suite/funcs_1/r/is_key_column_usage.result @@ -28,48 +28,48 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.KEY_COLUMN_USAGE; Field Type Null Key Default Extra -CONSTRAINT_CATALOG varchar(512) NO NULL -CONSTRAINT_SCHEMA varchar(64) NO NULL -CONSTRAINT_NAME varchar(64) NO NULL -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -COLUMN_NAME varchar(64) NO NULL +CONSTRAINT_CATALOG longtext NO NULL +CONSTRAINT_SCHEMA longtext NO NULL +CONSTRAINT_NAME longtext NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +COLUMN_NAME longtext NO NULL ORDINAL_POSITION bigint(10) NO NULL POSITION_IN_UNIQUE_CONSTRAINT bigint(10) YES NULL -REFERENCED_TABLE_SCHEMA varchar(64) YES NULL -REFERENCED_TABLE_NAME varchar(64) YES NULL -REFERENCED_COLUMN_NAME varchar(64) YES NULL +REFERENCED_TABLE_SCHEMA longtext YES NULL +REFERENCED_TABLE_NAME longtext YES NULL +REFERENCED_COLUMN_NAME longtext YES NULL SHOW CREATE TABLE information_schema.KEY_COLUMN_USAGE; Table Create Table KEY_COLUMN_USAGE CREATE TEMPORARY TABLE `KEY_COLUMN_USAGE` ( - `CONSTRAINT_CATALOG` varchar(512) NOT NULL, - `CONSTRAINT_SCHEMA` varchar(64) NOT NULL, - `CONSTRAINT_NAME` varchar(64) NOT NULL, - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, - `COLUMN_NAME` varchar(64) NOT NULL, + `CONSTRAINT_CATALOG` longtext NOT NULL, + `CONSTRAINT_SCHEMA` longtext NOT NULL, + `CONSTRAINT_NAME` longtext NOT NULL, + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, + `COLUMN_NAME` longtext NOT NULL, `ORDINAL_POSITION` bigint(10) NOT NULL, `POSITION_IN_UNIQUE_CONSTRAINT` bigint(10), - `REFERENCED_TABLE_SCHEMA` varchar(64), - `REFERENCED_TABLE_NAME` varchar(64), - `REFERENCED_COLUMN_NAME` varchar(64) + `REFERENCED_TABLE_SCHEMA` longtext, + `REFERENCED_TABLE_NAME` longtext, + `REFERENCED_COLUMN_NAME` longtext ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.KEY_COLUMN_USAGE; Field Type Null Key Default Extra -CONSTRAINT_CATALOG varchar(512) NO NULL -CONSTRAINT_SCHEMA varchar(64) NO NULL -CONSTRAINT_NAME varchar(64) NO NULL -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -COLUMN_NAME varchar(64) NO NULL +CONSTRAINT_CATALOG longtext NO NULL +CONSTRAINT_SCHEMA longtext NO NULL +CONSTRAINT_NAME longtext NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +COLUMN_NAME longtext NO NULL ORDINAL_POSITION bigint(10) NO NULL POSITION_IN_UNIQUE_CONSTRAINT bigint(10) YES NULL -REFERENCED_TABLE_SCHEMA varchar(64) YES NULL -REFERENCED_TABLE_NAME varchar(64) YES NULL -REFERENCED_COLUMN_NAME varchar(64) YES NULL +REFERENCED_TABLE_SCHEMA longtext YES NULL +REFERENCED_TABLE_NAME longtext YES NULL +REFERENCED_COLUMN_NAME longtext YES NULL SELECT constraint_catalog, constraint_schema, constraint_name, table_catalog, table_schema, table_name, column_name FROM information_schema.key_column_usage diff --git a/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result b/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result index 0b9788c45101f..d2a5958c77cfc 100644 --- a/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result @@ -28,48 +28,48 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.KEY_COLUMN_USAGE; Field Type Null Key Default Extra -CONSTRAINT_CATALOG varchar(512) NO NULL -CONSTRAINT_SCHEMA varchar(64) NO NULL -CONSTRAINT_NAME varchar(64) NO NULL -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -COLUMN_NAME varchar(64) NO NULL +CONSTRAINT_CATALOG longtext NO NULL +CONSTRAINT_SCHEMA longtext NO NULL +CONSTRAINT_NAME longtext NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +COLUMN_NAME longtext NO NULL ORDINAL_POSITION bigint(10) NO NULL POSITION_IN_UNIQUE_CONSTRAINT bigint(10) YES NULL -REFERENCED_TABLE_SCHEMA varchar(64) YES NULL -REFERENCED_TABLE_NAME varchar(64) YES NULL -REFERENCED_COLUMN_NAME varchar(64) YES NULL +REFERENCED_TABLE_SCHEMA longtext YES NULL +REFERENCED_TABLE_NAME longtext YES NULL +REFERENCED_COLUMN_NAME longtext YES NULL SHOW CREATE TABLE information_schema.KEY_COLUMN_USAGE; Table Create Table KEY_COLUMN_USAGE CREATE TEMPORARY TABLE `KEY_COLUMN_USAGE` ( - `CONSTRAINT_CATALOG` varchar(512) NOT NULL, - `CONSTRAINT_SCHEMA` varchar(64) NOT NULL, - `CONSTRAINT_NAME` varchar(64) NOT NULL, - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, - `COLUMN_NAME` varchar(64) NOT NULL, + `CONSTRAINT_CATALOG` longtext NOT NULL, + `CONSTRAINT_SCHEMA` longtext NOT NULL, + `CONSTRAINT_NAME` longtext NOT NULL, + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, + `COLUMN_NAME` longtext NOT NULL, `ORDINAL_POSITION` bigint(10) NOT NULL, `POSITION_IN_UNIQUE_CONSTRAINT` bigint(10), - `REFERENCED_TABLE_SCHEMA` varchar(64), - `REFERENCED_TABLE_NAME` varchar(64), - `REFERENCED_COLUMN_NAME` varchar(64) + `REFERENCED_TABLE_SCHEMA` longtext, + `REFERENCED_TABLE_NAME` longtext, + `REFERENCED_COLUMN_NAME` longtext ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.KEY_COLUMN_USAGE; Field Type Null Key Default Extra -CONSTRAINT_CATALOG varchar(512) NO NULL -CONSTRAINT_SCHEMA varchar(64) NO NULL -CONSTRAINT_NAME varchar(64) NO NULL -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -COLUMN_NAME varchar(64) NO NULL +CONSTRAINT_CATALOG longtext NO NULL +CONSTRAINT_SCHEMA longtext NO NULL +CONSTRAINT_NAME longtext NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +COLUMN_NAME longtext NO NULL ORDINAL_POSITION bigint(10) NO NULL POSITION_IN_UNIQUE_CONSTRAINT bigint(10) YES NULL -REFERENCED_TABLE_SCHEMA varchar(64) YES NULL -REFERENCED_TABLE_NAME varchar(64) YES NULL -REFERENCED_COLUMN_NAME varchar(64) YES NULL +REFERENCED_TABLE_SCHEMA longtext YES NULL +REFERENCED_TABLE_NAME longtext YES NULL +REFERENCED_COLUMN_NAME longtext YES NULL SELECT constraint_catalog, constraint_schema, constraint_name, table_catalog, table_schema, table_name, column_name FROM information_schema.key_column_usage diff --git a/mysql-test/suite/funcs_1/r/is_routines.result b/mysql-test/suite/funcs_1/r/is_routines.result index 1660a2caabb8f..ba1f5a5c13524 100644 --- a/mysql-test/suite/funcs_1/r/is_routines.result +++ b/mysql-test/suite/funcs_1/r/is_routines.result @@ -29,105 +29,105 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.ROUTINES; Field Type Null Key Default Extra -SPECIFIC_NAME varchar(64) NO NULL -ROUTINE_CATALOG varchar(512) NO NULL -ROUTINE_SCHEMA varchar(64) NO NULL -ROUTINE_NAME varchar(64) NO NULL -ROUTINE_TYPE varchar(13) NO NULL -DATA_TYPE varchar(64) NO NULL +SPECIFIC_NAME longtext NO NULL +ROUTINE_CATALOG longtext NO NULL +ROUTINE_SCHEMA longtext NO NULL +ROUTINE_NAME longtext NO NULL +ROUTINE_TYPE longtext NO NULL +DATA_TYPE longtext NO NULL CHARACTER_MAXIMUM_LENGTH int(21) YES NULL CHARACTER_OCTET_LENGTH int(21) YES NULL NUMERIC_PRECISION int(21) YES NULL NUMERIC_SCALE int(21) YES NULL DATETIME_PRECISION bigint(21) unsigned YES NULL -CHARACTER_SET_NAME varchar(64) YES NULL -COLLATION_NAME varchar(64) YES NULL +CHARACTER_SET_NAME longtext YES NULL +COLLATION_NAME longtext YES NULL DTD_IDENTIFIER longtext YES NULL ROUTINE_BODY varchar(8) NO NULL ROUTINE_DEFINITION longtext YES NULL -EXTERNAL_NAME varchar(64) YES NULL -EXTERNAL_LANGUAGE varchar(64) YES NULL +EXTERNAL_NAME longtext YES NULL +EXTERNAL_LANGUAGE longtext YES NULL PARAMETER_STYLE varchar(8) NO NULL IS_DETERMINISTIC varchar(3) NO NULL -SQL_DATA_ACCESS varchar(64) NO NULL -SQL_PATH varchar(64) YES NULL +SQL_DATA_ACCESS longtext NO NULL +SQL_PATH longtext YES NULL SECURITY_TYPE varchar(7) NO NULL CREATED datetime NO NULL LAST_ALTERED datetime NO NULL -SQL_MODE varchar(8192) NO NULL +SQL_MODE longtext NO NULL ROUTINE_COMMENT longtext NO NULL -DEFINER varchar(384) NO NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL -DATABASE_COLLATION varchar(64) NO NULL +DEFINER longtext NO NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL +DATABASE_COLLATION longtext NO NULL SHOW CREATE TABLE information_schema.ROUTINES; Table Create Table ROUTINES CREATE TEMPORARY TABLE `ROUTINES` ( - `SPECIFIC_NAME` varchar(64) NOT NULL, - `ROUTINE_CATALOG` varchar(512) NOT NULL, - `ROUTINE_SCHEMA` varchar(64) NOT NULL, - `ROUTINE_NAME` varchar(64) NOT NULL, - `ROUTINE_TYPE` varchar(13) NOT NULL, - `DATA_TYPE` varchar(64) NOT NULL, + `SPECIFIC_NAME` longtext NOT NULL, + `ROUTINE_CATALOG` longtext NOT NULL, + `ROUTINE_SCHEMA` longtext NOT NULL, + `ROUTINE_NAME` longtext NOT NULL, + `ROUTINE_TYPE` longtext NOT NULL, + `DATA_TYPE` longtext NOT NULL, `CHARACTER_MAXIMUM_LENGTH` int(21), `CHARACTER_OCTET_LENGTH` int(21), `NUMERIC_PRECISION` int(21), `NUMERIC_SCALE` int(21), `DATETIME_PRECISION` bigint(21) unsigned, - `CHARACTER_SET_NAME` varchar(64), - `COLLATION_NAME` varchar(64), + `CHARACTER_SET_NAME` longtext, + `COLLATION_NAME` longtext, `DTD_IDENTIFIER` longtext, `ROUTINE_BODY` varchar(8) NOT NULL, `ROUTINE_DEFINITION` longtext, - `EXTERNAL_NAME` varchar(64), - `EXTERNAL_LANGUAGE` varchar(64), + `EXTERNAL_NAME` longtext, + `EXTERNAL_LANGUAGE` longtext, `PARAMETER_STYLE` varchar(8) NOT NULL, `IS_DETERMINISTIC` varchar(3) NOT NULL, - `SQL_DATA_ACCESS` varchar(64) NOT NULL, - `SQL_PATH` varchar(64), + `SQL_DATA_ACCESS` longtext NOT NULL, + `SQL_PATH` longtext, `SECURITY_TYPE` varchar(7) NOT NULL, `CREATED` datetime NOT NULL, `LAST_ALTERED` datetime NOT NULL, - `SQL_MODE` varchar(8192) NOT NULL, + `SQL_MODE` longtext NOT NULL, `ROUTINE_COMMENT` longtext NOT NULL, - `DEFINER` varchar(384) NOT NULL, - `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, - `COLLATION_CONNECTION` varchar(64) NOT NULL, - `DATABASE_COLLATION` varchar(64) NOT NULL + `DEFINER` longtext NOT NULL, + `CHARACTER_SET_CLIENT` longtext NOT NULL, + `COLLATION_CONNECTION` longtext NOT NULL, + `DATABASE_COLLATION` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.ROUTINES; Field Type Null Key Default Extra -SPECIFIC_NAME varchar(64) NO NULL -ROUTINE_CATALOG varchar(512) NO NULL -ROUTINE_SCHEMA varchar(64) NO NULL -ROUTINE_NAME varchar(64) NO NULL -ROUTINE_TYPE varchar(13) NO NULL -DATA_TYPE varchar(64) NO NULL +SPECIFIC_NAME longtext NO NULL +ROUTINE_CATALOG longtext NO NULL +ROUTINE_SCHEMA longtext NO NULL +ROUTINE_NAME longtext NO NULL +ROUTINE_TYPE longtext NO NULL +DATA_TYPE longtext NO NULL CHARACTER_MAXIMUM_LENGTH int(21) YES NULL CHARACTER_OCTET_LENGTH int(21) YES NULL NUMERIC_PRECISION int(21) YES NULL NUMERIC_SCALE int(21) YES NULL DATETIME_PRECISION bigint(21) unsigned YES NULL -CHARACTER_SET_NAME varchar(64) YES NULL -COLLATION_NAME varchar(64) YES NULL +CHARACTER_SET_NAME longtext YES NULL +COLLATION_NAME longtext YES NULL DTD_IDENTIFIER longtext YES NULL ROUTINE_BODY varchar(8) NO NULL ROUTINE_DEFINITION longtext YES NULL -EXTERNAL_NAME varchar(64) YES NULL -EXTERNAL_LANGUAGE varchar(64) YES NULL +EXTERNAL_NAME longtext YES NULL +EXTERNAL_LANGUAGE longtext YES NULL PARAMETER_STYLE varchar(8) NO NULL IS_DETERMINISTIC varchar(3) NO NULL -SQL_DATA_ACCESS varchar(64) NO NULL -SQL_PATH varchar(64) YES NULL +SQL_DATA_ACCESS longtext NO NULL +SQL_PATH longtext YES NULL SECURITY_TYPE varchar(7) NO NULL CREATED datetime NO NULL LAST_ALTERED datetime NO NULL -SQL_MODE varchar(8192) NO NULL +SQL_MODE longtext NO NULL ROUTINE_COMMENT longtext NO NULL -DEFINER varchar(384) NO NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL -DATABASE_COLLATION varchar(64) NO NULL +DEFINER longtext NO NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL +DATABASE_COLLATION longtext NO NULL USE test; DROP PROCEDURE IF EXISTS sp_for_routines; DROP FUNCTION IF EXISTS function_for_routines; diff --git a/mysql-test/suite/funcs_1/r/is_routines_embedded.result b/mysql-test/suite/funcs_1/r/is_routines_embedded.result index b46f520bc489d..3ba4c8cbfb608 100644 --- a/mysql-test/suite/funcs_1/r/is_routines_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_routines_embedded.result @@ -29,105 +29,105 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.ROUTINES; Field Type Null Key Default Extra -SPECIFIC_NAME varchar(64) NO NULL -ROUTINE_CATALOG varchar(512) NO NULL -ROUTINE_SCHEMA varchar(64) NO NULL -ROUTINE_NAME varchar(64) NO NULL -ROUTINE_TYPE varchar(13) NO NULL -DATA_TYPE varchar(64) NO NULL +SPECIFIC_NAME longtext NO NULL +ROUTINE_CATALOG longtext NO NULL +ROUTINE_SCHEMA longtext NO NULL +ROUTINE_NAME longtext NO NULL +ROUTINE_TYPE longtext NO NULL +DATA_TYPE longtext NO NULL CHARACTER_MAXIMUM_LENGTH int(21) YES NULL CHARACTER_OCTET_LENGTH int(21) YES NULL NUMERIC_PRECISION int(21) YES NULL NUMERIC_SCALE int(21) YES NULL DATETIME_PRECISION bigint(21) unsigned YES NULL -CHARACTER_SET_NAME varchar(64) YES NULL -COLLATION_NAME varchar(64) YES NULL +CHARACTER_SET_NAME longtext YES NULL +COLLATION_NAME longtext YES NULL DTD_IDENTIFIER longtext YES NULL ROUTINE_BODY varchar(8) NO NULL ROUTINE_DEFINITION longtext YES NULL -EXTERNAL_NAME varchar(64) YES NULL -EXTERNAL_LANGUAGE varchar(64) YES NULL +EXTERNAL_NAME longtext YES NULL +EXTERNAL_LANGUAGE longtext YES NULL PARAMETER_STYLE varchar(8) NO NULL IS_DETERMINISTIC varchar(3) NO NULL -SQL_DATA_ACCESS varchar(64) NO NULL -SQL_PATH varchar(64) YES NULL +SQL_DATA_ACCESS longtext NO NULL +SQL_PATH longtext YES NULL SECURITY_TYPE varchar(7) NO NULL CREATED datetime NO NULL LAST_ALTERED datetime NO NULL -SQL_MODE varchar(8192) NO NULL +SQL_MODE longtext NO NULL ROUTINE_COMMENT longtext NO NULL -DEFINER varchar(384) NO NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL -DATABASE_COLLATION varchar(64) NO NULL +DEFINER longtext NO NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL +DATABASE_COLLATION longtext NO NULL SHOW CREATE TABLE information_schema.ROUTINES; Table Create Table ROUTINES CREATE TEMPORARY TABLE `ROUTINES` ( - `SPECIFIC_NAME` varchar(64) NOT NULL, - `ROUTINE_CATALOG` varchar(512) NOT NULL, - `ROUTINE_SCHEMA` varchar(64) NOT NULL, - `ROUTINE_NAME` varchar(64) NOT NULL, - `ROUTINE_TYPE` varchar(13) NOT NULL, - `DATA_TYPE` varchar(64) NOT NULL, + `SPECIFIC_NAME` longtext NOT NULL, + `ROUTINE_CATALOG` longtext NOT NULL, + `ROUTINE_SCHEMA` longtext NOT NULL, + `ROUTINE_NAME` longtext NOT NULL, + `ROUTINE_TYPE` longtext NOT NULL, + `DATA_TYPE` longtext NOT NULL, `CHARACTER_MAXIMUM_LENGTH` int(21), `CHARACTER_OCTET_LENGTH` int(21), `NUMERIC_PRECISION` int(21), `NUMERIC_SCALE` int(21), `DATETIME_PRECISION` bigint(21) unsigned, - `CHARACTER_SET_NAME` varchar(64), - `COLLATION_NAME` varchar(64), + `CHARACTER_SET_NAME` longtext, + `COLLATION_NAME` longtext, `DTD_IDENTIFIER` longtext, `ROUTINE_BODY` varchar(8) NOT NULL, `ROUTINE_DEFINITION` longtext, - `EXTERNAL_NAME` varchar(64), - `EXTERNAL_LANGUAGE` varchar(64), + `EXTERNAL_NAME` longtext, + `EXTERNAL_LANGUAGE` longtext, `PARAMETER_STYLE` varchar(8) NOT NULL, `IS_DETERMINISTIC` varchar(3) NOT NULL, - `SQL_DATA_ACCESS` varchar(64) NOT NULL, - `SQL_PATH` varchar(64), + `SQL_DATA_ACCESS` longtext NOT NULL, + `SQL_PATH` longtext, `SECURITY_TYPE` varchar(7) NOT NULL, `CREATED` datetime NOT NULL, `LAST_ALTERED` datetime NOT NULL, - `SQL_MODE` varchar(8192) NOT NULL, + `SQL_MODE` longtext NOT NULL, `ROUTINE_COMMENT` longtext NOT NULL, - `DEFINER` varchar(384) NOT NULL, - `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, - `COLLATION_CONNECTION` varchar(64) NOT NULL, - `DATABASE_COLLATION` varchar(64) NOT NULL + `DEFINER` longtext NOT NULL, + `CHARACTER_SET_CLIENT` longtext NOT NULL, + `COLLATION_CONNECTION` longtext NOT NULL, + `DATABASE_COLLATION` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.ROUTINES; Field Type Null Key Default Extra -SPECIFIC_NAME varchar(64) NO NULL -ROUTINE_CATALOG varchar(512) NO NULL -ROUTINE_SCHEMA varchar(64) NO NULL -ROUTINE_NAME varchar(64) NO NULL -ROUTINE_TYPE varchar(13) NO NULL -DATA_TYPE varchar(64) NO NULL +SPECIFIC_NAME longtext NO NULL +ROUTINE_CATALOG longtext NO NULL +ROUTINE_SCHEMA longtext NO NULL +ROUTINE_NAME longtext NO NULL +ROUTINE_TYPE longtext NO NULL +DATA_TYPE longtext NO NULL CHARACTER_MAXIMUM_LENGTH int(21) YES NULL CHARACTER_OCTET_LENGTH int(21) YES NULL NUMERIC_PRECISION int(21) YES NULL NUMERIC_SCALE int(21) YES NULL DATETIME_PRECISION bigint(21) unsigned YES NULL -CHARACTER_SET_NAME varchar(64) YES NULL -COLLATION_NAME varchar(64) YES NULL +CHARACTER_SET_NAME longtext YES NULL +COLLATION_NAME longtext YES NULL DTD_IDENTIFIER longtext YES NULL ROUTINE_BODY varchar(8) NO NULL ROUTINE_DEFINITION longtext YES NULL -EXTERNAL_NAME varchar(64) YES NULL -EXTERNAL_LANGUAGE varchar(64) YES NULL +EXTERNAL_NAME longtext YES NULL +EXTERNAL_LANGUAGE longtext YES NULL PARAMETER_STYLE varchar(8) NO NULL IS_DETERMINISTIC varchar(3) NO NULL -SQL_DATA_ACCESS varchar(64) NO NULL -SQL_PATH varchar(64) YES NULL +SQL_DATA_ACCESS longtext NO NULL +SQL_PATH longtext YES NULL SECURITY_TYPE varchar(7) NO NULL CREATED datetime NO NULL LAST_ALTERED datetime NO NULL -SQL_MODE varchar(8192) NO NULL +SQL_MODE longtext NO NULL ROUTINE_COMMENT longtext NO NULL -DEFINER varchar(384) NO NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL -DATABASE_COLLATION varchar(64) NO NULL +DEFINER longtext NO NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL +DATABASE_COLLATION longtext NO NULL USE test; DROP PROCEDURE IF EXISTS sp_for_routines; DROP FUNCTION IF EXISTS function_for_routines; diff --git a/mysql-test/suite/funcs_1/r/is_schema_privileges.result b/mysql-test/suite/funcs_1/r/is_schema_privileges.result index 69f78a98711b1..5efb5ed452f78 100644 --- a/mysql-test/suite/funcs_1/r/is_schema_privileges.result +++ b/mysql-test/suite/funcs_1/r/is_schema_privileges.result @@ -28,26 +28,26 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.SCHEMA_PRIVILEGES; Field Type Null Key Default Extra -GRANTEE varchar(385) NO NULL -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -PRIVILEGE_TYPE varchar(64) NO NULL +GRANTEE longtext NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +PRIVILEGE_TYPE longtext NO NULL IS_GRANTABLE varchar(3) NO NULL SHOW CREATE TABLE information_schema.SCHEMA_PRIVILEGES; Table Create Table SCHEMA_PRIVILEGES CREATE TEMPORARY TABLE `SCHEMA_PRIVILEGES` ( - `GRANTEE` varchar(385) NOT NULL, - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `PRIVILEGE_TYPE` varchar(64) NOT NULL, + `GRANTEE` longtext NOT NULL, + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `PRIVILEGE_TYPE` longtext NOT NULL, `IS_GRANTABLE` varchar(3) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.SCHEMA_PRIVILEGES; Field Type Null Key Default Extra -GRANTEE varchar(385) NO NULL -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -PRIVILEGE_TYPE varchar(64) NO NULL +GRANTEE longtext NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +PRIVILEGE_TYPE longtext NO NULL IS_GRANTABLE varchar(3) NO NULL SELECT GRANTEE, TABLE_CATALOG, TABLE_SCHEMA, PRIVILEGE_TYPE FROM information_schema.schema_privileges WHERE table_catalog IS NOT NULL; diff --git a/mysql-test/suite/funcs_1/r/is_schemata.result b/mysql-test/suite/funcs_1/r/is_schemata.result index 1851c089b04c1..071bb0a2e0925 100644 --- a/mysql-test/suite/funcs_1/r/is_schemata.result +++ b/mysql-test/suite/funcs_1/r/is_schemata.result @@ -28,30 +28,30 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.SCHEMATA; Field Type Null Key Default Extra -CATALOG_NAME varchar(512) NO NULL -SCHEMA_NAME varchar(64) NO NULL -DEFAULT_CHARACTER_SET_NAME varchar(32) NO NULL -DEFAULT_COLLATION_NAME varchar(64) NO NULL -SQL_PATH varchar(512) YES NULL -SCHEMA_COMMENT varchar(1024) NO NULL +CATALOG_NAME longtext NO NULL +SCHEMA_NAME longtext NO NULL +DEFAULT_CHARACTER_SET_NAME longtext NO NULL +DEFAULT_COLLATION_NAME longtext NO NULL +SQL_PATH longtext YES NULL +SCHEMA_COMMENT longtext NO NULL SHOW CREATE TABLE information_schema.SCHEMATA; Table Create Table SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` ( - `CATALOG_NAME` varchar(512) NOT NULL, - `SCHEMA_NAME` varchar(64) NOT NULL, - `DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL, - `DEFAULT_COLLATION_NAME` varchar(64) NOT NULL, - `SQL_PATH` varchar(512), - `SCHEMA_COMMENT` varchar(1024) NOT NULL + `CATALOG_NAME` longtext NOT NULL, + `SCHEMA_NAME` longtext NOT NULL, + `DEFAULT_CHARACTER_SET_NAME` longtext NOT NULL, + `DEFAULT_COLLATION_NAME` longtext NOT NULL, + `SQL_PATH` longtext, + `SCHEMA_COMMENT` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.SCHEMATA; Field Type Null Key Default Extra -CATALOG_NAME varchar(512) NO NULL -SCHEMA_NAME varchar(64) NO NULL -DEFAULT_CHARACTER_SET_NAME varchar(32) NO NULL -DEFAULT_COLLATION_NAME varchar(64) NO NULL -SQL_PATH varchar(512) YES NULL -SCHEMA_COMMENT varchar(1024) NO NULL +CATALOG_NAME longtext NO NULL +SCHEMA_NAME longtext NO NULL +DEFAULT_CHARACTER_SET_NAME longtext NO NULL +DEFAULT_COLLATION_NAME longtext NO NULL +SQL_PATH longtext YES NULL +SCHEMA_COMMENT longtext NO NULL SELECT catalog_name, schema_name, sql_path FROM information_schema.schemata WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL diff --git a/mysql-test/suite/funcs_1/r/is_schemata_embedded.result b/mysql-test/suite/funcs_1/r/is_schemata_embedded.result index fd7a86d4a42ba..26f828fa6f8ba 100644 --- a/mysql-test/suite/funcs_1/r/is_schemata_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_schemata_embedded.result @@ -28,30 +28,30 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.SCHEMATA; Field Type Null Key Default Extra -CATALOG_NAME varchar(512) NO NULL -SCHEMA_NAME varchar(64) NO NULL -DEFAULT_CHARACTER_SET_NAME varchar(32) NO NULL -DEFAULT_COLLATION_NAME varchar(64) NO NULL -SQL_PATH varchar(512) YES NULL -SCHEMA_COMMENT varchar(1024) NO NULL +CATALOG_NAME longtext NO NULL +SCHEMA_NAME longtext NO NULL +DEFAULT_CHARACTER_SET_NAME longtext NO NULL +DEFAULT_COLLATION_NAME longtext NO NULL +SQL_PATH longtext YES NULL +SCHEMA_COMMENT longtext NO NULL SHOW CREATE TABLE information_schema.SCHEMATA; Table Create Table SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` ( - `CATALOG_NAME` varchar(512) NOT NULL, - `SCHEMA_NAME` varchar(64) NOT NULL, - `DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL, - `DEFAULT_COLLATION_NAME` varchar(64) NOT NULL, - `SQL_PATH` varchar(512), - `SCHEMA_COMMENT` varchar(1024) NOT NULL + `CATALOG_NAME` longtext NOT NULL, + `SCHEMA_NAME` longtext NOT NULL, + `DEFAULT_CHARACTER_SET_NAME` longtext NOT NULL, + `DEFAULT_COLLATION_NAME` longtext NOT NULL, + `SQL_PATH` longtext, + `SCHEMA_COMMENT` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.SCHEMATA; Field Type Null Key Default Extra -CATALOG_NAME varchar(512) NO NULL -SCHEMA_NAME varchar(64) NO NULL -DEFAULT_CHARACTER_SET_NAME varchar(32) NO NULL -DEFAULT_COLLATION_NAME varchar(64) NO NULL -SQL_PATH varchar(512) YES NULL -SCHEMA_COMMENT varchar(1024) NO NULL +CATALOG_NAME longtext NO NULL +SCHEMA_NAME longtext NO NULL +DEFAULT_CHARACTER_SET_NAME longtext NO NULL +DEFAULT_COLLATION_NAME longtext NO NULL +SQL_PATH longtext YES NULL +SCHEMA_COMMENT longtext NO NULL SELECT catalog_name, schema_name, sql_path FROM information_schema.schemata WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL diff --git a/mysql-test/suite/funcs_1/r/is_statistics.result b/mysql-test/suite/funcs_1/r/is_statistics.result index f271913d32914..97877fd2b0b51 100644 --- a/mysql-test/suite/funcs_1/r/is_statistics.result +++ b/mysql-test/suite/funcs_1/r/is_statistics.result @@ -28,62 +28,62 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.STATISTICS; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL NON_UNIQUE bigint(1) NO NULL -INDEX_SCHEMA varchar(64) NO NULL -INDEX_NAME varchar(64) NO NULL +INDEX_SCHEMA longtext NO NULL +INDEX_NAME longtext NO NULL SEQ_IN_INDEX int(2) unsigned NO NULL -COLUMN_NAME varchar(64) NO NULL +COLUMN_NAME longtext NO NULL COLLATION varchar(1) YES NULL CARDINALITY bigint(21) YES NULL SUB_PART bigint(3) YES NULL PACKED varchar(10) YES NULL NULLABLE varchar(3) NO NULL -INDEX_TYPE varchar(16) NO NULL -COMMENT varchar(16) YES NULL -INDEX_COMMENT varchar(1024) NO NULL +INDEX_TYPE longtext NO NULL +COMMENT longtext YES NULL +INDEX_COMMENT longtext NO NULL IGNORED varchar(3) NO NULL SHOW CREATE TABLE information_schema.STATISTICS; Table Create Table STATISTICS CREATE TEMPORARY TABLE `STATISTICS` ( - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, `NON_UNIQUE` bigint(1) NOT NULL, - `INDEX_SCHEMA` varchar(64) NOT NULL, - `INDEX_NAME` varchar(64) NOT NULL, + `INDEX_SCHEMA` longtext NOT NULL, + `INDEX_NAME` longtext NOT NULL, `SEQ_IN_INDEX` int(2) unsigned NOT NULL, - `COLUMN_NAME` varchar(64) NOT NULL, + `COLUMN_NAME` longtext NOT NULL, `COLLATION` varchar(1), `CARDINALITY` bigint(21), `SUB_PART` bigint(3), `PACKED` varchar(10), `NULLABLE` varchar(3) NOT NULL, - `INDEX_TYPE` varchar(16) NOT NULL, - `COMMENT` varchar(16), - `INDEX_COMMENT` varchar(1024) NOT NULL, + `INDEX_TYPE` longtext NOT NULL, + `COMMENT` longtext, + `INDEX_COMMENT` longtext NOT NULL, `IGNORED` varchar(3) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.STATISTICS; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL NON_UNIQUE bigint(1) NO NULL -INDEX_SCHEMA varchar(64) NO NULL -INDEX_NAME varchar(64) NO NULL +INDEX_SCHEMA longtext NO NULL +INDEX_NAME longtext NO NULL SEQ_IN_INDEX int(2) unsigned NO NULL -COLUMN_NAME varchar(64) NO NULL +COLUMN_NAME longtext NO NULL COLLATION varchar(1) YES NULL CARDINALITY bigint(21) YES NULL SUB_PART bigint(3) YES NULL PACKED varchar(10) YES NULL NULLABLE varchar(3) NO NULL -INDEX_TYPE varchar(16) NO NULL -COMMENT varchar(16) YES NULL -INDEX_COMMENT varchar(1024) NO NULL +INDEX_TYPE longtext NO NULL +COMMENT longtext YES NULL +INDEX_COMMENT longtext NO NULL IGNORED varchar(3) NO NULL SELECT table_catalog, table_schema, table_name, index_schema, index_name FROM information_schema.statistics WHERE table_catalog IS NOT NULL diff --git a/mysql-test/suite/funcs_1/r/is_table_constraints.result b/mysql-test/suite/funcs_1/r/is_table_constraints.result index 85e09cef9cd54..6cbdda0ea11b6 100644 --- a/mysql-test/suite/funcs_1/r/is_table_constraints.result +++ b/mysql-test/suite/funcs_1/r/is_table_constraints.result @@ -28,30 +28,30 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.TABLE_CONSTRAINTS; Field Type Null Key Default Extra -CONSTRAINT_CATALOG varchar(512) NO NULL -CONSTRAINT_SCHEMA varchar(64) NO NULL -CONSTRAINT_NAME varchar(64) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -CONSTRAINT_TYPE varchar(64) NO NULL +CONSTRAINT_CATALOG longtext NO NULL +CONSTRAINT_SCHEMA longtext NO NULL +CONSTRAINT_NAME longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +CONSTRAINT_TYPE longtext NO NULL SHOW CREATE TABLE information_schema.TABLE_CONSTRAINTS; Table Create Table TABLE_CONSTRAINTS CREATE TEMPORARY TABLE `TABLE_CONSTRAINTS` ( - `CONSTRAINT_CATALOG` varchar(512) NOT NULL, - `CONSTRAINT_SCHEMA` varchar(64) NOT NULL, - `CONSTRAINT_NAME` varchar(64) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, - `CONSTRAINT_TYPE` varchar(64) NOT NULL + `CONSTRAINT_CATALOG` longtext NOT NULL, + `CONSTRAINT_SCHEMA` longtext NOT NULL, + `CONSTRAINT_NAME` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, + `CONSTRAINT_TYPE` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.TABLE_CONSTRAINTS; Field Type Null Key Default Extra -CONSTRAINT_CATALOG varchar(512) NO NULL -CONSTRAINT_SCHEMA varchar(64) NO NULL -CONSTRAINT_NAME varchar(64) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -CONSTRAINT_TYPE varchar(64) NO NULL +CONSTRAINT_CATALOG longtext NO NULL +CONSTRAINT_SCHEMA longtext NO NULL +CONSTRAINT_NAME longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +CONSTRAINT_TYPE longtext NO NULL SELECT constraint_catalog, constraint_schema, constraint_name, table_schema, table_name FROM information_schema.table_constraints diff --git a/mysql-test/suite/funcs_1/r/is_table_privileges.result b/mysql-test/suite/funcs_1/r/is_table_privileges.result index 66e98854ab756..3ef6f00a32c19 100644 --- a/mysql-test/suite/funcs_1/r/is_table_privileges.result +++ b/mysql-test/suite/funcs_1/r/is_table_privileges.result @@ -28,29 +28,29 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.TABLE_PRIVILEGES; Field Type Null Key Default Extra -GRANTEE varchar(385) NO NULL -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -PRIVILEGE_TYPE varchar(64) NO NULL +GRANTEE longtext NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +PRIVILEGE_TYPE longtext NO NULL IS_GRANTABLE varchar(3) NO NULL SHOW CREATE TABLE information_schema.TABLE_PRIVILEGES; Table Create Table TABLE_PRIVILEGES CREATE TEMPORARY TABLE `TABLE_PRIVILEGES` ( - `GRANTEE` varchar(385) NOT NULL, - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, - `PRIVILEGE_TYPE` varchar(64) NOT NULL, + `GRANTEE` longtext NOT NULL, + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, + `PRIVILEGE_TYPE` longtext NOT NULL, `IS_GRANTABLE` varchar(3) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.TABLE_PRIVILEGES; Field Type Null Key Default Extra -GRANTEE varchar(385) NO NULL -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -PRIVILEGE_TYPE varchar(64) NO NULL +GRANTEE longtext NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +PRIVILEGE_TYPE longtext NO NULL IS_GRANTABLE varchar(3) NO NULL SELECT table_catalog, table_schema, table_name, privilege_type FROM information_schema.table_privileges WHERE table_catalog IS NOT NULL; diff --git a/mysql-test/suite/funcs_1/r/is_tables.result b/mysql-test/suite/funcs_1/r/is_tables.result index 35f7d43d437ec..e8617459f2977 100644 --- a/mysql-test/suite/funcs_1/r/is_tables.result +++ b/mysql-test/suite/funcs_1/r/is_tables.result @@ -28,11 +28,11 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.TABLES; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -TABLE_TYPE varchar(64) NO NULL -ENGINE varchar(64) YES NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +TABLE_TYPE longtext NO NULL +ENGINE longtext YES NULL VERSION bigint(21) unsigned YES NULL ROW_FORMAT varchar(10) YES NULL TABLE_ROWS bigint(21) unsigned YES NULL @@ -45,20 +45,20 @@ AUTO_INCREMENT bigint(21) unsigned YES NULL CREATE_TIME datetime YES NULL UPDATE_TIME datetime YES NULL CHECK_TIME datetime YES NULL -TABLE_COLLATION varchar(64) YES NULL +TABLE_COLLATION longtext YES NULL CHECKSUM bigint(21) unsigned YES NULL -CREATE_OPTIONS varchar(2048) YES NULL -TABLE_COMMENT varchar(2048) NO NULL +CREATE_OPTIONS longtext YES NULL +TABLE_COMMENT longtext NO NULL MAX_INDEX_LENGTH bigint(21) unsigned YES NULL TEMPORARY varchar(1) YES NULL SHOW CREATE TABLE information_schema.TABLES; Table Create Table TABLES CREATE TEMPORARY TABLE `TABLES` ( - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, - `TABLE_TYPE` varchar(64) NOT NULL, - `ENGINE` varchar(64), + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, + `TABLE_TYPE` longtext NOT NULL, + `ENGINE` longtext, `VERSION` bigint(21) unsigned, `ROW_FORMAT` varchar(10), `TABLE_ROWS` bigint(21) unsigned, @@ -71,20 +71,20 @@ TABLES CREATE TEMPORARY TABLE `TABLES` ( `CREATE_TIME` datetime, `UPDATE_TIME` datetime, `CHECK_TIME` datetime, - `TABLE_COLLATION` varchar(64), + `TABLE_COLLATION` longtext, `CHECKSUM` bigint(21) unsigned, - `CREATE_OPTIONS` varchar(2048), - `TABLE_COMMENT` varchar(2048) NOT NULL, + `CREATE_OPTIONS` longtext, + `TABLE_COMMENT` longtext NOT NULL, `MAX_INDEX_LENGTH` bigint(21) unsigned, `TEMPORARY` varchar(1) ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.TABLES; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -TABLE_TYPE varchar(64) NO NULL -ENGINE varchar(64) YES NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +TABLE_TYPE longtext NO NULL +ENGINE longtext YES NULL VERSION bigint(21) unsigned YES NULL ROW_FORMAT varchar(10) YES NULL TABLE_ROWS bigint(21) unsigned YES NULL @@ -97,10 +97,10 @@ AUTO_INCREMENT bigint(21) unsigned YES NULL CREATE_TIME datetime YES NULL UPDATE_TIME datetime YES NULL CHECK_TIME datetime YES NULL -TABLE_COLLATION varchar(64) YES NULL +TABLE_COLLATION longtext YES NULL CHECKSUM bigint(21) unsigned YES NULL -CREATE_OPTIONS varchar(2048) YES NULL -TABLE_COMMENT varchar(2048) NO NULL +CREATE_OPTIONS longtext YES NULL +TABLE_COMMENT longtext NO NULL MAX_INDEX_LENGTH bigint(21) unsigned YES NULL TEMPORARY varchar(1) YES NULL SELECT table_catalog, table_schema, table_name diff --git a/mysql-test/suite/funcs_1/r/is_tables_embedded.result b/mysql-test/suite/funcs_1/r/is_tables_embedded.result index de0c2fb4804ab..84dce266c8c76 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_tables_embedded.result @@ -28,11 +28,11 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.TABLES; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -TABLE_TYPE varchar(64) NO NULL -ENGINE varchar(64) YES NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +TABLE_TYPE longtext NO NULL +ENGINE longtext YES NULL VERSION bigint(21) unsigned YES NULL ROW_FORMAT varchar(10) YES NULL TABLE_ROWS bigint(21) unsigned YES NULL @@ -45,20 +45,20 @@ AUTO_INCREMENT bigint(21) unsigned YES NULL CREATE_TIME datetime YES NULL UPDATE_TIME datetime YES NULL CHECK_TIME datetime YES NULL -TABLE_COLLATION varchar(64) YES NULL +TABLE_COLLATION longtext YES NULL CHECKSUM bigint(21) unsigned YES NULL -CREATE_OPTIONS varchar(2048) YES NULL -TABLE_COMMENT varchar(2048) NO NULL +CREATE_OPTIONS longtext YES NULL +TABLE_COMMENT longtext NO NULL MAX_INDEX_LENGTH bigint(21) unsigned YES NULL TEMPORARY varchar(1) YES NULL SHOW CREATE TABLE information_schema.TABLES; Table Create Table TABLES CREATE TEMPORARY TABLE `TABLES` ( - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, - `TABLE_TYPE` varchar(64) NOT NULL, - `ENGINE` varchar(64), + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, + `TABLE_TYPE` longtext NOT NULL, + `ENGINE` longtext, `VERSION` bigint(21) unsigned, `ROW_FORMAT` varchar(10), `TABLE_ROWS` bigint(21) unsigned, @@ -71,20 +71,20 @@ TABLES CREATE TEMPORARY TABLE `TABLES` ( `CREATE_TIME` datetime, `UPDATE_TIME` datetime, `CHECK_TIME` datetime, - `TABLE_COLLATION` varchar(64), + `TABLE_COLLATION` longtext, `CHECKSUM` bigint(21) unsigned, - `CREATE_OPTIONS` varchar(2048), - `TABLE_COMMENT` varchar(2048) NOT NULL, + `CREATE_OPTIONS` longtext, + `TABLE_COMMENT` longtext NOT NULL, `MAX_INDEX_LENGTH` bigint(21) unsigned, `TEMPORARY` varchar(1) ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.TABLES; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL -TABLE_TYPE varchar(64) NO NULL -ENGINE varchar(64) YES NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL +TABLE_TYPE longtext NO NULL +ENGINE longtext YES NULL VERSION bigint(21) unsigned YES NULL ROW_FORMAT varchar(10) YES NULL TABLE_ROWS bigint(21) unsigned YES NULL @@ -97,10 +97,10 @@ AUTO_INCREMENT bigint(21) unsigned YES NULL CREATE_TIME datetime YES NULL UPDATE_TIME datetime YES NULL CHECK_TIME datetime YES NULL -TABLE_COLLATION varchar(64) YES NULL +TABLE_COLLATION longtext YES NULL CHECKSUM bigint(21) unsigned YES NULL -CREATE_OPTIONS varchar(2048) YES NULL -TABLE_COMMENT varchar(2048) NO NULL +CREATE_OPTIONS longtext YES NULL +TABLE_COMMENT longtext NO NULL MAX_INDEX_LENGTH bigint(21) unsigned YES NULL TEMPORARY varchar(1) YES NULL SELECT table_catalog, table_schema, table_name diff --git a/mysql-test/suite/funcs_1/r/is_triggers.result b/mysql-test/suite/funcs_1/r/is_triggers.result index d2bb50a9e9b77..fc1877e816586 100644 --- a/mysql-test/suite/funcs_1/r/is_triggers.result +++ b/mysql-test/suite/funcs_1/r/is_triggers.result @@ -30,78 +30,78 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.TRIGGERS; Field Type Null Key Default Extra -TRIGGER_CATALOG varchar(512) NO NULL -TRIGGER_SCHEMA varchar(64) NO NULL -TRIGGER_NAME varchar(64) NO NULL +TRIGGER_CATALOG longtext NO NULL +TRIGGER_SCHEMA longtext NO NULL +TRIGGER_NAME longtext NO NULL EVENT_MANIPULATION varchar(6) NO NULL -EVENT_OBJECT_CATALOG varchar(512) NO NULL -EVENT_OBJECT_SCHEMA varchar(64) NO NULL -EVENT_OBJECT_TABLE varchar(64) NO NULL +EVENT_OBJECT_CATALOG longtext NO NULL +EVENT_OBJECT_SCHEMA longtext NO NULL +EVENT_OBJECT_TABLE longtext NO NULL ACTION_ORDER bigint(4) NO NULL ACTION_CONDITION longtext YES NULL ACTION_STATEMENT longtext YES NULL ACTION_ORIENTATION varchar(9) NO NULL ACTION_TIMING varchar(6) NO NULL -ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL -ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL +ACTION_REFERENCE_OLD_TABLE longtext YES NULL +ACTION_REFERENCE_NEW_TABLE longtext YES NULL ACTION_REFERENCE_OLD_ROW varchar(3) NO NULL ACTION_REFERENCE_NEW_ROW varchar(3) NO NULL CREATED datetime(2) YES NULL -SQL_MODE varchar(8192) NO NULL -DEFINER varchar(384) YES NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL -DATABASE_COLLATION varchar(64) NO NULL +SQL_MODE longtext NO NULL +DEFINER longtext YES NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL +DATABASE_COLLATION longtext NO NULL SHOW CREATE TABLE information_schema.TRIGGERS; Table Create Table TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` ( - `TRIGGER_CATALOG` varchar(512) NOT NULL, - `TRIGGER_SCHEMA` varchar(64) NOT NULL, - `TRIGGER_NAME` varchar(64) NOT NULL, + `TRIGGER_CATALOG` longtext NOT NULL, + `TRIGGER_SCHEMA` longtext NOT NULL, + `TRIGGER_NAME` longtext NOT NULL, `EVENT_MANIPULATION` varchar(6) NOT NULL, - `EVENT_OBJECT_CATALOG` varchar(512) NOT NULL, - `EVENT_OBJECT_SCHEMA` varchar(64) NOT NULL, - `EVENT_OBJECT_TABLE` varchar(64) NOT NULL, + `EVENT_OBJECT_CATALOG` longtext NOT NULL, + `EVENT_OBJECT_SCHEMA` longtext NOT NULL, + `EVENT_OBJECT_TABLE` longtext NOT NULL, `ACTION_ORDER` bigint(4) NOT NULL, `ACTION_CONDITION` longtext, `ACTION_STATEMENT` longtext, `ACTION_ORIENTATION` varchar(9) NOT NULL, `ACTION_TIMING` varchar(6) NOT NULL, - `ACTION_REFERENCE_OLD_TABLE` varchar(64), - `ACTION_REFERENCE_NEW_TABLE` varchar(64), + `ACTION_REFERENCE_OLD_TABLE` longtext, + `ACTION_REFERENCE_NEW_TABLE` longtext, `ACTION_REFERENCE_OLD_ROW` varchar(3) NOT NULL, `ACTION_REFERENCE_NEW_ROW` varchar(3) NOT NULL, `CREATED` datetime(2), - `SQL_MODE` varchar(8192) NOT NULL, - `DEFINER` varchar(384), - `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, - `COLLATION_CONNECTION` varchar(64) NOT NULL, - `DATABASE_COLLATION` varchar(64) NOT NULL + `SQL_MODE` longtext NOT NULL, + `DEFINER` longtext, + `CHARACTER_SET_CLIENT` longtext NOT NULL, + `COLLATION_CONNECTION` longtext NOT NULL, + `DATABASE_COLLATION` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.TRIGGERS; Field Type Null Key Default Extra -TRIGGER_CATALOG varchar(512) NO NULL -TRIGGER_SCHEMA varchar(64) NO NULL -TRIGGER_NAME varchar(64) NO NULL +TRIGGER_CATALOG longtext NO NULL +TRIGGER_SCHEMA longtext NO NULL +TRIGGER_NAME longtext NO NULL EVENT_MANIPULATION varchar(6) NO NULL -EVENT_OBJECT_CATALOG varchar(512) NO NULL -EVENT_OBJECT_SCHEMA varchar(64) NO NULL -EVENT_OBJECT_TABLE varchar(64) NO NULL +EVENT_OBJECT_CATALOG longtext NO NULL +EVENT_OBJECT_SCHEMA longtext NO NULL +EVENT_OBJECT_TABLE longtext NO NULL ACTION_ORDER bigint(4) NO NULL ACTION_CONDITION longtext YES NULL ACTION_STATEMENT longtext YES NULL ACTION_ORIENTATION varchar(9) NO NULL ACTION_TIMING varchar(6) NO NULL -ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL -ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL +ACTION_REFERENCE_OLD_TABLE longtext YES NULL +ACTION_REFERENCE_NEW_TABLE longtext YES NULL ACTION_REFERENCE_OLD_ROW varchar(3) NO NULL ACTION_REFERENCE_NEW_ROW varchar(3) NO NULL CREATED datetime(2) YES NULL -SQL_MODE varchar(8192) NO NULL -DEFINER varchar(384) YES NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL -DATABASE_COLLATION varchar(64) NO NULL +SQL_MODE longtext NO NULL +DEFINER longtext YES NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL +DATABASE_COLLATION longtext NO NULL SELECT * FROM information_schema.triggers WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL diff --git a/mysql-test/suite/funcs_1/r/is_triggers_embedded.result b/mysql-test/suite/funcs_1/r/is_triggers_embedded.result index 9d988417248c9..bc8fedf09cde8 100644 --- a/mysql-test/suite/funcs_1/r/is_triggers_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_triggers_embedded.result @@ -30,78 +30,78 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.TRIGGERS; Field Type Null Key Default Extra -TRIGGER_CATALOG varchar(512) NO NULL -TRIGGER_SCHEMA varchar(64) NO NULL -TRIGGER_NAME varchar(64) NO NULL +TRIGGER_CATALOG longtext NO NULL +TRIGGER_SCHEMA longtext NO NULL +TRIGGER_NAME longtext NO NULL EVENT_MANIPULATION varchar(6) NO NULL -EVENT_OBJECT_CATALOG varchar(512) NO NULL -EVENT_OBJECT_SCHEMA varchar(64) NO NULL -EVENT_OBJECT_TABLE varchar(64) NO NULL +EVENT_OBJECT_CATALOG longtext NO NULL +EVENT_OBJECT_SCHEMA longtext NO NULL +EVENT_OBJECT_TABLE longtext NO NULL ACTION_ORDER bigint(4) NO NULL ACTION_CONDITION longtext YES NULL ACTION_STATEMENT longtext YES NULL ACTION_ORIENTATION varchar(9) NO NULL ACTION_TIMING varchar(6) NO NULL -ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL -ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL +ACTION_REFERENCE_OLD_TABLE longtext YES NULL +ACTION_REFERENCE_NEW_TABLE longtext YES NULL ACTION_REFERENCE_OLD_ROW varchar(3) NO NULL ACTION_REFERENCE_NEW_ROW varchar(3) NO NULL CREATED datetime(2) YES NULL -SQL_MODE varchar(8192) NO NULL -DEFINER varchar(384) YES NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL -DATABASE_COLLATION varchar(64) NO NULL +SQL_MODE longtext NO NULL +DEFINER longtext YES NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL +DATABASE_COLLATION longtext NO NULL SHOW CREATE TABLE information_schema.TRIGGERS; Table Create Table TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` ( - `TRIGGER_CATALOG` varchar(512) NOT NULL, - `TRIGGER_SCHEMA` varchar(64) NOT NULL, - `TRIGGER_NAME` varchar(64) NOT NULL, + `TRIGGER_CATALOG` longtext NOT NULL, + `TRIGGER_SCHEMA` longtext NOT NULL, + `TRIGGER_NAME` longtext NOT NULL, `EVENT_MANIPULATION` varchar(6) NOT NULL, - `EVENT_OBJECT_CATALOG` varchar(512) NOT NULL, - `EVENT_OBJECT_SCHEMA` varchar(64) NOT NULL, - `EVENT_OBJECT_TABLE` varchar(64) NOT NULL, + `EVENT_OBJECT_CATALOG` longtext NOT NULL, + `EVENT_OBJECT_SCHEMA` longtext NOT NULL, + `EVENT_OBJECT_TABLE` longtext NOT NULL, `ACTION_ORDER` bigint(4) NOT NULL, `ACTION_CONDITION` longtext, `ACTION_STATEMENT` longtext, `ACTION_ORIENTATION` varchar(9) NOT NULL, `ACTION_TIMING` varchar(6) NOT NULL, - `ACTION_REFERENCE_OLD_TABLE` varchar(64), - `ACTION_REFERENCE_NEW_TABLE` varchar(64), + `ACTION_REFERENCE_OLD_TABLE` longtext, + `ACTION_REFERENCE_NEW_TABLE` longtext, `ACTION_REFERENCE_OLD_ROW` varchar(3) NOT NULL, `ACTION_REFERENCE_NEW_ROW` varchar(3) NOT NULL, `CREATED` datetime(2), - `SQL_MODE` varchar(8192) NOT NULL, - `DEFINER` varchar(384), - `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, - `COLLATION_CONNECTION` varchar(64) NOT NULL, - `DATABASE_COLLATION` varchar(64) NOT NULL + `SQL_MODE` longtext NOT NULL, + `DEFINER` longtext, + `CHARACTER_SET_CLIENT` longtext NOT NULL, + `COLLATION_CONNECTION` longtext NOT NULL, + `DATABASE_COLLATION` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.TRIGGERS; Field Type Null Key Default Extra -TRIGGER_CATALOG varchar(512) NO NULL -TRIGGER_SCHEMA varchar(64) NO NULL -TRIGGER_NAME varchar(64) NO NULL +TRIGGER_CATALOG longtext NO NULL +TRIGGER_SCHEMA longtext NO NULL +TRIGGER_NAME longtext NO NULL EVENT_MANIPULATION varchar(6) NO NULL -EVENT_OBJECT_CATALOG varchar(512) NO NULL -EVENT_OBJECT_SCHEMA varchar(64) NO NULL -EVENT_OBJECT_TABLE varchar(64) NO NULL +EVENT_OBJECT_CATALOG longtext NO NULL +EVENT_OBJECT_SCHEMA longtext NO NULL +EVENT_OBJECT_TABLE longtext NO NULL ACTION_ORDER bigint(4) NO NULL ACTION_CONDITION longtext YES NULL ACTION_STATEMENT longtext YES NULL ACTION_ORIENTATION varchar(9) NO NULL ACTION_TIMING varchar(6) NO NULL -ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL -ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL +ACTION_REFERENCE_OLD_TABLE longtext YES NULL +ACTION_REFERENCE_NEW_TABLE longtext YES NULL ACTION_REFERENCE_OLD_ROW varchar(3) NO NULL ACTION_REFERENCE_NEW_ROW varchar(3) NO NULL CREATED datetime(2) YES NULL -SQL_MODE varchar(8192) NO NULL -DEFINER varchar(384) YES NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL -DATABASE_COLLATION varchar(64) NO NULL +SQL_MODE longtext NO NULL +DEFINER longtext YES NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL +DATABASE_COLLATION longtext NO NULL SELECT * FROM information_schema.triggers WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL diff --git a/mysql-test/suite/funcs_1/r/is_user_privileges.result b/mysql-test/suite/funcs_1/r/is_user_privileges.result index a2a6838358aca..28c8b10b00b1d 100644 --- a/mysql-test/suite/funcs_1/r/is_user_privileges.result +++ b/mysql-test/suite/funcs_1/r/is_user_privileges.result @@ -28,23 +28,23 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.USER_PRIVILEGES; Field Type Null Key Default Extra -GRANTEE varchar(385) NO NULL -TABLE_CATALOG varchar(512) NO NULL -PRIVILEGE_TYPE varchar(64) NO NULL +GRANTEE longtext NO NULL +TABLE_CATALOG longtext NO NULL +PRIVILEGE_TYPE longtext NO NULL IS_GRANTABLE varchar(3) NO NULL SHOW CREATE TABLE information_schema.USER_PRIVILEGES; Table Create Table USER_PRIVILEGES CREATE TEMPORARY TABLE `USER_PRIVILEGES` ( - `GRANTEE` varchar(385) NOT NULL, - `TABLE_CATALOG` varchar(512) NOT NULL, - `PRIVILEGE_TYPE` varchar(64) NOT NULL, + `GRANTEE` longtext NOT NULL, + `TABLE_CATALOG` longtext NOT NULL, + `PRIVILEGE_TYPE` longtext NOT NULL, `IS_GRANTABLE` varchar(3) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.USER_PRIVILEGES; Field Type Null Key Default Extra -GRANTEE varchar(385) NO NULL -TABLE_CATALOG varchar(512) NO NULL -PRIVILEGE_TYPE varchar(64) NO NULL +GRANTEE longtext NO NULL +TABLE_CATALOG longtext NO NULL +PRIVILEGE_TYPE longtext NO NULL IS_GRANTABLE varchar(3) NO NULL SELECT grantee, table_catalog, privilege_type FROM information_schema.user_privileges diff --git a/mysql-test/suite/funcs_1/r/is_views.result b/mysql-test/suite/funcs_1/r/is_views.result index c67b372937f9b..4861afdaeb408 100644 --- a/mysql-test/suite/funcs_1/r/is_views.result +++ b/mysql-test/suite/funcs_1/r/is_views.result @@ -28,44 +28,44 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.VIEWS; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL VIEW_DEFINITION longtext NO NULL CHECK_OPTION varchar(8) NO NULL IS_UPDATABLE varchar(3) NO NULL -DEFINER varchar(384) NO NULL +DEFINER longtext NO NULL SECURITY_TYPE varchar(7) NO NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL ALGORITHM varchar(10) NO NULL SHOW CREATE TABLE information_schema.VIEWS; Table Create Table VIEWS CREATE TEMPORARY TABLE `VIEWS` ( - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, `VIEW_DEFINITION` longtext NOT NULL, `CHECK_OPTION` varchar(8) NOT NULL, `IS_UPDATABLE` varchar(3) NOT NULL, - `DEFINER` varchar(384) NOT NULL, + `DEFINER` longtext NOT NULL, `SECURITY_TYPE` varchar(7) NOT NULL, - `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, - `COLLATION_CONNECTION` varchar(64) NOT NULL, + `CHARACTER_SET_CLIENT` longtext NOT NULL, + `COLLATION_CONNECTION` longtext NOT NULL, `ALGORITHM` varchar(10) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.VIEWS; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL VIEW_DEFINITION longtext NO NULL CHECK_OPTION varchar(8) NO NULL IS_UPDATABLE varchar(3) NO NULL -DEFINER varchar(384) NO NULL +DEFINER longtext NO NULL SECURITY_TYPE varchar(7) NO NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL ALGORITHM varchar(10) NO NULL SELECT table_catalog, table_schema, table_name FROM information_schema.views WHERE table_catalog <> 'def'; diff --git a/mysql-test/suite/funcs_1/r/is_views_embedded.result b/mysql-test/suite/funcs_1/r/is_views_embedded.result index 67faf6b30ccfa..37dcebd4536cf 100644 --- a/mysql-test/suite/funcs_1/r/is_views_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_views_embedded.result @@ -28,44 +28,44 @@ DROP FUNCTION test.f1; ######################################################################### DESCRIBE information_schema.VIEWS; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL VIEW_DEFINITION longtext NO NULL CHECK_OPTION varchar(8) NO NULL IS_UPDATABLE varchar(3) NO NULL -DEFINER varchar(384) NO NULL +DEFINER longtext NO NULL SECURITY_TYPE varchar(7) NO NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL ALGORITHM varchar(10) NO NULL SHOW CREATE TABLE information_schema.VIEWS; Table Create Table VIEWS CREATE TEMPORARY TABLE `VIEWS` ( - `TABLE_CATALOG` varchar(512) NOT NULL, - `TABLE_SCHEMA` varchar(64) NOT NULL, - `TABLE_NAME` varchar(64) NOT NULL, + `TABLE_CATALOG` longtext NOT NULL, + `TABLE_SCHEMA` longtext NOT NULL, + `TABLE_NAME` longtext NOT NULL, `VIEW_DEFINITION` longtext NOT NULL, `CHECK_OPTION` varchar(8) NOT NULL, `IS_UPDATABLE` varchar(3) NOT NULL, - `DEFINER` varchar(384) NOT NULL, + `DEFINER` longtext NOT NULL, `SECURITY_TYPE` varchar(7) NOT NULL, - `CHARACTER_SET_CLIENT` varchar(32) NOT NULL, - `COLLATION_CONNECTION` varchar(64) NOT NULL, + `CHARACTER_SET_CLIENT` longtext NOT NULL, + `COLLATION_CONNECTION` longtext NOT NULL, `ALGORITHM` varchar(10) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SHOW COLUMNS FROM information_schema.VIEWS; Field Type Null Key Default Extra -TABLE_CATALOG varchar(512) NO NULL -TABLE_SCHEMA varchar(64) NO NULL -TABLE_NAME varchar(64) NO NULL +TABLE_CATALOG longtext NO NULL +TABLE_SCHEMA longtext NO NULL +TABLE_NAME longtext NO NULL VIEW_DEFINITION longtext NO NULL CHECK_OPTION varchar(8) NO NULL IS_UPDATABLE varchar(3) NO NULL -DEFINER varchar(384) NO NULL +DEFINER longtext NO NULL SECURITY_TYPE varchar(7) NO NULL -CHARACTER_SET_CLIENT varchar(32) NO NULL -COLLATION_CONNECTION varchar(64) NO NULL +CHARACTER_SET_CLIENT longtext NO NULL +COLLATION_CONNECTION longtext NO NULL ALGORITHM varchar(10) NO NULL SELECT table_catalog, table_schema, table_name FROM information_schema.views WHERE table_catalog <> 'def'; diff --git a/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result b/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result index dfa0d7e4fc5d6..0534f19384a1e 100644 --- a/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result +++ b/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result @@ -27,12 +27,12 @@ SHOW CREATE TABLE processlist; Table Create Table PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `ID` bigint(4) NOT NULL, - `USER` varchar(128) NOT NULL, - `HOST` varchar(64) NOT NULL, - `DB` varchar(64), - `COMMAND` varchar(16) NOT NULL, + `USER` longtext NOT NULL, + `HOST` longtext NOT NULL, + `DB` longtext, + `COMMAND` longtext NOT NULL, `TIME` int(7) NOT NULL, - `STATE` varchar(64), + `STATE` longtext, `INFO` longtext, `TIME_MS` decimal(22,3) NOT NULL, `STAGE` tinyint(2) NOT NULL, @@ -107,12 +107,12 @@ SHOW CREATE TABLE processlist; Table Create Table PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `ID` bigint(4) NOT NULL, - `USER` varchar(128) NOT NULL, - `HOST` varchar(64) NOT NULL, - `DB` varchar(64), - `COMMAND` varchar(16) NOT NULL, + `USER` longtext NOT NULL, + `HOST` longtext NOT NULL, + `DB` longtext, + `COMMAND` longtext NOT NULL, `TIME` int(7) NOT NULL, - `STATE` varchar(64), + `STATE` longtext, `INFO` longtext, `TIME_MS` decimal(22,3) NOT NULL, `STAGE` tinyint(2) NOT NULL, diff --git a/mysql-test/suite/funcs_1/r/processlist_priv_ps.result b/mysql-test/suite/funcs_1/r/processlist_priv_ps.result index 8dff4e171051d..e1530fe782bdb 100644 --- a/mysql-test/suite/funcs_1/r/processlist_priv_ps.result +++ b/mysql-test/suite/funcs_1/r/processlist_priv_ps.result @@ -27,12 +27,12 @@ SHOW CREATE TABLE processlist; Table Create Table PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `ID` bigint(4) NOT NULL, - `USER` varchar(128) NOT NULL, - `HOST` varchar(64) NOT NULL, - `DB` varchar(64), - `COMMAND` varchar(16) NOT NULL, + `USER` longtext NOT NULL, + `HOST` longtext NOT NULL, + `DB` longtext, + `COMMAND` longtext NOT NULL, `TIME` int(7) NOT NULL, - `STATE` varchar(64), + `STATE` longtext, `INFO` longtext, `TIME_MS` decimal(22,3) NOT NULL, `STAGE` tinyint(2) NOT NULL, @@ -107,12 +107,12 @@ SHOW CREATE TABLE processlist; Table Create Table PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `ID` bigint(4) NOT NULL, - `USER` varchar(128) NOT NULL, - `HOST` varchar(64) NOT NULL, - `DB` varchar(64), - `COMMAND` varchar(16) NOT NULL, + `USER` longtext NOT NULL, + `HOST` longtext NOT NULL, + `DB` longtext, + `COMMAND` longtext NOT NULL, `TIME` int(7) NOT NULL, - `STATE` varchar(64), + `STATE` longtext, `INFO` longtext, `TIME_MS` decimal(22,3) NOT NULL, `STAGE` tinyint(2) NOT NULL, diff --git a/mysql-test/suite/funcs_1/r/processlist_val_no_prot.result b/mysql-test/suite/funcs_1/r/processlist_val_no_prot.result index 5153ae313438a..d052031db1dee 100644 --- a/mysql-test/suite/funcs_1/r/processlist_val_no_prot.result +++ b/mysql-test/suite/funcs_1/r/processlist_val_no_prot.result @@ -13,12 +13,12 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.PROCESSLIST; Table Create Table PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `ID` bigint(4) NOT NULL, - `USER` varchar(128) NOT NULL, - `HOST` varchar(64) NOT NULL, - `DB` varchar(64), - `COMMAND` varchar(16) NOT NULL, + `USER` longtext NOT NULL, + `HOST` longtext NOT NULL, + `DB` longtext, + `COMMAND` longtext NOT NULL, `TIME` int(7) NOT NULL, - `STATE` varchar(64), + `STATE` longtext, `INFO` longtext, `TIME_MS` decimal(22,3) NOT NULL, `STAGE` tinyint(2) NOT NULL, diff --git a/mysql-test/suite/funcs_1/r/processlist_val_ps.result b/mysql-test/suite/funcs_1/r/processlist_val_ps.result index 06ff8bd2d6818..e5d88779ee0fb 100644 --- a/mysql-test/suite/funcs_1/r/processlist_val_ps.result +++ b/mysql-test/suite/funcs_1/r/processlist_val_ps.result @@ -13,12 +13,12 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.PROCESSLIST; Table Create Table PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `ID` bigint(4) NOT NULL, - `USER` varchar(128) NOT NULL, - `HOST` varchar(64) NOT NULL, - `DB` varchar(64), - `COMMAND` varchar(16) NOT NULL, + `USER` longtext NOT NULL, + `HOST` longtext NOT NULL, + `DB` longtext, + `COMMAND` longtext NOT NULL, `TIME` int(7) NOT NULL, - `STATE` varchar(64), + `STATE` longtext, `INFO` longtext, `TIME_MS` decimal(22,3) NOT NULL, `STAGE` tinyint(2) NOT NULL, diff --git a/mysql-test/suite/heap/heap_blob_derived_keys.result b/mysql-test/suite/heap/heap_blob_derived_keys.result new file mode 100644 index 0000000000000..5acbd4b4c4a1b --- /dev/null +++ b/mysql-test/suite/heap/heap_blob_derived_keys.result @@ -0,0 +1,224 @@ +# +# HEAP blob derived_with_keys: promoted VARCHAR→BLOB columns +# must support ref access on materialized derived tables. +# +SET @save_optimizer_switch=@@optimizer_switch; +SET SESSION optimizer_switch='derived_merge=off,derived_with_keys=on'; +# +# Test 1: Promoted BLOB ref access on I_S derived table +# TABLE_SCHEMA is VARCHAR(64) promoted to BLOB in HEAP. +# derived_with_keys must create a hash key for ref access. +# +CREATE TABLE t1 (c1 int PRIMARY KEY, c2 char(5)); +EXPLAIN +SELECT COUNT(*) > 0 +FROM INFORMATION_SCHEMA.COLUMNS +INNER JOIN +(SELECT TABLE_SCHEMA, +GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX ASC) AS COL_NAMES +FROM INFORMATION_SCHEMA.STATISTICS +GROUP BY TABLE_SCHEMA) AS UNIQUES +ON ( COLUMNS.TABLE_SCHEMA = UNIQUES.TABLE_SCHEMA); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY COLUMNS ALL NULL NULL NULL NULL NULL Open_frm_only; Scanned all databases +1 PRIMARY ref key0 key0 2 blob_ref 2 +2 DERIVED STATISTICS ALL NULL NULL NULL NULL NULL Open_frm_only; Scanned all databases; Using filesort +SELECT COUNT(*) > 0 +FROM INFORMATION_SCHEMA.COLUMNS +INNER JOIN +(SELECT TABLE_SCHEMA, +GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX ASC) AS COL_NAMES +FROM INFORMATION_SCHEMA.STATISTICS +GROUP BY TABLE_SCHEMA) AS UNIQUES +ON ( COLUMNS.TABLE_SCHEMA = UNIQUES.TABLE_SCHEMA); +COUNT(*) > 0 +1 +Warnings: +Warning 1286 Unknown storage engine 'InnoDB' +Warning 1286 Unknown storage engine 'InnoDB' +Warning 1286 Unknown storage engine 'InnoDB' +Warning 1286 Unknown storage engine 'InnoDB' +Warning 1286 Unknown storage engine 'InnoDB' +Warning 1286 Unknown storage engine 'InnoDB' +DROP TABLE t1; +# +# Test 2: TEXT/BLOB columns get ref access on derived tables via +# heap_store_key_blob_ref (direct-to-record[0] path). +# +CREATE TABLE t1 (c1 text, c2 int); +INSERT INTO t1 VALUES ('a',1), ('c',3), ('g',7), ('d',4), ('c',3); +CREATE TABLE t2 (c1 text, c2 int); +INSERT INTO t2 VALUES ('b',2), ('c',3); +CREATE ALGORITHM=TEMPTABLE VIEW v1 AS SELECT * FROM t1; +# v1.c1 (TEXT) gets ref access via heap_store_key_blob_ref +EXPLAIN EXTENDED +SELECT v1.c1, v1.c2 FROM v1, t2 WHERE v1.c1=t2.c1 AND v1.c2=t2.c2; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where +1 PRIMARY ref key0 key0 8 blob_ref,test.t2.c2 2 100.00 +2 DERIVED t1 ALL NULL NULL NULL NULL 5 100.00 +Warnings: +Note 1003 /* select#1 */ select `v1`.`c1` AS `c1`,`v1`.`c2` AS `c2` from `test`.`v1` join `test`.`t2` where `v1`.`c1` = `test`.`t2`.`c1` and `v1`.`c2` = `test`.`t2`.`c2` +SELECT v1.c1, v1.c2 FROM v1, t2 WHERE v1.c1=t2.c1 AND v1.c2=t2.c2; +c1 c2 +c 3 +c 3 +# Hash join on TEXT column: key_len should be small (based on key_length()=0) +SET SESSION optimizer_switch='derived_merge=off,derived_with_keys=on'; +SET SESSION join_cache_level=4; +EXPLAIN +SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY ref key0 key0 3 blob_ref 2 +2 DERIVED t1 ALL NULL NULL NULL NULL 5 +SET SESSION join_cache_level=default; +DROP VIEW v1; +DROP TABLE t1, t2; +# +# Test 3: Promoted BLOB ref access with data verification +# Create a derived table with a wide VARCHAR column that gets +# promoted to BLOB in HEAP, join on it, verify correct results. +# +CREATE TABLE t_outer (id int, schema_name VARCHAR(64)); +INSERT INTO t_outer VALUES (1, 'test'), (2, 'mysql'), (3, 'nonexistent'); +EXPLAIN +SELECT t_outer.id, dt.schema_name, dt.cnt +FROM t_outer +JOIN (SELECT TABLE_SCHEMA AS schema_name, COUNT(*) AS cnt +FROM INFORMATION_SCHEMA.TABLES +GROUP BY TABLE_SCHEMA) dt +ON t_outer.schema_name = dt.schema_name; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t_outer ALL NULL NULL NULL NULL 3 +1 PRIMARY ref key0 key0 2 blob_ref 2 Using where +2 DERIVED TABLES ALL NULL NULL NULL NULL NULL Skip_open_table; Scanned all databases; Using temporary; Using filesort +SELECT t_outer.id, dt.schema_name, dt.cnt +FROM t_outer +JOIN (SELECT TABLE_SCHEMA AS schema_name, COUNT(*) AS cnt +FROM INFORMATION_SCHEMA.TABLES +GROUP BY TABLE_SCHEMA) dt +ON t_outer.schema_name = dt.schema_name +ORDER BY t_outer.id; +id schema_name cnt +1 test 1 +2 mysql 31 +DROP TABLE t_outer; +# +# Test 4: LONGTEXT ref access on derived tables +# LONGTEXT has field_length > UINT16_MAX (4294967295). +# heap_store_key_blob_ref bypasses the key buffer entirely, +# so the uint16 KEY_PART_INFO::length limit does not apply. +# +CREATE TABLE t_long (id int, data LONGTEXT); +INSERT INTO t_long VALUES (1, 'alpha'), (2, 'beta'), (3, 'gamma'); +CREATE TABLE t_lookup_long (data LONGTEXT); +INSERT INTO t_lookup_long VALUES ('alpha'), ('gamma'); +# EXPLAIN should show ref access on the derived table +EXPLAIN +SELECT dt.id, dt.data +FROM t_lookup_long +JOIN (SELECT id, data FROM t_long) dt +ON t_lookup_long.data = dt.data; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t_lookup_long ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY ref key0 key0 3 blob_ref 2 +2 DERIVED t_long ALL NULL NULL NULL NULL 3 +# Verify correct results +SELECT dt.id, dt.data +FROM t_lookup_long +JOIN (SELECT id, data FROM t_long) dt +ON t_lookup_long.data = dt.data +ORDER BY dt.id; +id data +1 alpha +3 gamma +DROP TABLE t_long, t_lookup_long; +# +# Test 5: JSON (LONGTEXT alias) ref access on derived tables +# JSON is an alias for LONGTEXT in MariaDB. Verify ref access +# works for JSON columns in derived table joins. +# +CREATE TABLE t_json (id int, doc JSON); +INSERT INTO t_json VALUES +(1, '{"name": "Alice", "age": 30}'), +(2, '{"name": "Bob", "age": 25}'), +(3, '{"name": "Charlie", "age": 35}'); +CREATE TABLE t_json_lookup (doc JSON); +INSERT INTO t_json_lookup VALUES +('{"name": "Alice", "age": 30}'), +('{"name": "Charlie", "age": 35}'); +# EXPLAIN should show ref access on the derived table +EXPLAIN +SELECT dt.id, dt.doc +FROM t_json_lookup +JOIN (SELECT id, doc FROM t_json) dt +ON t_json_lookup.doc = dt.doc; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t_json_lookup ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY ref key0 key0 3 blob_ref 2 +2 DERIVED t_json ALL NULL NULL NULL NULL 3 +# Verify correct results +SELECT dt.id, dt.doc +FROM t_json_lookup +JOIN (SELECT id, doc FROM t_json) dt +ON t_json_lookup.doc = dt.doc +ORDER BY dt.id; +id doc +1 {"name": "Alice", "age": 30} +3 {"name": "Charlie", "age": 35} +DROP TABLE t_json, t_json_lookup; +# +# Test 6: Multi-column key with LONGTEXT + INT on derived table +# Verify mixed BLOB + non-BLOB key parts work correctly. +# +CREATE TABLE t_multi (id int, category int, name LONGTEXT); +INSERT INTO t_multi VALUES +(1, 10, 'foo'), (2, 20, 'bar'), (3, 10, 'foo'), (4, 30, 'baz'); +CREATE TABLE t_multi_lookup (category int, name LONGTEXT); +INSERT INTO t_multi_lookup VALUES (10, 'foo'), (30, 'baz'); +# EXPLAIN should show ref access with both key parts +EXPLAIN +SELECT dt.id, dt.category, dt.name +FROM t_multi_lookup +JOIN (SELECT id, category, name FROM t_multi) dt +ON t_multi_lookup.category = dt.category AND t_multi_lookup.name = dt.name; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t_multi_lookup ALL NULL NULL NULL NULL 2 Using where +1 PRIMARY ref key0 key0 8 test.t_multi_lookup.category,blob_ref 2 +2 DERIVED t_multi ALL NULL NULL NULL NULL 4 +# Verify correct results +SELECT dt.id, dt.category, dt.name +FROM t_multi_lookup +JOIN (SELECT id, category, name FROM t_multi) dt +ON t_multi_lookup.category = dt.category AND t_multi_lookup.name = dt.name +ORDER BY dt.id; +id category name +1 10 foo +3 10 foo +4 30 baz +DROP TABLE t_multi, t_multi_lookup; +# +# Test 7: Const BLOB ref access (lookup value is a constant) +# The early-const optimization is skipped for HEAP BLOB key parts +# because record[0] is overwritten during materialization. +# Verify correct results with constant lookup values. +# +CREATE TABLE t_const (id int, data LONGTEXT); +INSERT INTO t_const VALUES (1, 'hello'), (2, 'world'), (3, 'hello'); +EXPLAIN +SELECT dt.id, dt.data +FROM (SELECT id, data FROM t_const) dt +WHERE dt.data = 'hello'; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY ALL NULL NULL NULL NULL 3 Using where +2 DERIVED t_const ALL NULL NULL NULL NULL 3 Using where +SELECT dt.id, dt.data +FROM (SELECT id, data FROM t_const) dt +WHERE dt.data = 'hello' +ORDER BY dt.id; +id data +1 hello +3 hello +DROP TABLE t_const; +SET SESSION optimizer_switch= @save_optimizer_switch; diff --git a/mysql-test/suite/heap/heap_blob_derived_keys.test b/mysql-test/suite/heap/heap_blob_derived_keys.test new file mode 100644 index 0000000000000..94caf64ebedd7 --- /dev/null +++ b/mysql-test/suite/heap/heap_blob_derived_keys.test @@ -0,0 +1,209 @@ +--source include/have_sequence.inc + +--echo # +--echo # HEAP blob derived_with_keys: promoted VARCHAR→BLOB columns +--echo # must support ref access on materialized derived tables. +--echo # + +SET @save_optimizer_switch=@@optimizer_switch; +SET SESSION optimizer_switch='derived_merge=off,derived_with_keys=on'; + +--echo # +--echo # Test 1: Promoted BLOB ref access on I_S derived table +--echo # TABLE_SCHEMA is VARCHAR(64) promoted to BLOB in HEAP. +--echo # derived_with_keys must create a hash key for ref access. +--echo # + +CREATE TABLE t1 (c1 int PRIMARY KEY, c2 char(5)); + +EXPLAIN +SELECT COUNT(*) > 0 + FROM INFORMATION_SCHEMA.COLUMNS + INNER JOIN + (SELECT TABLE_SCHEMA, + GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX ASC) AS COL_NAMES + FROM INFORMATION_SCHEMA.STATISTICS + GROUP BY TABLE_SCHEMA) AS UNIQUES + ON ( COLUMNS.TABLE_SCHEMA = UNIQUES.TABLE_SCHEMA); + +SELECT COUNT(*) > 0 + FROM INFORMATION_SCHEMA.COLUMNS + INNER JOIN + (SELECT TABLE_SCHEMA, + GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX ASC) AS COL_NAMES + FROM INFORMATION_SCHEMA.STATISTICS + GROUP BY TABLE_SCHEMA) AS UNIQUES + ON ( COLUMNS.TABLE_SCHEMA = UNIQUES.TABLE_SCHEMA); + +DROP TABLE t1; + +--echo # +--echo # Test 2: TEXT/BLOB columns get ref access on derived tables via +--echo # heap_store_key_blob_ref (direct-to-record[0] path). +--echo # + +CREATE TABLE t1 (c1 text, c2 int); +INSERT INTO t1 VALUES ('a',1), ('c',3), ('g',7), ('d',4), ('c',3); + +CREATE TABLE t2 (c1 text, c2 int); +INSERT INTO t2 VALUES ('b',2), ('c',3); + +CREATE ALGORITHM=TEMPTABLE VIEW v1 AS SELECT * FROM t1; + +--echo # v1.c1 (TEXT) gets ref access via heap_store_key_blob_ref +EXPLAIN EXTENDED +SELECT v1.c1, v1.c2 FROM v1, t2 WHERE v1.c1=t2.c1 AND v1.c2=t2.c2; + +SELECT v1.c1, v1.c2 FROM v1, t2 WHERE v1.c1=t2.c1 AND v1.c2=t2.c2; + +--echo # Hash join on TEXT column: key_len should be small (based on key_length()=0) +SET SESSION optimizer_switch='derived_merge=off,derived_with_keys=on'; +SET SESSION join_cache_level=4; + +EXPLAIN +SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1; + +SET SESSION join_cache_level=default; +DROP VIEW v1; +DROP TABLE t1, t2; + +--echo # +--echo # Test 3: Promoted BLOB ref access with data verification +--echo # Create a derived table with a wide VARCHAR column that gets +--echo # promoted to BLOB in HEAP, join on it, verify correct results. +--echo # + +CREATE TABLE t_outer (id int, schema_name VARCHAR(64)); +INSERT INTO t_outer VALUES (1, 'test'), (2, 'mysql'), (3, 'nonexistent'); + +EXPLAIN +SELECT t_outer.id, dt.schema_name, dt.cnt +FROM t_outer +JOIN (SELECT TABLE_SCHEMA AS schema_name, COUNT(*) AS cnt + FROM INFORMATION_SCHEMA.TABLES + GROUP BY TABLE_SCHEMA) dt +ON t_outer.schema_name = dt.schema_name; + +SELECT t_outer.id, dt.schema_name, dt.cnt +FROM t_outer +JOIN (SELECT TABLE_SCHEMA AS schema_name, COUNT(*) AS cnt + FROM INFORMATION_SCHEMA.TABLES + GROUP BY TABLE_SCHEMA) dt +ON t_outer.schema_name = dt.schema_name +ORDER BY t_outer.id; + +DROP TABLE t_outer; + +--echo # +--echo # Test 4: LONGTEXT ref access on derived tables +--echo # LONGTEXT has field_length > UINT16_MAX (4294967295). +--echo # heap_store_key_blob_ref bypasses the key buffer entirely, +--echo # so the uint16 KEY_PART_INFO::length limit does not apply. +--echo # + +CREATE TABLE t_long (id int, data LONGTEXT); +INSERT INTO t_long VALUES (1, 'alpha'), (2, 'beta'), (3, 'gamma'); + +CREATE TABLE t_lookup_long (data LONGTEXT); +INSERT INTO t_lookup_long VALUES ('alpha'), ('gamma'); + +--echo # EXPLAIN should show ref access on the derived table +EXPLAIN +SELECT dt.id, dt.data +FROM t_lookup_long +JOIN (SELECT id, data FROM t_long) dt +ON t_lookup_long.data = dt.data; + +--echo # Verify correct results +SELECT dt.id, dt.data +FROM t_lookup_long +JOIN (SELECT id, data FROM t_long) dt +ON t_lookup_long.data = dt.data +ORDER BY dt.id; + +DROP TABLE t_long, t_lookup_long; + +--echo # +--echo # Test 5: JSON (LONGTEXT alias) ref access on derived tables +--echo # JSON is an alias for LONGTEXT in MariaDB. Verify ref access +--echo # works for JSON columns in derived table joins. +--echo # + +CREATE TABLE t_json (id int, doc JSON); +INSERT INTO t_json VALUES + (1, '{"name": "Alice", "age": 30}'), + (2, '{"name": "Bob", "age": 25}'), + (3, '{"name": "Charlie", "age": 35}'); + +CREATE TABLE t_json_lookup (doc JSON); +INSERT INTO t_json_lookup VALUES + ('{"name": "Alice", "age": 30}'), + ('{"name": "Charlie", "age": 35}'); + +--echo # EXPLAIN should show ref access on the derived table +EXPLAIN +SELECT dt.id, dt.doc +FROM t_json_lookup +JOIN (SELECT id, doc FROM t_json) dt +ON t_json_lookup.doc = dt.doc; + +--echo # Verify correct results +SELECT dt.id, dt.doc +FROM t_json_lookup +JOIN (SELECT id, doc FROM t_json) dt +ON t_json_lookup.doc = dt.doc +ORDER BY dt.id; + +DROP TABLE t_json, t_json_lookup; + +--echo # +--echo # Test 6: Multi-column key with LONGTEXT + INT on derived table +--echo # Verify mixed BLOB + non-BLOB key parts work correctly. +--echo # + +CREATE TABLE t_multi (id int, category int, name LONGTEXT); +INSERT INTO t_multi VALUES + (1, 10, 'foo'), (2, 20, 'bar'), (3, 10, 'foo'), (4, 30, 'baz'); + +CREATE TABLE t_multi_lookup (category int, name LONGTEXT); +INSERT INTO t_multi_lookup VALUES (10, 'foo'), (30, 'baz'); + +--echo # EXPLAIN should show ref access with both key parts +EXPLAIN +SELECT dt.id, dt.category, dt.name +FROM t_multi_lookup +JOIN (SELECT id, category, name FROM t_multi) dt +ON t_multi_lookup.category = dt.category AND t_multi_lookup.name = dt.name; + +--echo # Verify correct results +SELECT dt.id, dt.category, dt.name +FROM t_multi_lookup +JOIN (SELECT id, category, name FROM t_multi) dt +ON t_multi_lookup.category = dt.category AND t_multi_lookup.name = dt.name +ORDER BY dt.id; + +DROP TABLE t_multi, t_multi_lookup; + +--echo # +--echo # Test 7: Const BLOB ref access (lookup value is a constant) +--echo # The early-const optimization is skipped for HEAP BLOB key parts +--echo # because record[0] is overwritten during materialization. +--echo # Verify correct results with constant lookup values. +--echo # + +CREATE TABLE t_const (id int, data LONGTEXT); +INSERT INTO t_const VALUES (1, 'hello'), (2, 'world'), (3, 'hello'); + +EXPLAIN +SELECT dt.id, dt.data +FROM (SELECT id, data FROM t_const) dt +WHERE dt.data = 'hello'; + +SELECT dt.id, dt.data +FROM (SELECT id, data FROM t_const) dt +WHERE dt.data = 'hello' +ORDER BY dt.id; + +DROP TABLE t_const; + +SET SESSION optimizer_switch= @save_optimizer_switch; diff --git a/mysql-test/suite/innodb/r/innodb-mdev-7408.result b/mysql-test/suite/innodb/r/innodb-mdev-7408.result index 80b46d3425c79..6c63e6ffe8d9c 100644 --- a/mysql-test/suite/innodb/r/innodb-mdev-7408.result +++ b/mysql-test/suite/innodb/r/innodb-mdev-7408.result @@ -2,12 +2,14 @@ call mtr.add_suppression("InnoDB: User stopword table .* does not exist."); select @@global.innodb_ft_server_stopword_table; @@global.innodb_ft_server_stopword_table NULL -CREATE TABLE `stop_it-IT` ENGINE = InnoDB SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; +CREATE TABLE `stop_it-IT` (value VARCHAR(18) NOT NULL) ENGINE = InnoDB; +INSERT INTO `stop_it-IT` SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; SET @@global.innodb_ft_server_stopword_table = 'test/stop_it-IT'; ERROR 42000: Variable 'innodb_ft_server_stopword_table' can't be set to the value of 'test/stop_it-IT' SET @@global.innodb_ft_server_stopword_table = 'test/stop_it@002dIT'; drop table `stop_it-IT`; -CREATE TABLE stop_it ENGINE = InnoDB SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; +CREATE TABLE stop_it (value VARCHAR(18) NOT NULL) ENGINE = InnoDB; +INSERT INTO stop_it SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; SET @@global.innodb_ft_server_stopword_table = 'test/stop_it'; SET @@global.innodb_ft_server_stopword_table = NULL; drop table stop_it; diff --git a/mysql-test/suite/innodb/r/innodb_i_s_innodb_trx.result b/mysql-test/suite/innodb/r/innodb_i_s_innodb_trx.result index 99de7d5fa1d21..6c0ff0306f420 100644 --- a/mysql-test/suite/innodb/r/innodb_i_s_innodb_trx.result +++ b/mysql-test/suite/innodb/r/innodb_i_s_innodb_trx.result @@ -3,14 +3,14 @@ SET GLOBAL innodb_lock_wait_timeout=100000000; DESCRIBE INFORMATION_SCHEMA.INNODB_TRX; Field Type Null Key Default Extra trx_id bigint(21) unsigned NO NULL -trx_state varchar(13) NO NULL +trx_state longtext NO NULL trx_started datetime NO NULL -trx_requested_lock_id varchar(81) YES NULL +trx_requested_lock_id longtext YES NULL trx_wait_started datetime YES NULL trx_weight bigint(21) unsigned NO NULL trx_mysql_thread_id bigint(21) unsigned NO NULL -trx_query varchar(1024) YES NULL -trx_operation_state varchar(64) YES NULL +trx_query longtext YES NULL +trx_operation_state longtext YES NULL trx_tables_in_use bigint(21) unsigned NO NULL trx_tables_locked bigint(21) unsigned NO NULL trx_lock_structs bigint(21) unsigned NO NULL @@ -21,7 +21,7 @@ trx_concurrency_tickets bigint(21) unsigned NO NULL trx_isolation_level enum('READ UNCOMMITTED','READ COMMITTED','REPEATABLE READ','SERIALIZABLE') NO NULL trx_unique_checks int(1) NO NULL trx_foreign_key_checks int(1) NO NULL -trx_last_foreign_key_error varchar(256) YES NULL +trx_last_foreign_key_error longtext YES NULL trx_is_read_only int(1) NO NULL trx_autocommit_non_locking int(1) NO NULL CREATE TABLE t1 ( diff --git a/mysql-test/suite/innodb/r/innodb_information_schema.result b/mysql-test/suite/innodb/r/innodb_information_schema.result index 608db358802fe3e3809e00ec06a91db7d66547ec..00da45eedaab4877dc38261996abf7265b879619 100644 GIT binary patch delta 101 zcmca(b;@ePNj*HC8?Y+b(_x$88N|)*vu^&$N>QIOD0MH delta 92 zcmX?Qb;oMMNSk#3BttW6jAM1s&jg3q#GxKLw}p!sQK&Of)A?7gB($Ff-BI VykE$Oi3g^{$ka@8^G}gL4gmLMA7=mn diff --git a/mysql-test/suite/innodb/t/innodb-mdev-7408.test b/mysql-test/suite/innodb/t/innodb-mdev-7408.test index 46f1afca27b92..e43a6c8d3448b 100644 --- a/mysql-test/suite/innodb/t/innodb-mdev-7408.test +++ b/mysql-test/suite/innodb/t/innodb-mdev-7408.test @@ -3,14 +3,16 @@ call mtr.add_suppression("InnoDB: User stopword table .* does not exist."); select @@global.innodb_ft_server_stopword_table; -CREATE TABLE `stop_it-IT` ENGINE = InnoDB SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; +CREATE TABLE `stop_it-IT` (value VARCHAR(18) NOT NULL) ENGINE = InnoDB; +INSERT INTO `stop_it-IT` SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; --error 1231 SET @@global.innodb_ft_server_stopword_table = 'test/stop_it-IT'; --error 0,1231 SET @@global.innodb_ft_server_stopword_table = 'test/stop_it@002dIT'; drop table `stop_it-IT`; -CREATE TABLE stop_it ENGINE = InnoDB SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; +CREATE TABLE stop_it (value VARCHAR(18) NOT NULL) ENGINE = InnoDB; +INSERT INTO stop_it SELECT * FROM information_schema.INNODB_FT_DEFAULT_STOPWORD; SET @@global.innodb_ft_server_stopword_table = 'test/stop_it'; SET @@global.innodb_ft_server_stopword_table = NULL; diff --git a/mysql-test/suite/innodb_i_s/innodb_buffer_page.result b/mysql-test/suite/innodb_i_s/innodb_buffer_page.result index f48b9dd7283ba..44708544c81b4 100644 --- a/mysql-test/suite/innodb_i_s/innodb_buffer_page.result +++ b/mysql-test/suite/innodb_i_s/innodb_buffer_page.result @@ -5,15 +5,15 @@ INNODB_BUFFER_PAGE CREATE TEMPORARY TABLE `INNODB_BUFFER_PAGE` ( `BLOCK_ID` bigint(21) unsigned NOT NULL, `SPACE` int(11) unsigned NOT NULL, `PAGE_NUMBER` int(11) unsigned NOT NULL, - `PAGE_TYPE` varchar(64), + `PAGE_TYPE` longtext, `FLUSH_TYPE` int(11) unsigned NOT NULL, `FIX_COUNT` int(11) unsigned NOT NULL, `IS_HASHED` int(1) NOT NULL, `NEWEST_MODIFICATION` bigint(21) unsigned NOT NULL, `OLDEST_MODIFICATION` bigint(21) unsigned NOT NULL, `ACCESS_TIME` bigint(21) unsigned NOT NULL, - `TABLE_NAME` varchar(1024), - `INDEX_NAME` varchar(64), + `TABLE_NAME` longtext, + `INDEX_NAME` longtext, `NUMBER_RECORDS` bigint(21) unsigned NOT NULL, `DATA_SIZE` bigint(21) unsigned NOT NULL, `COMPRESSED_SIZE` bigint(21) unsigned NOT NULL, diff --git a/mysql-test/suite/innodb_i_s/innodb_buffer_page_lru.result b/mysql-test/suite/innodb_i_s/innodb_buffer_page_lru.result index a8213aa7e4e43..7291e2aae01fa 100644 --- a/mysql-test/suite/innodb_i_s/innodb_buffer_page_lru.result +++ b/mysql-test/suite/innodb_i_s/innodb_buffer_page_lru.result @@ -5,15 +5,15 @@ INNODB_BUFFER_PAGE_LRU CREATE TEMPORARY TABLE `INNODB_BUFFER_PAGE_LRU` ( `LRU_POSITION` bigint(21) unsigned NOT NULL, `SPACE` int(11) unsigned NOT NULL, `PAGE_NUMBER` int(11) unsigned NOT NULL, - `PAGE_TYPE` varchar(64), + `PAGE_TYPE` longtext, `FLUSH_TYPE` int(11) unsigned NOT NULL, `FIX_COUNT` int(11) unsigned NOT NULL, `IS_HASHED` int(1) NOT NULL, `NEWEST_MODIFICATION` bigint(21) unsigned NOT NULL, `OLDEST_MODIFICATION` bigint(21) unsigned NOT NULL, `ACCESS_TIME` bigint(21) unsigned NOT NULL, - `TABLE_NAME` varchar(1024), - `INDEX_NAME` varchar(64), + `TABLE_NAME` longtext, + `INDEX_NAME` longtext, `NUMBER_RECORDS` bigint(21) unsigned NOT NULL, `DATA_SIZE` bigint(21) unsigned NOT NULL, `COMPRESSED_SIZE` bigint(21) unsigned NOT NULL, diff --git a/mysql-test/suite/innodb_i_s/innodb_cmp_per_index.result b/mysql-test/suite/innodb_i_s/innodb_cmp_per_index.result index d94e2d5a1ca7f..1e6b372a04150 100644 --- a/mysql-test/suite/innodb_i_s/innodb_cmp_per_index.result +++ b/mysql-test/suite/innodb_i_s/innodb_cmp_per_index.result @@ -1,9 +1,9 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX; Table Create Table INNODB_CMP_PER_INDEX CREATE TEMPORARY TABLE `INNODB_CMP_PER_INDEX` ( - `database_name` varchar(64) NOT NULL, - `table_name` varchar(64) NOT NULL, - `index_name` varchar(64) NOT NULL, + `database_name` longtext NOT NULL, + `table_name` longtext NOT NULL, + `index_name` longtext NOT NULL, `compress_ops` int(11) NOT NULL, `compress_ops_ok` int(11) NOT NULL, `compress_time` int(11) NOT NULL, diff --git a/mysql-test/suite/innodb_i_s/innodb_cmp_per_index_reset.result b/mysql-test/suite/innodb_i_s/innodb_cmp_per_index_reset.result index a987997328146..4ec4938c956a7 100644 --- a/mysql-test/suite/innodb_i_s/innodb_cmp_per_index_reset.result +++ b/mysql-test/suite/innodb_i_s/innodb_cmp_per_index_reset.result @@ -1,9 +1,9 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX_RESET; Table Create Table INNODB_CMP_PER_INDEX_RESET CREATE TEMPORARY TABLE `INNODB_CMP_PER_INDEX_RESET` ( - `database_name` varchar(64) NOT NULL, - `table_name` varchar(64) NOT NULL, - `index_name` varchar(64) NOT NULL, + `database_name` longtext NOT NULL, + `table_name` longtext NOT NULL, + `index_name` longtext NOT NULL, `compress_ops` int(11) NOT NULL, `compress_ops_ok` int(11) NOT NULL, `compress_time` int(11) NOT NULL, diff --git a/mysql-test/suite/innodb_i_s/innodb_ft_config.result b/mysql-test/suite/innodb_i_s/innodb_ft_config.result index 0abf9bdb2dc84..85ee64ca0a29d 100644 --- a/mysql-test/suite/innodb_i_s/innodb_ft_config.result +++ b/mysql-test/suite/innodb_i_s/innodb_ft_config.result @@ -1,6 +1,6 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_FT_CONFIG; Table Create Table INNODB_FT_CONFIG CREATE TEMPORARY TABLE `INNODB_FT_CONFIG` ( - `KEY` varchar(193) NOT NULL, - `VALUE` varchar(193) NOT NULL + `KEY` longtext NOT NULL, + `VALUE` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci diff --git a/mysql-test/suite/innodb_i_s/innodb_ft_default_stopword.result b/mysql-test/suite/innodb_i_s/innodb_ft_default_stopword.result index 124888e1fe348..0639266dff931 100644 --- a/mysql-test/suite/innodb_i_s/innodb_ft_default_stopword.result +++ b/mysql-test/suite/innodb_i_s/innodb_ft_default_stopword.result @@ -1,5 +1,5 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD; Table Create Table INNODB_FT_DEFAULT_STOPWORD CREATE TEMPORARY TABLE `INNODB_FT_DEFAULT_STOPWORD` ( - `value` varchar(18) NOT NULL + `value` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci diff --git a/mysql-test/suite/innodb_i_s/innodb_ft_index_cache.result b/mysql-test/suite/innodb_i_s/innodb_ft_index_cache.result index 02f3c73171de6..7122673f60f9c 100644 --- a/mysql-test/suite/innodb_i_s/innodb_ft_index_cache.result +++ b/mysql-test/suite/innodb_i_s/innodb_ft_index_cache.result @@ -1,7 +1,7 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE; Table Create Table INNODB_FT_INDEX_CACHE CREATE TEMPORARY TABLE `INNODB_FT_INDEX_CACHE` ( - `WORD` varchar(337) NOT NULL, + `WORD` longtext NOT NULL, `FIRST_DOC_ID` bigint(21) unsigned NOT NULL, `LAST_DOC_ID` bigint(21) unsigned NOT NULL, `DOC_COUNT` bigint(21) unsigned NOT NULL, diff --git a/mysql-test/suite/innodb_i_s/innodb_ft_index_table.result b/mysql-test/suite/innodb_i_s/innodb_ft_index_table.result index 6122f0116e1d1..c36da9b4f775f 100644 --- a/mysql-test/suite/innodb_i_s/innodb_ft_index_table.result +++ b/mysql-test/suite/innodb_i_s/innodb_ft_index_table.result @@ -1,7 +1,7 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE; Table Create Table INNODB_FT_INDEX_TABLE CREATE TEMPORARY TABLE `INNODB_FT_INDEX_TABLE` ( - `WORD` varchar(337) NOT NULL, + `WORD` longtext NOT NULL, `FIRST_DOC_ID` bigint(21) unsigned NOT NULL, `LAST_DOC_ID` bigint(21) unsigned NOT NULL, `DOC_COUNT` bigint(21) unsigned NOT NULL, diff --git a/mysql-test/suite/innodb_i_s/innodb_lock_waits.result b/mysql-test/suite/innodb_i_s/innodb_lock_waits.result index 0a974008548c7..83aa16d8089bb 100644 --- a/mysql-test/suite/innodb_i_s/innodb_lock_waits.result +++ b/mysql-test/suite/innodb_i_s/innodb_lock_waits.result @@ -2,7 +2,7 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_LOCK_WAITS; Table Create Table INNODB_LOCK_WAITS CREATE TEMPORARY TABLE `INNODB_LOCK_WAITS` ( `requesting_trx_id` bigint(21) unsigned NOT NULL, - `requested_lock_id` varchar(81) NOT NULL, + `requested_lock_id` longtext NOT NULL, `blocking_trx_id` bigint(21) unsigned NOT NULL, - `blocking_lock_id` varchar(81) NOT NULL + `blocking_lock_id` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci diff --git a/mysql-test/suite/innodb_i_s/innodb_locks.result b/mysql-test/suite/innodb_i_s/innodb_locks.result index 1a064e52e73bc..54809900ef640 100644 --- a/mysql-test/suite/innodb_i_s/innodb_locks.result +++ b/mysql-test/suite/innodb_i_s/innodb_locks.result @@ -1,16 +1,16 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_LOCKS; Table Create Table INNODB_LOCKS CREATE TEMPORARY TABLE `INNODB_LOCKS` ( - `lock_id` varchar(81) NOT NULL, + `lock_id` longtext NOT NULL, `lock_trx_id` bigint(21) unsigned NOT NULL, `lock_mode` enum('S','S,GAP','X','X,GAP','IS','IS,GAP','IX','IX,GAP','AUTO_INC') NOT NULL, `lock_type` enum('RECORD','TABLE') NOT NULL, - `lock_table` varchar(1024) NOT NULL, - `lock_index` varchar(1024), + `lock_table` longtext NOT NULL, + `lock_index` longtext, `lock_space` int(11) unsigned, `lock_page` int(11) unsigned, `lock_rec` int(11) unsigned, - `lock_data` varchar(8192) + `lock_data` longtext ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci CREATE TEMPORARY TABLE t1 LIKE INFORMATION_SCHEMA.INNODB_LOCKS; DROP TEMPORARY TABLE t1; diff --git a/mysql-test/suite/innodb_i_s/innodb_metrics.result b/mysql-test/suite/innodb_i_s/innodb_metrics.result index 8caa972ddd918..e9c031254652d 100644 --- a/mysql-test/suite/innodb_i_s/innodb_metrics.result +++ b/mysql-test/suite/innodb_i_s/innodb_metrics.result @@ -1,8 +1,8 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_METRICS; Table Create Table INNODB_METRICS CREATE TEMPORARY TABLE `INNODB_METRICS` ( - `NAME` varchar(193) NOT NULL, - `SUBSYSTEM` varchar(193) NOT NULL, + `NAME` longtext NOT NULL, + `SUBSYSTEM` longtext NOT NULL, `COUNT` bigint(21) NOT NULL, `MAX_COUNT` bigint(21), `MIN_COUNT` bigint(21), @@ -17,7 +17,7 @@ INNODB_METRICS CREATE TEMPORARY TABLE `INNODB_METRICS` ( `TIME_RESET` datetime, `ENABLED` int(1) NOT NULL, `TYPE` enum('value','status_counter','set_owner','set_member','counter') NOT NULL, - `COMMENT` varchar(193) NOT NULL + `COMMENT` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci CREATE TEMPORARY TABLE t1 LIKE INFORMATION_SCHEMA.INNODB_METRICS; DROP TEMPORARY TABLE t1; diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_columns.result b/mysql-test/suite/innodb_i_s/innodb_sys_columns.result index 3e2df356342f6..593b045b46f8a 100644 --- a/mysql-test/suite/innodb_i_s/innodb_sys_columns.result +++ b/mysql-test/suite/innodb_i_s/innodb_sys_columns.result @@ -2,7 +2,7 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_SYS_COLUMNS; Table Create Table INNODB_SYS_COLUMNS CREATE TEMPORARY TABLE `INNODB_SYS_COLUMNS` ( `TABLE_ID` bigint(21) unsigned NOT NULL, - `NAME` varchar(64) NOT NULL, + `NAME` longtext NOT NULL, `POS` bigint(21) unsigned NOT NULL, `MTYPE` int(11) NOT NULL, `PRTYPE` int(11) NOT NULL, diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_fields.result b/mysql-test/suite/innodb_i_s/innodb_sys_fields.result index eb4cb5e5774f0..1d345159330a2 100644 --- a/mysql-test/suite/innodb_i_s/innodb_sys_fields.result +++ b/mysql-test/suite/innodb_i_s/innodb_sys_fields.result @@ -2,6 +2,6 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_SYS_FIELDS; Table Create Table INNODB_SYS_FIELDS CREATE TEMPORARY TABLE `INNODB_SYS_FIELDS` ( `INDEX_ID` bigint(21) unsigned NOT NULL, - `NAME` varchar(64) NOT NULL, + `NAME` longtext NOT NULL, `POS` int(11) unsigned NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_foreign.result b/mysql-test/suite/innodb_i_s/innodb_sys_foreign.result index 2cba1cb74a86c..b4b4ce31b89de 100644 --- a/mysql-test/suite/innodb_i_s/innodb_sys_foreign.result +++ b/mysql-test/suite/innodb_i_s/innodb_sys_foreign.result @@ -1,9 +1,9 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_SYS_FOREIGN; Table Create Table INNODB_SYS_FOREIGN CREATE TEMPORARY TABLE `INNODB_SYS_FOREIGN` ( - `ID` varchar(193) NOT NULL, - `FOR_NAME` varchar(193) NOT NULL, - `REF_NAME` varchar(193) NOT NULL, + `ID` longtext NOT NULL, + `FOR_NAME` longtext NOT NULL, + `REF_NAME` longtext NOT NULL, `N_COLS` int(11) unsigned NOT NULL, `TYPE` int(11) unsigned NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_foreign_cols.result b/mysql-test/suite/innodb_i_s/innodb_sys_foreign_cols.result index 8ba0544ac4579..1ecfc1689d4bc 100644 --- a/mysql-test/suite/innodb_i_s/innodb_sys_foreign_cols.result +++ b/mysql-test/suite/innodb_i_s/innodb_sys_foreign_cols.result @@ -1,8 +1,8 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS; Table Create Table INNODB_SYS_FOREIGN_COLS CREATE TEMPORARY TABLE `INNODB_SYS_FOREIGN_COLS` ( - `ID` varchar(193) NOT NULL, - `FOR_COL_NAME` varchar(64) NOT NULL, - `REF_COL_NAME` varchar(64) NOT NULL, + `ID` longtext NOT NULL, + `FOR_COL_NAME` longtext NOT NULL, + `REF_COL_NAME` longtext NOT NULL, `POS` int(11) unsigned NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_indexes.result b/mysql-test/suite/innodb_i_s/innodb_sys_indexes.result index f898e1a978e77..2e8d25d25cf92 100644 --- a/mysql-test/suite/innodb_i_s/innodb_sys_indexes.result +++ b/mysql-test/suite/innodb_i_s/innodb_sys_indexes.result @@ -2,7 +2,7 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_SYS_INDEXES; Table Create Table INNODB_SYS_INDEXES CREATE TEMPORARY TABLE `INNODB_SYS_INDEXES` ( `INDEX_ID` bigint(21) unsigned NOT NULL, - `NAME` varchar(64) NOT NULL, + `NAME` longtext NOT NULL, `TABLE_ID` bigint(21) unsigned NOT NULL, `TYPE` int(11) NOT NULL, `N_FIELDS` int(11) NOT NULL, diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_tables.result b/mysql-test/suite/innodb_i_s/innodb_sys_tables.result index 08db6edb43870..1a806195ab680 100644 --- a/mysql-test/suite/innodb_i_s/innodb_sys_tables.result +++ b/mysql-test/suite/innodb_i_s/innodb_sys_tables.result @@ -2,7 +2,7 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_SYS_TABLES; Table Create Table INNODB_SYS_TABLES CREATE TEMPORARY TABLE `INNODB_SYS_TABLES` ( `TABLE_ID` bigint(21) unsigned NOT NULL, - `NAME` varchar(655) NOT NULL, + `NAME` longtext NOT NULL, `FLAG` int(11) NOT NULL, `N_COLS` int(11) unsigned NOT NULL, `SPACE` int(11) unsigned NOT NULL, diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_tablespaces.result b/mysql-test/suite/innodb_i_s/innodb_sys_tablespaces.result index 01e655de47fd4..7356f281034fb 100644 --- a/mysql-test/suite/innodb_i_s/innodb_sys_tablespaces.result +++ b/mysql-test/suite/innodb_i_s/innodb_sys_tablespaces.result @@ -2,11 +2,11 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES; Table Create Table INNODB_SYS_TABLESPACES CREATE TEMPORARY TABLE `INNODB_SYS_TABLESPACES` ( `SPACE` int(11) unsigned NOT NULL, - `NAME` varchar(655) NOT NULL, + `NAME` longtext NOT NULL, `FLAG` int(11) unsigned NOT NULL, - `ROW_FORMAT` varchar(22), + `ROW_FORMAT` longtext, `PAGE_SIZE` int(11) unsigned NOT NULL, - `FILENAME` varchar(512) NOT NULL, + `FILENAME` longtext NOT NULL, `FS_BLOCK_SIZE` int(11) unsigned NOT NULL, `FILE_SIZE` bigint(21) unsigned NOT NULL, `ALLOCATED_SIZE` bigint(21) unsigned NOT NULL diff --git a/mysql-test/suite/innodb_i_s/innodb_sys_tablestats.result b/mysql-test/suite/innodb_i_s/innodb_sys_tablestats.result index 98b43c63c2740..ea04b8d08a8f1 100644 --- a/mysql-test/suite/innodb_i_s/innodb_sys_tablestats.result +++ b/mysql-test/suite/innodb_i_s/innodb_sys_tablestats.result @@ -2,7 +2,7 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS; Table Create Table INNODB_SYS_TABLESTATS CREATE TEMPORARY TABLE `INNODB_SYS_TABLESTATS` ( `TABLE_ID` bigint(21) unsigned NOT NULL, - `NAME` varchar(64) NOT NULL, + `NAME` longtext NOT NULL, `STATS_INITIALIZED` int(1) NOT NULL, `NUM_ROWS` bigint(21) unsigned NOT NULL, `CLUST_INDEX_SIZE` bigint(21) unsigned NOT NULL, diff --git a/mysql-test/suite/innodb_i_s/innodb_tablespaces_encryption.result b/mysql-test/suite/innodb_i_s/innodb_tablespaces_encryption.result index 013e4e67fb971..de98fd10f8953 100644 --- a/mysql-test/suite/innodb_i_s/innodb_tablespaces_encryption.result +++ b/mysql-test/suite/innodb_i_s/innodb_tablespaces_encryption.result @@ -2,7 +2,7 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION; Table Create Table INNODB_TABLESPACES_ENCRYPTION CREATE TEMPORARY TABLE `INNODB_TABLESPACES_ENCRYPTION` ( `SPACE` int(11) unsigned NOT NULL, - `NAME` varchar(655), + `NAME` longtext, `ENCRYPTION_SCHEME` int(11) unsigned NOT NULL, `KEYSERVER_REQUESTS` int(11) unsigned NOT NULL, `MIN_KEY_VERSION` int(11) unsigned NOT NULL, diff --git a/mysql-test/suite/innodb_i_s/innodb_trx.result b/mysql-test/suite/innodb_i_s/innodb_trx.result index 36a08d8a4564b..1eb40f0ac51ac 100644 --- a/mysql-test/suite/innodb_i_s/innodb_trx.result +++ b/mysql-test/suite/innodb_i_s/innodb_trx.result @@ -2,14 +2,14 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.INNODB_TRX; Table Create Table INNODB_TRX CREATE TEMPORARY TABLE `INNODB_TRX` ( `trx_id` bigint(21) unsigned NOT NULL, - `trx_state` varchar(13) NOT NULL, + `trx_state` longtext NOT NULL, `trx_started` datetime NOT NULL, - `trx_requested_lock_id` varchar(81), + `trx_requested_lock_id` longtext, `trx_wait_started` datetime, `trx_weight` bigint(21) unsigned NOT NULL, `trx_mysql_thread_id` bigint(21) unsigned NOT NULL, - `trx_query` varchar(1024), - `trx_operation_state` varchar(64), + `trx_query` longtext, + `trx_operation_state` longtext, `trx_tables_in_use` bigint(21) unsigned NOT NULL, `trx_tables_locked` bigint(21) unsigned NOT NULL, `trx_lock_structs` bigint(21) unsigned NOT NULL, @@ -20,7 +20,7 @@ INNODB_TRX CREATE TEMPORARY TABLE `INNODB_TRX` ( `trx_isolation_level` enum('READ UNCOMMITTED','READ COMMITTED','REPEATABLE READ','SERIALIZABLE') NOT NULL, `trx_unique_checks` int(1) NOT NULL, `trx_foreign_key_checks` int(1) NOT NULL, - `trx_last_foreign_key_error` varchar(256), + `trx_last_foreign_key_error` longtext, `trx_is_read_only` int(1) NOT NULL, `trx_autocommit_non_locking` int(1) NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci diff --git a/mysql-test/suite/rpl/r/rpl_empty_string_is_null.result b/mysql-test/suite/rpl/r/rpl_empty_string_is_null.result index 9d0b0295b0d0f..950473a36def6 100644 --- a/mysql-test/suite/rpl/r/rpl_empty_string_is_null.result +++ b/mysql-test/suite/rpl/r/rpl_empty_string_is_null.result @@ -9,7 +9,7 @@ connection slave; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( - `TABLE_NAME` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL + `TABLE_NAME` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci connection master; DROP TABLE t1; diff --git a/mysql-test/suite/sysschema/r/v_host_summary.result b/mysql-test/suite/sysschema/r/v_host_summary.result index b619a8a55fd6e..e2962e9f379f9 100644 --- a/mysql-test/suite/sysschema/r/v_host_summary.result +++ b/mysql-test/suite/sysschema/r/v_host_summary.result @@ -1,6 +1,6 @@ DESC sys.host_summary; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL statements decimal(64,0) YES NULL statement_latency text YES NULL statement_avg_latency text YES NULL @@ -15,7 +15,7 @@ total_memory_allocated text YES NULL SELECT * FROM sys.host_summary; DESC sys.x$host_summary; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL statements decimal(64,0) YES NULL statement_latency decimal(64,0) YES NULL statement_avg_latency decimal(65,4) YES NULL diff --git a/mysql-test/suite/sysschema/r/v_host_summary_by_file_io.result b/mysql-test/suite/sysschema/r/v_host_summary_by_file_io.result index 8e257163da78b..52ac6114bcfc7 100644 --- a/mysql-test/suite/sysschema/r/v_host_summary_by_file_io.result +++ b/mysql-test/suite/sysschema/r/v_host_summary_by_file_io.result @@ -1,12 +1,12 @@ DESC sys.host_summary_by_file_io; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL ios decimal(42,0) YES NULL io_latency text YES NULL SELECT * FROM sys.host_summary_by_file_io; DESC sys.x$host_summary_by_file_io; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL ios decimal(42,0) YES NULL io_latency decimal(42,0) YES NULL SELECT * FROM sys.x$host_summary_by_file_io; diff --git a/mysql-test/suite/sysschema/r/v_host_summary_by_file_io_type.result b/mysql-test/suite/sysschema/r/v_host_summary_by_file_io_type.result index c9a56aa9943e4..1fe908e7300e6 100644 --- a/mysql-test/suite/sysschema/r/v_host_summary_by_file_io_type.result +++ b/mysql-test/suite/sysschema/r/v_host_summary_by_file_io_type.result @@ -1,6 +1,6 @@ DESC sys.host_summary_by_file_io_type; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL event_name varchar(128) NO NULL total bigint(20) unsigned NO NULL total_latency text YES NULL @@ -8,7 +8,7 @@ max_latency text YES NULL SELECT * FROM sys.host_summary_by_file_io_type; DESC sys.x$host_summary_by_file_io_type; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL event_name varchar(128) NO NULL total bigint(20) unsigned NO NULL total_latency bigint(20) unsigned NO NULL diff --git a/mysql-test/suite/sysschema/r/v_host_summary_by_stages.result b/mysql-test/suite/sysschema/r/v_host_summary_by_stages.result index 0ee6f25562cb3..89b855fa330c8 100644 --- a/mysql-test/suite/sysschema/r/v_host_summary_by_stages.result +++ b/mysql-test/suite/sysschema/r/v_host_summary_by_stages.result @@ -1,6 +1,6 @@ DESC sys.host_summary_by_stages; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL event_name varchar(128) NO NULL total bigint(20) unsigned NO NULL total_latency text YES NULL @@ -8,7 +8,7 @@ avg_latency text YES NULL SELECT * FROM sys.host_summary_by_stages; DESC sys.x$host_summary_by_stages; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL event_name varchar(128) NO NULL total bigint(20) unsigned NO NULL total_latency bigint(20) unsigned NO NULL diff --git a/mysql-test/suite/sysschema/r/v_host_summary_by_statement_latency.result b/mysql-test/suite/sysschema/r/v_host_summary_by_statement_latency.result index 882a30b71a10a..548b22e2892d0 100644 --- a/mysql-test/suite/sysschema/r/v_host_summary_by_statement_latency.result +++ b/mysql-test/suite/sysschema/r/v_host_summary_by_statement_latency.result @@ -1,6 +1,6 @@ DESC sys.host_summary_by_statement_latency; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL total decimal(42,0) YES NULL total_latency text YES NULL max_latency text YES NULL @@ -12,7 +12,7 @@ full_scans decimal(43,0) YES NULL SELECT * FROM sys.host_summary_by_statement_latency; DESC sys.x$host_summary_by_statement_latency; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL total decimal(42,0) YES NULL total_latency decimal(42,0) YES NULL max_latency bigint(20) unsigned YES NULL diff --git a/mysql-test/suite/sysschema/r/v_host_summary_by_statement_type.result b/mysql-test/suite/sysschema/r/v_host_summary_by_statement_type.result index eec8f8695c616..05b06236b84f4 100644 --- a/mysql-test/suite/sysschema/r/v_host_summary_by_statement_type.result +++ b/mysql-test/suite/sysschema/r/v_host_summary_by_statement_type.result @@ -1,7 +1,7 @@ DESC sys.host_summary_by_statement_type; Field Type Null Key Default Extra -host varchar(255) YES NULL -statement varchar(128) YES NULL +host text YES NULL +statement text YES NULL total bigint(20) unsigned NO NULL total_latency text YES NULL max_latency text YES NULL @@ -13,8 +13,8 @@ full_scans bigint(21) unsigned NO 0 SELECT * FROM sys.host_summary_by_statement_type; DESC sys.x$host_summary_by_statement_type; Field Type Null Key Default Extra -host varchar(255) YES NULL -statement varchar(128) YES NULL +host text YES NULL +statement text YES NULL total bigint(20) unsigned NO NULL total_latency bigint(20) unsigned NO NULL max_latency bigint(20) unsigned NO NULL diff --git a/mysql-test/suite/sysschema/r/v_innodb_buffer_stats_by_schema.result b/mysql-test/suite/sysschema/r/v_innodb_buffer_stats_by_schema.result index 5267cf90e292c..0d3b5b7ae71bb 100644 --- a/mysql-test/suite/sysschema/r/v_innodb_buffer_stats_by_schema.result +++ b/mysql-test/suite/sysschema/r/v_innodb_buffer_stats_by_schema.result @@ -1,6 +1,6 @@ DESC sys.innodb_buffer_stats_by_schema; Field Type Null Key Default Extra -object_schema text YES NULL +object_schema mediumtext YES NULL allocated text YES NULL data text YES NULL pages bigint(21) NO 0 @@ -14,7 +14,7 @@ object_schema allocated data pages pages_hashed pages_old rows_cached test 16.00 KiB 0 bytes 1 0 0 0 DESC sys.x$innodb_buffer_stats_by_schema; Field Type Null Key Default Extra -object_schema text YES NULL +object_schema mediumtext YES NULL allocated decimal(43,0) YES NULL data decimal(43,0) YES NULL pages bigint(21) NO 0 diff --git a/mysql-test/suite/sysschema/r/v_innodb_buffer_stats_by_table.result b/mysql-test/suite/sysschema/r/v_innodb_buffer_stats_by_table.result index 80557863b2130..cb2a3a1cae24c 100644 --- a/mysql-test/suite/sysschema/r/v_innodb_buffer_stats_by_table.result +++ b/mysql-test/suite/sysschema/r/v_innodb_buffer_stats_by_table.result @@ -1,7 +1,7 @@ DESC sys.innodb_buffer_stats_by_table; Field Type Null Key Default Extra -object_schema text YES NULL -object_name text YES NULL +object_schema mediumtext YES NULL +object_name longtext YES NULL allocated text YES NULL data text YES NULL pages bigint(21) NO 0 @@ -15,8 +15,8 @@ object_schema object_name allocated data pages pages_hashed pages_old rows_cache test t1 16.00 KiB 0 bytes 1 0 0 0 DESC sys.x$innodb_buffer_stats_by_table; Field Type Null Key Default Extra -object_schema text YES NULL -object_name text YES NULL +object_schema mediumtext YES NULL +object_name longtext YES NULL allocated decimal(43,0) YES NULL data decimal(43,0) YES NULL pages bigint(21) NO 0 diff --git a/mysql-test/suite/sysschema/r/v_innodb_lock_waits.result b/mysql-test/suite/sysschema/r/v_innodb_lock_waits.result index d8e2c496d13be..af3195f3873e9 100644 --- a/mysql-test/suite/sysschema/r/v_innodb_lock_waits.result +++ b/mysql-test/suite/sysschema/r/v_innodb_lock_waits.result @@ -3,8 +3,8 @@ Field Type Null Key Default Extra wait_started datetime YES NULL wait_age time /* mariadb-5.3 */ YES NULL wait_age_secs bigint(21) YES NULL -locked_table varchar(1024) NO NULL -locked_index varchar(1024) YES NULL +locked_table longtext NO NULL +locked_index longtext YES NULL locked_type enum('RECORD','TABLE') NO NULL waiting_trx_id bigint(21) unsigned NO NULL waiting_trx_started datetime NO NULL @@ -13,27 +13,27 @@ waiting_trx_rows_locked bigint(21) unsigned NO NULL waiting_trx_rows_modified bigint(21) unsigned NO NULL waiting_pid bigint(21) unsigned NO NULL waiting_query longtext YES NULL -waiting_lock_id varchar(81) NO NULL +waiting_lock_id longtext NO NULL waiting_lock_mode enum('S','S,GAP','X','X,GAP','IS','IS,GAP','IX','IX,GAP','AUTO_INC') NO NULL blocking_trx_id bigint(21) unsigned NO NULL blocking_pid bigint(21) unsigned NO NULL blocking_query longtext YES NULL -blocking_lock_id varchar(81) NO NULL +blocking_lock_id longtext NO NULL blocking_lock_mode enum('S','S,GAP','X','X,GAP','IS','IS,GAP','IX','IX,GAP','AUTO_INC') NO NULL blocking_trx_started datetime NO NULL blocking_trx_age time /* mariadb-5.3 */ YES NULL blocking_trx_rows_locked bigint(21) unsigned NO NULL blocking_trx_rows_modified bigint(21) unsigned NO NULL -sql_kill_blocking_query varchar(32) YES NULL -sql_kill_blocking_connection varchar(26) YES NULL +sql_kill_blocking_query tinytext YES NULL +sql_kill_blocking_connection tinytext YES NULL SELECT * FROM sys.innodb_lock_waits; DESC sys.x$innodb_lock_waits; Field Type Null Key Default Extra wait_started datetime YES NULL wait_age time /* mariadb-5.3 */ YES NULL wait_age_secs bigint(21) YES NULL -locked_table varchar(1024) NO NULL -locked_index varchar(1024) YES NULL +locked_table longtext NO NULL +locked_index longtext YES NULL locked_type enum('RECORD','TABLE') NO NULL waiting_trx_id bigint(21) unsigned NO NULL waiting_trx_started datetime NO NULL @@ -41,20 +41,20 @@ waiting_trx_age time /* mariadb-5.3 */ YES NULL waiting_trx_rows_locked bigint(21) unsigned NO NULL waiting_trx_rows_modified bigint(21) unsigned NO NULL waiting_pid bigint(21) unsigned NO NULL -waiting_query varchar(1024) YES NULL -waiting_lock_id varchar(81) NO NULL +waiting_query longtext YES NULL +waiting_lock_id longtext NO NULL waiting_lock_mode enum('S','S,GAP','X','X,GAP','IS','IS,GAP','IX','IX,GAP','AUTO_INC') NO NULL blocking_trx_id bigint(21) unsigned NO NULL blocking_pid bigint(21) unsigned NO NULL -blocking_query varchar(1024) YES NULL -blocking_lock_id varchar(81) NO NULL +blocking_query longtext YES NULL +blocking_lock_id longtext NO NULL blocking_lock_mode enum('S','S,GAP','X','X,GAP','IS','IS,GAP','IX','IX,GAP','AUTO_INC') NO NULL blocking_trx_started datetime NO NULL blocking_trx_age time /* mariadb-5.3 */ YES NULL blocking_trx_rows_locked bigint(21) unsigned NO NULL blocking_trx_rows_modified bigint(21) unsigned NO NULL -sql_kill_blocking_query varchar(32) YES NULL -sql_kill_blocking_connection varchar(26) YES NULL +sql_kill_blocking_query tinytext YES NULL +sql_kill_blocking_connection tinytext YES NULL SELECT * FROM sys.x$innodb_lock_waits; # # Start of 10.6 tests diff --git a/mysql-test/suite/sysschema/r/v_io_by_thread_by_latency.result b/mysql-test/suite/sysschema/r/v_io_by_thread_by_latency.result index fddd2f266df83..5f3fe1ccc57f4 100644 --- a/mysql-test/suite/sysschema/r/v_io_by_thread_by_latency.result +++ b/mysql-test/suite/sysschema/r/v_io_by_thread_by_latency.result @@ -1,6 +1,6 @@ DESC sys.io_by_thread_by_latency; Field Type Null Key Default Extra -user varchar(384) YES NULL +user text YES NULL total decimal(42,0) YES NULL total_latency text YES NULL min_latency text YES NULL @@ -11,7 +11,7 @@ processlist_id bigint(20) unsigned YES NULL SELECT * FROM sys.io_by_thread_by_latency; DESC sys.x$io_by_thread_by_latency; Field Type Null Key Default Extra -user varchar(384) YES NULL +user text YES NULL total decimal(42,0) YES NULL total_latency decimal(42,0) YES NULL min_latency bigint(20) unsigned YES NULL diff --git a/mysql-test/suite/sysschema/r/v_io_global_by_wait_by_bytes.result b/mysql-test/suite/sysschema/r/v_io_global_by_wait_by_bytes.result index 3d5dcbffbf637..f0dde1da26710 100644 --- a/mysql-test/suite/sysschema/r/v_io_global_by_wait_by_bytes.result +++ b/mysql-test/suite/sysschema/r/v_io_global_by_wait_by_bytes.result @@ -1,6 +1,6 @@ DESC sys.io_global_by_wait_by_bytes; Field Type Null Key Default Extra -event_name varchar(128) YES NULL +event_name text YES NULL total bigint(20) unsigned NO NULL total_latency text YES NULL min_latency text YES NULL @@ -16,7 +16,7 @@ total_requested text YES NULL SELECT * FROM sys.io_global_by_wait_by_bytes; DESC sys.x$io_global_by_wait_by_bytes; Field Type Null Key Default Extra -event_name varchar(128) YES NULL +event_name text YES NULL total bigint(20) unsigned NO NULL total_latency bigint(20) unsigned NO NULL min_latency bigint(20) unsigned NO NULL diff --git a/mysql-test/suite/sysschema/r/v_io_global_by_wait_by_latency.result b/mysql-test/suite/sysschema/r/v_io_global_by_wait_by_latency.result index 1c5db29796403..659b3e8816f3b 100644 --- a/mysql-test/suite/sysschema/r/v_io_global_by_wait_by_latency.result +++ b/mysql-test/suite/sysschema/r/v_io_global_by_wait_by_latency.result @@ -1,6 +1,6 @@ DESC sys.io_global_by_wait_by_latency; Field Type Null Key Default Extra -event_name varchar(128) YES NULL +event_name text YES NULL total bigint(20) unsigned NO NULL total_latency text YES NULL avg_latency text YES NULL @@ -17,7 +17,7 @@ avg_written text YES NULL SELECT * FROM sys.io_global_by_wait_by_latency; DESC sys.x$io_global_by_wait_by_latency; Field Type Null Key Default Extra -event_name varchar(128) YES NULL +event_name text YES NULL total bigint(20) unsigned NO NULL total_latency bigint(20) unsigned NO NULL avg_latency bigint(20) unsigned NO NULL diff --git a/mysql-test/suite/sysschema/r/v_latest_file_io.result b/mysql-test/suite/sysschema/r/v_latest_file_io.result index a65cdb2dd10d6..7ee4605710172 100644 --- a/mysql-test/suite/sysschema/r/v_latest_file_io.result +++ b/mysql-test/suite/sysschema/r/v_latest_file_io.result @@ -1,6 +1,6 @@ DESC sys.latest_file_io; Field Type Null Key Default Extra -thread varchar(214) YES NULL +thread mediumtext YES NULL file varchar(512) YES NULL latency text YES NULL operation varchar(32) NO NULL @@ -8,7 +8,7 @@ requested text YES NULL SELECT * FROM sys.latest_file_io; DESC sys.x$latest_file_io; Field Type Null Key Default Extra -thread varchar(214) YES NULL +thread mediumtext YES NULL file varchar(512) YES NULL latency bigint(20) unsigned YES NULL operation varchar(32) NO NULL diff --git a/mysql-test/suite/sysschema/r/v_memory_by_host_by_current_bytes.result b/mysql-test/suite/sysschema/r/v_memory_by_host_by_current_bytes.result index 9b0e0f9189c53..4f10bb5bb9a55 100644 --- a/mysql-test/suite/sysschema/r/v_memory_by_host_by_current_bytes.result +++ b/mysql-test/suite/sysschema/r/v_memory_by_host_by_current_bytes.result @@ -1,6 +1,6 @@ DESC sys.memory_by_host_by_current_bytes; Field Type Null Key Default Extra -host varchar(60) YES NULL +host tinytext YES NULL current_count_used decimal(41,0) YES NULL current_allocated text YES NULL current_avg_alloc text YES NULL @@ -9,7 +9,7 @@ total_allocated text YES NULL SELECT * FROM sys.memory_by_host_by_current_bytes; DESC sys.x$memory_by_host_by_current_bytes; Field Type Null Key Default Extra -host varchar(60) YES NULL +host tinytext YES NULL current_count_used decimal(41,0) YES NULL current_allocated decimal(41,0) YES NULL current_avg_alloc decimal(45,4) NO 0.0000 diff --git a/mysql-test/suite/sysschema/r/v_memory_by_thread_by_current_bytes.result b/mysql-test/suite/sysschema/r/v_memory_by_thread_by_current_bytes.result index 80bb84c3e718d..26a0711c324c4 100644 --- a/mysql-test/suite/sysschema/r/v_memory_by_thread_by_current_bytes.result +++ b/mysql-test/suite/sysschema/r/v_memory_by_thread_by_current_bytes.result @@ -1,7 +1,7 @@ DESC sys.memory_by_thread_by_current_bytes; Field Type Null Key Default Extra thread_id bigint(20) unsigned NO NULL -user varchar(384) YES NULL +user text YES NULL current_count_used decimal(41,0) YES NULL current_allocated text YES NULL current_avg_alloc text YES NULL @@ -11,7 +11,7 @@ SELECT * FROM sys.memory_by_thread_by_current_bytes; DESC sys.x$memory_by_thread_by_current_bytes; Field Type Null Key Default Extra thread_id bigint(20) unsigned NO NULL -user varchar(384) YES NULL +user text YES NULL current_count_used decimal(41,0) YES NULL current_allocated decimal(41,0) YES NULL current_avg_alloc decimal(45,4) NO 0.0000 diff --git a/mysql-test/suite/sysschema/r/v_memory_by_user_by_current_bytes.result b/mysql-test/suite/sysschema/r/v_memory_by_user_by_current_bytes.result index 95d56d9d30114..7c150807f45c2 100644 --- a/mysql-test/suite/sysschema/r/v_memory_by_user_by_current_bytes.result +++ b/mysql-test/suite/sysschema/r/v_memory_by_user_by_current_bytes.result @@ -1,6 +1,6 @@ DESC sys.memory_by_user_by_current_bytes; Field Type Null Key Default Extra -user varchar(32) YES NULL +user tinytext YES NULL current_count_used decimal(41,0) YES NULL current_allocated text YES NULL current_avg_alloc text YES NULL @@ -9,7 +9,7 @@ total_allocated text YES NULL SELECT * FROM sys.memory_by_user_by_current_bytes; DESC sys.x$memory_by_user_by_current_bytes; Field Type Null Key Default Extra -user varchar(32) YES NULL +user tinytext YES NULL current_count_used decimal(41,0) YES NULL current_allocated decimal(41,0) YES NULL current_avg_alloc decimal(45,4) NO 0.0000 diff --git a/mysql-test/suite/sysschema/r/v_metrics.result b/mysql-test/suite/sysschema/r/v_metrics.result index bfc840edb1f12..3f7df342e3e05 100644 --- a/mysql-test/suite/sysschema/r/v_metrics.result +++ b/mysql-test/suite/sysschema/r/v_metrics.result @@ -1,7 +1,7 @@ DESC sys.metrics; Field Type Null Key Default Extra -Variable_name varchar(193) YES NULL +Variable_name longtext YES NULL Variable_value varchar(1024) YES NULL -Type varchar(210) YES NULL +Type mediumtext YES NULL Enabled varchar(3) NO SELECT * FROM sys.metrics; diff --git a/mysql-test/suite/sysschema/r/v_processlist.result b/mysql-test/suite/sysschema/r/v_processlist.result index dfc048143d697..07dbaddebdcb5 100644 --- a/mysql-test/suite/sysschema/r/v_processlist.result +++ b/mysql-test/suite/sysschema/r/v_processlist.result @@ -2,7 +2,7 @@ DESC sys.processlist; Field Type Null Key Default Extra thd_id bigint(20) unsigned NO NULL conn_id bigint(20) unsigned YES NULL -user varchar(384) YES NULL +user text YES NULL db varchar(64) YES NULL command varchar(16) YES NULL state varchar(64) YES NULL @@ -33,7 +33,7 @@ DESC sys.x$processlist; Field Type Null Key Default Extra thd_id bigint(20) unsigned NO NULL conn_id bigint(20) unsigned YES NULL -user varchar(384) YES NULL +user text YES NULL db varchar(64) YES NULL command varchar(16) YES NULL state varchar(64) YES NULL @@ -52,7 +52,7 @@ last_statement longtext YES NULL last_statement_latency bigint(20) unsigned YES NULL current_memory decimal(41,0) YES NULL last_wait varchar(128) YES NULL -last_wait_latency varchar(20) YES NULL +last_wait_latency tinytext YES NULL source varchar(64) YES NULL trx_latency bigint(20) unsigned YES NULL trx_state enum('ACTIVE','COMMITTED','ROLLED BACK') YES NULL diff --git a/mysql-test/suite/sysschema/r/v_schema_auto_increment_columns.result b/mysql-test/suite/sysschema/r/v_schema_auto_increment_columns.result index ef2ad76b6002a..b7138a4e098cb 100644 --- a/mysql-test/suite/sysschema/r/v_schema_auto_increment_columns.result +++ b/mysql-test/suite/sysschema/r/v_schema_auto_increment_columns.result @@ -1,9 +1,9 @@ DESC sys.schema_auto_increment_columns; Field Type Null Key Default Extra -table_schema varchar(64) NO NULL -table_name varchar(64) NO NULL -column_name varchar(64) NO NULL -data_type varchar(64) NO NULL +table_schema longtext NO NULL +table_name longtext NO NULL +column_name longtext NO NULL +data_type longtext NO NULL column_type longtext NO NULL is_signed int(1) NO 0 is_unsigned int(1) NO 0 diff --git a/mysql-test/suite/sysschema/r/v_schema_object_overview.result b/mysql-test/suite/sysschema/r/v_schema_object_overview.result index 1c6144e956f2e..4f66c43636998 100644 --- a/mysql-test/suite/sysschema/r/v_schema_object_overview.result +++ b/mysql-test/suite/sysschema/r/v_schema_object_overview.result @@ -1,6 +1,6 @@ DESC sys.schema_object_overview; Field Type Null Key Default Extra -db varchar(64) NO -object_type varchar(64) YES NULL +db longtext NO +object_type longtext YES NULL count bigint(21) NO 0 SELECT * FROM sys.schema_object_overview; diff --git a/mysql-test/suite/sysschema/r/v_schema_redundant_indexes.result b/mysql-test/suite/sysschema/r/v_schema_redundant_indexes.result index 8893726fe128a..4946e0958c6a3 100644 --- a/mysql-test/suite/sysschema/r/v_schema_redundant_indexes.result +++ b/mysql-test/suite/sysschema/r/v_schema_redundant_indexes.result @@ -1,21 +1,21 @@ DESC sys.schema_redundant_indexes; Field Type Null Key Default Extra -table_schema varchar(64) NO NULL -table_name varchar(64) NO NULL -redundant_index_name varchar(64) NO NULL +table_schema longtext NO NULL +table_name longtext NO NULL +redundant_index_name longtext NO NULL redundant_index_columns mediumtext YES NULL redundant_index_non_unique bigint(1) YES NULL -dominant_index_name varchar(64) NO NULL +dominant_index_name longtext NO NULL dominant_index_columns mediumtext YES NULL dominant_index_non_unique bigint(1) YES NULL subpart_exists int(1) YES NULL -sql_drop_index varchar(223) YES NULL +sql_drop_index longtext YES NULL SELECT * FROM sys.schema_redundant_indexes; DESC sys.x$schema_flattened_keys; Field Type Null Key Default Extra -table_schema varchar(64) NO NULL -table_name varchar(64) NO NULL -index_name varchar(64) NO NULL +table_schema longtext NO NULL +table_name longtext NO NULL +index_name longtext NO NULL non_unique bigint(1) YES NULL subpart_exists bigint(1) YES NULL index_columns mediumtext YES NULL diff --git a/mysql-test/suite/sysschema/r/v_schema_table_lock_waits.result b/mysql-test/suite/sysschema/r/v_schema_table_lock_waits.result index e51b3f2753da7..45da8b5464872 100644 --- a/mysql-test/suite/sysschema/r/v_schema_table_lock_waits.result +++ b/mysql-test/suite/sysschema/r/v_schema_table_lock_waits.result @@ -16,8 +16,8 @@ blocking_pid bigint(20) unsigned YES NULL blocking_account text YES NULL blocking_lock_type varchar(32) NO NULL blocking_lock_duration varchar(32) NO NULL -sql_kill_blocking_query varchar(31) YES NULL -sql_kill_blocking_connection varchar(25) YES NULL +sql_kill_blocking_query tinytext YES NULL +sql_kill_blocking_connection tinytext YES NULL SELECT * FROM sys.schema_table_lock_waits; DESC sys.x$schema_table_lock_waits; Field Type Null Key Default Extra @@ -37,8 +37,8 @@ blocking_pid bigint(20) unsigned YES NULL blocking_account text YES NULL blocking_lock_type varchar(32) NO NULL blocking_lock_duration varchar(32) NO NULL -sql_kill_blocking_query varchar(31) YES NULL -sql_kill_blocking_connection varchar(25) YES NULL +sql_kill_blocking_query tinytext YES NULL +sql_kill_blocking_connection tinytext YES NULL SELECT * FROM sys.x$schema_table_lock_waits; connect con1,localhost,root,,; connect con2,localhost,root,,; diff --git a/mysql-test/suite/sysschema/r/v_session.result b/mysql-test/suite/sysschema/r/v_session.result index fd88b8f1d6af0..8fd331fc237e0 100644 --- a/mysql-test/suite/sysschema/r/v_session.result +++ b/mysql-test/suite/sysschema/r/v_session.result @@ -2,7 +2,7 @@ DESC sys.session; Field Type Null Key Default Extra thd_id bigint(20) unsigned NO NULL conn_id bigint(20) unsigned YES NULL -user varchar(384) YES NULL +user text YES NULL db varchar(64) YES NULL command varchar(16) YES NULL state varchar(64) YES NULL @@ -33,7 +33,7 @@ DESC sys.x$session; Field Type Null Key Default Extra thd_id bigint(20) unsigned NO NULL conn_id bigint(20) unsigned YES NULL -user varchar(384) YES NULL +user text YES NULL db varchar(64) YES NULL command varchar(16) YES NULL state varchar(64) YES NULL @@ -52,7 +52,7 @@ last_statement longtext YES NULL last_statement_latency bigint(20) unsigned YES NULL current_memory decimal(41,0) YES NULL last_wait varchar(128) YES NULL -last_wait_latency varchar(20) YES NULL +last_wait_latency tinytext YES NULL source varchar(64) YES NULL trx_latency bigint(20) unsigned YES NULL trx_state enum('ACTIVE','COMMITTED','ROLLED BACK') YES NULL diff --git a/mysql-test/suite/sysschema/r/v_user_summary.result b/mysql-test/suite/sysschema/r/v_user_summary.result index 233fcccc5c829..cd6b5f98e9433 100644 --- a/mysql-test/suite/sysschema/r/v_user_summary.result +++ b/mysql-test/suite/sysschema/r/v_user_summary.result @@ -1,6 +1,6 @@ DESC sys.user_summary; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL statements decimal(64,0) YES NULL statement_latency text YES NULL statement_avg_latency text YES NULL @@ -15,7 +15,7 @@ total_memory_allocated text YES NULL SELECT * FROM sys.user_summary; DESC sys.x$user_summary; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL statements decimal(64,0) YES NULL statement_latency decimal(64,0) YES NULL statement_avg_latency decimal(65,4) NO 0.0000 diff --git a/mysql-test/suite/sysschema/r/v_user_summary_by_file_io.result b/mysql-test/suite/sysschema/r/v_user_summary_by_file_io.result index f6f106a5015bd..0933350c37a1c 100644 --- a/mysql-test/suite/sysschema/r/v_user_summary_by_file_io.result +++ b/mysql-test/suite/sysschema/r/v_user_summary_by_file_io.result @@ -1,12 +1,12 @@ DESC sys.user_summary_by_file_io; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL ios decimal(42,0) YES NULL io_latency text YES NULL SELECT * FROM sys.user_summary_by_file_io; DESC sys.x$user_summary_by_file_io; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL ios decimal(42,0) YES NULL io_latency decimal(42,0) YES NULL SELECT * FROM sys.x$user_summary_by_file_io; diff --git a/mysql-test/suite/sysschema/r/v_user_summary_by_file_io_type.result b/mysql-test/suite/sysschema/r/v_user_summary_by_file_io_type.result index c143697c068d3..bf28436ce2303 100644 --- a/mysql-test/suite/sysschema/r/v_user_summary_by_file_io_type.result +++ b/mysql-test/suite/sysschema/r/v_user_summary_by_file_io_type.result @@ -1,6 +1,6 @@ DESC sys.user_summary_by_file_io_type; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL event_name varchar(128) NO NULL total bigint(20) unsigned NO NULL latency text YES NULL @@ -8,7 +8,7 @@ max_latency text YES NULL SELECT * FROM sys.user_summary_by_file_io_type; DESC sys.x$user_summary_by_file_io_type; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL event_name varchar(128) NO NULL total bigint(20) unsigned NO NULL latency bigint(20) unsigned NO NULL diff --git a/mysql-test/suite/sysschema/r/v_user_summary_by_stages.result b/mysql-test/suite/sysschema/r/v_user_summary_by_stages.result index 9b90fe9cf471b..3c3e55d2122b6 100644 --- a/mysql-test/suite/sysschema/r/v_user_summary_by_stages.result +++ b/mysql-test/suite/sysschema/r/v_user_summary_by_stages.result @@ -1,6 +1,6 @@ DESC sys.user_summary_by_stages; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL event_name varchar(128) NO NULL total bigint(20) unsigned NO NULL total_latency text YES NULL @@ -8,7 +8,7 @@ avg_latency text YES NULL SELECT * FROM sys.user_summary_by_stages; DESC sys.x$user_summary_by_stages; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL event_name varchar(128) NO NULL total bigint(20) unsigned NO NULL total_latency bigint(20) unsigned NO NULL diff --git a/mysql-test/suite/sysschema/r/v_user_summary_by_statement_latency.result b/mysql-test/suite/sysschema/r/v_user_summary_by_statement_latency.result index 36dadc2925bd7..06c7e386ad952 100644 --- a/mysql-test/suite/sysschema/r/v_user_summary_by_statement_latency.result +++ b/mysql-test/suite/sysschema/r/v_user_summary_by_statement_latency.result @@ -1,6 +1,6 @@ DESC sys.user_summary_by_statement_latency; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL total decimal(42,0) YES NULL total_latency text YES NULL max_latency text YES NULL @@ -12,7 +12,7 @@ full_scans decimal(43,0) YES NULL SELECT * FROM sys.user_summary_by_statement_latency; DESC sys.x$user_summary_by_statement_latency; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL total decimal(42,0) YES NULL total_latency decimal(42,0) YES NULL max_latency decimal(42,0) YES NULL diff --git a/mysql-test/suite/sysschema/r/v_user_summary_by_statement_type.result b/mysql-test/suite/sysschema/r/v_user_summary_by_statement_type.result index bd006c871b956..44713c6ec354c 100644 --- a/mysql-test/suite/sysschema/r/v_user_summary_by_statement_type.result +++ b/mysql-test/suite/sysschema/r/v_user_summary_by_statement_type.result @@ -1,7 +1,7 @@ DESC sys.user_summary_by_statement_type; Field Type Null Key Default Extra -user varchar(128) YES NULL -statement varchar(128) YES NULL +user text YES NULL +statement text YES NULL total bigint(20) unsigned NO NULL total_latency text YES NULL max_latency text YES NULL @@ -13,8 +13,8 @@ full_scans bigint(21) unsigned NO 0 SELECT * FROM sys.user_summary_by_statement_type; DESC sys.x$user_summary_by_statement_type; Field Type Null Key Default Extra -user varchar(128) YES NULL -statement varchar(128) YES NULL +user text YES NULL +statement text YES NULL total bigint(20) unsigned NO NULL total_latency bigint(20) unsigned NO NULL max_latency bigint(20) unsigned NO NULL diff --git a/mysql-test/suite/sysschema/r/v_wait_classes_global_by_avg_latency.result b/mysql-test/suite/sysschema/r/v_wait_classes_global_by_avg_latency.result index f6559cb7dd798..3cd69d0807bec 100644 --- a/mysql-test/suite/sysschema/r/v_wait_classes_global_by_avg_latency.result +++ b/mysql-test/suite/sysschema/r/v_wait_classes_global_by_avg_latency.result @@ -1,6 +1,6 @@ DESC sys.wait_classes_global_by_avg_latency; Field Type Null Key Default Extra -event_class varchar(128) YES NULL +event_class text YES NULL total decimal(42,0) YES NULL total_latency text YES NULL min_latency text YES NULL @@ -9,7 +9,7 @@ max_latency text YES NULL SELECT * FROM sys.wait_classes_global_by_avg_latency; DESC sys.x$wait_classes_global_by_avg_latency; Field Type Null Key Default Extra -event_class varchar(128) YES NULL +event_class text YES NULL total decimal(42,0) YES NULL total_latency decimal(42,0) YES NULL min_latency bigint(20) unsigned YES NULL diff --git a/mysql-test/suite/sysschema/r/v_wait_classes_global_by_latency.result b/mysql-test/suite/sysschema/r/v_wait_classes_global_by_latency.result index 10db5ead78b9c..afb36a13c73fc 100644 --- a/mysql-test/suite/sysschema/r/v_wait_classes_global_by_latency.result +++ b/mysql-test/suite/sysschema/r/v_wait_classes_global_by_latency.result @@ -1,6 +1,6 @@ DESC sys.wait_classes_global_by_latency; Field Type Null Key Default Extra -event_class varchar(128) YES NULL +event_class text YES NULL total decimal(42,0) YES NULL total_latency text YES NULL min_latency text YES NULL @@ -9,7 +9,7 @@ max_latency text YES NULL SELECT * FROM sys.wait_classes_global_by_latency; DESC sys.x$wait_classes_global_by_latency; Field Type Null Key Default Extra -event_class varchar(128) YES NULL +event_class text YES NULL total decimal(42,0) YES NULL total_latency decimal(42,0) YES NULL min_latency bigint(20) unsigned YES NULL diff --git a/mysql-test/suite/sysschema/r/v_waits_by_host_by_latency.result b/mysql-test/suite/sysschema/r/v_waits_by_host_by_latency.result index 5e595d9cf8522..9f2ca578326cf 100644 --- a/mysql-test/suite/sysschema/r/v_waits_by_host_by_latency.result +++ b/mysql-test/suite/sysschema/r/v_waits_by_host_by_latency.result @@ -1,6 +1,6 @@ DESC sys.waits_by_host_by_latency; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL event varchar(128) NO NULL total bigint(20) unsigned NO NULL total_latency text YES NULL @@ -9,7 +9,7 @@ max_latency text YES NULL SELECT * FROM sys.waits_by_host_by_latency; DESC sys.x$waits_by_host_by_latency; Field Type Null Key Default Extra -host varchar(255) YES NULL +host text YES NULL event varchar(128) NO NULL total bigint(20) unsigned NO NULL total_latency bigint(20) unsigned NO NULL diff --git a/mysql-test/suite/sysschema/r/v_waits_by_user_by_latency.result b/mysql-test/suite/sysschema/r/v_waits_by_user_by_latency.result index 860db68cc505c..9be0bf1518b90 100644 --- a/mysql-test/suite/sysschema/r/v_waits_by_user_by_latency.result +++ b/mysql-test/suite/sysschema/r/v_waits_by_user_by_latency.result @@ -1,6 +1,6 @@ DESC sys.waits_by_user_by_latency; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL event varchar(128) NO NULL total bigint(20) unsigned NO NULL total_latency text YES NULL @@ -9,7 +9,7 @@ max_latency text YES NULL SELECT * FROM sys.waits_by_user_by_latency; DESC sys.x$waits_by_user_by_latency; Field Type Null Key Default Extra -user varchar(128) YES NULL +user text YES NULL event varchar(128) NO NULL total bigint(20) unsigned NO NULL total_latency bigint(20) unsigned NO NULL diff --git a/plugin/disks/mysql-test/disks/disks.result b/plugin/disks/mysql-test/disks/disks.result index e46390c751688..5749a4826ca1b 100644 --- a/plugin/disks/mysql-test/disks/disks.result +++ b/plugin/disks/mysql-test/disks/disks.result @@ -1,8 +1,8 @@ show create table information_schema.disks; Table Create Table DISKS CREATE TEMPORARY TABLE `DISKS` ( - `Disk` varchar(pathlen) NOT NULL, - `Path` varchar(pathlen) NOT NULL, + `Disk` longtext NOT NULL, + `Path` longtext NOT NULL, `Total` bigint(32) NOT NULL, `Used` bigint(32) NOT NULL, `Available` bigint(32) NOT NULL diff --git a/plugin/query_response_time/mysql-test/query_response_time/basic.result b/plugin/query_response_time/mysql-test/query_response_time/basic.result index 48bcdfa12ca0c..43a097330f043 100644 --- a/plugin/query_response_time/mysql-test/query_response_time/basic.result +++ b/plugin/query_response_time/mysql-test/query_response_time/basic.result @@ -6,9 +6,9 @@ query_response_time_stats OFF SHOW CREATE TABLE INFORMATION_SCHEMA.QUERY_RESPONSE_TIME; Table Create Table QUERY_RESPONSE_TIME CREATE TEMPORARY TABLE `QUERY_RESPONSE_TIME` ( - `TIME` varchar(14) NOT NULL, + `TIME` longtext NOT NULL, `COUNT` int(11) unsigned NOT NULL, - `TOTAL` varchar(14) NOT NULL + `TOTAL` longtext NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci SELECT PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_TYPE, PLUGIN_AUTHOR, PLUGIN_DESCRIPTION, PLUGIN_LICENSE, PLUGIN_MATURITY FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'query_response_time%';; PLUGIN_NAME QUERY_RESPONSE_TIME diff --git a/plugin/user_variables/mysql-test/user_variables/basic.result b/plugin/user_variables/mysql-test/user_variables/basic.result index 07f51ee560728..e96f33797dc3f 100644 --- a/plugin/user_variables/mysql-test/user_variables/basic.result +++ b/plugin/user_variables/mysql-test/user_variables/basic.result @@ -11,10 +11,10 @@ PLUGIN_MATURITY Stable SHOW CREATE TABLE INFORMATION_SCHEMA.USER_VARIABLES; Table Create Table user_variables CREATE TEMPORARY TABLE `user_variables` ( - `VARIABLE_NAME` varchar(64) NOT NULL, - `VARIABLE_VALUE` varchar(2048), - `VARIABLE_TYPE` varchar(64) NOT NULL, - `CHARACTER_SET_NAME` varchar(32) + `VARIABLE_NAME` longtext NOT NULL, + `VARIABLE_VALUE` longtext, + `VARIABLE_TYPE` longtext NOT NULL, + `CHARACTER_SET_NAME` longtext ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci FLUSH USER_VARIABLES; SELECT COUNT(*) FROM INFORMATION_SCHEMA.USER_VARIABLES; diff --git a/sql/item.h b/sql/item.h index 089d440bad1be..94eae9a2d5f8f 100644 --- a/sql/item.h +++ b/sql/item.h @@ -725,21 +725,25 @@ class Tmp_field_param bool m_modify_item; bool m_table_cant_handle_bit_fields; bool m_make_copy_field; + bool m_is_heap_engine; public: Tmp_field_param(bool group, bool modify_item, bool table_cant_handle_bit_fields, - bool make_copy_field) + bool make_copy_field, + bool is_heap_engine= false) :m_group(group), m_modify_item(modify_item), m_table_cant_handle_bit_fields(table_cant_handle_bit_fields), - m_make_copy_field(make_copy_field) + m_make_copy_field(make_copy_field), + m_is_heap_engine(is_heap_engine) { } bool group() const { return m_group; } bool modify_item() const { return m_modify_item; } bool table_cant_handle_bit_fields() const { return m_table_cant_handle_bit_fields; } bool make_copy_field() const { return m_make_copy_field; } + bool is_heap_engine() const { return m_is_heap_engine; } void set_modify_item(bool to) { m_modify_item= to; } }; diff --git a/sql/sql_const.h b/sql/sql_const.h index bee1a56d78417..a17d023f72c9e 100644 --- a/sql/sql_const.h +++ b/sql/sql_const.h @@ -69,6 +69,7 @@ #define MAX_FIELD_VARCHARLENGTH (65535-2-1) #define MAX_FIELD_BLOBLENGTH UINT_MAX32 /* cf field_blob::get_length() */ #define CONVERT_IF_BIGGER_TO_BLOB 512 /* Threshold *in characters* */ +#define HEAP_CONVERT_IF_BIGGER_TO_BLOB 32 /* HEAP-specific, *in bytes* */ /* Max column width +1 */ #define MAX_FIELD_WIDTH (MAX_FIELD_CHARLENGTH*MAX_MBWIDTH+1) diff --git a/sql/sql_expression_cache.cc b/sql/sql_expression_cache.cc index 0e584cb0cc041..d4ea959bd8d3b 100644 --- a/sql/sql_expression_cache.cc +++ b/sql/sql_expression_cache.cc @@ -139,15 +139,28 @@ void Expression_cache_tmptable::init() } /* + Expression cache is HEAP-only by design (the heap_hton check above). + Disable it when the temp table contains blob columns. + + Why this is needed in the SQL layer: HEAP hash indexes on blob columns use a pointer-based key format - (4-byte length + data pointer). This is incompatible with the SQL - layer's key format (2-byte length + inline data) because - Field_blob::new_key_field() returns a Field_varstring. + (4-byte length + data pointer stored in a HA_KEYSEG with flag + HA_BLOB_PART). This is incompatible with the SQL layer's key + format (2-byte length + inline data) because Field_blob:: + new_key_field() returns a Field_varstring, and the ref lookup + machinery (join_read_key2, etc.) builds keys in that SQL format. + + Before HEAP blob support, blobs forced the temp table to Aria, + which failed the heap_hton check above and effectively disabled the + cache. With HEAP now accepting blobs, we must check explicitly. + + This is HEAP-specific SQL-layer code, analogous to how Aria has its + own engine-specific SQL-layer handling in create_internal_tmp_table() + for blob key segments via MARIA_UNIQUEDEF. This check is slightly conservative: a blob only in the result - value would not affect the key. However, it matches the pre-blob - behavior where blobs forced Aria, which failed the heap_hton check - above and disabled the cache anyway. + value (not the key) would not cause a problem. But it matches the + pre-blob effective behavior and avoids subtle key-format mismatches. */ if (cache_table->s->blob_fields) { diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 1fab2851ffd1b..992bcdf45017c 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -6553,11 +6553,11 @@ add_key_field(JOIN *join, uint optimize= 0; if (eq_func && ((join->is_allowed_hash_join_access() && - field->hash_join_is_possible() && + field->hash_join_is_possible() && !(field->table->pos_in_table_list->is_materialized_derived() && field->table->is_created())) || (field->table->pos_in_table_list->is_materialized_derived() && - !field->table->is_created() && !(field->flags & BLOB_FLAG)))) + !field->table->is_created()))) { optimize= KEY_OPTIMIZE_EQ; } @@ -12750,17 +12750,37 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, */ if (!keyuse->val->used_tables() && !thd->lex->describe) { // Compare against constant - store_key_item tmp(thd, - keyinfo->key_part[i].field, - key_buff + maybe_null, - maybe_null ? key_buff : 0, - keyinfo->key_part[i].length, - keyuse->val, - FALSE); - if (unlikely(thd->is_error())) - DBUG_RETURN(TRUE); - tmp.copy(thd); - j->ref.const_ref_part_map |= key_part_map(1) << i ; + /* + HEAP BLOB key parts: skip the early-const optimization. + record[0] is overwritten during derived table materialization + (rows inserted via write_row(record[0])), so a const BLOB + value stored there at optimization time would be lost. + Fall through to create a heap_store_key_blob_ref that + re-stores the value at every lookup. + */ + if ((keyinfo->key_part[i].key_part_flag & HA_BLOB_PART) && + keyinfo->key_part[i].length == 0 && + keyinfo->key_part[i].field->table->s->db_type() == heap_hton) + { + *ref_key++= new heap_store_key_blob_ref(thd, + keyinfo->key_part[i].field, + keyuse->val, FALSE); + /* Don't set const_ref_part_map — force re-copy every lookup */ + } + else + { + store_key_item tmp(thd, + keyinfo->key_part[i].field, + key_buff + maybe_null, + maybe_null ? key_buff : 0, + keyinfo->key_part[i].length, + keyuse->val, + FALSE); + if (unlikely(thd->is_error())) + DBUG_RETURN(TRUE); + tmp.copy(thd); + j->ref.const_ref_part_map |= key_part_map(1) << i ; + } } else { @@ -12781,6 +12801,16 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, null_ref_key= key_buff; null_ref_part= i; } + /* + HEAP BLOB key parts: disable the ref cache. cmp_buffer_with_ref() + does a memcmp on the key buffer, which has no BLOB data (only + metadata placeholders). Two lookups differing only in the BLOB + value would appear identical, returning stale results. + */ + if ((keyinfo->key_part[i].key_part_flag & HA_BLOB_PART) && + keyinfo->key_part[i].length == 0 && + keyinfo->key_part[i].field->table->s->db_type() == heap_hton) + j->ref.disable_cache= TRUE; key_buff+= keyinfo->key_part[i].store_length; } } /* not ftkey */ @@ -12837,6 +12867,20 @@ static store_key * get_store_key(THD *thd, KEYUSE *keyuse, table_map used_tables, KEY_PART_INFO *key_part, uchar *key_buff, uint maybe_null) { + /* + HEAP BLOB key parts with length=0: direct-to-record[0] path. + add_tmp_key() leaves BLOB key parts with length=0; the key buffer + has only metadata placeholders. Write the lookup value directly + into record[0]'s Field_blob via heap_store_key_blob_ref. + Non-zero length means the key buffer has space for data (e.g. + SJ-materialize path) — use the normal store_key mechanism. + */ + if ((key_part->key_part_flag & HA_BLOB_PART) && + key_part->length == 0 && + key_part->field->table->s->db_type() == heap_hton) + return new heap_store_key_blob_ref(thd, key_part->field, + keyuse->val, FALSE); + if (!((~used_tables) & keyuse->used_tables)) // if const item { return new store_key_const_item(thd, @@ -12850,7 +12894,7 @@ get_store_key(THD *thd, KEYUSE *keyuse, table_map used_tables, (keyuse->val->type() == Item::REF_ITEM && ((((Item_ref*)keyuse->val)->ref_type() == Item_ref::OUTER_REF && (*(Item_ref**)((Item_ref*)keyuse->val)->ref)->ref_type() == - Item_ref::DIRECT_REF) || + Item_ref::DIRECT_REF) || ((Item_ref*)keyuse->val)->ref_type() == Item_ref::VIEW_REF) && keyuse->val->real_item()->type() == Item::FIELD_ITEM)) return new store_key_field(thd, @@ -15805,16 +15849,26 @@ bool TABLE_REF::tmp_table_index_lookup_init(THD *thd, DBUG_ASSERT(item); items[i]= item; int null_count= MY_TEST(cur_key_part->field->real_maybe_null()); - *ref_key= new store_key_item(thd, cur_key_part->field, - /* TIMOUR: - the NULL byte is taken into account in - cur_key_part->store_length, so instead of - cur_ref_buff + MY_TEST(maybe_null), we could - use that information instead. - */ - cur_ref_buff + null_count, - null_count ? cur_ref_buff : 0, - cur_key_part->length, items[i], value); + /* + HEAP BLOB key parts: write lookup value directly into record[0]'s + Field_blob, bypassing the key buffer. + */ + if ((cur_key_part->key_part_flag & HA_BLOB_PART) && + cur_key_part->length == 0 && + cur_key_part->field->table->s->db_type() == heap_hton) + *ref_key= new heap_store_key_blob_ref(thd, cur_key_part->field, + items[i], value); + else + *ref_key= new store_key_item(thd, cur_key_part->field, + /* TIMOUR: + the NULL byte is taken into account in + cur_key_part->store_length, so instead of + cur_ref_buff + MY_TEST(maybe_null), we could + use that information instead. + */ + cur_ref_buff + null_count, + null_count ? cur_ref_buff : 0, + cur_key_part->length, items[i], value); cur_ref_buff+= cur_key_part->store_length; } *ref_key= NULL; /* End marker. */ @@ -20502,11 +20556,12 @@ Field *create_tmp_field(TABLE *table, Item *item, Field **default_field, bool group, bool modify_item, bool table_cant_handle_bit_fields, - bool make_copy_field) + bool make_copy_field, + bool is_heap_engine= false) { Tmp_field_src src; Tmp_field_param prm(group, modify_item, table_cant_handle_bit_fields, - make_copy_field); + make_copy_field, is_heap_engine); Field *result= item->create_tmp_field_ex(table->in_use->mem_root, table, &src, &prm); if (is_json_type(item) && make_json_valid_expr(table, result)) @@ -20736,6 +20791,15 @@ TABLE *Create_tmp_table::start(THD *thd, m_distinct= 0; // Can't use distinct } + /* + Early engine prediction: reclength is not yet known (fields not added), + so pass 0. pick_engine() with reclength=0 only skips the + reclength > HA_MAX_REC_LENGTH check, which choose_engine() will + verify later with the real value. Since HEAP promotion reduces + reclength, this is conservative. + */ + m_heap_expected= (pick_engine(thd, 0) == heap_hton); + m_alloced_field_count= param->field_count+param->func_count+param->sum_func_count; DBUG_ASSERT(m_alloced_field_count); const uint field_count= m_alloced_field_count; @@ -20863,6 +20927,8 @@ bool Create_tmp_table::add_fields(THD *thd, distinct_record_structure= true; } li.rewind(); + if (m_heap_expected) + Type_handler::set_creating_heap_tmp_table(true); while ((item=li++)) { uint uneven_delta; @@ -20913,7 +20979,8 @@ bool Create_tmp_table::add_fields(THD *thd, create_tmp_field(table, arg, ©_func, tmp_from_field, &m_default_field[fieldnr], m_group != 0, not_all_columns, - distinct_record_structure , false); + distinct_record_structure, false, + m_heap_expected); if (!new_field) goto err; // Should be OOM tmp_from_field++; @@ -20977,7 +21044,8 @@ bool Create_tmp_table::add_fields(THD *thd, */ item->marker == MARKER_NULL_KEY || param->bit_fields_as_long, - param->force_copy_fields); + param->force_copy_fields, + m_heap_expected); if (unlikely(!new_field)) { if (unlikely(thd->is_fatal_error)) @@ -21028,6 +21096,7 @@ bool Create_tmp_table::add_fields(THD *thd, DBUG_ASSERT(fieldnr == m_field_count[other] + m_field_count[distinct]); DBUG_ASSERT(m_blob_count == m_blobs_count[other] + m_blobs_count[distinct]); + Type_handler::set_creating_heap_tmp_table(false); share->fields= fieldnr; share->blob_fields= m_blob_count; table->field[fieldnr]= 0; // End marker @@ -21042,6 +21111,7 @@ bool Create_tmp_table::add_fields(THD *thd, DBUG_RETURN(false); err: + Type_handler::set_creating_heap_tmp_table(false); thd->mem_root= mem_root_save; DBUG_RETURN(true); } @@ -21652,7 +21722,37 @@ bool Create_tmp_table::add_schema_fields(THD *thd, TABLE *table, const ST_FIELD_INFO &def= defs[fieldnr]; Record_addr addr(def.nullable()); const Type_handler *h= def.type_handler(); - Field *field= h->make_schema_field(&table->mem_root, table, addr, def); + Field *field; + /* + HEAP varchar→blob promotion for I_S tables: HEAP uses fixed-width + rows, so wide VARCHARs waste their full declared octet_length per + row. BLOBs store only actual data in continuation chains. This + is the same promotion that type_handler_for_tmp_table() does at + CONVERT_IF_BIGGER_TO_BLOB (512 chars), just at a lower threshold + for HEAP. + */ + if (m_heap_expected && h == &type_handler_varchar && + def.char_length() * system_charset_info->mbmaxlen > + HEAP_CONVERT_IF_BIGGER_TO_BLOB) + { + /* + Match Type_handler_varchar::make_schema_field() blob creation: + packlength=4, system_charset_info, octet_length = char_length * + mbmaxlen. field_length stores the original octet_length so that + create_tmp_field_from_item_field() can de-promote back to VARCHAR + for CREATE TABLE ... AS SELECT. + */ + LEX_CSTRING name= def.name(); + uint32 octet_length= (uint32) def.char_length() * + system_charset_info->mbmaxlen; + field= new (&table->mem_root) + Field_blob(addr.ptr(), addr.null_ptr(), addr.null_bit(), Field::NONE, + &name, share, 4, system_charset_info); + if (field) + field->field_length= octet_length; + } + else + field= h->make_schema_field(&table->mem_root, table, addr, def); if (!field) { thd->mem_root= mem_root_save; diff --git a/sql/sql_select.h b/sql/sql_select.h index 1c607883be91e..ec90b71dc8762 100644 --- a/sql/sql_select.h +++ b/sql/sql_select.h @@ -2113,6 +2113,40 @@ class store_key_item :public store_key }; +/* + HEAP-only store_key that writes the lookup value directly into the + derived table's record[0] blob field, bypassing the SQL-layer key + buffer entirely. Non-BLOB key parts continue to use the key buffer. + + Data flow: + heap_store_key_blob_ref::copy() → Field_blob(record[0]) directly + Then materialize_heap_key_if_needed() → hp_make_key(record[0]) builds + the HEAP key. BLOB data is already in record[0]; non-BLOB parts are + copied from the key buffer to record[0] as before. + + Inherits store_key_item so copy_inner() calls item->save_in_field() + which writes into to_field (the actual Field_blob in record[0]). + The base ctor creates a throwaway Field_varstring(0) which is + immediately replaced. +*/ +class heap_store_key_blob_ref : public store_key_item +{ +public: + heap_store_key_blob_ref(THD *thd, Field *blob_field, Item *val, + bool value_arg) + : store_key_item(thd, blob_field, blob_field->ptr, + blob_field->maybe_null() ? blob_field->null_ptr : 0, + 0, val, value_arg) + { + /* Replace the dummy Field_varstring(0) with the actual blob field */ + to_field= blob_field; + } + + enum Type type() const override { return ITEM_STORE_KEY; } + const char *name() const override { return "blob_ref"; } +}; + + class store_key_const_item :public store_key_item { bool inited; diff --git a/sql/sql_type.cc b/sql/sql_type.cc index 752e4e4bc1e79..c1abd899c5927 100644 --- a/sql/sql_type.cc +++ b/sql/sql_type.cc @@ -1446,12 +1446,21 @@ Type_handler::string_type_handler(uint max_octet_length) } +static thread_local bool creating_heap_tmp_table= false; + +void Type_handler::set_creating_heap_tmp_table(bool is_heap) +{ + creating_heap_tmp_table= is_heap; +} + const Type_handler * Type_handler::varstring_type_handler(const Item *item) { if (!item->max_length) return &type_handler_string; - if (item->too_big_for_varchar()) + if ((creating_heap_tmp_table && + item->max_length > HEAP_CONVERT_IF_BIGGER_TO_BLOB) || + item->too_big_for_varchar()) return blob_type_handler(item->max_length); return &type_handler_varchar; } diff --git a/sql/sql_type.h b/sql/sql_type.h index 7d543f400d2da..560f5f9b53288 100644 --- a/sql/sql_type.h +++ b/sql/sql_type.h @@ -3717,6 +3717,7 @@ class Type_handler @param item - the Item to get the handler to. */ static const Type_handler *varstring_type_handler(const Item *item); + static void set_creating_heap_tmp_table(bool is_heap); static const Type_handler *blob_type_handler(const Item *item); static const Type_handler *get_handler_by_field_type(enum_field_types type); static const Type_handler *get_handler_by_real_type(enum_field_types type); diff --git a/sql/table.cc b/sql/table.cc index cbd4c4e1eabbf..fc5848ae4f50f 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -8436,13 +8436,14 @@ void TABLE::create_key_part_by_field(KEY_PART_INFO *key_part_info, The function checks whether a possible key satisfies the constraints imposed on the keys of any temporary table. - We need to filter out BLOB columns here, because ref access optimizer creates - KEYUSE objects for equalities for non-key columns for two puproses: - 1. To discover possible keys for derived_with_keys optimization - 2. To do hash joins - For the purpose of #1, KEYUSE objects are not created for "blob_column=..." . - However, they might be created for #2. In order to catch that case, we filter - them out here. + BLOB columns are allowed. Both HEAP (hash keys with blob continuation + chains) and Aria (unique constraints with seg->length=0) handle BLOB + key parts. The MI_MAX_KEY_LENGTH check below validates fixed-size key + metadata only; BLOB data is variable-length and doesn't contribute + (key_length() returns 0 for BLOBs, and only HA_KEY_BLOB_LENGTH is + added as metadata). add_key_field() separately filters BLOBs by + field_length <= UINT16_MAX to ensure the ref access key buffer can + be sized via KEY_PART_INFO::length (uint16). @return TRUE if the key is valid @return FALSE otherwise @@ -8459,13 +8460,20 @@ bool TABLE::check_tmp_key(uint key, uint key_parts, { uint fld_idx= next_field_no(arg); reg_field= field + fld_idx; - if ((*reg_field)->type() == MYSQL_TYPE_BLOB) - return FALSE; + /* + For BLOB fields, key_length() returns 0 which is correct here: + the MI_MAX_KEY_LENGTH check below validates the fixed-size key + metadata, not the variable-length blob data. BLOB data is + accessed via pointer (HEAP hash) or hashed separately (Aria + unique constraint), so it doesn't contribute to the fixed key + size. The BLOB part's metadata is just HA_KEY_BLOB_LENGTH (2). + */ uint fld_store_len= (uint16) (*reg_field)->key_length(); if ((*reg_field)->real_maybe_null()) fld_store_len+= HA_KEY_NULL_LENGTH; if ((*reg_field)->real_type() == MYSQL_TYPE_VARCHAR || - (*reg_field)->type() == MYSQL_TYPE_GEOMETRY) + (*reg_field)->type() == MYSQL_TYPE_GEOMETRY || + (*reg_field)->type() == MYSQL_TYPE_BLOB) fld_store_len+= HA_KEY_BLOB_LENGTH; key_len+= fld_store_len; } @@ -8545,6 +8553,15 @@ bool TABLE::add_tmp_key(uint key, uint key_parts, (*reg_field)->key_start.set_bit(key); (*reg_field)->part_of_key.set_bit(key); create_key_part_by_field(key_part_info, *reg_field, fld_idx+1); + /* + For BLOB key parts, key_part->length stays at 0 (from + key_length()) and store_length has only metadata bytes + (HA_KEY_BLOB_LENGTH + HA_KEY_NULL_LENGTH). The key buffer + has no space for BLOB data — heap_store_key_blob_ref writes + lookup values directly into record[0]'s Field_blob, and + materialize_heap_key_if_needed() builds the HEAP key from + record[0] via hp_make_key(). + */ keyinfo->key_length += key_part_info->store_length; (*reg_field)->flags|= PART_KEY_FLAG; key_start= FALSE; diff --git a/storage/heap/CMakeLists.txt b/storage/heap/CMakeLists.txt index a2179bcdab75d..3f96edda96662 100644 --- a/storage/heap/CMakeLists.txt +++ b/storage/heap/CMakeLists.txt @@ -45,4 +45,11 @@ IF(WITH_UNIT_TESTS) TARGET_COMPILE_DEFINITIONS(hp_test_key_setup-t PRIVATE MYSQL_SERVER) TARGET_LINK_LIBRARIES(hp_test_key_setup-t heap sql mytap) MY_ADD_TEST(hp_test_key_setup) + + ADD_EXECUTABLE(hp_test_blob_promotion-t + hp_test_blob_promotion-t.cc + ${CMAKE_SOURCE_DIR}/unittest/sql/dummy_builtins.cc) + TARGET_COMPILE_DEFINITIONS(hp_test_blob_promotion-t PRIVATE MYSQL_SERVER) + TARGET_LINK_LIBRARIES(hp_test_blob_promotion-t heap sql mytap) + MY_ADD_TEST(hp_test_blob_promotion) ENDIF() diff --git a/storage/heap/ha_heap.cc b/storage/heap/ha_heap.cc index 4b0c0828ef3aa..74aeec14ad4df 100644 --- a/storage/heap/ha_heap.cc +++ b/storage/heap/ha_heap.cc @@ -392,15 +392,121 @@ void ha_heap::rebuild_key_from_group_buff(HP_KEYDEF *keydef, const uchar *&key, } +/* + Parse SQL-layer key buffer into record[0] for non-GROUP BY blob indexes. + + The SQL layer builds keys using Field_blob::new_key_field() which + returns a Field_varstring. The resulting key uses 2B length + inline + data format. HEAP's hp_hashnr/hp_key_cmp expect hp_make_key format: + 4B length + data pointer. + + For materialization lookups (both semi-join and non-semi-join), the + SQL layer passes a key buffer to index_read_map() but does NOT + populate the temp table's record[0] with the lookup values. We must + parse the key buffer to extract blob data into record[0], then call + hp_make_key() to produce the HEAP-format key. + + Iterates HA_KEYSEG segments (not SQL-layer KEY_PART_INFO) because + HA_KEYSEG carries the segment's wire format (flag, bit_start for + packlength, seg->start for record offset) needed to populate + record[0] correctly for hp_make_key(). +*/ +void ha_heap::rebuild_blob_key_from_segments(HP_KEYDEF *keydef, + const uchar *&key, + my_bool blob_in_record) +{ + const uchar *key_pos= key; + for (uint seg_idx= 0; seg_idx < keydef->keysegs; seg_idx++) + { + HA_KEYSEG *seg= &keydef->seg[seg_idx]; + if (seg->null_bit) + { + /* + Copy null flag from key buffer to record[0]'s null bitmap. + hp_make_key() reads null status from rec[null_pos] & null_bit. + */ + uchar *null_byte= table->record[0] + seg->null_pos; + if (*key_pos) + *null_byte|= seg->null_bit; /* set null */ + else + *null_byte&= ~seg->null_bit; /* clear null */ + key_pos++; + } + if (seg->flag & HA_BLOB_PART) + { + if (blob_in_record) + { + /* + Direct-to-record[0] path (heap_store_key_blob_ref): BLOB + data is already in record[0]. Skip the metadata placeholder + bytes (HA_KEY_BLOB_LENGTH = 2) in the key buffer. + */ + key_pos+= HA_KEY_BLOB_LENGTH; + } + else + { + /* + Old path: BLOB data is in the key buffer as Field_varstring + format (2B length + inline data). Extract and store into + record[0]'s blob field (packlength + data pointer). + */ + uint16 varchar_len= uint2korr(key_pos); + const uchar *varchar_data= key_pos + 2; + key_pos= varchar_data + varchar_len; + + uint packlength= seg->bit_start; + uchar *blob_field= table->record[0] + seg->start; + store_lowendian((ulonglong) varchar_len, blob_field, packlength); + memcpy(blob_field + packlength, &varchar_data, sizeof(void*)); + } + continue; + } + /* + Non-BLOB segments: copy data from the key buffer to record[0]. + hp_make_key() builds the HEAP native key from record[0], so all + key part data must be there. For ref access, store_key writes + non-BLOB values into the key buffer (via new_key_field()), not + into record[0]. Copy them here. + */ + if (seg->flag & HA_VAR_LENGTH_PART) + { + /* + VARCHAR in key buffer: 2-byte length prefix + data. + In record[0]: native format (1 or 2-byte prefix per bit_start). + */ + uint16 data_len= uint2korr(key_pos); + uchar *rec_pos= table->record[0] + seg->start; + uint native_pack= seg->bit_start; + if (native_pack == 1) + *rec_pos= (uchar) data_len; + else + int2store(rec_pos, data_len); + memcpy(rec_pos + native_pack, key_pos + 2, data_len); + key_pos+= 2 + seg->length; + } + else + { + /* Fixed-length: copy directly to record[0] */ + memcpy(table->record[0] + seg->start, key_pos, seg->length); + key_pos+= seg->length; + } + } + hp_make_key(keydef, (uchar*) file->lastkey, table->record[0]); + key= (const uchar*) file->lastkey; +} + + /* Ensure the key is in HEAP's native format for blob indexes. - GROUP BY (needs_key_rebuild_from_group_buff): parse the SQL-layer group_buff - into record[0] and rebuild via hp_make_key(), because record[0]'s - blob fields may be stale after copy_funcs(). + GROUP BY (needs_key_rebuild_from_group_buff): parse the SQL-layer + group_buff into record[0] via rebuild_key_from_group_buff(), using + SQL-layer KEY_PART_INFO with store_length advancement. - DISTINCT / SJ-materialize: record[0] already has correct blob - values; build the HEAP key directly from record[0]. + DISTINCT / SJ-materialize / materialization lookup: parse the + SQL-layer key buffer via rebuild_blob_key_from_segments(), using + HA_KEYSEG iteration. This is needed because record[0] may not + contain the lookup values (the SQL layer builds the key separately). */ void ha_heap::materialize_heap_key_if_needed(uint key_index, const uchar *&key) { @@ -410,10 +516,8 @@ void ha_heap::materialize_heap_key_if_needed(uint key_index, const uchar *&key) if (keydef->needs_key_rebuild_from_group_buff) rebuild_key_from_group_buff(keydef, key, key_index); else - { - hp_make_key(keydef, (uchar*) file->lastkey, table->record[0]); - key= (const uchar*) file->lastkey; - } + rebuild_blob_key_from_segments(keydef, key, + keydef->blob_data_in_record); } } @@ -860,7 +964,18 @@ static int heap_prepare_hp_create_info(TABLE *table_arg, bool internal_table, rebuild_key_from_group_buff() to jump to uninitialized memory. */ uint pack_no_ptr= ((Field_blob*)field)->pack_length_no_ptr(); - if (key_part->length > pack_no_ptr && key_part->length < blob_max) + /* + Only widen when key_part->length does not already match + the field's logical data length. create_key_part_by_field() + sets key_part->length = field_length for blob fields, which + is the correct size for new_key_field() — widening that to + max_data_length() would create a multi-GB Field_varstring. + The DISTINCT path sets key_part->length = pack_length() + (a small value unrelated to data size) which must be widened. + */ + if (key_part->length > pack_no_ptr && + key_part->length != field->field_length && + key_part->length < blob_max) { uint len_delta= blob_max - key_part->length; key_part->length= blob_max; @@ -923,8 +1038,31 @@ static int heap_prepare_hp_create_info(TABLE *table_arg, bool internal_table, which may use stale blob pointers after copy_funcs(). */ if (keys > 0) + { keydef[0].needs_key_rebuild_from_group_buff= (table_arg->group && hp_keydef_has_blob_seg(&keydef[0])); + /* + blob_data_in_record: set when all BLOB key parts have length=0, + indicating the direct-to-record[0] path from add_tmp_key(). + heap_store_key_blob_ref writes BLOB data directly to record[0], + so rebuild_blob_key_from_segments() must skip BLOB data in the + key buffer. When FALSE, the old path applies: BLOB data is in + the key buffer and must be extracted by rebuild_blob_key_from_segments(). + */ + keydef[0].blob_data_in_record= FALSE; + if (hp_keydef_has_blob_seg(&keydef[0])) + { + KEY_PART_INFO *kp= table_arg->key_info[0].key_part; + uint nparts= table_arg->key_info[0].user_defined_key_parts; + my_bool all_zero= TRUE; + for (uint i= 0; i < nparts; i++) + { + if ((kp[i].key_part_flag & HA_BLOB_PART) && kp[i].length != 0) + all_zero= FALSE; + } + keydef[0].blob_data_in_record= all_zero; + } + } if (table_arg->found_next_number_field) { diff --git a/storage/heap/ha_heap.h b/storage/heap/ha_heap.h index c7a98b344432a..eaa05266b004e 100644 --- a/storage/heap/ha_heap.h +++ b/storage/heap/ha_heap.h @@ -127,6 +127,8 @@ class ha_heap final : public handler private: void update_key_stats(); void materialize_heap_key_if_needed(uint key_index, const uchar *&key); + void rebuild_blob_key_from_segments(HP_KEYDEF *keydef, const uchar *&key, + my_bool blob_in_record); void rebuild_key_from_group_buff(HP_KEYDEF *keydef, const uchar *&key, uint active_key_index); #ifdef HEAP_UNIT_TESTS diff --git a/storage/heap/hp_test_blob_promotion-t.cc b/storage/heap/hp_test_blob_promotion-t.cc new file mode 100644 index 0000000000000..0058f4dd5dd3c --- /dev/null +++ b/storage/heap/hp_test_blob_promotion-t.cc @@ -0,0 +1,200 @@ +/* + Unit tests for HEAP varchar→blob promotion (Phase 1). + + stale_record0_rebuild: rebuild_key_from_group_buff() must overwrite + record[0] from the GROUP BY key buffer. When the SQL layer promotes + a wide VARCHAR to BLOB for HEAP temp tables, GROUP BY / materialization + lookups pass a key buffer to index_read_map() but do NOT populate + the temp table's record[0]. Stale data in record[0] after + copy_funcs() causes hp_make_key() to build an incorrect key, + leading to hash mismatches and missing/duplicate group rows. +*/ + +#include +#include +#include +#include + +#include "sql_priv.h" +#include "sql_class.h" /* THD (full definition) */ +#include "ha_heap.h" +#include "heapdef.h" + +/* Wrapper declared in ha_heap.cc under HEAP_UNIT_TESTS */ +extern void test_rebuild_key_from_group_buff(ha_heap *handler, TABLE *tbl, + HP_INFO *fake_file, + HP_KEYDEF *keydef, + const uchar *key, uint key_index, + const uchar **rebuilt_key); + +/* + Record layout for test table (nullable tinyblob(16)): + byte 0: null bitmap (bit 2 = blob null) + bytes 1-2: blob packlength=2 (length, little-endian) + bytes 3-10: blob data pointer (8 bytes) + reclength = 11 +*/ +#define T_REC_NULL_OFFSET 0 +#define T_REC_BLOB_OFFSET 1 +#define T_REC_BLOB_PACKLEN 2 +#define T_REC_LENGTH 11 + + +/* + Helper: create a Field_blob using the full server constructor + (the same one make_table_field uses) via placement new. + Sets field_length = BLOB_PACK_LENGTH_TO_MAX_LENGH(packlength), + matching real server behavior. +*/ +static Field_blob * +make_test_field_blob(void *storage, uchar *ptr, uchar *null_ptr, + uchar null_bit, TABLE_SHARE *share, + uint packlength, CHARSET_INFO *cs) +{ + static const LEX_CSTRING fname= {STRING_WITH_LEN("")}; + return ::new (storage) Field_blob(ptr, null_ptr, null_bit, + Field::NONE, &fname, + share, packlength, + DTCollation(cs)); +} + + +static void test_stale_record0_rebuild() +{ + alignas(ha_heap) char h_storage[sizeof(ha_heap)]; + ha_heap *h= reinterpret_cast(h_storage); + memset(h_storage, 0, sizeof(h_storage)); + + uchar lastkey_buf[64]; + HP_INFO hp_info; + memset(&hp_info, 0, sizeof(hp_info)); + hp_info.lastkey= lastkey_buf; + + TABLE_SHARE tbl_share; + memset(static_cast(&tbl_share), 0, sizeof(tbl_share)); + + /* Set up blob keyseg */ + HA_KEYSEG seg; + memset(&seg, 0, sizeof(seg)); + seg.type= HA_KEYTYPE_VARTEXT1; + seg.flag= HA_BLOB_PART | HA_VAR_LENGTH_PART; + seg.start= T_REC_BLOB_OFFSET; + seg.length= 0; + seg.bit_start= T_REC_BLOB_PACKLEN; + seg.charset= &my_charset_bin; + seg.null_bit= 2; + seg.null_pos= T_REC_NULL_OFFSET; + + HP_KEYDEF keydef; + memset(&keydef, 0, sizeof(keydef)); + keydef.keysegs= 1; + keydef.seg= &seg; + keydef.algorithm= HA_KEY_ALG_HASH; + keydef.length= 1 + 4 + (uint) sizeof(void*); + keydef.has_blob_seg= 1; + + uchar rec_buf[T_REC_LENGTH]; + alignas(Field_blob) char blob_storage[sizeof(Field_blob)]; + Field_blob *blob_field= make_test_field_blob(blob_storage, + rec_buf + T_REC_BLOB_OFFSET, + rec_buf + T_REC_NULL_OFFSET, + 2, &tbl_share, + T_REC_BLOB_PACKLEN, + &my_charset_bin); + + KEY_PART_INFO kpi; + memset(&kpi, 0, sizeof(kpi)); + kpi.field= blob_field; + kpi.offset= T_REC_BLOB_OFFSET; + kpi.length= (uint16) blob_field->pack_length(); + kpi.key_part_flag= blob_field->key_part_flag(); + kpi.null_bit= 2; /* matches seg.null_bit — field is nullable */ + + KEY sql_key; + memset(&sql_key, 0, sizeof(sql_key)); + sql_key.user_defined_key_parts= 1; + sql_key.usable_key_parts= 1; + sql_key.key_part= &kpi; + sql_key.algorithm= HA_KEY_ALG_HASH; + + TABLE tbl; + memset(static_cast(&tbl), 0, sizeof(tbl)); + tbl.record[0]= rec_buf; + tbl.key_info= &sql_key; + tbl.s= &tbl_share; + + blob_field->table= &tbl; + + /* --- test data --- */ + const uchar *correct_data= (const uchar*) "1 - 00xxxxxxxxxx"; + const uint16 correct_len= 16; + const uchar *stale_data= (const uchar*) "1 - 03xxxxxxxxxx"; + const uint16 stale_len= 16; + + /* Compute reference hashes */ + auto hash_record= [&](const uchar *data, uint16 len) -> ulong { + uchar rec[T_REC_LENGTH]; + memset(rec, 0, sizeof(rec)); + int2store(rec + T_REC_BLOB_OFFSET, len); + memcpy(rec + T_REC_BLOB_OFFSET + T_REC_BLOB_PACKLEN, + &data, sizeof(void*)); + return hp_rec_hashnr(&keydef, rec); + }; + + ulong correct_hash= hash_record(correct_data, correct_len); + ulong stale_hash= hash_record(stale_data, stale_len); + + ok(correct_hash != stale_hash, + "stale_record0 setup: correct hash != stale hash"); + + /* Pre-populate record[0] with STALE data */ + memset(rec_buf, 0, T_REC_LENGTH); + int2store(rec_buf + T_REC_BLOB_OFFSET, stale_len); + memcpy(rec_buf + T_REC_BLOB_OFFSET + T_REC_BLOB_PACKLEN, + &stale_data, sizeof(void*)); + + /* Build varstring key with CORRECT data: [null_flag][2B len][data] */ + uchar vkey[64]; + uchar *p= vkey; + *p++= 0; /* not null */ + int2store(p, correct_len); p+= 2; + memcpy(p, correct_data, correct_len); p+= correct_len; + + /* + Set store_length to match the key buffer layout: + null_flag(1) + varchar_len_prefix(2) + data(correct_len) + */ + kpi.store_length= 1 + 2 + correct_len; + + /* Call rebuild_key_from_group_buff via test wrapper */ + const uchar *rebuilt; + test_rebuild_key_from_group_buff(h, &tbl, &hp_info, &keydef, + vkey, 0, &rebuilt); + + /* Hash record[0] after rebuild — must match correct, not stale */ + ulong rebuilt_hash= hp_rec_hashnr(&keydef, rec_buf); + + ok(rebuilt_hash == correct_hash, + "stale_record0: rebuilt hash (%lu) == correct hash (%lu)", + rebuilt_hash, correct_hash); + ok(rebuilt_hash != stale_hash, + "stale_record0: rebuilt hash (%lu) != stale hash (%lu)", + rebuilt_hash, stale_hash); + + blob_field->~Field_blob(); +} + + +int main(int argc __attribute__((unused)), + char **argv __attribute__((unused))) +{ + MY_INIT("hp_test_blob_promotion"); + system_charset_info= &my_charset_latin1; + plan(3); + + diag("stale_record0_rebuild: promoted blob GROUP BY key overwrites stale record[0]"); + test_stale_record0_rebuild(); + + my_end(0); + return exit_status(); +} diff --git a/storage/heap/hp_test_key_setup-t.cc b/storage/heap/hp_test_key_setup-t.cc index c933a76c05491..07f3fe8ca745b 100644 --- a/storage/heap/hp_test_key_setup-t.cc +++ b/storage/heap/hp_test_key_setup-t.cc @@ -1127,6 +1127,338 @@ static void test_varchar_promoted_to_blob() } +/* + derived_with_keys_no_widening: when create_key_part_by_field() sets + key_part->length = field_length for a promoted BLOB, heap_prepare + must NOT widen to max_data_length(). + + Contrast with the promoted_blob test above where key_part->length = 20 + (a stale varchar-like value != field_length) which DOES get widened. + + The derived_with_keys path (ref access on materialized derived tables) + sets key_part->length = field_length via create_key_part_by_field(). + Field_blob::new_key_field() creates a Field_varstring of that length, + so widening to max_data_length() would create a multi-GB Field_varstring. +*/ +static void test_derived_blob_key_no_widening() +{ + static const LEX_CSTRING fname_id= {STRING_WITH_LEN("id")}; + + /* + Simulate a derived table with two fields: + - id: INT (4 bytes) at offset 1 + - TABLE_SCHEMA: BLOB promoted from VARCHAR(64) utf8 at offset 5 + packlength=4, field_length=192 (64*3) + Record layout: + byte 0: null bitmap + bytes 1-4: INT + bytes 5-8: blob packlength=4 (length, little-endian) + bytes 9-16: blob data pointer (8 bytes) + reclength = 17 + */ +#define DWK_REC_LENGTH 17 +#define DWK_INT_OFFSET 1 +#define DWK_BLOB_OFFSET 5 +#define DWK_BLOB_PACKLEN 4 +#define DWK_BLOB_FIELD_LENGTH 192 /* VARCHAR(64) * 3 (utf8 mbmaxlen) */ + + uchar rec_buf[DWK_REC_LENGTH + 8]; + memset(rec_buf, 0, sizeof(rec_buf)); + + TABLE_SHARE share; + memset(static_cast(&share), 0, sizeof(share)); + share.fields= 2; + share.keys= 1; + share.reclength= DWK_REC_LENGTH; + share.rec_buff_length= DWK_REC_LENGTH; + share.db_record_offset= 1; + share.blob_fields= 0; + + /* Field 0: INT at offset 1 */ + alignas(Field_long) char fl_storage[sizeof(Field_long)]; + Field_long *fl= ::new (fl_storage) Field_long( + rec_buf + DWK_INT_OFFSET, 11, (uchar*) 0, 0, + Field::NONE, &fname_id, false, false); + fl->field_index= 0; + + /* Field 1: BLOB promoted from VARCHAR(64) utf8 */ + alignas(Field_blob) char bf_storage[sizeof(Field_blob)]; + Field_blob *bf= make_test_field_blob(bf_storage, + rec_buf + DWK_BLOB_OFFSET, + (uchar*) 0, 0, + &share, DWK_BLOB_PACKLEN, + &my_charset_utf8mb3_general_ci); + bf->field_index= 1; + /* Simulate Phase 1 promotion: set field_length to original VARCHAR size */ + bf->field_length= DWK_BLOB_FIELD_LENGTH; + + Field *field_array[3]= { fl, bf, NULL }; + + uint blob_offsets[1]= { 1 }; + share.blob_field= blob_offsets; + + /* + KEY_PART_INFO: set up as create_key_part_by_field() does for BLOB. + key_part->length = field_length (192), NOT pack_length. + key_part->key_part_flag = HA_BLOB_PART (from Field_blob::key_part_flag()). + */ + KEY_PART_INFO kpis[2]; + memset(kpis, 0, sizeof(kpis)); + + kpis[0].field= fl; + kpis[0].offset= DWK_INT_OFFSET; + kpis[0].length= 4; + kpis[0].key_part_flag= 0; + kpis[0].type= fl->key_type(); + kpis[0].store_length= 4; + + kpis[1].field= bf; + kpis[1].offset= DWK_BLOB_OFFSET; + kpis[1].length= DWK_BLOB_FIELD_LENGTH; /* = field_length, NOT pack_length */ + kpis[1].key_part_flag= bf->key_part_flag(); /* HA_BLOB_PART */ + kpis[1].type= bf->key_type(); + kpis[1].store_length= DWK_BLOB_FIELD_LENGTH + bf->key_part_length_bytes(); + + KEY sql_key; + memset(&sql_key, 0, sizeof(sql_key)); + sql_key.user_defined_key_parts= 2; + sql_key.usable_key_parts= 2; + sql_key.key_part= kpis; + sql_key.algorithm= HA_KEY_ALG_HASH; + sql_key.key_length= kpis[0].store_length + kpis[1].store_length; + + TABLE test_table; + memset(static_cast(&test_table), 0, sizeof(test_table)); + test_table.record[0]= rec_buf; + test_table.s= &share; + test_table.field= field_array; + test_table.key_info= &sql_key; + share.key_info= &sql_key; + + fl->table= &test_table; + bf->table= &test_table; + + Fake_thd_guard thd_guard; + + HP_CREATE_INFO hp_ci; + memset(&hp_ci, 0, sizeof(hp_ci)); + hp_ci.max_table_size= 1024*1024; + hp_ci.keys= 1; + hp_ci.reclength= DWK_REC_LENGTH; + + int err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); + + ok(err == 0, + "derived_no_widening: heap_prepare succeeded (err=%d)", err); + + HP_KEYDEF *kd= &hp_ci.keydef[0]; + + /* seg[0]: INT — unchanged */ + ok(kd->seg[0].length == 4, + "derived_no_widening: seg[0].length = %u (expected 4)", + (uint) kd->seg[0].length); + + /* seg[1]: promoted blob — seg->length = 0 (blob convention) */ + ok(kd->seg[1].flag & HA_BLOB_PART, + "derived_no_widening: seg[1] has HA_BLOB_PART"); + ok(kd->seg[1].length == 0, + "derived_no_widening: seg[1].length = %u (expected 0)", + (uint) kd->seg[1].length); + + /* key_part->length must NOT be widened to max_data_length() */ + ok(kpis[1].length == DWK_BLOB_FIELD_LENGTH, + "derived_no_widening: key_part.length = %u (expected %u, NOT %u)", + (uint) kpis[1].length, DWK_BLOB_FIELD_LENGTH, + (uint) bf->max_data_length()); + + /* store_length and key_length should also be unchanged */ + uint expected_store= DWK_BLOB_FIELD_LENGTH + bf->key_part_length_bytes(); + ok(kpis[1].store_length == expected_store, + "derived_no_widening: store_length = %u (expected %u)", + (uint) kpis[1].store_length, expected_store); + + my_free(hp_ci.keydef); + my_free(hp_ci.blob_descs); + bf->~Field_blob(); + fl->~Field_long(); + +#undef DWK_REC_LENGTH +#undef DWK_INT_OFFSET +#undef DWK_BLOB_OFFSET +#undef DWK_BLOB_PACKLEN +#undef DWK_BLOB_FIELD_LENGTH +} + + +/* + derived_blob_key_longblob: LONGBLOB (packlength=4, field_length=UINT32_MAX) + with key_part->length = 0 and metadata-only store_length. + + This simulates the direct-to-record[0] path where add_tmp_key() leaves + BLOB key parts with length=0 (from key_length()) and store_length has + only HA_KEY_BLOB_LENGTH (2 bytes) + HA_KEY_NULL_LENGTH. The key buffer + has no space for BLOB data — heap_store_key_blob_ref writes directly + into record[0]'s Field_blob. + + heap_prepare_hp_create_info must handle this correctly: + - seg->flag = HA_BLOB_PART + - seg->length = 0 + - No widening (key_part->length = 0 < pack_no_ptr, condition is FALSE) +*/ +static void test_derived_blob_key_longblob() +{ + static const LEX_CSTRING fname_id= {STRING_WITH_LEN("id")}; + + /* + Record layout: + byte 0: null bitmap + bytes 1-4: INT + bytes 5-8: blob packlength=4 (LONGBLOB) + bytes 9-16: blob data pointer (8 bytes) + reclength = 17 + */ +#define LB_REC_LENGTH 17 +#define LB_INT_OFFSET 1 +#define LB_BLOB_OFFSET 5 +#define LB_BLOB_PACKLEN 4 + + uchar rec_buf[LB_REC_LENGTH + 8]; + memset(rec_buf, 0, sizeof(rec_buf)); + + TABLE_SHARE share; + memset(static_cast(&share), 0, sizeof(share)); + share.fields= 2; + share.keys= 1; + share.reclength= LB_REC_LENGTH; + share.rec_buff_length= LB_REC_LENGTH; + share.db_record_offset= 1; + share.blob_fields= 0; + + /* Field 0: INT at offset 1 */ + alignas(Field_long) char fl_storage[sizeof(Field_long)]; + Field_long *fl= ::new (fl_storage) Field_long( + rec_buf + LB_INT_OFFSET, 11, (uchar*) 0, 0, + Field::NONE, &fname_id, false, false); + fl->field_index= 0; + + /* Field 1: LONGBLOB at offset 5 (packlength=4) */ + alignas(Field_blob) char bf_storage[sizeof(Field_blob)]; + Field_blob *bf= make_test_field_blob(bf_storage, + rec_buf + LB_BLOB_OFFSET, + rec_buf, 2, /* nullable, null_bit=2 */ + &share, LB_BLOB_PACKLEN, + &my_charset_latin1); + bf->field_index= 1; + + Field *field_array[3]= { fl, bf, NULL }; + + uint blob_offsets[1]= { 1 }; + share.blob_field= blob_offsets; + + /* + KEY_PART_INFO: simulates what add_tmp_key() produces with the + direct-to-record[0] fix — no BLOB length override. + key_part->length = 0 (from Field_blob::key_length()) + store_length = 0 + HA_KEY_BLOB_LENGTH(2) + HA_KEY_NULL_LENGTH(1) = 3 + */ + KEY_PART_INFO kpis[2]; + memset(kpis, 0, sizeof(kpis)); + + kpis[0].field= fl; + kpis[0].offset= LB_INT_OFFSET; + kpis[0].length= 4; + kpis[0].key_part_flag= 0; + kpis[0].type= fl->key_type(); + kpis[0].store_length= 4; + + kpis[1].field= bf; + kpis[1].offset= LB_BLOB_OFFSET; + kpis[1].length= 0; /* key_length() = 0 for blobs */ + kpis[1].null_bit= 2; + kpis[1].null_offset= 0; + kpis[1].key_part_flag= bf->key_part_flag(); /* HA_BLOB_PART */ + kpis[1].type= bf->key_type(); + /* store_length = HA_KEY_BLOB_LENGTH + HA_KEY_NULL_LENGTH = 3 */ + kpis[1].store_length= HA_KEY_BLOB_LENGTH + HA_KEY_NULL_LENGTH; + + KEY sql_key; + memset(&sql_key, 0, sizeof(sql_key)); + sql_key.user_defined_key_parts= 2; + sql_key.usable_key_parts= 2; + sql_key.key_part= kpis; + sql_key.algorithm= HA_KEY_ALG_HASH; + sql_key.key_length= kpis[0].store_length + kpis[1].store_length; + + TABLE test_table; + memset(static_cast(&test_table), 0, sizeof(test_table)); + test_table.record[0]= rec_buf; + test_table.s= &share; + test_table.field= field_array; + test_table.key_info= &sql_key; + share.key_info= &sql_key; + + fl->table= &test_table; + bf->table= &test_table; + + Fake_thd_guard thd_guard; + + HP_CREATE_INFO hp_ci; + memset(&hp_ci, 0, sizeof(hp_ci)); + hp_ci.max_table_size= 1024*1024; + hp_ci.keys= 1; + hp_ci.reclength= LB_REC_LENGTH; + + int err= test_heap_prepare_hp_create_info(&test_table, TRUE, &hp_ci); + + ok(err == 0, + "longblob: heap_prepare succeeded (err=%d)", err); + + HP_KEYDEF *kd= &hp_ci.keydef[0]; + ok(kd->keysegs == 2, + "longblob: keysegs = %u (expected 2)", kd->keysegs); + ok(kd->has_blob_seg != 0, + "longblob: has_blob_seg is set"); + + /* seg[0]: INT — unchanged */ + ok(kd->seg[0].length == 4, + "longblob: seg[0].length = %u (expected 4)", + (uint) kd->seg[0].length); + ok(!(kd->seg[0].flag & HA_BLOB_PART), + "longblob: seg[0] has NO HA_BLOB_PART"); + + /* seg[1]: LONGBLOB — must have HA_BLOB_PART, length=0 */ + ok(kd->seg[1].flag & HA_BLOB_PART, + "longblob: seg[1].flag (0x%x) has HA_BLOB_PART", + (uint) kd->seg[1].flag); + ok(kd->seg[1].length == 0, + "longblob: seg[1].length = %u (expected 0)", + (uint) kd->seg[1].length); + /* + bit_start (packlength) is set later by hp_create() from blob_descs, + not by heap_prepare_hp_create_info(). Don't check it here. + */ + + /* key_part->length must NOT be widened (0 < pack_no_ptr → no widening) */ + ok(kpis[1].length == 0, + "longblob: key_part.length = %u (expected 0, not widened)", + (uint) kpis[1].length); + + /* store_length remains metadata-only */ + ok(kpis[1].store_length == HA_KEY_BLOB_LENGTH + HA_KEY_NULL_LENGTH, + "longblob: store_length = %u (expected %u = metadata only)", + (uint) kpis[1].store_length, + (uint)(HA_KEY_BLOB_LENGTH + HA_KEY_NULL_LENGTH)); + + my_free(hp_ci.keydef); + my_free(hp_ci.blob_descs); + bf->~Field_blob(); + fl->~Field_long(); + +#undef LB_REC_LENGTH +#undef LB_INT_OFFSET +#undef LB_BLOB_OFFSET +#undef LB_BLOB_PACKLEN +} /* @@ -1407,7 +1739,7 @@ int main(int argc __attribute__((unused)), MY_INIT("hp_test_key_setup"); /* Field constructors reference system_charset_info via DTCollation */ system_charset_info= &my_charset_latin1; - plan(63); + plan(78); diag("distinct_key_truncation: key_part->length widened for blob key parts"); test_distinct_key_truncation(); @@ -1434,6 +1766,12 @@ int main(int argc __attribute__((unused)), diag("promoted_blob: varchar promoted to blob in tmp table"); test_varchar_promoted_to_blob(); + diag("derived_no_widening: blob key_part.length = field_length must not be widened"); + test_derived_blob_key_no_widening(); + + diag("longblob: LONGBLOB with metadata-only store_length (direct-to-record[0])"); + test_derived_blob_key_longblob(); + diag("needs_rebuild: needs_key_rebuild_from_group_buff flag with/without table->group"); test_needs_key_rebuild_from_group_buff(); diff --git a/storage/spider/mysql-test/spider/bugfix/r/mdev_33538.result b/storage/spider/mysql-test/spider/bugfix/r/mdev_33538.result index a5ab3c1d836d6..0a14e77f27a24 100644 --- a/storage/spider/mysql-test/spider/bugfix/r/mdev_33538.result +++ b/storage/spider/mysql-test/spider/bugfix/r/mdev_33538.result @@ -2,8 +2,8 @@ show create table information_schema.SPIDER_ALLOC_MEM; Table Create Table SPIDER_ALLOC_MEM CREATE TEMPORARY TABLE `SPIDER_ALLOC_MEM` ( `ID` int(10) unsigned NOT NULL, - `FUNC_NAME` varchar(64), - `FILE_NAME` varchar(64), + `FUNC_NAME` longtext, + `FILE_NAME` longtext, `LINE_NO` int(10) unsigned, `TOTAL_ALLOC_MEM` bigint(20) unsigned, `CURRENT_ALLOC_MEM` bigint(20), diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index f6172f6053936..2a22f0a7b66c7 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -7842,9 +7842,8 @@ static void test_explain_bug() DIE_UNLESS(6 == mysql_num_fields(result)); verify_prepare_field(result, 0, "Field", "COLUMN_NAME", - mysql_get_server_version(mysql) <= 50000 ? - MYSQL_TYPE_STRING : MYSQL_TYPE_VAR_STRING, - 0, 0, "information_schema", 64, 0); + MYSQL_TYPE_BLOB, + 0, 0, "information_schema", 0, 0); verify_prepare_field(result, 1, "Type", "COLUMN_TYPE", MYSQL_TYPE_BLOB, 0, 0, "information_schema", 0, 0); @@ -7877,9 +7876,8 @@ static void test_explain_bug() } verify_prepare_field(result, 5, "Extra", "EXTRA", - mysql_get_server_version(mysql) <= 50000 ? - MYSQL_TYPE_STRING : MYSQL_TYPE_VAR_STRING, - 0, 0, "information_schema", 80, 0); + MYSQL_TYPE_BLOB, + 0, 0, "information_schema", 0, 0); mysql_free_result(result); mysql_stmt_close(stmt);