Skip to content

Commit e3b73a3

Browse files
committed
fixed #162
1 parent 432c0ef commit e3b73a3

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,13 @@
2222
package net.sf.jsqlparser.expression;
2323

2424
/**
25-
*
25+
* Simple uservariables like @test.
2626
* @author aud
2727
*/
2828
public class UserVariable implements Expression {
2929

3030
private String name;
31+
private boolean doubleAdd = false;
3132

3233
/**
3334
* The name of the parameter
@@ -47,8 +48,18 @@ public void accept(ExpressionVisitor expressionVisitor) {
4748
expressionVisitor.visit(this);
4849
}
4950

51+
public boolean isDoubleAdd() {
52+
return doubleAdd;
53+
}
54+
55+
public void setDoubleAdd(boolean doubleAdd) {
56+
this.doubleAdd = doubleAdd;
57+
}
58+
59+
60+
5061
@Override
5162
public String toString() {
52-
return "@" + name;
63+
return "@" + (doubleAdd?"@":"") + name;
5364
}
5465
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1919,7 +1919,8 @@ UserVariable UserVariable() : {
19191919
Token token;
19201920
}
19211921
{
1922-
"@" token=<S_IDENTIFIER>
1922+
("@" | "@@" { var.setDoubleAdd(true);} )
1923+
token=<S_IDENTIFIER>
19231924
{
19241925
var.setName(token.image);
19251926
return var;

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1921,4 +1921,8 @@ public void testIssue160_signedParameter() throws JSQLParserException {
19211921
public void testIssue160_signedParameter2() throws JSQLParserException {
19221922
assertSqlCanBeParsedAndDeparsed("SELECT * FROM mytable WHERE -? = 5");
19231923
}
1924+
1925+
public void testIssue162_doubleUserVar() throws JSQLParserException {
1926+
assertSqlCanBeParsedAndDeparsed("SELECT @@SPID AS ID, SYSTEM_USER AS \"Login Name\", USER AS \"User Name\"");
1927+
}
19241928
}

0 commit comments

Comments
 (0)