Commit f621d551 authored by unknown's avatar unknown

Merge work.mysql.com:/home/bk/mysql-4.1

into mysql.com:/home/pem/work/mysql-4.1


sql/sql_yacc.yy:
  Auto merged
parents 9fcbfc0d 2506b70d
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;
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: ...@@ -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; }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment