mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Change of internal key_field=NULL handling to avoid error messages.
Optimized SELECT DISTINCT ... ORDER BY ... LIMIT Fixed reference to uninitalized variable
This commit is contained in:
@@ -198,6 +198,30 @@ a
|
||||
select distinct 1 from t1,t3 where t1.a=t3.a;
|
||||
1
|
||||
1
|
||||
explain SELECT distinct t1.a from t1;
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t1 index NULL PRIMARY 4 NULL 2 Using index
|
||||
explain SELECT distinct t1.a from t1 order by a desc;
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t1 index NULL PRIMARY 4 NULL 2 Using index
|
||||
explain SELECT t1.a from t1 group by a order by a desc;
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t1 index NULL PRIMARY 4 NULL 2 Using index
|
||||
explain SELECT distinct t1.a from t1 order by a desc limit 1;
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t1 index NULL PRIMARY 4 NULL 2 Using index
|
||||
explain SELECT distinct a from t3 order by a desc limit 2;
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t3 index NULL a 5 NULL 204 Using index
|
||||
explain SELECT distinct a,b from t3 order by a+1;
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t3 ALL NULL NULL NULL NULL 204 Using temporary; Using filesort
|
||||
explain SELECT distinct a,b from t3 order by a limit 10;
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t3 index NULL a 5 NULL 204 Using temporary
|
||||
explain SELECT a,b from t3 group by a,b order by a+1;
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t3 ALL NULL NULL NULL NULL 204 Using temporary; Using filesort
|
||||
drop table t1,t2,t3,t4;
|
||||
CREATE TABLE t1 (name varchar(255));
|
||||
INSERT INTO t1 VALUES ('aa'),('ab'),('ac'),('ad'),('ae');
|
||||
|
@@ -31,9 +31,10 @@ log10(100) log10(18) log10(-4) log10(0) log10(NULL)
|
||||
select pow(10,log10(10)),power(2,4);
|
||||
pow(10,log10(10)) power(2,4)
|
||||
10.000000 16.000000
|
||||
set @@rand_seed1=10000000,@@rand_seed2=1000000;
|
||||
select rand(999999),rand();
|
||||
rand(999999) rand()
|
||||
0.014231365187309 0.8078568166195
|
||||
0.014231365187309 0.028870999839968
|
||||
select pi(),sin(pi()/2),cos(pi()/2),abs(tan(pi())),cot(1),asin(1),acos(0),atan(1);
|
||||
PI() sin(pi()/2) cos(pi()/2) abs(tan(pi())) cot(1) asin(1) acos(0) atan(1)
|
||||
3.141593 1.000000 0.000000 0.000000 0.64209262 1.570796 1.570796 0.785398
|
||||
|
@@ -1036,3 +1036,25 @@ n d
|
||||
1 30
|
||||
2 20
|
||||
drop table t1,t2;
|
||||
create table t1 (a int, b int) type=innodb;
|
||||
insert into t1 values(20,null);
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a;
|
||||
b ifnull(t2.b,"this is null")
|
||||
NULL this is null
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a order by 1;
|
||||
b ifnull(t2.b,"this is null")
|
||||
NULL this is null
|
||||
insert into t1 values(10,null);
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a order by 1;
|
||||
b ifnull(t2.b,"this is null")
|
||||
NULL this is null
|
||||
NULL this is null
|
||||
drop table t1;
|
||||
create table t1 (a varchar(10) not null) type=myisam;
|
||||
create table t2 (b varchar(10) not null unique) type=innodb;
|
||||
select t1.a from t1,t2 where t1.a=t2.b;
|
||||
a
|
||||
drop table t1,t2;
|
||||
|
@@ -6,7 +6,7 @@ select 1 | NULL,1 & NULL,1+NULL,1-NULL;
|
||||
NULL NULL NULL NULL
|
||||
select NULL=NULL,NULL<>NULL,IFNULL(NULL,1.1)+0,IFNULL(NULL,1) | 0;
|
||||
NULL=NULL NULL<>NULL IFNULL(NULL,1.1)+0 IFNULL(NULL,1) | 0
|
||||
NULL NULL 1.1 1
|
||||
NULL NULL 1 1
|
||||
select strcmp("a",NULL),(1<NULL)+0.0,NULL regexp "a",null like "a%","a%" like null;
|
||||
strcmp("a",NULL) (1<NULL)+0.0 NULL regexp "a" null like "a%" "a%" like null
|
||||
NULL NULL NULL NULL NULL
|
||||
@@ -56,3 +56,20 @@ indexed_field
|
||||
NULL
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
create table t1 (a int, b int) type=myisam;
|
||||
insert into t1 values(20,null);
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a;
|
||||
b ifnull(t2.b,"this is null")
|
||||
NULL this is null
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a order by 1;
|
||||
b ifnull(t2.b,"this is null")
|
||||
NULL this is null
|
||||
insert into t1 values(10,null);
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a order by 1;
|
||||
b ifnull(t2.b,"this is null")
|
||||
NULL this is null
|
||||
NULL this is null
|
||||
drop table t1;
|
||||
|
@@ -88,6 +88,16 @@ select distinct t1.a from t1,t3 where t1.a=t3.a;
|
||||
#flush status;
|
||||
select distinct 1 from t1,t3 where t1.a=t3.a;
|
||||
#show status like 'Handler%';
|
||||
|
||||
explain SELECT distinct t1.a from t1;
|
||||
explain SELECT distinct t1.a from t1 order by a desc;
|
||||
explain SELECT t1.a from t1 group by a order by a desc;
|
||||
explain SELECT distinct t1.a from t1 order by a desc limit 1;
|
||||
explain SELECT distinct a from t3 order by a desc limit 2;
|
||||
explain SELECT distinct a,b from t3 order by a+1;
|
||||
explain SELECT distinct a,b from t3 order by a limit 10;
|
||||
explain SELECT a,b from t3 group by a,b order by a+1;
|
||||
|
||||
drop table t1,t2,t3,t4;
|
||||
|
||||
CREATE TABLE t1 (name varchar(255));
|
||||
|
@@ -13,6 +13,7 @@ select ln(exp(10)),exp(ln(sqrt(10))*2),ln(-1),ln(0),ln(NULL);
|
||||
select log2(8),log2(15),log2(-2),log2(0),log2(NULL);
|
||||
select log10(100),log10(18),log10(-4),log10(0),log10(NULL);
|
||||
select pow(10,log10(10)),power(2,4);
|
||||
set @@rand_seed1=10000000,@@rand_seed2=1000000;
|
||||
select rand(999999),rand();
|
||||
select pi(),sin(pi()/2),cos(pi()/2),abs(tan(pi())),cot(1),asin(1),acos(0),atan(1);
|
||||
select degrees(pi()),radians(360);
|
||||
|
@@ -673,3 +673,26 @@ UPDATE t1,t2 SET t1.d=t2.d,t2.d=30 WHERE t1.n=t2.n;
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Testing of IFNULL
|
||||
#
|
||||
create table t1 (a int, b int) type=innodb;
|
||||
insert into t1 values(20,null);
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a;
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a order by 1;
|
||||
insert into t1 values(10,null);
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a order by 1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test of read_through not existing const_table
|
||||
#
|
||||
|
||||
create table t1 (a varchar(10) not null) type=myisam;
|
||||
create table t2 (b varchar(10) not null unique) type=innodb;
|
||||
select t1.a from t1,t2 where t1.a=t2.b;
|
||||
drop table t1,t2;
|
||||
|
@@ -34,3 +34,17 @@ SELECT * FROM t1 WHERE indexed_field=NULL;
|
||||
SELECT * FROM t1 WHERE indexed_field IS NULL;
|
||||
SELECT * FROM t1 WHERE indexed_field<=>NULL;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Testing of IFNULL
|
||||
#
|
||||
create table t1 (a int, b int) type=myisam;
|
||||
insert into t1 values(20,null);
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a;
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a order by 1;
|
||||
insert into t1 values(10,null);
|
||||
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
|
||||
t2.b=t3.a order by 1;
|
||||
drop table t1;
|
||||
|
Reference in New Issue
Block a user