mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
Fix for bug #34779: crash in checksum table on federated tables
with blobs containing nulls Problem: FEDERATED SE improperly stores NULL fields in the record buffer. Fix: store them properly. mysql-test/r/federated.result: Fix for bug #34779: crash in checksum table on federated tables with blobs containing nulls - test result. mysql-test/t/federated.test: Fix for bug #34779: crash in checksum table on federated tables with blobs containing nulls - test case. sql/ha_federated.cc: Fix for bug #34779: crash in checksum table on federated tables with blobs containing nulls - storing a NULL field in the record buffer we must initialize its data as other code may rely on it.
This commit is contained in:
parent
368f7f63b2
commit
2b179caf9a
3 changed files with 36 additions and 0 deletions
|
@ -2071,7 +2071,18 @@ DROP TABLE t1;
|
|||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT) ENGINE=federated CONNECTION='mysql://@:://';
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a LONGBLOB, b LONGBLOB);
|
||||
INSERT INTO t1 VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaa', NULL);
|
||||
CREATE TABLE t1
|
||||
(a LONGBLOB, b LONGBLOB) ENGINE=FEDERATED
|
||||
CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/test/t1';
|
||||
CHECKSUM TABLE t1;
|
||||
Table Checksum
|
||||
test.t1 2465757603
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
DROP DATABASE IF EXISTS federated;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
DROP DATABASE IF EXISTS federated;
|
||||
End of 5.0 tests
|
||||
|
|
|
@ -1750,4 +1750,26 @@ DROP TABLE t1;
|
|||
CREATE TABLE t1 (a INT) ENGINE=federated CONNECTION='mysql://@:://';
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug #34779: crash in checksum table on federated tables with blobs
|
||||
# containing nulls
|
||||
#
|
||||
connection slave;
|
||||
CREATE TABLE t1 (a LONGBLOB, b LONGBLOB);
|
||||
INSERT INTO t1 VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaa', NULL);
|
||||
connection master;
|
||||
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||
eval CREATE TABLE t1
|
||||
(a LONGBLOB, b LONGBLOB) ENGINE=FEDERATED
|
||||
CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/test/t1';
|
||||
CHECKSUM TABLE t1;
|
||||
connection slave;
|
||||
DROP TABLE t1;
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
source include/federated_cleanup.inc;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
|
@ -731,7 +731,10 @@ uint ha_federated::convert_row_to_internal_format(byte *record,
|
|||
old_ptr= (my_ptrdiff_t) (record - table->record[0]);
|
||||
(*field)->move_field(old_ptr);
|
||||
if (!row[x])
|
||||
{
|
||||
(*field)->set_null();
|
||||
(*field)->reset();
|
||||
}
|
||||
else
|
||||
{
|
||||
(*field)->set_notnull();
|
||||
|
|
Loading…
Reference in a new issue