Skip to content

Commit 3209a16

Browse files
committed
fixes #753
1 parent 4f74f6d commit 3209a16

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
189189
| <K_JOIN:"JOIN">
190190
| <K_KEEP:"KEEP">
191191
| <K_KEY:"KEY">
192+
| <K_FN:"FN">
192193
| <K_LAST: "LAST">
193194
| <K_LATERAL:"LATERAL">
194195
| <K_LEADING:"LEADING">
@@ -1039,7 +1040,7 @@ String RelObjectNameWithoutValue() :
10391040
| tk=<K_INSERT> | tk=<K_INDEX> | tk=<K_PRIMARY> | tk=<K_ENABLE>
10401041
| tk=<K_UNSIGNED>
10411042
| tk=<K_TEMP> | tk=<K_TEMPORARY> | tk=<K_TYPE> | tk=<K_ISNULL>
1042-
| tk=<K_ZONE> | tk=<K_COLUMNS> | tk=<K_DESCRIBE>
1043+
| tk=<K_ZONE> | tk=<K_COLUMNS> | tk=<K_DESCRIBE> | tk=<K_FN>
10431044
/* | tk=<K_PLACING> | tk=<K_BOTH> | tk=<K_LEADING> | tk=<K_TRAILING> */
10441045
)
10451046

@@ -3118,7 +3119,7 @@ Function Function() #Function:
31183119
Expression expr1 = null;
31193120
}
31203121
{
3121-
["{fn" { retval.setEscaped(true); } ]
3122+
["{" <K_FN> { retval.setEscaped(true); } ]
31223123

31233124
funcName=RelObjectNameExt()
31243125

src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,13 @@ public void testEscapedFunctionsIssue647() throws JSQLParserException {
10631063
assertSqlCanBeParsedAndDeparsed("SELECT {fn concat(a, b)} AS COL");
10641064
}
10651065

1066+
@Test
1067+
public void testEscapedFunctionsIssue753() throws JSQLParserException {
1068+
Statement stmt = CCJSqlParserUtil.parse("SELECT { fn test(0)} AS COL");
1069+
assertEquals("SELECT {fn test(0)} AS COL", stmt.toString());
1070+
assertSqlCanBeParsedAndDeparsed("SELECT fn FROM fn");
1071+
}
1072+
10661073
@Test
10671074
public void testNamedParametersPR702() throws JSQLParserException {
10681075
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");

0 commit comments

Comments
 (0)