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);
|
(byte) (templ->mysql_null_bit_mask);
|
||||||
switch (templ->type) {
|
switch (templ->type) {
|
||||||
case DATA_VARCHAR:
|
case DATA_VARCHAR:
|
||||||
case DATA_CHAR:
|
|
||||||
case DATA_BINARY:
|
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_FIXBINARY:
|
||||||
case DATA_MYSQL:
|
case DATA_MYSQL:
|
||||||
case DATA_VARMYSQL:
|
|
||||||
/* MySQL pads all non-BLOB and non-TEXT
|
/* MySQL pads all non-BLOB and non-TEXT
|
||||||
string types with space ' ' */
|
string types with space ' ' */
|
||||||
if (UNIV_UNLIKELY(templ->mbminlen == 2)) {
|
if (UNIV_UNLIKELY(templ->mbminlen == 2)) {
|
||||||
|
@@ -1452,16 +1452,16 @@ Error 1146 Table 'test.t4' doesn't exist
|
|||||||
checksum table t1, t2, t3, t4;
|
checksum table t1, t2, t3, t4;
|
||||||
Table Checksum
|
Table Checksum
|
||||||
test.t1 2948697075
|
test.t1 2948697075
|
||||||
test.t2 1157260244
|
test.t2 3835700799
|
||||||
test.t3 1157260244
|
test.t3 3835700799
|
||||||
test.t4 NULL
|
test.t4 NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Error 1146 Table 'test.t4' doesn't exist
|
Error 1146 Table 'test.t4' doesn't exist
|
||||||
checksum table t1, t2, t3, t4 extended;
|
checksum table t1, t2, t3, t4 extended;
|
||||||
Table Checksum
|
Table Checksum
|
||||||
test.t1 3092701434
|
test.t1 3092701434
|
||||||
test.t2 1157260244
|
test.t2 3835700799
|
||||||
test.t3 1157260244
|
test.t3 3835700799
|
||||||
test.t4 NULL
|
test.t4 NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Error 1146 Table 'test.t4' doesn't exist
|
Error 1146 Table 'test.t4' doesn't exist
|
||||||
|
Reference in New Issue
Block a user