Commit b8ea7d4b authored by unknown's avatar unknown
Browse files

Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1

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

parents 09e426bf 3a842fdf
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -2445,3 +2445,13 @@ cast((a - b) as unsigned)
1
18446744073709551615
drop table t1;
create table t1 (a int(11));
select all all * from t1;
a
select distinct distinct * from t1;
a
select all distinct * from t1;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'distinct * from t1' at line 1
select distinct all * from t1;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'all * from t1' at line 1
drop table t1;
+16 −0
Original line number Diff line number Diff line
@@ -1979,3 +1979,19 @@ select a-b , (a-b < 0) from t1 order by 1;
select a-b as d, (a-b >= 0), b from t1 group by b having d >= 0;
select cast((a - b) as unsigned) from t1 order by 1;
drop table t1;


#
# Bug#8733 server accepts malformed query (multiply mentioned distinct)
#
create table t1 (a int(11));
select all all * from t1;
select distinct distinct * from t1;
--error 1064
select all distinct * from t1;
--error 1064
select distinct all * from t1;
drop table t1;


#
+3 −0
Original line number Diff line number Diff line
@@ -211,6 +211,9 @@ extern CHARSET_INFO *national_charset_info, *table_alias_charset;
   key checks in some cases */
#define OPTION_RELAXED_UNIQUE_CHECKS    (1L << 27)
#define SELECT_NO_UNLOCK                (1L << 28)
/* Thr following is used to detect a conflict with DISTINCT
   in the user query has requested */
#define SELECT_ALL			(1L << 29)

/* If set to 0, then the thread will ignore all warnings with level notes.
   Set by executing SET SQL_NOTES=1 */
+18 −2
Original line number Diff line number Diff line
@@ -2481,7 +2481,15 @@ select_option:
	      YYABORT;
	    Lex->lock_option= TL_READ_HIGH_PRIORITY;
	  }
	| DISTINCT	{ Select->options|= SELECT_DISTINCT; }
	| DISTINCT
	  {
            if (Select->options & SELECT_ALL)
            {
              yyerror(ER(ER_SYNTAX_ERROR));
              YYABORT;
            }
            Select->options|= SELECT_DISTINCT; 
	  }
	| SQL_SMALL_RESULT { Select->options|= SELECT_SMALL_RESULT; }
	| SQL_BIG_RESULT { Select->options|= SELECT_BIG_RESULT; }
	| SQL_BUFFER_RESULT
@@ -2501,7 +2509,15 @@ select_option:
	  {
	    Lex->select_lex.options|= OPTION_TO_QUERY_CACHE;
	  }
	| ALL		{}
	| ALL
	  {
            if (Select->options & SELECT_DISTINCT)
            {
              yyerror(ER(ER_SYNTAX_ERROR));
              YYABORT;
            }
            Select->options|= SELECT_ALL; 
	  }
	;

select_lock_type: