From 0c9c4b84b79a9fb26074fbd8b8cc47cede048d3b Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Thu, 11 Aug 2016 15:47:17 +0400 Subject: [PATCH] MDEV-10411 Providing compatibility for basic PL/SQL constructs Part 10: Default variable value: x INT := 10; --- mysql-test/suite/compat/oracle/r/sp.result | 15 +++++++++++++++ mysql-test/suite/compat/oracle/t/sp.test | 16 ++++++++++++++++ sql/sql_yacc_ora.yy | 1 + 3 files changed, 32 insertions(+) diff --git a/mysql-test/suite/compat/oracle/r/sp.result b/mysql-test/suite/compat/oracle/r/sp.result index f2e9eb6f226..1716fd41edc 100644 --- a/mysql-test/suite/compat/oracle/r/sp.result +++ b/mysql-test/suite/compat/oracle/r/sp.result @@ -1,4 +1,19 @@ SET sql_mode=ORACLE; +# Testing ":=" to set the default value of a variable +CREATE FUNCTION f1 () RETURNS NUMBER(10) AS +a NUMBER(10) := 10; +BEGIN +DECLARE +b NUMBER(10) DEFAULT 3; +BEGIN +RETURN a+b; +END; +END; +/ +SELECT f1(); +f1() +13 +DROP FUNCTION f1; # Testing labels CREATE FUNCTION f1 (a INT) RETURNS CLOB AS BEGIN diff --git a/mysql-test/suite/compat/oracle/t/sp.test b/mysql-test/suite/compat/oracle/t/sp.test index 1880f153f2a..9ac4dbc7aed 100644 --- a/mysql-test/suite/compat/oracle/t/sp.test +++ b/mysql-test/suite/compat/oracle/t/sp.test @@ -1,5 +1,21 @@ SET sql_mode=ORACLE; +--echo # Testing ":=" to set the default value of a variable +DELIMITER /; +CREATE FUNCTION f1 () RETURNS NUMBER(10) AS + a NUMBER(10) := 10; +BEGIN + DECLARE + b NUMBER(10) DEFAULT 3; + BEGIN + RETURN a+b; + END; +END; +/ +DELIMITER ;/ +SELECT f1(); +DROP FUNCTION f1; + --echo # Testing labels DELIMITER /; diff --git a/sql/sql_yacc_ora.yy b/sql/sql_yacc_ora.yy index 0eec0946a30..dbcccd3bced 100644 --- a/sql/sql_yacc_ora.yy +++ b/sql/sql_yacc_ora.yy @@ -2851,6 +2851,7 @@ sp_decl_idents: sp_opt_default: /* Empty */ { $$ = NULL; } | DEFAULT expr { $$ = $2; } + | SET_VAR expr { $$ = $2; } ; /*