1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-24 19:42:23 +03:00
Commit Graph

34 Commits

Author SHA1 Message Date
ca906fb273 MDEV-13686 EXCEPTION reserved keyword in SQL_MODE=oracle but not in Oracle itself 2017-09-14 13:57:14 +04:00
a8caa8e04a MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions 2017-05-20 16:29:11 +04:00
281f8a42ee MDEV-12089 sql_mode=ORACLE: Understand optional routine name after the END keyword 2017-04-05 15:03:01 +04:00
7ca2f816a8 Part#2 for MDEV-12107 sql_mode=ORACLE: Inside routines the CALL keywoard is optional
Allowing qualified procedure names to be used without the CALL keyword:

BEGIN
  test.p1(10);
  test.p2;
END;

Note:
- COMMIT and ROLLBACK cannot be used in a direct assignment anymore:
    COMMIT:= 10;
    ROLLBACK:= 10;
  But as they are reserved keywords in Oracle anyway, this is not a problem.
- SHUTDOWN now also cannot be used in direct a direct assignment:
    SHUTDOWN:=10;
  If this causes migration problems in the future, the grammar should
  be modified.

Note:
  Variables with names COMMIT, ROLLBACK and SHUTDOWN can still be assigned
  with the SET statement, e.g. SET COMMIT=10;
2017-04-05 15:02:58 +04:00
29e7cf01c3 MDEV-12107 sql_mode=ORACLE: Inside routines the CALL keywoard is optional 2017-04-05 15:02:58 +04:00
81f32145fa MDEV-10655 Anonymous blocks 2017-04-05 15:02:55 +04:00
46d076d67a MDEV-10577 sql_mode=ORACLE: %TYPE in variable declarations 2017-04-05 15:02:54 +04:00
a699a5f967 MDEV-10583 sql_mode=ORACLE: SQL%ROWCOUNT 2017-04-05 15:02:50 +04:00
f564ceb473 Fixed a crash in a EXIT/CONTINUE with an unknown identifier in the WHEN clause
The crash happened because of a wrong reset_lex() .. restore_lex() sequence.
The Item in WHERE clause and the corresponding sp_instr_jump_if_not() were
erroneously created using different LEX.
2017-04-05 15:02:48 +04:00
cfb6345982 Fixed that 'FOR i IN 1..10' with no spaces around '..' returned a syntax error.
This is a fix for "MDEV-10580 sql_mode=ORACLE: FOR loop statement"
The tokenizer now treats digits followed by two dots (e.g. '1..')
as an integer number '1' followed by DOT_DOT_SYM.
Previously this sequence was treated as a double number '1.' followed by '.'.
2017-04-05 15:02:48 +04:00
bf573e21c7 MDEV-10580 sql_mode=ORACLE: FOR loop statement
Fixed a crash when trying to use a FOR loop as a compound statement
outside of an SP. A bug in 051e415d8a251bd70e9b73619dbcc40f3c65371d.
2017-04-05 15:02:48 +04:00
7e7ba7cb94 Removing SHOW FUNCTION CODE from compat/oracle.sp,
as this type of SHOW is only available in debug builds.
A bug in b7af3e704dd7800638ef677e9d921ad3e467a9a6.
All SHOW FUNCTION CODE queries should be in compat/oracle.sp-code.
2017-04-05 15:02:47 +04:00
ca242117ce MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 19: CONTINUE statement
2017-04-05 15:02:47 +04:00
442ea81ed3 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Fixed that the ITERATE statement inside a FOR LOOP statement did not
increment the index variable before jumping to the beginning
of the loop, which caused the loop to repeat endlessly.
2017-04-05 15:02:47 +04:00
2ea63492f7 MDEV-10580 sql_mode=ORACLE: FOR loop statement
Adding labeled FOR LOOP
2017-04-05 15:02:46 +04:00
c570636ba2 MDEV-10580 sql_mode=ORACLE: FOR loop statement
Adding non-labeled FOR LOOP statement.
2017-04-05 15:02:46 +04:00
28f2859136 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 18: WHILE syntax
2017-04-05 15:02:45 +04:00
4212039db7 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 17: RETURN in stored procedures
2017-04-05 15:02:45 +04:00
ed19ed6a4b MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 16: CURSOR declaration
2017-04-05 15:02:45 +04:00
6cd24d124f MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 15: ELSIF vs ELSEIF

Also, moving tests for Oracle keywords in sql_mode=DEFAULT
from "parser.test" to a better place "keywords.test".
2017-04-05 15:02:44 +04:00
a83d0aee96 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 5: EXIT statement

Adding optional WHEN clause:

EXIT [label] [WHEN expr]
2017-04-05 15:02:44 +04:00
8feb984211 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 5: EXIT statement

Adding unconditional EXIT statement:

  EXIT [ label ]

Conditional EXIT statements with WHERE clause
will be added in a separate patch.
2017-04-05 15:02:44 +04:00
4b61495576 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 9: EXCEPTION handlers

EXCEPTION is now supported in inner blocks.
2017-04-05 15:02:43 +04:00
81ba971d03 MDEV-10411 Providing compatibility for basic PL/SQL constructs
- Part 9: EXCEPTION handlers

  The top-most stored routine blocks now support EXCEPTION clause
  in its correct place:
  AS [ declarations ]
  BEGIN statements
  [ EXCEPTION exceptions ]
  END

  Inner block will be done in a separate commit.

- Part 14: IN OUT instead of INOUT (in SP parameter declarations)
2017-04-05 15:02:42 +04:00
0040b0f380 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 13: RETURN vs RETURNS in function definition:

  CREATE FUNCTION f1(a INT) RETURN INT ...

Part 12:  No parentheses if no arguments:

  CREATE FUNCTION f1 RETURN INT ...
2017-04-05 15:02:42 +04:00
bd76d44564 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 12: No parentheses if no arguments
Now "CREATE PROCEDURE p1 AS" is supported with no parentheses after the name.
Note, "CREATE FUNCTION f1 AS" is not supported yet, due to grammar conflict
with UDFs. Functions will be done in a separate patch.
2017-04-05 15:02:42 +04:00
dc292bc6eb MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 11: NULL as a statement
2017-04-05 15:02:41 +04:00
0c9c4b84b7 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 10: Default variable value: x INT := 10;
2017-04-05 15:02:41 +04:00
8fdc1f0147 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 9: EXCEPTION handlers

- Adding exception handler syntax:
  WHEN exception_name THEN statement
- Adding EXCEPTION section intoi the top BEGIN..END SP block.
  Note, currently EXCEPTION goes in the beginning of the top BEGIN..END
  SP block.

TODO:
- add EXCEPTION section into inner blocks
- move EXCEPTION to the end of the block
2017-04-05 15:02:41 +04:00
a44e90ae05 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 7: variable declarations
2017-04-05 15:02:40 +04:00
f71a1f736d MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 4: AS/IS keyword before a function or a procedure body
2017-04-05 15:02:39 +04:00
892af78085 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part6: assignment operator

  var:= 10;
2017-04-05 15:02:39 +04:00
7e10e38825 MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part2: Different order of IN, OUT, INOUT keywords in CREATE PROCEDURE params
2017-04-05 15:02:38 +04:00
47a75ed7cb MDEV-10411 Providing compatibility for basic PL/SQL constructs
Changing label syntax from "label:" to "<<label>>".
2017-04-05 15:02:38 +04:00