From 3a3cd95d476274240d8aaf747e1f8ca37cf6eea4 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Fri, 4 Aug 2017 10:19:05 +0200 Subject: [PATCH] [#5955] Supported additional quote sequences --- .../main/resources/org/jooq/web/grammar-3.10.txt | 3 ++- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 16 +++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.10.txt b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.10.txt index 5c9ec7c470..df82950726 100644 --- a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.10.txt +++ b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.10.txt @@ -486,6 +486,7 @@ term = | 'FIRST_VALUE' '(' field ')' over | 'GREATEST' '(' fields ')' | 'GROUP_CONCAT' '(' [ 'DISTINCT' ] field [ 'ORDER BY' sortFields ] [ 'SEPARATOR' stringLiteral ] ')' +| 'GROUP_ID' '(' ')' | 'GROUPING_ID' '(' fields ')' | 'GROUPING' '(' fields ')' | 'HOUR' '(' field ')' @@ -705,11 +706,11 @@ name = identifier { '.' identifier } stringLiteral = ( "'" character* "'" -| "q'!" characters* "!'" | "q'[" characters* "]'" | "q'{" characters* "}'" | "q'(" characters* ")'" | "q'<" characters* ">'" +| "q'" nonSpaceCharacter characters* nonSpaceCharacter "'" ) ; diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index a3df10d2d7..731ffe155f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -5171,13 +5171,15 @@ class ParserImpl implements Parser { char end; switch (start) { - case '!': end = '!'; ctx.position = ctx.position + 1; break; - case '[': end = ']'; ctx.position = ctx.position + 1; break; - case '{': end = '}'; ctx.position = ctx.position + 1; break; - case '(': end = ')'; ctx.position = ctx.position + 1; break; - case '<': end = '>'; ctx.position = ctx.position + 1; break; - default: - throw ctx.exception("Illegal quote string character"); + case '[' : end = ']'; ctx.position = ctx.position + 1; break; + case '{' : end = '}'; ctx.position = ctx.position + 1; break; + case '(' : end = ')'; ctx.position = ctx.position + 1; break; + case '<' : end = '>'; ctx.position = ctx.position + 1; break; + case ' ' : + case '\t': + case '\r': + case '\n': throw ctx.exception("Illegal quote string character"); + default : end = start; ctx.position = ctx.position + 1; break; } StringBuilder sb = new StringBuilder();