← Back to team overview

maria-developers team mailing list archive

Rev 2790: bugfixes in file:///home/bell/maria/bzr/work-maria-5.3-scache2/

 

At file:///home/bell/maria/bzr/work-maria-5.3-scache2/

------------------------------------------------------------
revno: 2790
revision-id: sanja@xxxxxxxxxxxx-20100607075845-lo3tcaiuk54qqlw0
parent: sanja@xxxxxxxxxxxx-20100531212554-oal32d5v360l6cul
committer: sanja@xxxxxxxxxxxx
branch nick: work-maria-5.3-scache2
timestamp: Mon 2010-06-07 10:58:45 +0300
message:
  bugfixes
=== modified file 'mysql-test/r/subquery_cache.result'
--- a/mysql-test/r/subquery_cache.result	2010-05-31 21:25:54 +0000
+++ b/mysql-test/r/subquery_cache.result	2010-06-07 07:58:45 +0000
@@ -588,4 +588,28 @@
 Subquery_cache_hit	0
 Subquery_cache_miss	4
 drop table t1;
+#test of sql_big_tables switch and outer table reference in subquery with grouping
+set option sql_big_tables=1;
+CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
+INSERT INTO t1 VALUES (1,1),(2,1),(3,2),(4,2),(5,3),(6,3);
+SELECT (SELECT t1_outer.a FROM t1 AS t1_inner GROUP BY b LIMIT 1) FROM t1 AS t1_outer;
+(SELECT t1_outer.a FROM t1 AS t1_inner GROUP BY b LIMIT 1)
+1
+2
+3
+4
+5
+6
+drop table t1;
+set option sql_big_tables=0;
+#test of function reference to outer query
+set local group_concat_max_len=400;
+create table t2 (a int, b int);
+insert into t2 values (1,1), (2,2);
+select  b x, (select group_concat(x) from t2) from  t2;
+x	(select group_concat(x) from t2)
+1	1,1
+2	2,2
+drop table t2;
+set local group_concat_max_len=default;
 set optimizer_switch='subquery_cache=default';

=== modified file 'mysql-test/t/subquery_cache.test'
--- a/mysql-test/t/subquery_cache.test	2010-05-31 21:25:54 +0000
+++ b/mysql-test/t/subquery_cache.test	2010-06-07 07:58:45 +0000
@@ -201,4 +201,20 @@
 show status like "subquery_cache%";
 drop table t1;
 
+--echo #test of sql_big_tables switch and outer table reference in subquery with grouping
+set option sql_big_tables=1;
+CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
+INSERT INTO t1 VALUES (1,1),(2,1),(3,2),(4,2),(5,3),(6,3);
+SELECT (SELECT t1_outer.a FROM t1 AS t1_inner GROUP BY b LIMIT 1) FROM t1 AS t1_outer;
+drop table t1;
+set option sql_big_tables=0;
+
+--echo #test of function reference to outer query
+set local group_concat_max_len=400;
+create table t2 (a int, b int);
+insert into t2 values (1,1), (2,2);
+select  b x, (select group_concat(x) from t2) from  t2;
+drop table t2;
+set local group_concat_max_len=default;
+
 set optimizer_switch='subquery_cache=default';

=== modified file 'sql/table.cc'
--- a/sql/table.cc	2010-05-31 21:25:54 +0000
+++ b/sql/table.cc	2010-06-07 07:58:45 +0000
@@ -5187,10 +5187,16 @@
     key_part_info->store_length= key_part_info->length;
 
     if ((*reg_field)->real_maybe_null())
+    {
       key_part_info->store_length+= HA_KEY_NULL_LENGTH;
+      keyinfo->key_length+= HA_KEY_NULL_LENGTH;
+    }
     if ((*reg_field)->type() == MYSQL_TYPE_BLOB || 
         (*reg_field)->real_type() == MYSQL_TYPE_VARCHAR)
+    {
       key_part_info->store_length+= HA_KEY_BLOB_LENGTH;
+      keyinfo->key_length+= HA_KEY_BLOB_LENGTH; // ???
+    }
 
     key_part_info->type=     (uint8) (*reg_field)->key_type();
     key_part_info->key_type =