mariadb/mysql-test/t/row_test.test
unknown 2506b70d39 Fixed ambiguity between the row value syntax and INTERVAL syntax by making the
ROW keyword mandatory (although it's optional in SQL-99).


mysql-test/r/row_test.result:
  New results with the ROW syntax.
mysql-test/t/row_test.test:
  Updated tests to use the ROW keyword.
sql/sql_yacc.yy:
  Fixed ambiguity between the row value syntax and INTERVAL syntax by making the
  ROW keyword mandatory (although it's optional in SQL-99).
  The real problem might actually be INTERVAL, where the two rules
  "INTERVAL_SYM expr interval '+' expr" and
  "INTERVAL_SYM '(' expr ',' expr_list ')'" caused 40+ reduce/reduce conflicts
  with the rows value syntax.
  So possibly, the INTERVAL syntax should be fixed instead...
2002-11-30 19:33:01 +01:00

36 lines
1.1 KiB
Text

SELECT ROW(1,2,3)=ROW(1,2,3);
SELECT ROW(2,2,3)=ROW(1+1,2,3);
SELECT ROW(1,2,3)=ROW(1+1,2,3);
SELECT ROW(1,2,3)<ROW(1+1,2,3);
SELECT ROW(1,2,3)>ROW(1+1,2,3);
SELECT ROW(1,2,3)<=ROW(1+1,2,3);
SELECT ROW(1,2,3)>=ROW(1+1,2,3);
SELECT ROW(1,2,3)<>ROW(1+1,2,3);
SELECT ROW(NULL,2,3)=ROW(NULL,2,3);
SELECT ROW(NULL,2,3)<=>ROW(NULL,2,3);
SELECT ROW(1,2,ROW(3,4,5))=ROW(1,2,ROW(3,4,5));
SELECT ROW('test',2,3.33)=ROW('test',2,3.33);
-- error 1239
SELECT ROW('test',2,3.33)=ROW('test',2,3.33,4);
drop table if exists t1;
create table t1 ( a int, b int, c int);
insert into t1 values (1,2,3), (2,3,1), (3,2,1);
select * from t1 where ROW(1,2,3)=ROW(a,b,c);
select * from t1 where ROW(0,2,3)=ROW(a,b,c);
select * from t1 where ROW(1,2,3)<ROW(a,b,c);
drop table t1;
-- error 1239
select ROW(1,1);
drop table if exists t1;
create table t1 (i int);
-- error 1239
select 1 from t1 where ROW(1,1);
-- error 1239
select count(*) from t1 order by ROW(1,1);
#TODO remove comments after parser fixing
#-- error 1239
#select count(*) from t1 order by i having (1,1);
#-- error 1239
#select 1 from t1 limit (1,1), (1,1);
drop table t1;