| Bug #18643 | crazy UNCOMPRESS() | ||
|---|---|---|---|
| Submitted: | 30 Mar 2006 9:03 | Modified: | 1 May 2006 0:03 |
| Reporter: | Balazs Odor | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S3 (Non-critical) |
| Version: | 4.1, 5.0.21-BK, 5.0.18-log | OS: | Linux (Linux) |
| Assigned to: | Ramil Kalimullin | CPU Architecture: | Any |
[30 Mar 2006 9:03]
Balazs Odor
[30 Mar 2006 9:04]
Balazs Odor
CREATE TABLE and INSERT INTO data
Attachment: table.sql (text/plain), 79.31 KiB.
[30 Mar 2006 11:41]
Valeriy Kravchuk
Thank you for a bug report. Verified just as described on your data with 5.021-BK (ChangeSet@1.2120, 2006-03-30 08:13:49+02:00) on SuSE Linux:
mysql> SELECT `id`, UNCOMPRESSED_LENGTH(`user_agent`), UNCOMPRESS(`user_agent`)
, UNCOMPRESSED_LENGTH(`param_others`), UNCOMPRESS(`param_others`) FROM `logs` W
HERE `id` <= 959835 ORDER BY `id` DESC LIMIT 10\G
*************************** 1. row ***************************
id: 959835
UNCOMPRESSED_LENGTH(`user_agent`): NULL
UNCOMPRESS(`user_agent`): NULL
UNCOMPRESSED_LENGTH(`param_others`): 316
UNCOMPRESS(`param_others`): a:10:{s:5:"order";s:3:"Nйv";s:10:"order_typ
e";s:2:"AZ";s:10:"table_from";s:1:"0";s:10:"filter_nev";s:9:"Krisztina";s:21:"fi
lter_allando_lakcim";s:0:"";s:14:"filter_date_in";s:0:"";s:18:"table_pager_selec
t";s:1:"1";s:19:"display_size_change";s:4:"1024";s:19:"template_style_file";s:3:
"yes";s:9:"dump_send";s:3:"yes";}
*************************** 2. row ***************************
id: 959834
UNCOMPRESSED_LENGTH(`user_agent`): 55
UNCOMPRESS(`user_agent`): Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1)
UNCOMPRESSED_LENGTH(`param_others`): NULL
UNCOMPRESS(`param_others`): 77
*************************** 3. row ***************************
id: 959833
UNCOMPRESSED_LENGTH(`user_agent`): 55
UNCOMPRESS(`user_agent`): Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1)
UNCOMPRESSED_LENGTH(`param_others`): NULL
UNCOMPRESS(`param_others`): NULL
*************************** 4. row ***************************
id: 959832
UNCOMPRESSED_LENGTH(`user_agent`): 55
UNCOMPRESS(`user_agent`): Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1)
UNCOMPRESSED_LENGTH(`param_others`): NULL
UNCOMPRESS(`param_others`): 87
*************************** 5. row ***************************
id: 959831
UNCOMPRESSED_LENGTH(`user_agent`): 55
UNCOMPRESS(`user_agent`): Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1)
UNCOMPRESSED_LENGTH(`param_others`): NULL
UNCOMPRESS(`param_others`): NULL
*************************** 6. row ***************************
id: 959830
UNCOMPRESSED_LENGTH(`user_agent`): 55
UNCOMPRESS(`user_agent`): Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1)
UNCOMPRESSED_LENGTH(`param_others`): NULL
UNCOMPRESS(`param_others`): 87
*************************** 7. row ***************************
id: 959829
UNCOMPRESSED_LENGTH(`user_agent`): 55
UNCOMPRESS(`user_agent`): Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1)
UNCOMPRESSED_LENGTH(`param_others`): NULL
UNCOMPRESS(`param_others`): NULL
*************************** 8. row ***************************
id: 959828
UNCOMPRESSED_LENGTH(`user_agent`): 55
UNCOMPRESS(`user_agent`): Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1)
UNCOMPRESSED_LENGTH(`param_others`): NULL
UNCOMPRESS(`param_others`): NULL
*************************** 9. row ***************************
id: 959827
UNCOMPRESSED_LENGTH(`user_agent`): 55
UNCOMPRESS(`user_agent`): Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1)
UNCOMPRESSED_LENGTH(`param_others`): NULL
UNCOMPRESS(`param_others`): NULL
*************************** 10. row ***************************
id: 959826
UNCOMPRESSED_LENGTH(`user_agent`): 55
UNCOMPRESS(`user_agent`): Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1)
UNCOMPRESSED_LENGTH(`param_others`): NULL
UNCOMPRESS(`param_others`): NULL
10 rows in set (0.00 sec)
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.21 |
+-----------+
1 row in set (0.00 sec)
If your data is really created like you described, it is a bug.
[13 Apr 2006 7:06]
Ramil Kalimullin
Hi Balazs! Your file (table.sql) contains NULL values, for instance: mysql> select id, isnull(user_agent) from logs where id=959835; +--------+--------------------+ | id | isnull(user_agent) | +--------+--------------------+ | 959835 | 1 | +--------+--------------------+ Looking at the file I see NULL in the record, indeed. So we get NULLs using UNCOMPRESS() and UNCOMPRESSED_LENGTH() functions (the same for other records).
[13 Apr 2006 8:22]
Balazs Odor
In reality `user_agent` IS NULL where id = 959835, but:
Query #1:
> SELECT `id`, UNCOMPRESSED_LENGTH(`user_agent`), UNCOMPRESS(`user_agent`), UNCOMPRESSED_LENGTH(`param_others`), UNCOMPRESS(`param_others`) FROM `logs` WHERE `id` <= 959835 ORDER BY `id` DESC limit 2;
Result #1:
UNCOMPRESSED_LENGTH(`param_others`) IS NULL AND UNCOMPRESS(`param_others`) = 77 WHERE `id` = 959834
Query #2:
> SELECT `id`, UNCOMPRESSED_LENGTH(`user_agent`), UNCOMPRESS(`user_agent`), UNCOMPRESSED_LENGTH(`param_others`), UNCOMPRESS(`param_others`) FROM `logs` where `id` = 959834;
Result #2:
UNCOMPRESSED_LENGTH(`param_others`) = 77 AND UNCOMPRESS(`param_others`) = 'a:3:{s:5:"order";s:3:"Név";s:10:"order_type";s:2:"AZ";s:10:"table_from";i:0;}' WHERE `id` = 959834
Why differing result #1 and #2?
[13 Apr 2006 8:43]
Ramil Kalimullin
Balazs, did you use a debug build?
[13 Apr 2006 9:12]
Balazs Odor
No, i didn't use a debug build.
[13 Apr 2006 9:53]
Ramil Kalimullin
I've hit the bug. Balazs, thanks a lot for your help!
[13 Apr 2006 11:19]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/4914
[21 Apr 2006 13:47]
Ramil Kalimullin
fixed in 4.1.19
[22 Apr 2006 22:09]
Bob Marietta
Is this bug applicable to V5.0.20 also and was it patched?
[1 May 2006 0:03]
Paul DuBois
Noted in 4.1.19, 5.0.21 changelogs. <literal>UNCOMPRESS(NULL)</literal> could cause subsequent <literal>UNCOMPRESS()</literal> calls to return <literal>NULL</literal> for legal non-<literal>NULL</literal> arguments. (Bug #18643)
