From 1896ea50dd669ead2f57db6eccc76a81744416d7 Mon Sep 17 00:00:00 2001 From: FUNKYE <364176773@qq.com> Date: Sat, 29 May 2021 15:00:52 +0800 Subject: [PATCH 1/4] bugfix: print NPE --- .../sql/dialect/oracle/visitor/OracleOutputVisitor.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java index 3e2a6ed815..a094d38871 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java @@ -40,6 +40,7 @@ import com.alibaba.druid.sql.dialect.oracle.parser.OracleProcedureDataType; import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor; import java.util.List; +import java.util.Optional; public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleASTVisitor { @@ -775,8 +776,10 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleBinaryFloatExpr x) { - print0(x.getValue().toString()); - print('F'); + Optional.ofNullable(x.getValue()).ifPresent(value -> { + print0(value.toString()); + print('F'); + }); return false; } From 56b3e43cf5b834ce8a551fa45cd0d9057ab09f4d Mon Sep 17 00:00:00 2001 From: FUNKYE <364176773@qq.com> Date: Sat, 29 May 2021 15:03:02 +0800 Subject: [PATCH 2/4] update --- .../dialect/oracle/visitor/OracleOutputVisitor.java | 6 ++++-- .../dialect/postgresql/visitor/PGOutputVisitor.java | 13 +++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java index a094d38871..8844a74bb3 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java @@ -785,8 +785,10 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleBinaryDoubleExpr x) { - print0(x.getValue().toString()); - print('D'); + Optional.ofNullable(x.getValue()).ifPresent(value -> { + print0(value.toString()); + print('D'); + }); return false; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java index 4431108e9f..c628448510 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java @@ -36,6 +36,7 @@ import com.alibaba.druid.util.FnvHash; import java.util.LinkedHashSet; import java.util.List; +import java.util.Optional; import java.util.Set; public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor, OracleASTVisitor { @@ -957,14 +958,18 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor } public boolean visit(OracleBinaryFloatExpr x) { - print0(x.getValue().toString()); - print('F'); + Optional.ofNullable(x.getValue()).ifPresent(value -> { + print0(value.toString()); + print('F'); + }); return false; } public boolean visit(OracleBinaryDoubleExpr x) { - print0(x.getValue().toString()); - print('D'); + Optional.ofNullable(x.getValue()).ifPresent(value -> { + print0(value.toString()); + print('D'); + }); return false; } From c0fc90033c20c6855960141fe035509a608a5056 Mon Sep 17 00:00:00 2001 From: FUNKYE <364176773@qq.com> Date: Fri, 11 Jun 2021 00:26:43 +0800 Subject: [PATCH 3/4] update --- .../dialect/oracle/visitor/OracleOutputVisitor.java | 13 +++++++------ .../dialect/postgresql/visitor/PGOutputVisitor.java | 13 +++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java index 8844a74bb3..277ec4d221 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java @@ -38,6 +38,7 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectRestriction.Rea import com.alibaba.druid.sql.dialect.oracle.parser.OracleFunctionDataType; import com.alibaba.druid.sql.dialect.oracle.parser.OracleProcedureDataType; import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor; +import org.eclipse.jetty.util.StringUtil; import java.util.List; import java.util.Optional; @@ -776,19 +777,19 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleBinaryFloatExpr x) { - Optional.ofNullable(x.getValue()).ifPresent(value -> { - print0(value.toString()); + if (x != null && x.getValue() != null) { + print0(x.getValue().toString()); print('F'); - }); + } return false; } @Override public boolean visit(OracleBinaryDoubleExpr x) { - Optional.ofNullable(x.getValue()).ifPresent(value -> { - print0(value.toString()); + if (x != null && x.getValue() != null) { + print0(x.getValue().toString()); print('D'); - }); + } return false; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java index c628448510..d64fbc9508 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java @@ -33,6 +33,7 @@ import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGSelectQueryBlock.Fetc import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGSelectQueryBlock.ForClause; import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor; import com.alibaba.druid.util.FnvHash; +import org.eclipse.jetty.util.StringUtil; import java.util.LinkedHashSet; import java.util.List; @@ -958,18 +959,18 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor } public boolean visit(OracleBinaryFloatExpr x) { - Optional.ofNullable(x.getValue()).ifPresent(value -> { - print0(value.toString()); + if (x != null && x.getValue() != null) { + print0(x.getValue().toString()); print('F'); - }); + } return false; } public boolean visit(OracleBinaryDoubleExpr x) { - Optional.ofNullable(x.getValue()).ifPresent(value -> { - print0(value.toString()); + if (x != null && x.getValue() != null) { + print0(x.getValue().toString()); print('D'); - }); + } return false; } From ff12b2fe6b3694deab8fe75f20e45aa93ad526c2 Mon Sep 17 00:00:00 2001 From: FUNKYE <364176773@qq.com> Date: Fri, 11 Jun 2021 00:27:38 +0800 Subject: [PATCH 4/4] update --- .../druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java | 2 -- .../druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java index 277ec4d221..16ebda9391 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java @@ -38,10 +38,8 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectRestriction.Rea import com.alibaba.druid.sql.dialect.oracle.parser.OracleFunctionDataType; import com.alibaba.druid.sql.dialect.oracle.parser.OracleProcedureDataType; import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor; -import org.eclipse.jetty.util.StringUtil; import java.util.List; -import java.util.Optional; public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleASTVisitor { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java index d64fbc9508..7355cae438 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java @@ -33,11 +33,9 @@ import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGSelectQueryBlock.Fetc import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGSelectQueryBlock.ForClause; import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor; import com.alibaba.druid.util.FnvHash; -import org.eclipse.jetty.util.StringUtil; import java.util.LinkedHashSet; import java.util.List; -import java.util.Optional; import java.util.Set; public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor, OracleASTVisitor {