The "table_expression" rule currently looks like this:
We'll do the following refactoring:
1. Remove the extra parts (opt_order_clause, opt_limit_clause, opt_procedure_clause, opt_select_lock_type parts), and make the "from_clause" non-optional:
After this change table_expression will match the SQL Standard <table expression> production.
2. Add the "opt_table_expression" rule
3. Move the extra parts of the ex-table_expression to the "caller" rules, and remove the opt_procedure_clause from non-relevant places.
It will change these queries using subselects and derived table:
as well as:
to return "syntax error" instead of "Incorrect usage".