From a6350b1d05cacde74f606fdcbdf51f7acca9e965 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 28 Jul 2005 12:30:52 +0300 Subject: [PATCH] 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. --- innobase/row/row0sel.c | 12 ++++++++++-- mysql-test/r/innodb.result | 8 ++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/innobase/row/row0sel.c b/innobase/row/row0sel.c index 602f5855171..9234c4aeb26 100644 --- a/innobase/row/row0sel.c +++ b/innobase/row/row0sel.c @@ -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)) { diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result index 2c73cbeeea4..2bdec5125dd 100644 --- a/mysql-test/r/innodb.result +++ b/mysql-test/r/innodb.result @@ -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