[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Merging our two SQL parser configs

So we have two incompatible SQL parser configs in beam. One is in BeamQueryPlanner which is used by default and a second in BeamSqlParser which is used only in the BeamSqlCli execute path (not the explain path). There are also a bunch of 'toLowerCase()' calls scattered around our code. I'd like to get us on one parser config and remove the need for toLowerCase calls.

To do this, I am proposing we standardize these all to go through BeamQueryPlanner, use the Calcite Lex.JAVA config, and drop the 'toLowerCase()' calls. This will result in the parser preserving case, being case sensitive, and using backticks for quoted identifiers. This is the same as the default config in Apache Flink and is roughly compatible with BigQuery. It effectively leaves the default path unchanged, except case will now be preserved and checked consistently. The BeamSqlCli execute path will remain unchanged for unquoted queries with all lower case names, which is what we have tested. Comments? Objections?