Skip to content

Commit

Permalink
fixes limit as name for jdbc named parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
wumpz committed Jul 17, 2019
1 parent 8679239 commit 7034cb1
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 6 deletions.
14 changes: 8 additions & 6 deletions src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt
Original file line number Diff line number Diff line change
Expand Up @@ -1104,7 +1104,7 @@ String RelObjectNameExt():
String result=null;
}
{
( result=RelObjectName() | tk=<K_LEFT> | tk=<K_RIGHT> | tk=<K_SET> | tk=<K_DOUBLE> | tk=<K_IF> | <K_OPTIMIZE>)
( result=RelObjectName() | tk=<K_LEFT> | tk=<K_RIGHT> | tk=<K_SET> | tk=<K_DOUBLE> | tk=<K_IF> | <K_OPTIMIZE> | tk=<K_LIMIT> | tk=<K_OFFSET>)
{
if (tk!=null) result=tk.image;
return result;
Expand Down Expand Up @@ -1952,10 +1952,10 @@ JdbcParameter SimpleJdbcParameter() : {
}

JdbcNamedParameter SimpleJdbcNamedParameter() : {
Token token;
String name;
}
{
":" token = <S_IDENTIFIER>
":" name = RelObjectNameExt()
{
return new JdbcNamedParameter(token.image);
}
Expand All @@ -1965,6 +1965,7 @@ Limit LimitWithOffset() #LimitWithOffset:
{
Limit limit = new Limit();
Token token = null;
String name;
JdbcParameter jdbc = null;
}
{
Expand All @@ -1977,7 +1978,7 @@ Limit LimitWithOffset() #LimitWithOffset:
|
jdbc = SimpleJdbcParameter() { limit.setOffset(jdbc); }
|
":" { limit.setOffset(new JdbcNamedParameter()); } [ LOOKAHEAD(2) token = <S_IDENTIFIER> { ((JdbcNamedParameter)limit.getOffset()).setName(token.image); } ]
":" { limit.setOffset(new JdbcNamedParameter()); } [ LOOKAHEAD(2) name = RelObjectNameExt() { ((JdbcNamedParameter)limit.getOffset()).setName(name); } ]

)
","
Expand All @@ -1987,7 +1988,7 @@ Limit LimitWithOffset() #LimitWithOffset:
|
jdbc = SimpleJdbcParameter() { limit.setRowCount(jdbc); }
|
":" { limit.setRowCount(new JdbcNamedParameter()); } [ LOOKAHEAD(2) token = <S_IDENTIFIER> { ((JdbcNamedParameter)limit.getRowCount()).setName(token.image); } ]
":" { limit.setRowCount(new JdbcNamedParameter()); } [ LOOKAHEAD(2) name = RelObjectNameExt() { ((JdbcNamedParameter)limit.getRowCount()).setName(name); } ]
)
|
limit = PlainLimit()
Expand All @@ -2003,6 +2004,7 @@ Limit PlainLimit() #PlainLimit:
Limit limit = new Limit();
Token token = null;
JdbcParameter jdbc;
String name;
}
{
// mysql-postgresql-> LIMIT (row_count | ALL | NULL)
Expand All @@ -2012,7 +2014,7 @@ Limit PlainLimit() #PlainLimit:
|
jdbc = SimpleJdbcParameter() { limit.setRowCount(jdbc); }
|
":" { limit.setRowCount(new JdbcNamedParameter()); } [ LOOKAHEAD(2) token = <S_IDENTIFIER> { ((JdbcNamedParameter)limit.getRowCount()).setName(token.image); } ]
":" { limit.setRowCount(new JdbcNamedParameter()); } [ LOOKAHEAD(2) name = RelObjectNameExt() { ((JdbcNamedParameter)limit.getRowCount()).setName(name); } ]
|
<K_ALL> { limit.setLimitAll(true);}
|
Expand Down
10 changes: 10 additions & 0 deletions src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,16 @@ public void testLimitOffsetIssue462_2() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("SELECT * FROM mytable LIMIT ?1 OFFSET ?2");
}

@Test
public void testLimitOffsetKeyWordAsNamedParameter() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("SELECT * FROM mytable LIMIT :limit");
}

@Test
public void testLimitOffsetKeyWordAsNamedParameter2() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("SELECT * FROM mytable LIMIT :limit OFFSET :offset");
}

@Test
public void testTop() throws JSQLParserException {
String statement = "SELECT TOP 3 * FROM mytable WHERE mytable.col = 9";
Expand Down

0 comments on commit 7034cb1

Please sign in to comment.