|
| 1 | +From 3209a16c55c1976d5b772c607fd4b9d5fb9f9483 Mon Sep 17 00:00:00 2001 |
| 2 | +From: wumpz <t.warneke@gmx.net> |
| 3 | +Date: Tue, 19 Feb 2019 01:35:14 +0100 |
| 4 | +Subject: [PATCH] fixes #753 |
| 5 | + |
| 6 | +--- |
| 7 | + src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt | 5 +++-- |
| 8 | + .../net/sf/jsqlparser/statement/select/SelectTest.java | 7 +++++++ |
| 9 | + 2 files changed, 10 insertions(+), 2 deletions(-) |
| 10 | + |
| 11 | +diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt |
| 12 | +index cd9bcd1..5f4b2b7 100644 |
| 13 | +--- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt |
| 14 | ++++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt |
| 15 | +@@ -189,6 +189,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ |
| 16 | + | <K_JOIN:"JOIN"> |
| 17 | + | <K_KEEP:"KEEP"> |
| 18 | + | <K_KEY:"KEY"> |
| 19 | ++| <K_FN:"FN"> |
| 20 | + | <K_LAST: "LAST"> |
| 21 | + | <K_LATERAL:"LATERAL"> |
| 22 | + | <K_LEADING:"LEADING"> |
| 23 | +@@ -1039,7 +1040,7 @@ String RelObjectNameWithoutValue() : |
| 24 | + | tk=<K_INSERT> | tk=<K_INDEX> | tk=<K_PRIMARY> | tk=<K_ENABLE> |
| 25 | + | tk=<K_UNSIGNED> |
| 26 | + | tk=<K_TEMP> | tk=<K_TEMPORARY> | tk=<K_TYPE> | tk=<K_ISNULL> |
| 27 | +- | tk=<K_ZONE> | tk=<K_COLUMNS> | tk=<K_DESCRIBE> |
| 28 | ++ | tk=<K_ZONE> | tk=<K_COLUMNS> | tk=<K_DESCRIBE> | tk=<K_FN> |
| 29 | + /* | tk=<K_PLACING> | tk=<K_BOTH> | tk=<K_LEADING> | tk=<K_TRAILING> */ |
| 30 | + ) |
| 31 | + |
| 32 | +@@ -3118,7 +3119,7 @@ Function Function() #Function: |
| 33 | + Expression expr1 = null; |
| 34 | + } |
| 35 | + { |
| 36 | +- ["{fn" { retval.setEscaped(true); } ] |
| 37 | ++ ["{" <K_FN> { retval.setEscaped(true); } ] |
| 38 | + |
| 39 | + funcName=RelObjectNameExt() |
| 40 | + |
| 41 | +diff --git a/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java b/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java |
| 42 | +index 7ee9b38..d39bfd3 100644 |
| 43 | +--- a/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java |
| 44 | ++++ b/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java |
| 45 | +@@ -1063,6 +1063,13 @@ public class SelectTest { |
| 46 | + assertSqlCanBeParsedAndDeparsed("SELECT {fn concat(a, b)} AS COL"); |
| 47 | + } |
| 48 | + |
| 49 | ++ @Test |
| 50 | ++ public void testEscapedFunctionsIssue753() throws JSQLParserException { |
| 51 | ++ Statement stmt = CCJSqlParserUtil.parse("SELECT { fn test(0)} AS COL"); |
| 52 | ++ assertEquals("SELECT {fn test(0)} AS COL", stmt.toString()); |
| 53 | ++ assertSqlCanBeParsedAndDeparsed("SELECT fn FROM fn"); |
| 54 | ++ } |
| 55 | ++ |
| 56 | + @Test |
| 57 | + public void testNamedParametersPR702() throws JSQLParserException { |
| 58 | + assertSqlCanBeParsedAndDeparsed("SELECT substring(id, 2, 3), substring(id from 2 for 3), substring(id from 2), trim(BOTH ' ' from 'foo bar '), trim(LEADING ' ' from 'foo bar '), trim(TRAILING ' ' from 'foo bar '), trim(' ' from 'foo bar '), position('foo' in 'bar'), overlay('foo' placing 'bar' from 1), overlay('foo' placing 'bar' from 1 for 2) FROM my table"); |
| 59 | +-- |
| 60 | +2.17.1.windows.2 |
| 61 | + |
0 commit comments