mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge work.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/pem/work/mysql-4.1
This commit is contained in:
@ -1,60 +1,60 @@
|
|||||||
SELECT (1,2,3)=(1,2,3);
|
SELECT ROW(1,2,3)=ROW(1,2,3);
|
||||||
(1,2,3)=(1,2,3)
|
ROW(1,2,3)=ROW(1,2,3)
|
||||||
1
|
1
|
||||||
SELECT (2,2,3)=(1+1,2,3);
|
SELECT ROW(2,2,3)=ROW(1+1,2,3);
|
||||||
(2,2,3)=(1+1,2,3)
|
ROW(2,2,3)=ROW(1+1,2,3)
|
||||||
1
|
1
|
||||||
SELECT (1,2,3)=(1+1,2,3);
|
SELECT ROW(1,2,3)=ROW(1+1,2,3);
|
||||||
(1,2,3)=(1+1,2,3)
|
ROW(1,2,3)=ROW(1+1,2,3)
|
||||||
0
|
0
|
||||||
SELECT (1,2,3)<(1+1,2,3);
|
SELECT ROW(1,2,3)<ROW(1+1,2,3);
|
||||||
(1,2,3)<(1+1,2,3)
|
ROW(1,2,3)<ROW(1+1,2,3)
|
||||||
1
|
1
|
||||||
SELECT (1,2,3)>(1+1,2,3);
|
SELECT ROW(1,2,3)>ROW(1+1,2,3);
|
||||||
(1,2,3)>(1+1,2,3)
|
ROW(1,2,3)>ROW(1+1,2,3)
|
||||||
0
|
0
|
||||||
SELECT (1,2,3)<=(1+1,2,3);
|
SELECT ROW(1,2,3)<=ROW(1+1,2,3);
|
||||||
(1,2,3)<=(1+1,2,3)
|
ROW(1,2,3)<=ROW(1+1,2,3)
|
||||||
1
|
1
|
||||||
SELECT (1,2,3)>=(1+1,2,3);
|
SELECT ROW(1,2,3)>=ROW(1+1,2,3);
|
||||||
(1,2,3)>=(1+1,2,3)
|
ROW(1,2,3)>=ROW(1+1,2,3)
|
||||||
0
|
0
|
||||||
SELECT (1,2,3)<>(1+1,2,3);
|
SELECT ROW(1,2,3)<>ROW(1+1,2,3);
|
||||||
(1,2,3)<>(1+1,2,3)
|
ROW(1,2,3)<>ROW(1+1,2,3)
|
||||||
1
|
1
|
||||||
SELECT (NULL,2,3)=(NULL,2,3);
|
SELECT ROW(NULL,2,3)=ROW(NULL,2,3);
|
||||||
(NULL,2,3)=(NULL,2,3)
|
ROW(NULL,2,3)=ROW(NULL,2,3)
|
||||||
NULL
|
NULL
|
||||||
SELECT (NULL,2,3)<=>(NULL,2,3);
|
SELECT ROW(NULL,2,3)<=>ROW(NULL,2,3);
|
||||||
(NULL,2,3)<=>(NULL,2,3)
|
ROW(NULL,2,3)<=>ROW(NULL,2,3)
|
||||||
1
|
1
|
||||||
SELECT (1,2,(3,4,5))=(1,2,(3,4,5));
|
SELECT ROW(1,2,ROW(3,4,5))=ROW(1,2,ROW(3,4,5));
|
||||||
(1,2,(3,4,5))=(1,2,(3,4,5))
|
ROW(1,2,ROW(3,4,5))=ROW(1,2,ROW(3,4,5))
|
||||||
1
|
1
|
||||||
SELECT ('test',2,3.33)=('test',2,3.33);
|
SELECT ROW('test',2,3.33)=ROW('test',2,3.33);
|
||||||
('test',2,3.33)=('test',2,3.33)
|
ROW('test',2,3.33)=ROW('test',2,3.33)
|
||||||
1
|
1
|
||||||
SELECT ('test',2,3.33)=('test',2,3.33,4);
|
SELECT ROW('test',2,3.33)=ROW('test',2,3.33,4);
|
||||||
Cardinality error (more/less than 3 columns)
|
Cardinality error (more/less than 3 columns)
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 ( a int, b int, c int);
|
create table t1 ( a int, b int, c int);
|
||||||
insert into t1 values (1,2,3), (2,3,1), (3,2,1);
|
insert into t1 values (1,2,3), (2,3,1), (3,2,1);
|
||||||
select * from t1 where (1,2,3)=(a,b,c);
|
select * from t1 where ROW(1,2,3)=ROW(a,b,c);
|
||||||
a b c
|
a b c
|
||||||
1 2 3
|
1 2 3
|
||||||
select * from t1 where (0,2,3)=(a,b,c);
|
select * from t1 where ROW(0,2,3)=ROW(a,b,c);
|
||||||
a b c
|
a b c
|
||||||
select * from t1 where (1,2,3)<(a,b,c);
|
select * from t1 where ROW(1,2,3)<ROW(a,b,c);
|
||||||
a b c
|
a b c
|
||||||
2 3 1
|
2 3 1
|
||||||
3 2 1
|
3 2 1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select (1,1);
|
select ROW(1,1);
|
||||||
Cardinality error (more/less than 1 columns)
|
Cardinality error (more/less than 1 columns)
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (i int);
|
create table t1 (i int);
|
||||||
select 1 from t1 where (1,1);
|
select 1 from t1 where ROW(1,1);
|
||||||
Cardinality error (more/less than 1 columns)
|
Cardinality error (more/less than 1 columns)
|
||||||
select count(*) from t1 order by (1,1);
|
select count(*) from t1 order by ROW(1,1);
|
||||||
Cardinality error (more/less than 1 columns)
|
Cardinality error (more/less than 1 columns)
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -1,33 +1,33 @@
|
|||||||
SELECT (1,2,3)=(1,2,3);
|
SELECT ROW(1,2,3)=ROW(1,2,3);
|
||||||
SELECT (2,2,3)=(1+1,2,3);
|
SELECT ROW(2,2,3)=ROW(1+1,2,3);
|
||||||
SELECT (1,2,3)=(1+1,2,3);
|
SELECT ROW(1,2,3)=ROW(1+1,2,3);
|
||||||
SELECT (1,2,3)<(1+1,2,3);
|
SELECT ROW(1,2,3)<ROW(1+1,2,3);
|
||||||
SELECT (1,2,3)>(1+1,2,3);
|
SELECT ROW(1,2,3)>ROW(1+1,2,3);
|
||||||
SELECT (1,2,3)<=(1+1,2,3);
|
SELECT ROW(1,2,3)<=ROW(1+1,2,3);
|
||||||
SELECT (1,2,3)>=(1+1,2,3);
|
SELECT ROW(1,2,3)>=ROW(1+1,2,3);
|
||||||
SELECT (1,2,3)<>(1+1,2,3);
|
SELECT ROW(1,2,3)<>ROW(1+1,2,3);
|
||||||
SELECT (NULL,2,3)=(NULL,2,3);
|
SELECT ROW(NULL,2,3)=ROW(NULL,2,3);
|
||||||
SELECT (NULL,2,3)<=>(NULL,2,3);
|
SELECT ROW(NULL,2,3)<=>ROW(NULL,2,3);
|
||||||
SELECT (1,2,(3,4,5))=(1,2,(3,4,5));
|
SELECT ROW(1,2,ROW(3,4,5))=ROW(1,2,ROW(3,4,5));
|
||||||
SELECT ('test',2,3.33)=('test',2,3.33);
|
SELECT ROW('test',2,3.33)=ROW('test',2,3.33);
|
||||||
-- error 1239
|
-- error 1239
|
||||||
SELECT ('test',2,3.33)=('test',2,3.33,4);
|
SELECT ROW('test',2,3.33)=ROW('test',2,3.33,4);
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 ( a int, b int, c int);
|
create table t1 ( a int, b int, c int);
|
||||||
insert into t1 values (1,2,3), (2,3,1), (3,2,1);
|
insert into t1 values (1,2,3), (2,3,1), (3,2,1);
|
||||||
select * from t1 where (1,2,3)=(a,b,c);
|
select * from t1 where ROW(1,2,3)=ROW(a,b,c);
|
||||||
select * from t1 where (0,2,3)=(a,b,c);
|
select * from t1 where ROW(0,2,3)=ROW(a,b,c);
|
||||||
select * from t1 where (1,2,3)<(a,b,c);
|
select * from t1 where ROW(1,2,3)<ROW(a,b,c);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
-- error 1239
|
-- error 1239
|
||||||
select (1,1);
|
select ROW(1,1);
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (i int);
|
create table t1 (i int);
|
||||||
-- error 1239
|
-- error 1239
|
||||||
select 1 from t1 where (1,1);
|
select 1 from t1 where ROW(1,1);
|
||||||
-- error 1239
|
-- error 1239
|
||||||
select count(*) from t1 order by (1,1);
|
select count(*) from t1 order by ROW(1,1);
|
||||||
#TODO remove comments after parser fixing
|
#TODO remove comments after parser fixing
|
||||||
#-- error 1239
|
#-- error 1239
|
||||||
#select count(*) from t1 order by i having (1,1);
|
#select count(*) from t1 order by i having (1,1);
|
||||||
|
@ -1979,10 +1979,12 @@ simple_expr:
|
|||||||
| NOT expr %prec NEG { $$= new Item_func_not($2); }
|
| NOT expr %prec NEG { $$= new Item_func_not($2); }
|
||||||
| '!' expr %prec NEG { $$= new Item_func_not($2); }
|
| '!' expr %prec NEG { $$= new Item_func_not($2); }
|
||||||
| '(' expr ')' { $$= $2; }
|
| '(' expr ')' { $$= $2; }
|
||||||
| '(' expr ',' expr_list ')'
|
/* Note: In SQL-99 "ROW" is optional, but not having it mandatory
|
||||||
|
causes conflicts with the INTERVAL syntax. */
|
||||||
|
| ROW_SYM '(' expr ',' expr_list ')'
|
||||||
{
|
{
|
||||||
$4->push_front($2);
|
$5->push_front($3);
|
||||||
$$= new Item_row(*$4);
|
$$= new Item_row(*$5);
|
||||||
}
|
}
|
||||||
| EXISTS exists_subselect { $$= $2; }
|
| EXISTS exists_subselect { $$= $2; }
|
||||||
| singleval_subselect { $$= $1; }
|
| singleval_subselect { $$= $1; }
|
||||||
|
Reference in New Issue
Block a user