SQL Syntax Support¶
How much of each SQL dialect General SQL Parser actually parses — measured, versioned, and cross-referenced to the vendor documentation that defines each construct. Follow a dialect link for the construct-by-construct breakdown and its keyword-compatibility reference.
Parse coverage matrix¶
Measured against GSP Java 4.2.8 on 2026-08-31 (UTC) (artifact sha256 1117856ef134). Every number below comes from an automated parse run of GSP's documented-example corpus — one file per SQL construct, each cross-referenced to the vendor documentation that defines it.
How to read these numbers
Percentages are pass rates over each dialect's documented-example corpus, not a percentage of the entire SQL dialect. Corpora differ in size and exhaustiveness across dialects, so do not rank dialects against each other by percentage alone. Dialects without a corpus yet are listed as not measured — never as zero.
Across all measured dialects: 3480 of 3646 constructs (95%) and 10607 of 10996 individual statements (96%) parse fully.
Machine-readable: matrix.json · matrix.csv · dialect manifest · compatibility registry · per-dialect JSON linked in each row. Measured against open-source parsers: GSP vs sqlglot vs JSQLParser.
The SELECT, DML and stored-procedure columns are statement-level pass rates for the statement classes most users ask about first; each dialect page defines exactly what counts toward them.
| Dialect | Constructs fully parsed | Statements parsed | SELECT | DML | Stored procedures | Keywords (usable as identifier) | Data |
|---|---|---|---|---|---|---|---|
| Athena | 32 of 32 (100%) | 72 of 72 (100%) | 8 of 8 (100%) | 6 of 6 (100%) | — | 529 (526) | JSON |
| BigQuery | 69 of 71 (97%) | 221 of 223 (99%) | 98 of 98 (100%) | 31 of 31 (100%) | 7 of 7 (100%) | 271 (269) | JSON |
| ClickHouse | 156 of 156 (100%) | 717 of 717 (100%) | 258 of 258 (100%) | 47 of 47 (100%) | 4 of 4 (100%) | 554 (551) | JSON |
| Couchbase | 30 of 38 (79%) | 208 of 233 (89%) | 97 of 108 (90%) | 39 of 39 (100%) | — | 172 (168) | JSON |
| Databricks | 34 of 38 (89%) | 86 of 91 (95%) | 11 of 11 (100%) | 12 of 12 (100%) | 2 of 3 (67%) | 585 (582) | JSON |
| DB2 | 174 of 174 (100%) | 524 of 524 (100%) | 15 of 15 (100%) | 44 of 44 (100%) | 47 of 47 (100%) | 573 (570) | JSON |
| Apache Doris | 38 of 46 (83%) | 123 of 134 (92%) | 17 of 21 (81%) | 16 of 17 (94%) | — | 574 (571) | JSON |
| Exasol | 54 of 56 (96%) | 194 of 199 (97%) | 28 of 29 (97%) | 14 of 14 (100%) | 0 of 2 (0%) | not measured | JSON |
| Flink SQL | 38 of 39 (97%) | 127 of 129 (98%) | 42 of 44 (95%) | 6 of 6 (100%) | 5 of 5 (100%) | 312 (309) | JSON |
| GaussDB | 26 of 27 (96%) | 59 of 60 (98%) | 2 of 2 (100%) | 9 of 9 (100%) | 3 of 3 (100%) | 584 (581) | JSON |
| Greenplum | 148 of 154 (96%) | 460 of 487 (94%) | 22 of 22 (100%) | 35 of 35 (100%) | 15 of 18 (83%) | 519 (466) | JSON |
| SAP HANA | 122 of 126 (97%) | 214 of 219 (98%) | 26 of 26 (100%) | 8 of 8 (100%) | 4 of 6 (67%) | 655 (643) | JSON |
| Hive | 75 of 89 (84%) | 405 of 431 (94%) | 145 of 147 (99%) | 23 of 23 (100%) | 0 of 1 (0%) | 335 (334) | JSON |
| Impala | 46 of 47 (98%) | 288 of 290 (99%) | 75 of 75 (100%) | 43 of 43 (100%) | 1 of 1 (100%) | 264 (262) | JSON |
| Informix | 134 of 164 (82%) | 1089 of 1153 (94%) | 177 of 187 (95%) | 65 of 71 (92%) | 5 of 16 (31%) | 703 (674) | JSON |
| MySQL | 135 of 135 (100%) | 242 of 242 (100%) | 90 of 90 (100%) | 16 of 16 (100%) | 22 of 22 (100%) | 538 (534) | JSON |
| Netezza | 65 of 73 (89%) | 149 of 169 (88%) | 13 of 13 (100%) | 14 of 16 (88%) | — | 435 (432) | JSON |
| ODBC | 19 of 22 (86%) | 61 of 68 (90%) | 41 of 42 (98%) | 15 of 16 (94%) | — | 469 (429) | JSON |
| OpenEdge | 49 of 49 (100%) | 169 of 169 (100%) | 20 of 20 (100%) | 14 of 14 (100%) | 3 of 3 (100%) | 469 (425) | JSON |
| Oracle | 182 of 182 (100%) | 319 of 319 (100%) | 19 of 19 (100%) | 21 of 21 (100%) | 6 of 6 (100%) | 690 (659) | JSON |
| PostgreSQL | 127 of 132 (96%) | 467 of 481 (97%) | 45 of 46 (98%) | 45 of 45 (100%) | 14 of 16 (88%) | 613 (582) | JSON |
| Presto | 66 of 66 (100%) | 157 of 157 (100%) | 41 of 41 (100%) | 8 of 8 (100%) | 3 of 3 (100%) | 519 (516) | JSON |
| Redshift | 88 of 90 (98%) | 148 of 150 (99%) | 22 of 22 (100%) | 6 of 6 (100%) | 3 of 3 (100%) | 488 (463) | JSON |
| Snowflake | 455 of 455 (100%) | 757 of 757 (100%) | 94 of 94 (100%) | 66 of 66 (100%) | 38 of 38 (100%) | 730 (689) | JSON |
| Salesforce SOQL | 28 of 30 (93%) | 101 of 106 (95%) | 101 of 106 (95%) | — | — | 541 (500) | JSON |
| Spark SQL | 69 of 70 (99%) | 241 of 243 (99%) | 93 of 93 (100%) | 17 of 17 (100%) | 3 of 3 (100%) | 330 (327) | JSON |
| SQL Server | 290 of 290 (100%) | 1082 of 1082 (100%) | 58 of 58 (100%) | 58 of 58 (100%) | 7 of 7 (100%) | 586 (541) | JSON |
| StarRocks | 34 of 40 (85%) | 99 of 109 (91%) | 20 of 21 (95%) | 6 of 13 (46%) | — | 610 (607) | JSON |
| Sybase | 111 of 123 (90%) | 296 of 335 (88%) | 15 of 15 (100%) | 16 of 16 (100%) | 4 of 9 (44%) | 456 (413) | JSON |
| Sybase ASE | 58 of 69 (84%) | 232 of 245 (95%) | 39 of 39 (100%) | 12 of 14 (86%) | 19 of 19 (100%) | not measured | JSON |
| SAP SQL Anywhere | 108 of 119 (91%) | 291 of 328 (89%) | 15 of 15 (100%) | 16 of 16 (100%) | 4 of 8 (50%) | not measured | JSON |
| Sybase IQ | 111 of 123 (90%) | 296 of 335 (88%) | 15 of 15 (100%) | 16 of 16 (100%) | 4 of 9 (44%) | not measured | JSON |
| Teradata | 45 of 47 (96%) | 116 of 118 (98%) | 40 of 40 (100%) | 8 of 8 (100%) | 5 of 5 (100%) | 702 (698) | JSON |
| Trino | 68 of 78 (87%) | 151 of 175 (86%) | 45 of 46 (98%) | 9 of 9 (100%) | 2 of 2 (100%) | not measured | JSON |
| Vertica | 196 of 196 (100%) | 446 of 446 (100%) | 64 of 64 (100%) | 14 of 14 (100%) | 10 of 10 (100%) | 576 (573) | JSON |
| ANSI SQL | not measured | not measured | — | — | — | 636 (632) | — |
| SQLite | not measured | not measured | — | — | — | 567 (564) | — |
Methodology¶
- Corpus: one file per documented SQL construct, containing the complete set of examples from the vendor's own documentation for that construct, with the source URL recorded in the file header. The corpus lives in the GSP repository (
sqlcoverage/sqlfiles/) (commit2bcb45940). - Measurement: each file is parsed with
TGSqlParserfor the dialect; statements are split with the parser's own splitter and scored individually. A construct counts as fully parsed only when every one of its example statements parses without error. - Keyword data: extracted from the parser's lexer and grammar sources and runtime-validated (can this keyword be used as an identifier in SELECT/CREATE/INSERT contexts?). See each dialect's keyword-compatibility page.
- Refresh cadence: regenerated with each GSP release; the version and date stamps above identify the exact build measured.