~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/func_gconcat.test

  • Committer: Prafulla Tekawade
  • Date: 2010-07-13 16:07:35 UTC
  • mto: (1662.1.4 rollup)
  • mto: This revision was merged to the branch mainline in revision 1664.
  • Revision ID: prafulla_t@users.sourceforge.net-20100713160735-2fsdtrm3azayuyu1
This bug is simillar to mysql bug 36133
http://bugs.mysql.com/bug.php?id=36133

Taking changes from that fix.

  - The problem was that the range optimizer evaluated constant expressions, 
    and among them it would try to evaluate IN-subquery predicates slated for
    handling with materialization strategy. However, these predicates require
    that parent_join->setup_subquery_materialization() is invoked before one
    attempts to evaluate them.
  
  - Fixed by making the range optimizer not to evaluate expressions that have
    item->is_expensive() == TRUE (these are materialization subqueries and 
    stored function calls). This should also resolve the problem that EXPLAIN 
    may be too long. 
    This change cuts off some opportunities for range optimizer, but this is 
    the price we're willing to pay for separation of query optimization and
    execution. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
69
69
 
70
70
# Test errors
71
71
 
72
 
--error ER_INVALID_GROUP_FUNC_USE
 
72
--error 1111
73
73
select group_concat(sum(c)) from t1 group by grp;
74
 
--error ER_BAD_FIELD_ERROR
 
74
--error 1054
75
75
select grp,group_concat(c order by 2) from t1 group by grp;
76
76
 
77
77
drop table t1;
104
104
create table t1(id int);
105
105
create table t2(id int);
106
106
insert into t1 values(0),(1);
107
 
select group_concat(t1.id) FROM t1,t2 where t2.id < 2;
 
107
select group_concat(t1.id) FROM t1,t2;
108
108
drop table t1;
109
109
drop table t2;
110
110
 
190
190
CREATE TABLE t2 ( a int );
191
191
INSERT INTO t1 VALUES (1), (2);
192
192
INSERT INTO t2 VALUES (1), (2);
193
 
SELECT GROUP_CONCAT(t1.a*t2.a ORDER BY t2.a) FROM t1, t2 WHERE t1.a < 3 GROUP BY t1.a;
 
193
SELECT GROUP_CONCAT(t1.a*t2.a ORDER BY t2.a) FROM t1, t2 GROUP BY t1.a;
194
194
DROP TABLE t1, t2;
195
195
 
196
196
#
602
602
 FROM
603
603
  t1 AS t1,
604
604
  t1 AS t2
605
 
 WHERE t2.a IS NULL
606
605
 GROUP BY 1
607
606
) AS s1;
608
607
DROP TABLE t1;