Below are mostly minor notes for which clarification is needed.
Conceptual: are we sure that ORACLE mode should invalidate native MariaDB constructs? We need some consistency and in my understanding following should still work in Oracle mode:
ELSE / ELSEIF
% operation (if possible)
MDEV-10343 sql_mode=ORACLE: Providing compatibility for basic SQL data types
following are valid build-in datatypes declaration in oracle which cause syntax error at the moment (needs to be documented or created another task):
these probably had to be implemented inside
these need more effort or maybe just must be documented or separate task is needed
this should give an error (oracle will return ORA-02017: integer value required )
MDEV-10411 Providing compatibility for basic PL/SQL constructs
3.6 Assignment operator
It doesn't sound intuitive that one may write "wait_timeout:=a", but "a:=wait_timeout" shows syntax error.
3.7 Variable declarations
Oracle allows NOT NULL in variable declaration. Maybe we should allow that syntax as well?
MDEV-10585 EXECUTE IMMEDIATE
In ORACLE the command supports 'RETURNING INTO' clause, we should probably document the difference?
MDEV-10588 TRUNCATE TABLE t1 DROP|REUSE STORAGE
Following clauses should be allowed in TRUNCATE command as well:
[ PRESERVE MATERIALIZED VIEW LOG | PURGE MATERIALIZED VIEW LOG ]
MDEV-10577 sql_mode=ORACLE: %TYPE in variable declarations
It is not clear what is expected to happen if table's column definition is altered after stored program creation.