mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
row_sel_store_mysql_rec(): Convert NULL true VARCHAR columns
correctly. innobase/row/row0sel.c: Initialize NULL true VARCHAR columns with NUL bytes, as that is what the columns will contain in handler::write_row(). (Bug #12186) mysql-test/r/innodb.result: Update table checksums to reflect the new handling of true VARCHAR columns that are NULL.
This commit is contained in:
@@ -2524,11 +2524,19 @@ row_sel_store_mysql_rec(
|
||||
(byte) (templ->mysql_null_bit_mask);
|
||||
switch (templ->type) {
|
||||
case DATA_VARCHAR:
|
||||
case DATA_CHAR:
|
||||
case DATA_BINARY:
|
||||
case DATA_VARMYSQL:
|
||||
if (templ->mysql_type
|
||||
== DATA_MYSQL_TRUE_VARCHAR) {
|
||||
/* This is a >= 5.0.3 type
|
||||
true VARCHAR. Zero the field. */
|
||||
pad_char = 0x00;
|
||||
break;
|
||||
}
|
||||
/* Fall through */
|
||||
case DATA_CHAR:
|
||||
case DATA_FIXBINARY:
|
||||
case DATA_MYSQL:
|
||||
case DATA_VARMYSQL:
|
||||
/* MySQL pads all non-BLOB and non-TEXT
|
||||
string types with space ' ' */
|
||||
if (UNIV_UNLIKELY(templ->mbminlen == 2)) {
|
||||
|
@@ -1452,16 +1452,16 @@ Error 1146 Table 'test.t4' doesn't exist
|
||||
checksum table t1, t2, t3, t4;
|
||||
Table Checksum
|
||||
test.t1 2948697075
|
||||
test.t2 1157260244
|
||||
test.t3 1157260244
|
||||
test.t2 3835700799
|
||||
test.t3 3835700799
|
||||
test.t4 NULL
|
||||
Warnings:
|
||||
Error 1146 Table 'test.t4' doesn't exist
|
||||
checksum table t1, t2, t3, t4 extended;
|
||||
Table Checksum
|
||||
test.t1 3092701434
|
||||
test.t2 1157260244
|
||||
test.t3 1157260244
|
||||
test.t2 3835700799
|
||||
test.t3 3835700799
|
||||
test.t4 NULL
|
||||
Warnings:
|
||||
Error 1146 Table 'test.t4' doesn't exist
|
||||
|
Reference in New Issue
Block a user