Browse Source

MDEV-11275 sql_mode=ORACLE: CAST(..AS VARCHAR(N))

pull/381/head
Alexander Barkov 9 years ago
parent
commit
c0576ba5ec
  1. 9
      mysql-test/suite/compat/oracle/r/type_varchar.result
  2. 8
      mysql-test/suite/compat/oracle/r/type_varchar2.result
  3. 9
      mysql-test/suite/compat/oracle/t/type_varchar.test
  4. 9
      mysql-test/suite/compat/oracle/t/type_varchar2.test
  5. 8
      sql/sql_yacc_ora.yy

9
mysql-test/suite/compat/oracle/r/type_varchar.result

@ -0,0 +1,9 @@
SET sql_mode=ORACLE;
#
# MDEV-11275 sql_mode=ORACLE: CAST(..AS VARCHAR(N))
#
SELECT CAST(123 AS VARCHAR(10)) FROM DUAL;
CAST(123 AS VARCHAR(10))
123
SELECT CAST(123 AS VARCHAR) FROM DUAL;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') FROM DUAL' at line 1

8
mysql-test/suite/compat/oracle/r/type_varchar2.result

@ -13,3 +13,11 @@ t1 CREATE TABLE "t1" (
"a" varchar(10) DEFAULT NULL
)
DROP TABLE t1;
#
# MDEV-11275 sql_mode=ORACLE: CAST(..AS VARCHAR(N))
#
SELECT CAST(123 AS VARCHAR2(10)) FROM DUAL;
CAST(123 AS VARCHAR2(10))
123
SELECT CAST(123 AS VARCHAR2) FROM DUAL;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') FROM DUAL' at line 1

9
mysql-test/suite/compat/oracle/t/type_varchar.test

@ -0,0 +1,9 @@
SET sql_mode=ORACLE;
--echo #
--echo # MDEV-11275 sql_mode=ORACLE: CAST(..AS VARCHAR(N))
--echo #
SELECT CAST(123 AS VARCHAR(10)) FROM DUAL;
--error ER_PARSE_ERROR
SELECT CAST(123 AS VARCHAR) FROM DUAL;

9
mysql-test/suite/compat/oracle/t/type_varchar2.test

@ -8,3 +8,12 @@ DROP TABLE varchar2;
CREATE TABLE t1 (a VARCHAR2(10));
SHOW CREATE TABLE t1;
DROP TABLE t1;
--echo #
--echo # MDEV-11275 sql_mode=ORACLE: CAST(..AS VARCHAR(N))
--echo #
SELECT CAST(123 AS VARCHAR2(10)) FROM DUAL;
--error ER_PARSE_ERROR
SELECT CAST(123 AS VARCHAR2) FROM DUAL;

8
sql/sql_yacc_ora.yy

@ -10314,6 +10314,14 @@ cast_type:
{ Lex->charset= thd->variables.collation_connection; }
opt_binary
{ $$.set(ITEM_CAST_CHAR, $2); }
| VARCHAR field_length
{ Lex->charset= thd->variables.collation_connection; }
opt_binary
{ $$.set(ITEM_CAST_CHAR, $2); }
| VARCHAR2 field_length
{ Lex->charset= thd->variables.collation_connection; }
opt_binary
{ $$.set(ITEM_CAST_CHAR, $2); }
| NCHAR_SYM opt_field_length
{
Lex->charset= national_charset_info;

Loading…
Cancel
Save