Commit 2a695127 authored by unknown's avatar unknown
Browse files

Fixes during review


mysql-test/r/select.result:
  Better error message
mysql-test/t/select.test:
  Better error message
sql/hostname.cc:
  Join identical code
sql/sql_yacc.yy:
  Combine code (and get a better error message)
strings/ctype-ucs2.c:
  Cast pointer differencess
parent cbbc4ff6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2451,7 +2451,7 @@ 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
ERROR HY000: Incorrect usage of ALL and DISTINCT
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
ERROR HY000: Incorrect usage of ALL and DISTINCT
drop table t1;
+2 −2
Original line number Diff line number Diff line
@@ -1987,9 +1987,9 @@ drop table t1;
create table t1 (a int(11));
select all all * from t1;
select distinct distinct * from t1;
--error 1064
--error 1221
select all distinct * from t1;
--error 1064
--error 1221
select distinct all * from t1;
drop table t1;

+2 −2
Original line number Diff line number Diff line
@@ -209,8 +209,8 @@ my_string ip_to_hostname(struct in_addr *in, uint *errors)
    DBUG_PRINT("error",("gethostbyaddr returned %d",errno));

    if (errno == HOST_NOT_FOUND || errno == NO_DATA)
	add_wrong_ip(in); /* only cache negative responses, not failures */

      goto add_wrong_ip_and_return;
    /* Failure, don't cache responce */
    DBUG_RETURN(0);
  }
  if (!hp->h_name[0])				// Don't allow empty hostnames
+10 −19
Original line number Diff line number Diff line
@@ -2467,7 +2467,14 @@ select_from:

select_options:
	/* empty*/
	| select_option_list;
	| select_option_list
	  {
	    if (test_all_bits(Select->options, SELECT_ALL | SELECT_DISTINCT))
	    {
	      net_printf(Lex->thd, ER_WRONG_USAGE, "ALL", "DISTINCT");
              YYABORT;
	    }
          }

select_option_list:
	select_option_list select_option
@@ -2481,15 +2488,7 @@ select_option:
	      YYABORT;
	    Lex->lock_option= TL_READ_HIGH_PRIORITY;
	  }
	| DISTINCT
	  {
            if (Select->options & SELECT_ALL)
            {
              yyerror(ER(ER_SYNTAX_ERROR));
              YYABORT;
            }
            Select->options|= SELECT_DISTINCT; 
	  }
	| DISTINCT         { Select->options|= SELECT_DISTINCT; }
	| SQL_SMALL_RESULT { Select->options|= SELECT_SMALL_RESULT; }
	| SQL_BIG_RESULT { Select->options|= SELECT_BIG_RESULT; }
	| SQL_BUFFER_RESULT
@@ -2509,15 +2508,7 @@ select_option:
	  {
	    Lex->select_lex.options|= OPTION_TO_QUERY_CACHE;
	  }
	| ALL
	  {
            if (Select->options & SELECT_DISTINCT)
            {
              yyerror(ER(ER_SYNTAX_ERROR));
              YYABORT;
            }
            Select->options|= SELECT_ALL; 
	  }
	| ALL		    { Select->options|= SELECT_ALL; }
	;

select_lock_type:
+5 −3
Original line number Diff line number Diff line
@@ -1251,7 +1251,7 @@ static
uint my_numchars_ucs2(CHARSET_INFO *cs __attribute__((unused)),
		      const char *b, const char *e)
{
  return (e-b)/2;
  return (uint) (e-b)/2;
}


@@ -1261,7 +1261,8 @@ uint my_charpos_ucs2(CHARSET_INFO *cs __attribute__((unused)),
		     const char *e  __attribute__((unused)),
		     uint pos)
{
  return pos > e - b ? e - b + 2 : pos * 2;
  uint string_length= (uint) (e - b);
  return pos > string_length ? string_length + 2 : pos * 2;
}


@@ -1270,7 +1271,8 @@ uint my_well_formed_len_ucs2(CHARSET_INFO *cs __attribute__((unused)),
                             const char *b, const char *e,
                             uint nchars, int *error)
{
  uint nbytes= (e-b) & ~ (uint)1;
  /* Ensure string length is dividable with 2 */
  uint nbytes= ((uint) (e-b)) & ~(uint) 1;
  *error= 0;
  nchars*= 2;
  return min(nbytes, nchars);