diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 50d98ed83..6bbe251c5 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -2535,6 +2535,7 @@ String NonReservedWord() : | tk= | tk= | tk= + | tk= | tk= | tk= | tk= @@ -2866,7 +2867,6 @@ TOKEN: /* Reserved SQL Keywords and structural tokens */ | | | -| | | /* Salesforce SOQL */ | diff --git a/src/site/sphinx/keywords.rst b/src/site/sphinx/keywords.rst index a9058fbaa..ed27b6060 100644 --- a/src/site/sphinx/keywords.rst +++ b/src/site/sphinx/keywords.rst @@ -47,8 +47,6 @@ The following Keywords are **reserved** in JSQLParser-|JSQLPARSER_VERSION| and m +---------------------------+ | ELSE | +---------------------------+ -| ERRORS | -+---------------------------+ | EXCEPT | +---------------------------+ | EXCLUDES | diff --git a/src/test/java/net/sf/jsqlparser/statement/KeywordsTest.java b/src/test/java/net/sf/jsqlparser/statement/KeywordsTest.java index 9e2c14ce7..c349e92c9 100644 --- a/src/test/java/net/sf/jsqlparser/statement/KeywordsTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/KeywordsTest.java @@ -62,4 +62,14 @@ public void testGroupsAsIdentifier() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("SELECT a groups FROM mytable", true); assertSqlCanBeParsedAndDeparsed("CREATE TABLE mytable (groups INT)", true); } + + // ERRORS introduces Exasol's IMPORT/EXPORT error clauses but is an ordinary name elsewhere, + // e.g. a DuckDB column holding the errors of an upstream step. + @Test + public void testErrorsAsIdentifier() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("SELECT errors FROM mytable", true); + assertSqlCanBeParsedAndDeparsed("SELECT t.errors AS errors FROM mytable t", true); + assertSqlCanBeParsedAndDeparsed("WITH errors AS (SELECT 1) SELECT * FROM errors", true); + assertSqlCanBeParsedAndDeparsed("CREATE TABLE mytable (errors VARCHAR)", true); + } }