mirror of
https://github.com/MariaDB/server.git
synced 2026-04-25 09:45:31 +02:00
Fix Bug #21328 mysqld issues warnings on ALTER CSV table to MyISAM
mysql-test/r/csv.result: update result file mysql-test/r/log_tables.result: log_tables test contains alter of a CSV table with NULLs which results in warnings. In fact this is how the bug noticed. So, now when it is fixed we should update result file. mysql-test/t/csv.test: add a test for the bug storage/csv/ha_tina.cc: We should write 0 to the data file in the case we meet NULL. CSV does not support NULL values internally and we shouldn't distinguish them from 0 when writing a row (the alternative is to implement full NULL support). Otherwise other routines (such as Field::check_int() become confused). In 5.0 NULLs are stored as zeroes. In 5.1 it somehow turned into empty string. Which is wrong.
This commit is contained in:
parent
23776f53ff
commit
ebd5aec15e
4 changed files with 26 additions and 5 deletions
|
|
@ -542,14 +542,16 @@ int ha_tina::encode_quote(byte *buf)
|
|||
const char *end_ptr;
|
||||
|
||||
/*
|
||||
Write an empty string to the buffer in case of a NULL value.
|
||||
CSV does not support nulls. Write quoted 0 to the buffer. In fact,
|
||||
(*field)->val_str(&attribute,&attribute) would usually return 0
|
||||
in this case but we write it explicitly here.
|
||||
Basically this is a safety check, as no one ensures that the
|
||||
field content is cleaned up every time we use Field::set_null()
|
||||
in the code.
|
||||
*/
|
||||
if ((*field)->is_null())
|
||||
{
|
||||
buffer.append(STRING_WITH_LEN("\"\","));
|
||||
buffer.append(STRING_WITH_LEN("\"0\","));
|
||||
continue;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue