Hi Vitalii,

This will be a nice improvement. Your question about “IIF” vs. “IF” is in the 
context of one small enhancement. But, it raises a larger question (which is 
beyond the scope of your project, but is worth discussing anyway.)

That larger issue is that we really should modify the Drill SQL parser to 
better handle keywords vs. identifiers. That is, the following “pathological” 
statement should be valid:

SELECT select, from FROM from, where WHERE from.select = where.from;

This seems very confusing to us humans. But, to the SQL grammar the above is 
unambiguous. SQL syntax determines where a keyword is valid. All other uses of 
that keyword can easily be interpreted as an identifier. Further, the location 
of the identifier determines whether to interpreted it as a column, table, 
schema, function, etc. For example, a keyword will never appear in a select 
list, from list or where expression. Technically, we could introduce distinct 
name spaces for keywords, columns, tables, functions and so on.

Without this change we run two risks:

1. We can’t use proper SQL syntax when we need it (as in your project.)
2. We risk breaking queries when we add new keywords (as in the dynamic UDF 
project.)

This is not a new idea. Informix made this very change to their parser, for 
similar reasons — and did it back in the late ‘80s using C and YACC (for you 
old timers.)

I’m not familiar with the Calcite parser. Anyone know what would be involved in 
making this change so Vitalii can use proper SQL syntax?

- Paul


> On Jun 29, 2016, at 10:15 AM, Vitalii Diravka <[email protected]> 
> wrote:
> 
> Hi all!
> 
> I'm going to implement "DROP TABLE IIF EXISTS" and "DROP VIEW IIF EXISTS"
> statements in Drill (DRILL-4673
> <https://issues.apache.org/jira/browse/DRILL-4673>).
> The reason of using "IIF" is inability of adding "IF" keyword to
> non-reserved words list (due to SQL:2011 standard which calcite parser
> uses). Adding of "IF" to reserved words list leads to not working hive "IF"
> UDF.
> 
> I'm interested are there any concerns with using "IIF" ?
> 
> Kind regards
> Vitalii

Reply via email to