File tree Expand file tree Collapse file tree 4 files changed +33
-8
lines changed
jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/statement/select Expand file tree Collapse file tree 4 files changed +33
-8
lines changed Original file line number Diff line number Diff line change @@ -31,11 +31,13 @@ public class JdbcNamedParameter extends ASTNodeAccessImpl implements Expression
31
31
32
32
private String name ;
33
33
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
+
39
41
public String getName () {
40
42
return name ;
41
43
}
Original file line number Diff line number Diff line change 21
21
*/
22
22
package net .sf .jsqlparser .statement .select ;
23
23
24
+ import net .sf .jsqlparser .expression .Expression ;
25
+ import net .sf .jsqlparser .expression .JdbcNamedParameter ;
24
26
import net .sf .jsqlparser .expression .JdbcParameter ;
25
27
26
28
/**
29
31
public class Offset {
30
32
31
33
private long offset ;
32
- private JdbcParameter offsetJdbcParameter = null ;
34
+ private Expression offsetJdbcParameter = null ;
33
35
private String offsetParam = null ;
34
36
35
37
public long getOffset () {
@@ -48,13 +50,17 @@ public void setOffsetParam(String s) {
48
50
offsetParam = s ;
49
51
}
50
52
51
- public JdbcParameter getOffsetJdbcParameter () {
53
+ public Expression getOffsetJdbcParameter () {
52
54
return offsetJdbcParameter ;
53
55
}
54
56
55
57
public void setOffsetJdbcParameter (JdbcParameter jdbc ) {
56
58
offsetJdbcParameter = jdbc ;
57
59
}
60
+
61
+ public void setOffsetJdbcParameter (JdbcNamedParameter jdbc ) {
62
+ offsetJdbcParameter = jdbc ;
63
+ }
58
64
59
65
@ Override
60
66
public String toString () {
Original file line number Diff line number Diff line change @@ -1745,6 +1745,16 @@ JdbcParameter SimpleJdbcParameter() : {
1745
1745
}
1746
1746
}
1747
1747
1748
+ JdbcNamedParameter SimpleJdbcNamedParameter() : {
1749
+ Token token;
1750
+ }
1751
+ {
1752
+ ":" token = <S_IDENTIFIER>
1753
+ {
1754
+ return new JdbcNamedParameter(token.image);
1755
+ }
1756
+ }
1757
+
1748
1758
Limit LimitWithOffset() #LimitWithOffset:
1749
1759
{
1750
1760
Limit limit = new Limit();
@@ -1813,14 +1823,16 @@ Offset Offset():
1813
1823
Offset offset = new Offset();
1814
1824
Token token = null;
1815
1825
JdbcParameter jdbc;
1826
+ JdbcNamedParameter jdbcNamed;
1816
1827
}
1817
1828
{
1818
1829
(
1819
1830
// postgresql-> OFFSET offset
1820
1831
// sqlserver-oracle-> OFFSET offset (ROW | ROWS)
1821
1832
<K_OFFSET>
1822
1833
(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); })
1824
1836
[(<K_ROWS> { offset.setOffsetParam("ROWS"); } | <K_ROW> { offset.setOffsetParam("ROW"); })]
1825
1837
1826
1838
)
Original file line number Diff line number Diff line change @@ -3166,4 +3166,9 @@ public void testSqlContainIsNullFunctionShouldBeParsed() throws JSQLParserExcept
3166
3166
public void testNestedCast () throws JSQLParserException {
3167
3167
assertSqlCanBeParsedAndDeparsed ("SELECT acolumn::bit (64)::bigint FROM mytable" );
3168
3168
}
3169
+
3170
+ @ Test
3171
+ public void testNamedParametersIssue612 () throws Exception {
3172
+ assertSqlCanBeParsedAndDeparsed ( "SELECT a FROM b LIMIT 10 OFFSET :param" );
3173
+ }
3169
3174
}
You can’t perform that action at this time.
0 commit comments