File tree Expand file tree Collapse file tree
jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/statement/select Expand file tree Collapse file tree Original file line number Diff line number Diff 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 }
Original file line number Diff line number Diff line change 2121 */
2222package net .sf .jsqlparser .statement .select ;
2323
24+ import net .sf .jsqlparser .expression .Expression ;
25+ import net .sf .jsqlparser .expression .JdbcNamedParameter ;
2426import net .sf .jsqlparser .expression .JdbcParameter ;
2527
2628/**
2931public 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 () {
Original file line number Diff line number Diff 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+
17481758Limit 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 )
Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments