Skip to content

Commit 60473ed

Browse files
committed
fixes #612
1 parent c5a0b02 commit 60473ed

File tree

4 files changed

+33
-8
lines changed

4 files changed

+33
-8
lines changed

src/main/java/net/sf/jsqlparser/expression/JdbcNamedParameter.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,13 @@ public class JdbcNamedParameter extends ASTNodeAccessImpl implements Expression
3131

3232
private String name;
3333

34-
/**
35-
* The name of the parameter
36-
*
37-
* @return the name of the parameter
38-
*/
34+
public JdbcNamedParameter() {
35+
}
36+
37+
public JdbcNamedParameter(String name) {
38+
this.name = name;
39+
}
40+
3941
public String getName() {
4042
return name;
4143
}

src/main/java/net/sf/jsqlparser/statement/select/Offset.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
*/
2222
package net.sf.jsqlparser.statement.select;
2323

24+
import net.sf.jsqlparser.expression.Expression;
25+
import net.sf.jsqlparser.expression.JdbcNamedParameter;
2426
import net.sf.jsqlparser.expression.JdbcParameter;
2527

2628
/**
@@ -29,7 +31,7 @@
2931
public class Offset {
3032

3133
private long offset;
32-
private JdbcParameter offsetJdbcParameter = null;
34+
private Expression offsetJdbcParameter = null;
3335
private String offsetParam = null;
3436

3537
public long getOffset() {
@@ -48,13 +50,17 @@ public void setOffsetParam(String s) {
4850
offsetParam = s;
4951
}
5052

51-
public JdbcParameter getOffsetJdbcParameter() {
53+
public Expression getOffsetJdbcParameter() {
5254
return offsetJdbcParameter;
5355
}
5456

5557
public void setOffsetJdbcParameter(JdbcParameter jdbc) {
5658
offsetJdbcParameter = jdbc;
5759
}
60+
61+
public void setOffsetJdbcParameter(JdbcNamedParameter jdbc) {
62+
offsetJdbcParameter = jdbc;
63+
}
5864

5965
@Override
6066
public String toString() {

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1745,6 +1745,16 @@ JdbcParameter SimpleJdbcParameter() : {
17451745
}
17461746
}
17471747

1748+
JdbcNamedParameter SimpleJdbcNamedParameter() : {
1749+
Token token;
1750+
}
1751+
{
1752+
":" token = <S_IDENTIFIER>
1753+
{
1754+
return new JdbcNamedParameter(token.image);
1755+
}
1756+
}
1757+
17481758
Limit LimitWithOffset() #LimitWithOffset:
17491759
{
17501760
Limit limit = new Limit();
@@ -1813,14 +1823,16 @@ Offset Offset():
18131823
Offset offset = new Offset();
18141824
Token token = null;
18151825
JdbcParameter jdbc;
1826+
JdbcNamedParameter jdbcNamed;
18161827
}
18171828
{
18181829
(
18191830
// postgresql-> OFFSET offset
18201831
// sqlserver-oracle-> OFFSET offset (ROW | ROWS)
18211832
<K_OFFSET>
18221833
(token=<S_LONG> { offset.setOffset(Long.parseLong(token.image)); }
1823-
| jdbc = SimpleJdbcParameter() { offset.setOffsetJdbcParameter(jdbc); } )
1834+
| jdbc = SimpleJdbcParameter() { offset.setOffsetJdbcParameter(jdbc); }
1835+
| jdbcNamed = SimpleJdbcNamedParameter() { offset.setOffsetJdbcParameter(jdbcNamed); })
18241836
[(<K_ROWS> { offset.setOffsetParam("ROWS"); } | <K_ROW> { offset.setOffsetParam("ROW"); })]
18251837

18261838
)

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3166,4 +3166,9 @@ public void testSqlContainIsNullFunctionShouldBeParsed() throws JSQLParserExcept
31663166
public void testNestedCast() throws JSQLParserException {
31673167
assertSqlCanBeParsedAndDeparsed("SELECT acolumn::bit (64)::bigint FROM mytable");
31683168
}
3169+
3170+
@Test
3171+
public void testNamedParametersIssue612() throws Exception {
3172+
assertSqlCanBeParsedAndDeparsed( "SELECT a FROM b LIMIT 10 OFFSET :param");
3173+
}
31693174
}

0 commit comments

Comments
 (0)