Skip to content

Commit 801cd84

Browse files
committed
fixes #588
1 parent 2c272f4 commit 801cd84

File tree

4 files changed

+35
-7
lines changed

4 files changed

+35
-7
lines changed

src/main/java/net/sf/jsqlparser/expression/operators/relational/IsNullExpression.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class IsNullExpression extends ASTNodeAccessImpl implements Expression {
2929

3030
private Expression leftExpression;
3131
private boolean not = false;
32+
private boolean useIsNull = false;
3233

3334
public Expression getLeftExpression() {
3435
return leftExpression;
@@ -46,13 +47,25 @@ public void setNot(boolean b) {
4647
not = b;
4748
}
4849

50+
public boolean isUseIsNull() {
51+
return useIsNull;
52+
}
53+
54+
public void setUseIsNull(boolean useIsNull) {
55+
this.useIsNull = useIsNull;
56+
}
57+
4958
@Override
5059
public void accept(ExpressionVisitor expressionVisitor) {
5160
expressionVisitor.visit(this);
5261
}
5362

5463
@Override
5564
public String toString() {
56-
return leftExpression + " IS " + (not ? "NOT " : "") + "NULL";
65+
if (isUseIsNull()) {
66+
return leftExpression + (not ? " NOT" : "") + " ISNULL";
67+
} else {
68+
return leftExpression + " IS " + (not ? "NOT " : "") + "NULL";
69+
}
5770
}
5871
}

src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,10 +262,18 @@ public void visit(SignedExpression signedExpression) {
262262
@Override
263263
public void visit(IsNullExpression isNullExpression) {
264264
isNullExpression.getLeftExpression().accept(this);
265-
if (isNullExpression.isNot()) {
266-
buffer.append(" IS NOT NULL");
265+
if (isNullExpression.isUseIsNull()) {
266+
if (isNullExpression.isNot()) {
267+
buffer.append(" NOT ISNULL");
268+
} else {
269+
buffer.append(" ISNULL");
270+
}
267271
} else {
268-
buffer.append(" IS NULL");
272+
if (isNullExpression.isNot()) {
273+
buffer.append(" IS NOT NULL");
274+
} else {
275+
buffer.append(" IS NULL");
276+
}
269277
}
270278
}
271279

@@ -727,7 +735,7 @@ public void visit(KeepExpression aexpr) {
727735
public void visit(MySQLGroupConcat groupConcat) {
728736
buffer.append(groupConcat.toString());
729737
}
730-
738+
731739
@Override
732740
public void visit(ValueListExpression valueList) {
733741
buffer.append(valueList.toString());

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
203203
| <K_INTERVAL:"INTERVAL">
204204
| <K_INTO:"INTO">
205205
| <K_IS:"IS">
206+
| <K_ISNULL:"ISNULL">
206207
| <K_JOIN:"JOIN">
207208
| <K_KEEP:"KEEP">
208209
| <K_KEY:"KEY">
@@ -2169,9 +2170,11 @@ Expression IsNullExpression():
21692170
}
21702171
{
21712172
(
2172-
<K_NOT> { result.setNot(true); } leftExpression=SimpleExpression() <K_IS> <K_NULL>
2173+
<K_NOT> { result.setNot(true); } leftExpression=SimpleExpression()
2174+
( <K_ISNULL> { result.setUseIsNull(true); } | <K_IS> <K_NULL> )
21732175
|
2174-
leftExpression=SimpleExpression() <K_IS> [<K_NOT> { result.setNot(true); } ] <K_NULL>
2176+
leftExpression=SimpleExpression()
2177+
(<K_ISNULL> { result.setUseIsNull(true); } | <K_IS> [<K_NOT> { result.setNot(true); } ] <K_NULL> )
21752178
)
21762179

21772180
{

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2764,4 +2764,8 @@ public void testIssue584MySQLValueListExpression() throws JSQLParserException {
27642764
assertSqlCanBeParsedAndDeparsed("SELECT a, b FROM T WHERE (T.a, T.b) = (c, d)");
27652765
assertSqlCanBeParsedAndDeparsed("SELECT a FROM T WHERE (T.a) = (SELECT b FROM T, c, d)");
27662766
}
2767+
2768+
public void testIssue588NotNull() throws JSQLParserException {
2769+
assertSqlCanBeParsedAndDeparsed("SELECT * FROM mytable WHERE col1 ISNULL");
2770+
}
27672771
}

0 commit comments

Comments
 (0)