Found by Epic 19 / Story 19.4 while preparing the Tableau capture: the dialect rejects backtick-quoted identifiers in every position, and double-quoted TABLE names in FROM — which means 100% of Tableau-MySQL-dialect generated SQL parse-errors, and the SQL-92 dialect only partially parses.
Measured acceptance table (real Parser, 2026-08-31, elasticsql @ 0.21.0)
| statement |
verdict |
SELECT category FROM bi_events LIMIT 1 |
parses |
SELECT category FROM `bi_events` LIMIT 1 |
parse_error |
SELECT category FROM "bi_events" LIMIT 1 |
parse_error |
SELECT category FROM elastic.bi_events LIMIT 1 |
parses |
SELECT category FROM `elastic`.`bi_events` LIMIT 1 |
parse_error |
SELECT category FROM "elastic".bi_events LIMIT 1 |
parses |
SELECT category FROM "elastic"."bi_events" LIMIT 1 |
parse_error |
SELECT `category` FROM bi_events LIMIT 1 |
parse_error |
SELECT "category" FROM bi_events LIMIT 1 |
parses |
SELECT e.category FROM elastic.bi_events e LIMIT 1 |
parses |
Two quoting families:
- Backticks — rejected everywhere. Tableau's generic JDBC connector under its documented MySQL dialect backticks every identifier it generates (measured in its handshake:
DROP TABLE IF EXISTS `#Tableau...` , SELECT `COL` FROM (SELECT 1 AS `COL`) AS `SUBQUERY` ), so every generated viz query is a parse error.
- Double quotes — accepted for columns and for a schema PREFIX (
"x".t), rejected for the table name itself (FROM "t", FROM "x"."t"). This is the same asymmetry the Epic 19 jOOQ probe hit (19.2 finding F-11: jOOQ's default quoted rendering does not round-trip). It bites any SQL-92-dialect generator that quotes table names — Tableau's Generic SQL-92 option included.
Recommendation
Extend identifier lexing to accept quoted identifiers uniformly: double-quoted table names in FROM/JOIN (completing the existing partial support), and backtick quoting as a MySQL-compat alias in all identifier positions. Evidence base: the 19.4 corpus captures the exact statements real tools emit; the acceptance table above is reproducible via the story's parser probe.
Found by Epic 19 / Story 19.4 while preparing the Tableau capture: the dialect rejects backtick-quoted identifiers in every position, and double-quoted TABLE names in FROM — which means 100% of Tableau-MySQL-dialect generated SQL parse-errors, and the SQL-92 dialect only partially parses.
Measured acceptance table (real Parser, 2026-08-31, elasticsql @ 0.21.0)
SELECT category FROM bi_events LIMIT 1SELECT category FROM `bi_events` LIMIT 1SELECT category FROM "bi_events" LIMIT 1SELECT category FROM elastic.bi_events LIMIT 1SELECT category FROM `elastic`.`bi_events` LIMIT 1SELECT category FROM "elastic".bi_events LIMIT 1SELECT category FROM "elastic"."bi_events" LIMIT 1SELECT `category` FROM bi_events LIMIT 1SELECT "category" FROM bi_events LIMIT 1SELECT e.category FROM elastic.bi_events e LIMIT 1Two quoting families:
DROP TABLE IF EXISTS `#Tableau...`,SELECT `COL` FROM (SELECT 1 AS `COL`) AS `SUBQUERY`), so every generated viz query is a parse error."x".t), rejected for the table name itself (FROM "t",FROM "x"."t"). This is the same asymmetry the Epic 19 jOOQ probe hit (19.2 finding F-11: jOOQ's default quoted rendering does not round-trip). It bites any SQL-92-dialect generator that quotes table names — Tableau's Generic SQL-92 option included.Recommendation
Extend identifier lexing to accept quoted identifiers uniformly: double-quoted table names in FROM/JOIN (completing the existing partial support), and backtick quoting as a MySQL-compat alias in all identifier positions. Evidence base: the 19.4 corpus captures the exact statements real tools emit; the acceptance table above is reproducible via the story's parser probe.