From 54234c805f725f95e6a9a3111d4409102d008df7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Sun, 18 Mar 2012 13:54:27 +0800 Subject: [PATCH] bug fixed for sql parser --- .../druid/sql/visitor/SchemaStatVisitor.java | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java index b96f887999..8dff34dc8c 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java @@ -379,7 +379,7 @@ public class SchemaStatVisitor extends SQLASTVisitorAdapter { for (SQLExprTableSource tableSource : x.getTableSources()) { SQLName name = (SQLName) tableSource.getExpr(); - + String ident = name.toString(); setCurrentTable(ident); x.putAttribute("_old_local_", originalTable); @@ -472,16 +472,20 @@ public class SchemaStatVisitor extends SQLASTVisitorAdapter { x.getFrom().accept(this); return false; } - + if (x.getInto() != null) { - SQLName into = (SQLName) x.getInto().getExpr(); - String ident = into.toString(); - TableStat stat = getTableStat(ident); - stat.incrementInsertCount(); + if (x.getInto().getExpr() instanceof SQLName) { + SQLName into = (SQLName) x.getInto().getExpr(); + String ident = into.toString(); + TableStat stat = getTableStat(ident); + if (stat != null) { + stat.incrementInsertCount(); + } + } } String originalTable = getCurrentTable(); - + if (x.getFrom() instanceof SQLExprTableSource) { SQLExprTableSource tableSource = (SQLExprTableSource) x.getFrom(); if (tableSource.getExpr() instanceof SQLName) { @@ -495,7 +499,7 @@ public class SchemaStatVisitor extends SQLASTVisitorAdapter { x.putAttribute("_old_local_", originalTable); } } - + if (x.getFrom() != null) { x.getFrom().accept(this); // 提前执行,获得aliasMap String table = (String) x.getFrom().getAttribute(ATTR_TABLE); @@ -503,12 +507,12 @@ public class SchemaStatVisitor extends SQLASTVisitorAdapter { x.putAttribute(ATTR_TABLE, table); } } - -// String ident = x.getTable().toString(); + + // String ident = x.getTable().toString(); // -// TableStat stat = getTableStat(ident); -// stat.incrementInsertCount(); -// return false; + // TableStat stat = getTableStat(ident); + // stat.incrementInsertCount(); + // return false; if (x.getWhere() != null) { x.getWhere().setParent(x); @@ -684,7 +688,7 @@ public class SchemaStatVisitor extends SQLASTVisitorAdapter { public boolean visit(SQLExprTableSource x) { if (isSimpleExprTableSource(x)) { String ident = x.getExpr().toString(); - + if (variants.containsKey(ident)) { return false; }