| Bug #39295 | cluster table with TEXT column cannot be cached in query cache | ||
|---|---|---|---|
| Submitted: | 7 Sep 2008 16:35 | Modified: | 22 Oct 2008 14:57 |
| Reporter: | chris lin | ||
| Status: | Closed | ||
| Category: | Server: Cluster | Severity: | S5 (Performance) |
| Version: | 6.2.15-com | OS: | Any (linux 2.6) |
| Assigned to: | Frazer Clement | Target Version: | |
| Tags: | cluster, query cache, text | ||
[21 Oct 2008 13:24]
Frazer Clement
Thanks for the bug report. The bug as been reproduced, and root cause identified. Fix is in progress.
[22 Oct 2008 0:54]
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/56763
[22 Oct 2008 1:04]
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/56765
[22 Oct 2008 1:07]
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/56766
[22 Oct 2008 12:24]
Frazer Clement
Fix pushed to 6.2.17, 6.3.19, 6.4.0
[22 Oct 2008 14:57]
Jon Stephens
Documented bugfix in the ndb-6.2.17 and ndb-6.3.19 changelogs as follows:
The MySQL Query Cache did not function correctly with NDBCLUSTER tables
containing TEXT columns.
[24 Oct 2008 3:18]
Bugs System
Pushed into 5.1.28-ndb-6.2.17 (revid:frazer@mysql.com-20081021225332-iacutj4ewkrh39gl) (version source revid:frazer@mysql.com-20081021225332-iacutj4ewkrh39gl) (pib:5)
[24 Oct 2008 3:19]
Bugs System
Pushed into 5.1.28-ndb-6.3.19 (revid:frazer@mysql.com-20081021225332-iacutj4ewkrh39gl) (version source revid:frazer@mysql.com-20081021230334-qnfrlwsb8izkufld) (pib:5)
[24 Oct 2008 3:19]
Bugs System
Pushed into 5.1.28-ndb-6.4.0 (revid:frazer@mysql.com-20081021225332-iacutj4ewkrh39gl) (version source revid:frazer@mysql.com-20081021230625-mec1ik1fng48k6j1) (pib:5)
[13 Dec 2008 0:30]
Bugs System
Pushed into 6.0.9-alpha (revid:frazer@mysql.com-20081021225332-iacutj4ewkrh39gl) (version source revid:tomas.ulin@sun.com-20081209185954-9svcixh2p5hsfi6w) (pib:5)

Description: the query cache works incorrectly together with the cluster table that include a TEXT column. some of the queries cannot be cached, and some of them can. Not found any rules that can decide what cache and what not cache. 1. not cache mysql> show create table t6; +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | t6 | CREATE TABLE `t6` ( `id` int(11) NOT NULL, `a` text NOT NULL, `b` int(11) NOT NULL, PRIMARY KEY (`id`) ) /*!50100 TABLESPACE ts1 STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=utf8 | +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> select * from t6; +----+--------+---+ | id | a | b | +----+--------+---+ | 1 | alkdjf | 2 | | 2 | alkdjf | 5 | +----+--------+---+ 2 rows in set (0.01 sec) mysql> show status like 'qcache%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Qcache_free_blocks | 2 | | Qcache_free_memory | 16747680 | | Qcache_hits | 33 | | Qcache_inserts | 110 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 4 | | Qcache_queries_in_cache | 12 | | Qcache_total_blocks | 37 | +-------------------------+----------+ 8 rows in set (0.00 sec) mysql> select * from t6; +----+--------+---+ | id | a | b | +----+--------+---+ | 1 | alkdjf | 2 | | 2 | alkdjf | 5 | +----+--------+---+ 2 rows in set (0.00 sec) mysql> select * from t6; +----+--------+---+ | id | a | b | +----+--------+---+ | 1 | alkdjf | 2 | | 2 | alkdjf | 5 | +----+--------+---+ 2 rows in set (0.00 sec) mysql> show status like 'qcache%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Qcache_free_blocks | 2 | | Qcache_free_memory | 16747680 | | Qcache_hits | 33 | | Qcache_inserts | 112 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 4 | | Qcache_queries_in_cache | 12 | | Qcache_total_blocks | 37 | +-------------------------+----------+ 8 rows in set (0.01 sec) 2. cache mysql> select * from t6 where id=1; +----+--------+---+ | id | a | b | +----+--------+---+ | 1 | alkdjf | 2 | +----+--------+---+ 1 row in set (0.00 sec) mysql> show status like 'qcache%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Qcache_free_blocks | 3 | | Qcache_free_memory | 15987768 | | Qcache_hits | 1 | | Qcache_inserts | 24 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 3 | | Qcache_queries_in_cache | 4 | | Qcache_total_blocks | 15 | +-------------------------+----------+ 8 rows in set (0.01 sec) mysql> select * from t6 where id=1; +----+--------+---+ | id | a | b | +----+--------+---+ | 1 | alkdjf | 2 | +----+--------+---+ 1 row in set (0.00 sec) mysql> select * from t6 where id=1; +----+--------+---+ | id | a | b | +----+--------+---+ | 1 | alkdjf | 2 | +----+--------+---+ 1 row in set (0.00 sec) mysql> show status like 'qcache%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Qcache_free_blocks | 3 | | Qcache_free_memory | 15987768 | | Qcache_hits | 3 | | Qcache_inserts | 24 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 3 | | Qcache_queries_in_cache | 4 | | Qcache_total_blocks | 15 | +-------------------------+----------+ 8 rows in set (0.01 sec) How to repeat: create a cluster table as above, insert some records, and execute as above.