~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/errors.test

  • Committer: Prafulla Tekawade
  • Date: 2010-08-06 11:21:12 UTC
  • mto: (1711.1.21 build) (1725.1.1 build)
  • mto: This revision was merged to the branch mainline in revision 1714.
  • Revision ID: prafulla_t@users.sourceforge.net-20100806112112-7w5u0s3nx9u67nzt
Fix for Bug 586051

1. test_if_ref method which checks whether predicate is already evaluated
   due to ref/eq_ref access or not was incorrectly removing a predicate 
   that was not implicitly evaluated due to ref access (due to presence of filesort ?)
   It was field=NULL predicate.
   Such predicate should be kept and execution engine will filter out rows
   correctly. Removal of such predicate led to returning of rows which had
   NULL for join/predicate columns.
2. field COMP_OP NULL will always false for all fields except when COMP_OP
   is NULL-safe equality operator. Modified range optimizer to return zero
   row count in such cases.
   Query now does not even run. It returns zero result. As such Fix(1) is not
   required but we might hit that case in some other query (I have not tried it
   yet)
3. Fixed Field::val_str to print "NULL" for literal NULL instead of "0". It
   added lot of confusion while debugging.

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
--disable_warnings
6
6
drop table if exists t1;
7
7
--enable_warnings
8
 
--error ER_NO_SUCH_TABLE
 
8
--error 1146
9
9
insert into t1 values(1);
10
 
--error ER_NO_SUCH_TABLE
 
10
--error 1146
11
11
delete from t1;
12
 
--error ER_NO_SUCH_TABLE
 
12
--error 1146
13
13
update t1 set a=1;
14
14
create table t1 (a int);
15
 
--error ER_BAD_FIELD_ERROR
 
15
--error 1054
16
16
select count(test.t1.b) from t1;
17
 
--error ER_BAD_FIELD_ERROR
 
17
--error 1054
18
18
select count(not_existing_database.t1) from t1;
19
 
--error ER_BAD_FIELD_ERROR
 
19
--error 1054
20
20
select count(not_existing_database.t1.a) from t1;
21
 
--error ER_DBACCESS_DENIED_ERROR, ER_NO_SUCH_TABLE
 
21
--error 1044,1146
22
22
select count(not_existing_database.t1.a) from not_existing_database.t1;
23
 
--error ER_BAD_FIELD_ERROR
 
23
--error 1054
24
24
select 1 from t1 order by 2;
25
 
--error ER_BAD_FIELD_ERROR
 
25
--error 1054
26
26
select 1 from t1 group by 2;
27
 
--error ER_BAD_FIELD_ERROR
 
27
--error 1054
28
28
select 1 from t1 order by t1.b;
29
 
--error ER_BAD_FIELD_ERROR
 
29
--error 1054
30
30
select count(*),b from t1;
31
31
drop table t1;
32
32
 
35
35
#
36
36
# Bug #6080: Error message for a field with a display width that is too long
37
37
#
38
 
--error ER_PARSE_ERROR
 
38
--error 1064
39
39
create table t1 (a int(256));
40
 
--error ER_TOO_BIG_FIELDLENGTH
 
40
--error 1074
41
41
create table t1 (a varchar(66000));
42
42
 
43
43
#
44
44
# Bug #27513: mysql 5.0.x + NULL pointer DoS
45
45
#
46
46
CREATE TABLE t1 (a INT);
47
 
--error ER_DIVISION_BY_ZERO
48
47
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
49
48
INSERT INTO t1 VALUES(1);
50
 
--error ER_DIVISION_BY_ZERO
51
49
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
52
50
INSERT INTO t1 VALUES(2),(3);
53
 
--error ER_DIVISION_BY_ZERO
54
51
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
55
52
DROP TABLE t1;
56
53