File tree Expand file tree Collapse file tree
java/net/sf/jsqlparser/expression
jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/expression Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -150,8 +150,6 @@ test {
150150 // set heap size for the test JVM(s)
151151 minHeapSize = " 128m"
152152 maxHeapSize = " 1G"
153-
154- finalizedBy check
155153}
156154
157155jacocoTestReport {
Original file line number Diff line number Diff line change 1212import net .sf .jsqlparser .parser .ASTNodeAccessImpl ;
1313
1414public class JdbcNamedParameter extends ASTNodeAccessImpl implements Expression {
15-
15+ private String parameterCharacter = ":" ;
1616 private String name ;
1717
18- public JdbcNamedParameter () {
19- }
18+ public JdbcNamedParameter () {}
2019
2120 public JdbcNamedParameter (String name ) {
2221 this .name = name ;
2322 }
2423
24+ public String getParameterCharacter () {
25+ return parameterCharacter ;
26+ }
27+
28+ public JdbcNamedParameter setParameterCharacter (String parameterCharacter ) {
29+ this .parameterCharacter = parameterCharacter ;
30+ return this ;
31+ }
32+
2533 public String getName () {
2634 return name ;
2735 }
@@ -37,7 +45,7 @@ public void accept(ExpressionVisitor expressionVisitor) {
3745
3846 @ Override
3947 public String toString () {
40- return ":" + name ;
48+ return parameterCharacter + name ;
4149 }
4250
4351 public JdbcNamedParameter withName (String name ) {
Original file line number Diff line number Diff line change @@ -3623,7 +3623,7 @@ Expression BitwiseAndOr():
36233623{
36243624 leftExpression=AdditiveExpression() { result = leftExpression; }
36253625 (
3626- (
3626+ LOOKAHEAD(2) (
36273627 "|" { result = new BitwiseOr(); }
36283628 |
36293629 "&" { result = new BitwiseAnd(); }
@@ -3918,7 +3918,7 @@ JdbcNamedParameter JdbcNamedParameter() : {
39183918 String namePart;
39193919}
39203920{
3921- ":"
3921+ ( ":" | "&" { parameter.setParameterCharacter("&"); } )
39223922 name=IdentifierChain()
39233923 {
39243924 parameter.setName(name);
Original file line number Diff line number Diff line change 1+ package net .sf .jsqlparser .expression ;
2+
3+ import net .sf .jsqlparser .JSQLParserException ;
4+ import net .sf .jsqlparser .expression .operators .arithmetic .BitwiseAnd ;
5+ import net .sf .jsqlparser .statement .select .PlainSelect ;
6+ import net .sf .jsqlparser .test .TestUtils ;
7+ import org .junit .jupiter .api .Test ;
8+
9+ import static org .junit .jupiter .api .Assertions .assertTrue ;
10+
11+ class JdbcNamedParameterTest {
12+ @ Test
13+ void testDoubleColon () throws JSQLParserException {
14+ String sqlStr = "select :test" ;
15+ PlainSelect select = (PlainSelect ) TestUtils .assertSqlCanBeParsedAndDeparsed (sqlStr , true );
16+ assertTrue (select .getSelectItems ().get (0 ).getExpression () instanceof JdbcNamedParameter );
17+ }
18+
19+ @ Test
20+ void testAmpersand () throws JSQLParserException {
21+ String sqlStr = "select &test, 'a & b', a & b" ;
22+ PlainSelect select = (PlainSelect ) TestUtils .assertSqlCanBeParsedAndDeparsed (sqlStr , true );
23+ assertTrue (select .getSelectItems ().get (0 ).getExpression () instanceof JdbcNamedParameter );
24+ assertTrue (select .getSelectItems ().get (2 ).getExpression () instanceof BitwiseAnd );
25+ }
26+
27+ @ Test
28+ void testIssue1785 () throws JSQLParserException {
29+ String sqlStr = "select * from all_tables\n "
30+ + "where owner = &myowner" ;
31+ TestUtils .assertSqlCanBeParsedAndDeparsed (sqlStr , true );
32+ }
33+ }
You can’t perform that action at this time.
0 commit comments