improved sql parser.

This commit is contained in:
wenshao
2017-09-04 03:10:45 +08:00
parent ac3626617a
commit 5badd35b7f
9 changed files with 170 additions and 6 deletions
@@ -190,7 +190,12 @@ public abstract class SQLObjectImpl implements SQLObject {
}
public boolean hasBeforeComment() {
List<String> comments = getBeforeCommentsDirect();
if (attributes == null) {
return false;
}
List<String> comments = (List<String>) attributes.get("format.before_comment");
if (comments == null) {
return false;
}
@@ -22,7 +22,6 @@ import java.util.List;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.*;
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
import com.alibaba.druid.util.FnvHash.Constants;
import com.alibaba.druid.util.FnvHash;
public class SQLAggregateExpr extends SQLExprImpl implements Serializable, SQLReplaceable {
@@ -52,7 +52,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUnique;
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUsingIndexClause;
import com.alibaba.druid.sql.parser.*;
import com.alibaba.druid.util.FnvHash;
import com.alibaba.druid.util.FnvHash.Constants;
import com.alibaba.druid.util.JdbcConstants;
public class OracleExprParser extends SQLExprParser {
@@ -28,7 +28,6 @@ import com.alibaba.druid.sql.ast.statement.SQLSubqueryTableSource;
import com.alibaba.druid.sql.ast.statement.SQLTableSource;
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectQueryBlock;
import com.alibaba.druid.util.FnvHash;
import com.alibaba.druid.util.FnvHash.Constants;
public class OracleToMySqlOutputVisitor extends OracleOutputVisitor {
@@ -45,7 +45,6 @@ import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem;
import com.alibaba.druid.sql.ast.statement.SQLUnique;
import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem;
import com.alibaba.druid.util.FnvHash;
import com.alibaba.druid.util.FnvHash.Constants;
import com.alibaba.druid.util.JdbcConstants;
public class SQLExprParser extends SQLParser {
@@ -36,7 +36,19 @@ public final class FnvHash {
return hash;
}
public static long fnv1a_64(char[] chars) {
if (chars == null) {
return 0;
}
long hash = BASIC;
for (int i = 0; i < chars.length; ++i) {
char c = chars[i];
hash ^= c;
hash *= PRIME;
}
return hash;
}
/**
* lower & normalized & fnv_1a_64