Hello Jerome, Sorry for a late reply. I was fully busy with the CURSOR FOR LOOP related tasks. Now have time to catch time with my emails. On 03/03/2017 05:17 PM, jerome brauge wrote:
Hello Alexander,
When I compiled some real procedures, I find some tables alias not supported by the current grammar. Example : create table t1 (col1 int); select dec.* from t1 dec; select mod.* from t1 mod;
I have done a complete test on Oracle and Mariadb with all keywords used as variables, table alias and goto/block labels. You can find result in attached excel file.
Thank you very much. Is my understanding correct: "TODO" in some cell means that this keyword works differently in Oracle vs MariaDB's sql_mode=ORACLE? That is: - either works fine in Oracle (as a variable, or a label, or a table alias), but does not work in sql_mode=ORACLE - or, the other way around, it is not allowed in Oracle, but is accepted by sql_mode=ORACLE? ?
In addition, schema object names and qualifiers must complied with : https://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements008.htm#S...
I have created a task for this: https://jira.mariadb.org/browse/MDEV-12224 The most tricky part is to implement regular vs quoted identifiers.
I tried to add these keywords in rules keyword_directly_assignable, keyword_sp_not_data_type and keyword_sp_data_type, but this generates too many conflicts. I think that some refactoring of the grammar rules must be done, but I don't know how to do this.
Every keyword should be checked individually. By the way, labels should be easy to fix, because they are surrounded by << and >>, so they should not cause any conflicts at all.
Regards, Jérôme.