Commit f88168cb by wuchao

更改路径

parent 53bd9ac4
......@@ -148,7 +148,7 @@ public abstract class SQLObjectImpl implements SQLObject {
this.attributes.put("rowFormat.before_comment", comments);
}
comments.add(comment);
((List)comments).add(comment);
}
}
......@@ -181,7 +181,7 @@ public abstract class SQLObjectImpl implements SQLObject {
this.attributes.put("rowFormat.after_comment", comments);
}
comments.add(comment);
((List)comments).add(comment);
}
public void addAfterComment(List<String> comments) {
......
package util;
import com.chenyang.druid.sql.SQLUtils;
import com.chenyang.druid.sql.ast.SQLStatement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.chenyang.druid.sql.SQLUtils;
import com.chenyang.druid.sql.ast.SQLStatement;
import util.log.SQLLogger;
import util.sqlparse.DB2Parse;
import util.sqlparse.DmParse;
......
......@@ -5,6 +5,7 @@ import bean.Schema;
import bean.Table;
import bean.View;
import com.chenyang.druid.util.StringUtils;
import java.util.Iterator;
import java.util.Map;
import util.getdata.DatabaseCache;
import util.sqlparse.visitor.common.names.NameWrapper;
......@@ -52,7 +53,7 @@ public class OracleNameWrapper extends NameWrapper {
} else {
String column = c.getColumnName();
if (column != null && column.length() != 0) {
ColInfo colInfo = this.getColumnInfo(c);
NameWrapper.ColInfo colInfo = this.getColumnInfo(c);
this.unwrapColumn(colInfo);
return colInfo.unwrap("\"");
} else {
......@@ -77,14 +78,19 @@ public class OracleNameWrapper extends NameWrapper {
if (sch != null) {
return sch;
} else {
for(Map.Entry<String, Schema> pair : schemas.entrySet()) {
if (((String)pair.getKey()).equalsIgnoreCase(schema)) {
return (Schema)pair.getValue();
}
}
Iterator var4 = schemas.entrySet().iterator();
Map.Entry pair;
do {
if (!var4.hasNext()) {
return null;
}
pair = (Map.Entry)var4.next();
} while(!((String)pair.getKey()).equalsIgnoreCase(schema));
return (Schema)pair.getValue();
}
}
}
} else {
......@@ -105,26 +111,32 @@ public class OracleNameWrapper extends NameWrapper {
} else {
table = table.trim();
Map<String, Table> tables = this.cache.getTables();
String id;
if (table.startsWith("\"")) {
table = this.unwrapName(table);
String id = this.cache.getSchemaTableId(sch.getName(), table);
id = this.cache.getSchemaTableId(sch.getName(), table);
return (Table)tables.get(id);
} else {
table = this.unwrapName(table);
table = table.toUpperCase();
String id = this.cache.getSchemaTableId(sch.getName(), table);
id = this.cache.getSchemaTableId(sch.getName(), table);
Table tb = (Table)tables.get(id);
if (tb != null) {
return tb;
} else {
for(Map.Entry<String, Table> pair : tables.entrySet()) {
if (((String)pair.getKey()).equalsIgnoreCase(id)) {
return (Table)pair.getValue();
}
}
Iterator var6 = tables.entrySet().iterator();
Map.Entry pair;
do {
if (!var6.hasNext()) {
return null;
}
pair = (Map.Entry)var6.next();
} while(!((String)pair.getKey()).equalsIgnoreCase(id));
return (Table)pair.getValue();
}
}
}
}
......@@ -142,21 +154,22 @@ public class OracleNameWrapper extends NameWrapper {
} else {
viewName = viewName.trim();
Map<String, View> views = this.cache.getViews();
String id;
if (viewName.startsWith("\"")) {
viewName = this.unwrapName(viewName);
String id = this.cache.getSchemaTableId(sch.getName(), viewName);
id = this.cache.getSchemaTableId(sch.getName(), viewName);
return (View)views.get(id);
} else {
viewName = this.unwrapName(viewName);
viewName = viewName.toUpperCase();
String id = this.cache.getSchemaTableId(sch.getName(), viewName);
id = this.cache.getSchemaTableId(sch.getName(), viewName);
View view = (View)views.get(id);
return view;
}
}
}
public void unwrapColumn(ColInfo colInfo) {
public void unwrapColumn(NameWrapper.ColInfo colInfo) {
String schema = colInfo.schema;
String table = colInfo.table;
String col = colInfo.column;
......@@ -175,8 +188,10 @@ public class OracleNameWrapper extends NameWrapper {
col = col.trim();
boolean isCase = col.startsWith("\"");
col = this.unwrapName(col);
Iterator var8 = tb.getColumnList().iterator();
for(Column column : tb.getColumnList()) {
while(var8.hasNext()) {
Column column = (Column)var8.next();
if (isCase) {
if (column.getColumnName().equals(col)) {
colInfo.column = column.getColumnName();
......
......@@ -14,6 +14,7 @@ import com.chenyang.druid.sql.ast.statement.SQLSelectQuery;
import com.chenyang.druid.sql.ast.statement.SQLSelectStatement;
import com.chenyang.druid.sql.ast.statement.SQLTableSource;
import com.chenyang.druid.sql.ast.statement.SQLUpdateStatement;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import util.JdbcUtil;
......@@ -36,8 +37,10 @@ public class Desensitization {
params.put("newSql", sql);
String url = (String)params.get("url");
String ipPort = OracleParse.getIpPort(url);
Iterator var7 = JdbcUtil.dataBaseList.iterator();
for(DataBase base : JdbcUtil.dataBaseList) {
while(var7.hasNext()) {
DataBase base = (DataBase)var7.next();
if (base.getIp_port().equalsIgnoreCase(ipPort)) {
dataBase = base;
}
......@@ -61,9 +64,14 @@ public class Desensitization {
SQLResult result = this.getSqlResult(params);
List<TableInfo> tables = result.tables;
params.put("isMatched", "false");
Iterator var6 = tables.iterator();
for(TableInfo table : tables) {
for(TableMemo tableMemo : table.getMemos()) {
while(var6.hasNext()) {
TableInfo table = (TableInfo)var6.next();
Iterator var8 = table.getMemos().iterator();
while(var8.hasNext()) {
TableMemo tableMemo = (TableMemo)var8.next();
String sourceName = OracleNameWrapper.normalize(tableMemo.name);
boolean isMatched = JdbcUtil.followRulesCaseSens(sourceName, "\"?" + replaceTable + "\"?");
if (isMatched) {
......@@ -96,7 +104,7 @@ public class Desensitization {
if (ts == null) {
return 0;
} else {
for(SQLObject cursor = ts; cursor != null; cursor = cursor.getParent()) {
for(SQLObject cursor = ts; cursor != null; cursor = ((SQLObject)cursor).getParent()) {
if (cursor instanceof SQLUpdateStatement) {
return 0;
}
......@@ -144,8 +152,10 @@ public class Desensitization {
params.put("newSql", sql);
String url = (String)params.get("url");
String ipPort = OracleParse.getIpPort(url);
Iterator var7 = JdbcUtil.dataBaseList.iterator();
for(DataBase base : JdbcUtil.dataBaseList) {
while(var7.hasNext()) {
DataBase base = (DataBase)var7.next();
if (base.getIp_port().equalsIgnoreCase(ipPort)) {
dataBase = base;
}
......
......@@ -11,6 +11,7 @@ import com.chenyang.druid.sql.ast.statement.SQLSelectItem;
import com.chenyang.druid.sql.ast.statement.SQLSelectQueryBlock;
import com.chenyang.druid.util.StringUtils;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
......@@ -43,17 +44,34 @@ public class FieldReplaceController {
List<FieldInfo> fields = this.result.outputs;
Set<SQLObject> parsed = new HashSet();
this.params.put("isMatched", "false");
Iterator var4 = fields.iterator();
for(FieldInfo fieldInfo : fields) {
while(true) {
label40:
while(var4.hasNext()) {
FieldInfo fieldInfo = (FieldInfo)var4.next();
if (fieldInfo.getRelations().size() <= 0) {
if (this.isHit(fieldInfo, this.result.isCaseSensitive)) {
this.repalceFromRef(fieldInfo.getMemo(), parsed);
this.params.put("isMatched", "true");
}
} else {
for(FieldInfo fieldInfo1 : fieldInfo.getRelations()) {
if (this.isHit(fieldInfo1, this.result.isCaseSensitive)) {
for(FieldMemo memo : fieldInfo1.getMemos()) {
Iterator var6 = fieldInfo.getRelations().iterator();
while(true) {
FieldInfo fieldInfo1;
do {
if (!var6.hasNext()) {
continue label40;
}
fieldInfo1 = (FieldInfo)var6.next();
} while(!this.isHit(fieldInfo1, this.result.isCaseSensitive));
Iterator var8 = fieldInfo1.getMemos().iterator();
while(var8.hasNext()) {
FieldMemo memo = (FieldMemo)var8.next();
this.repalceFromRef(memo, parsed);
}
......@@ -61,9 +79,10 @@ public class FieldReplaceController {
}
}
}
}
this.params.put("newSql", statement.toString());
return;
}
}
private void repalceFromRef(FieldMemo memo, Set<SQLObject> parsed) {
......
......@@ -83,6 +83,7 @@ import com.chenyang.druid.sql.dialect.oracle.ast.stmt.OracleUpdateStatement;
import com.chenyang.druid.sql.dialect.oracle.ast.stmt.OracleUsingIndexClause;
import com.chenyang.druid.sql.dialect.oracle.ast.stmt.OracleXmlColumnProperties;
import com.chenyang.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
import java.util.Iterator;
import java.util.List;
import util.sqlparse.visitor.Formater;
......@@ -91,7 +92,10 @@ public class FormatVisitor extends Formater implements OracleASTVisitor {
public void perform(List<SQLStatement> statements) {
if (statements != null && statements.size() != 0) {
for(SQLStatement statement : statements) {
Iterator var2 = statements.iterator();
while(var2.hasNext()) {
SQLStatement statement = (SQLStatement)var2.next();
statement.accept(this);
}
......
......@@ -74,7 +74,10 @@ public class OracleScopeDialector extends ScopeDialector {
}
}
for(Column column : columns) {
Iterator var15 = columns.iterator();
while(var15.hasNext()) {
Column column = (Column)var15.next();
FieldMemo field = new FieldMemo();
field.table = table;
field.alias = column.getColumnName();
......@@ -148,14 +151,16 @@ public class OracleScopeDialector extends ScopeDialector {
List<FieldMemo> children = field.children;
Iterator<FieldMemo> iterator = children.iterator();
FieldMemo fieldMemo;
while(iterator.hasNext()) {
FieldMemo x = (FieldMemo)iterator.next();
if (x.outside) {
fieldMemo = (FieldMemo)iterator.next();
if (fieldMemo.outside) {
iterator.remove();
}
}
if (children.size() > 0) {
List<FieldMemo> exists = children;
Iterator<FieldMemo> iterator1 = children.iterator();
while(iterator1.hasNext()) {
......@@ -165,7 +170,10 @@ public class OracleScopeDialector extends ScopeDialector {
}
}
for(FieldMemo exist : children) {
Iterator var11 = exists.iterator();
while(var11.hasNext()) {
FieldMemo exist = (FieldMemo)var11.next();
if (!exist.outside) {
exist.isSelectItem = field.isSelectItem;
}
......@@ -174,7 +182,7 @@ public class OracleScopeDialector extends ScopeDialector {
fieldMap.put(qualifiedName, field);
} else {
if (fieldMap.containsKey(qualifiedName)) {
FieldMemo fieldMemo = (FieldMemo)fieldMap.get(qualifiedName);
fieldMemo = (FieldMemo)fieldMap.get(qualifiedName);
field.exprs.addAll(fieldMemo.exprs);
if (fieldMemo.isSelectItem) {
field.isSelectItem = true;
......
......@@ -18,6 +18,7 @@ import com.chenyang.druid.sql.ast.statement.SQLSelectStatement;
import com.chenyang.druid.sql.ast.statement.SQLTableSource;
import com.chenyang.druid.sql.ast.statement.SQLUpdateStatement;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
......@@ -55,11 +56,26 @@ public class RowVisitController {
Pattern pattern = Pattern.compile("\"?" + tempTableRegex + "\"?");
List<TableInfo> tables = this.result.tables;
Set<SQLObject> parsed = new HashSet();
Iterator var6 = tables.iterator();
for(TableInfo table : tables) {
String name = OracleNameWrapper.normalize(table.getTable().name);
if (pattern.matcher(name).matches()) {
for(TableMemo memo : table.getMemos()) {
while(true) {
TableInfo table;
String name;
do {
if (!var6.hasNext()) {
this.params.put("newSql", statement.toString());
return;
}
table = (TableInfo)var6.next();
name = OracleNameWrapper.normalize(table.getTable().name);
} while(!pattern.matcher(name).matches());
List<TableMemo> memos = table.getMemos();
Iterator var10 = memos.iterator();
while(var10.hasNext()) {
TableMemo memo = (TableMemo)var10.next();
SQLObject ref = memo.ref;
if (!parsed.contains(ref) && ref instanceof SQLTableSource) {
this.params.put("isMatched", "true");
......@@ -88,9 +104,6 @@ public class RowVisitController {
}
}
}
this.params.put("newSql", statement.toString());
}
}
private void limitStatement() {
......
......@@ -119,7 +119,10 @@ public class ScopeVisitor extends ParseVisitor {
if (table != null && schema != null) {
List<Column> columns = this.scope.context.getColumns(schema, table);
if (columns != null && columns.size() > 0) {
for(Column column : columns) {
Iterator var7 = columns.iterator();
while(var7.hasNext()) {
Column column = (Column)var7.next();
String name = this.scope.dialector.wrap(column.getColumnName());
SQLExpr expr = new SQLIdentifierExpr(name);
x.getColumns().add(expr);
......@@ -130,7 +133,10 @@ public class ScopeVisitor extends ParseVisitor {
}
}
for(SQLExpr column : x.getColumns()) {
Iterator var11 = x.getColumns().iterator();
while(var11.hasNext()) {
SQLExpr column = (SQLExpr)var11.next();
column.accept(this);
FieldMemo field = (FieldMemo)column.getAttribute("field");
if (field != null) {
......@@ -139,7 +145,10 @@ public class ScopeVisitor extends ParseVisitor {
}
if (x.getValuesList() != null) {
for(SQLInsertStatement.ValuesClause clause : x.getValuesList()) {
var11 = x.getValuesList().iterator();
while(var11.hasNext()) {
SQLInsertStatement.ValuesClause clause = (SQLInsertStatement.ValuesClause)var11.next();
clause.accept(this);
}
}
......@@ -165,7 +174,10 @@ public class ScopeVisitor extends ParseVisitor {
x.getSubQuery().accept(this);
}
for(OracleMultiInsertStatement.Entry entry : x.getEntries()) {
Iterator var2 = x.getEntries().iterator();
while(var2.hasNext()) {
OracleMultiInsertStatement.Entry entry = (OracleMultiInsertStatement.Entry)var2.next();
entry.accept(this);
}
......@@ -177,8 +189,12 @@ public class ScopeVisitor extends ParseVisitor {
Scope current = this.scope.getCurrent();
TableMemo table = current.getTable(x.getTableSource().getExpr());
List<FieldMemo> fields = current.expandAllColumns(table, false);
Iterator var5;
if (x.getColumns() != null && x.getColumns().size() != 0) {
for(SQLExpr column : x.getColumns()) {
var5 = x.getColumns().iterator();
while(var5.hasNext()) {
SQLExpr column = (SQLExpr)var5.next();
this.visitChild(column);
FieldMemo field = (FieldMemo)column.getAttribute("field");
if (field != null) {
......@@ -190,7 +206,10 @@ public class ScopeVisitor extends ParseVisitor {
}
}
} else {
for(FieldMemo field : fields) {
var5 = fields.iterator();
while(var5.hasNext()) {
FieldMemo field = (FieldMemo)var5.next();
SQLIdentifierExpr expr = new SQLIdentifierExpr();
expr.setName(field.name);
field.table = table;
......@@ -282,7 +301,10 @@ public class ScopeVisitor extends ParseVisitor {
TableMemo table = (TableMemo)x.getAttribute("intoTable");
Scope current = this.scope.getCurrent();
if (x.getItems() != null) {
for(SQLUpdateSetItem item : x.getItems()) {
Iterator var4 = x.getItems().iterator();
while(var4.hasNext()) {
SQLUpdateSetItem item = (SQLUpdateSetItem)var4.next();
SQLExpr column = item.getColumn();
String name = null;
if (column instanceof SQLName) {
......@@ -311,7 +333,11 @@ public class ScopeVisitor extends ParseVisitor {
Scope current = this.scope.getCurrent();
TableMemo table = (TableMemo)x.getAttribute("intoTable");
if (x.getColumns().size() == 0) {
for(FieldMemo field : current.expandAllColumns(table, false)) {
List<FieldMemo> fields = current.expandAllColumns(table, false);
Iterator var5 = fields.iterator();
while(var5.hasNext()) {
FieldMemo field = (FieldMemo)var5.next();
SQLIdentifierExpr expr = new SQLIdentifierExpr();
expr.setName(field.name);
expr.setParent(x);
......@@ -323,7 +349,10 @@ public class ScopeVisitor extends ParseVisitor {
current.addField(field);
}
} else {
for(SQLExpr column : x.getColumns()) {
Iterator var8 = x.getColumns().iterator();
while(var8.hasNext()) {
SQLExpr column = (SQLExpr)var8.next();
String name = null;
if (column instanceof SQLName) {
name = ((SQLName)column).getSimpleName();
......@@ -374,7 +403,7 @@ public class ScopeVisitor extends ParseVisitor {
Scope scope = this.enterClauseScope(x);
scope.top = true;
scope.fromField = scope.isFromField(x);
scope.fromField = ((Scope)scope).isFromField(x);
return true;
}
......@@ -432,14 +461,17 @@ public class ScopeVisitor extends ParseVisitor {
boolean addColumns = x.getColumns().size() == 0;
List<FieldMemo> fields = new ArrayList();
current.getSubFieldsForWith(fields);
Iterator var6 = current.getChildren().iterator();
for(Scope child : current.getChildren()) {
while(var6.hasNext()) {
Scope child = (Scope)var6.next();
table.getChildren().addAll(child.getBranchTables());
}
int k = 0;
for(FieldMemo field : fields) {
for(Iterator var15 = fields.iterator(); var15.hasNext(); ++k) {
FieldMemo field = (FieldMemo)var15.next();
FieldMemo newNameField = field.copy();
newNameField.name = field.alias;
newNameField.alias = field.alias;
......@@ -457,8 +489,10 @@ public class ScopeVisitor extends ParseVisitor {
} else {
SQLIdentifierExpr name = new SQLIdentifierExpr();
String fieldName = newNameField.name;
Iterator var12 = field.aliasFields.iterator();
for(AliasField aliasField : field.aliasFields) {
while(var12.hasNext()) {
AliasField aliasField = (AliasField)var12.next();
if (aliasField.isOutput) {
fieldName = aliasField.alias;
break;
......@@ -479,7 +513,6 @@ public class ScopeVisitor extends ParseVisitor {
newNameField.tables.add(table);
newNameField.children.add(field);
current.addField(newNameField);
++k;
}
this.scope.exitScope();
......@@ -492,37 +525,42 @@ public class ScopeVisitor extends ParseVisitor {
this.enterClauseScope(x);
this.scope.fromField = this.scope.isFromField(x);
SQLExprTableSource xf;
if (x.getFrom() != null) {
this.parseView(x.getFrom(), x);
} else {
SQLIdentifierExpr tableName = new SQLIdentifierExpr();
tableName.setName("dual");
SQLExprTableSource tableSource = new SQLExprTableSource();
tableSource.setExpr((SQLExpr)tableName);
tableSource.setParent(x);
x.setFrom(tableSource);
xf = new SQLExprTableSource();
xf.setExpr((SQLExpr)tableName);
xf.setParent(x);
x.setFrom(xf);
}
SQLTableSource from = x.getFrom();
if (from instanceof SQLExprTableSource) {
SQLExprTableSource xf = (SQLExprTableSource)from;
xf = (SQLExprTableSource)from;
SQLExpr expr = xf.getExpr();
if (expr instanceof SQLIdentifierExpr || expr instanceof SQLPropertyExpr) {
Scope current = this.scope.getCurrent();
if (expr instanceof SQLPropertyExpr) {
SQLPropertyExpr propOwner = (SQLPropertyExpr)expr;
String name = propOwner.getName();
String schema = propOwner.getOwnerName();
Synonym syn = current.dialector.getSynonym(schema, name);
SQLExpr ownerTable = expr;
String schema;
String name;
Synonym syn;
if (ownerTable instanceof SQLPropertyExpr) {
SQLPropertyExpr propOwner = (SQLPropertyExpr)ownerTable;
schema = propOwner.getName();
name = propOwner.getOwnerName();
syn = current.dialector.getSynonym(name, schema);
if (syn != null && syn.getTableName() != null) {
propOwner.setOwner(syn.getTableOwner());
propOwner.setName(syn.getTableName());
}
} else if (expr instanceof SQLIdentifierExpr) {
SQLIdentifierExpr idOnwer = (SQLIdentifierExpr)expr;
String schema = current.getDefaultSchema();
String name = idOnwer.getName();
Synonym syn = current.dialector.getSynonym(schema, name);
} else if (ownerTable instanceof SQLIdentifierExpr) {
SQLIdentifierExpr idOnwer = (SQLIdentifierExpr)ownerTable;
schema = current.getDefaultSchema();
name = idOnwer.getName();
syn = current.dialector.getSynonym(schema, name);
if (syn != null && syn.getTableName() != null) {
SQLPropertyExpr propertyExpr = new SQLPropertyExpr();
propertyExpr.setOwner(syn.getTableOwner());
......@@ -612,15 +650,23 @@ public class ScopeVisitor extends ParseVisitor {
Scope current = this.scope.getCurrent();
List<OracleSelectPivot.Item> items = pivot.getItems();
List<FieldMemo> aggColumns = new ArrayList();
Iterator var5 = items.iterator();
for(OracleSelectPivot.Item column : items) {
Iterator var9;
FieldMemo memo;
while(var5.hasNext()) {
OracleSelectPivot.Item column = (OracleSelectPivot.Item)var5.next();
String name = column.getAlias();
if (name == null) {
name = column.getExpr().toString();
}
for(SQLExpr expr : this.scope.getSubFieldExprs(column.getExpr())) {
FieldMemo memo = this.getOrCreateFieldByName(expr.toString(), true);
List<SQLExpr> exprs = this.scope.getSubFieldExprs(column.getExpr());
var9 = exprs.iterator();
while(var9.hasNext()) {
SQLExpr expr = (SQLExpr)var9.next();
memo = this.getOrCreateFieldByName(expr.toString(), true);
memo.ref = expr;
memo.exprs.add(column);
aggColumns.add(memo);
......@@ -630,38 +676,45 @@ public class ScopeVisitor extends ParseVisitor {
current.putAttribute("pivot-agg-fields", aggColumns);
List<SQLExpr> forColumns = pivot.getPivotFor();
List<FieldMemo> forFields = new ArrayList();
Iterator var15 = forColumns.iterator();
for(SQLExpr forColumn : forColumns) {
while(var15.hasNext()) {
SQLExpr forColumn = (SQLExpr)var15.next();
SQLName sqlName = (SQLName)forColumn;
String name = sqlName.getSimpleName();
FieldMemo field = this.getOrCreateFieldByName(name, true);
field.ref = forColumn;
field.exprs.add(forColumn);
forFields.add(field);
memo = this.getOrCreateFieldByName(name, true);
memo.ref = forColumn;
memo.exprs.add(forColumn);
forFields.add(memo);
}
current.putAttribute("pivot-for-fields", forFields);
List<OracleSelectPivot.Item> columns = pivot.getPivotIn();
List<FieldMemo> newFields = new ArrayList();
var9 = columns.iterator();
for(OracleSelectPivot.Item column : columns) {
while(var9.hasNext()) {
OracleSelectPivot.Item column = (OracleSelectPivot.Item)var9.next();
String name = column.getAlias();
if (name == null) {
name = column.getExpr().toString();
}
FieldMemo memo = this.getOrCreateFieldByName(name, true);
if (memo.name == null) {
memo.name = name;
memo.alias = memo.name;
FieldMemo memoNew1236 = this.getOrCreateFieldByName(name, true);
if (memoNew1236.name == null) {
memoNew1236.name = name;
memoNew1236.alias = memoNew1236.name;
}
memo.ref = column;
memo.exprs.add(column);
newFields.add(memo);
memoNew1236.ref = column;
memoNew1236.exprs.add(column);
newFields.add(memoNew1236);
}
for(FieldMemo newField : newFields) {
var9 = newFields.iterator();
while(var9.hasNext()) {
FieldMemo newField = (FieldMemo)var9.next();
newField.children.addAll(aggColumns);
}
......@@ -672,8 +725,11 @@ public class ScopeVisitor extends ParseVisitor {
Scope current = this.scope.getCurrent();
List<SQLExpr> items = pivot.getItems();
List<FieldMemo> aggColumns = new ArrayList();
Iterator var5 = items.iterator();
for(SQLExpr column : items) {
while(true) {
while(var5.hasNext()) {
SQLExpr column = (SQLExpr)var5.next();
boolean isPrimitive = this.scope.isPrimitive(column);
if (isPrimitive) {
FieldMemo memo = this.getOrCreateFieldByName(column.toString());
......@@ -681,7 +737,11 @@ public class ScopeVisitor extends ParseVisitor {
memo.exprs.add(column);
aggColumns.add(memo);
} else {
for(SQLExpr expr : this.scope.getSubFieldExprs(column)) {
List<SQLExpr> exprs = this.scope.getSubFieldExprs(column);
Iterator var9 = exprs.iterator();
while(var9.hasNext()) {
SQLExpr expr = (SQLExpr)var9.next();
FieldMemo memo = this.getOrCreateFieldByName(expr.toString());
memo.ref = expr;
memo.exprs.add(column);
......@@ -693,8 +753,10 @@ public class ScopeVisitor extends ParseVisitor {
current.putAttribute("pivot-agg-fields", aggColumns);
List<OracleSelectPivot.Item> columns = pivot.getPivotIn();
List<FieldMemo> newFields = new ArrayList();
Iterator var15 = columns.iterator();
for(OracleSelectPivot.Item column : columns) {
while(var15.hasNext()) {
OracleSelectPivot.Item column = (OracleSelectPivot.Item)var15.next();
String name = column.getAlias();
if (name == null) {
name = column.getExpr().toString();
......@@ -707,6 +769,8 @@ public class ScopeVisitor extends ParseVisitor {
}
current.putAttribute("pivot-in-fields", newFields);
return;
}
}
private List<FieldMemo> parsePivotColumns(SQLObject x, List<FieldMemo> source) {
......@@ -723,23 +787,33 @@ public class ScopeVisitor extends ParseVisitor {
List<FieldMemo> aggColumns = (List)current.getAttribute("pivot-agg-fields");
List<FieldMemo> forColumns = (List)current.getAttribute("pivot-for-fields");
List<FieldMemo> inColumns = (List)current.getAttribute("pivot-in-fields");
Iterator var10;
FieldMemo column;
Iterator iterator;
FieldMemo z;
if (!reverse) {
for(FieldMemo column : aggColumns) {
Iterator<FieldMemo> iterator = target.iterator();
var10 = aggColumns.iterator();
while(var10.hasNext()) {
column = (FieldMemo)var10.next();
iterator = target.iterator();
while(iterator.hasNext()) {
FieldMemo z = (FieldMemo)iterator.next();
z = (FieldMemo)iterator.next();
if (this.isEqual(z.name, column.name)) {
iterator.remove();
}
}
}
for(FieldMemo column : forColumns) {
Iterator<FieldMemo> iterator = target.iterator();
var10 = forColumns.iterator();
while(var10.hasNext()) {
column = (FieldMemo)var10.next();
iterator = target.iterator();
while(iterator.hasNext()) {
FieldMemo z = (FieldMemo)iterator.next();
z = (FieldMemo)iterator.next();
if (this.isEqual(z.name, column.name)) {
iterator.remove();
}
......@@ -748,11 +822,14 @@ public class ScopeVisitor extends ParseVisitor {
target.addAll(inColumns);
} else {
for(FieldMemo column : inColumns) {
Iterator<FieldMemo> iterator = target.iterator();
var10 = inColumns.iterator();
while(var10.hasNext()) {
column = (FieldMemo)var10.next();
iterator = target.iterator();
while(iterator.hasNext()) {
FieldMemo z = (FieldMemo)iterator.next();
z = (FieldMemo)iterator.next();
if (this.isEqual(z.name, column.name)) {
iterator.remove();
}
......@@ -802,7 +879,8 @@ public class ScopeVisitor extends ParseVisitor {
Scope current = this.scope.getCurrent();
List<SQLSelectItem> selectList = x.getSelectList();
for(int i = 0; i < selectList.size(); ++i) {
int i;
for(i = 0; i < selectList.size(); ++i) {
SQLSelectItem item = (SQLSelectItem)selectList.get(i);
boolean isAll = this.scope.isAllColumn(item.getExpr());
if (item.getAlias() == null && !isAll) {
......@@ -826,7 +904,10 @@ public class ScopeVisitor extends ParseVisitor {
alias = owner.alias;
}
for(FieldMemo field : fields) {
Iterator var15 = fields.iterator();
while(var15.hasNext()) {
FieldMemo field = (FieldMemo)var15.next();
if (!field.name.equalsIgnoreCase("*")) {
TableMemo fieldTable = field.table;
SQLPropertyExpr propExpr = new SQLPropertyExpr();
......@@ -847,19 +928,19 @@ public class ScopeVisitor extends ParseVisitor {
}
}
int k = Integer.MIN_VALUE;
i = Integer.MIN_VALUE;
for(SQLSelectItem item : selectList) {
FieldMemo field;
for(Iterator var20 = selectList.iterator(); var20.hasNext(); field.id = i++) {
SQLSelectItem item = (SQLSelectItem)var20.next();
SQLExpr sqlExpr = item.getExpr();
boolean isPrimitive = this.scope.isPrimitive(sqlExpr);
item.putAttribute("isPrimitive", isPrimitive);
item.accept(this);
FieldMemo field = (FieldMemo)sqlExpr.getAttribute("field");
field = (FieldMemo)sqlExpr.getAttribute("field");
if (sqlExpr instanceof SQLValuableExpr) {
field.isConstant = true;
}
field.id = k++;
}
}
......@@ -922,8 +1003,9 @@ public class ScopeVisitor extends ParseVisitor {
scope.isolated = false;
this.visitChild(x.getRelations());
for(Scope s1 : scope.getChildren()) {
s1.isolated = false;
Scope s1;
for(Iterator var3 = ((Scope)scope).getChildren().iterator(); var3.hasNext(); s1.isolated = false) {
s1 = (Scope)var3.next();
}
this.visitChild(x.getOrderBy());
......@@ -956,8 +1038,9 @@ public class ScopeVisitor extends ParseVisitor {
x.getSelect().accept(this);
}
for(Scope s : scope.getChildren()) {
s.isolated = false;
Scope s;
for(Iterator var4 = scope.getChildren().iterator(); var4.hasNext(); s.isolated = false) {
s = (Scope)var4.next();
}
return false;
......@@ -981,8 +1064,9 @@ public class ScopeVisitor extends ParseVisitor {
x.getSelect().accept(this);
}
for(Scope s : scope.getChildren()) {
s.isolated = false;
Scope s;
for(Iterator var4 = scope.getChildren().iterator(); var4.hasNext(); s.isolated = false) {
s = (Scope)var4.next();
}
return false;
......@@ -1045,8 +1129,9 @@ public class ScopeVisitor extends ParseVisitor {
scope.isolated = false;
this.visitChild(x.getUnion());
for(Scope s1 : scope.getChildren()) {
s1.isolated = false;
Scope s1;
for(Iterator var4 = scope.getChildren().iterator(); var4.hasNext(); s1.isolated = false) {
s1 = (Scope)var4.next();
}
return false;
......@@ -1108,7 +1193,10 @@ public class ScopeVisitor extends ParseVisitor {
if (e != null) {
List<SQLObject> children = e.getChildren();
if (children != null && children.size() > 0) {
for(SQLObject child : children) {
Iterator var5 = children.iterator();
while(var5.hasNext()) {
SQLObject child = (SQLObject)var5.next();
child.putAttribute(name, value);
if (child instanceof SQLExpr) {
this.setAttr((SQLExpr)child, name, value);
......@@ -1139,7 +1227,10 @@ public class ScopeVisitor extends ParseVisitor {
}
public boolean visit(OracleJsonObjectExpr x) {
for(OracleJsonObjectExpr.OracleJsonObjectExprItem item : x.getItems()) {
Iterator var2 = x.getItems().iterator();
while(var2.hasNext()) {
OracleJsonObjectExpr.OracleJsonObjectExprItem item = (OracleJsonObjectExpr.OracleJsonObjectExprItem)var2.next();
SQLExpr value = item.getValue();
value.accept(this);
}
......@@ -1213,9 +1304,10 @@ public class ScopeVisitor extends ParseVisitor {
field.complex = true;
field.isSelectItem = isSelectItem;
field.ref = expr;
AliasField aliasField;
if (expr instanceof SQLSelectItem) {
field.exprs.add(((SQLSelectItem)expr).getExpr());
AliasField aliasField = new AliasField();
aliasField = new AliasField();
aliasField.alias = alias;
aliasField.field = field;
aliasField.expr = expr;
......@@ -1223,7 +1315,7 @@ public class ScopeVisitor extends ParseVisitor {
aliasField.scope = this.scope.getCurrent();
} else {
field.exprs.add(expr);
AliasField aliasField = new AliasField();
aliasField = new AliasField();
aliasField.alias = alias;
aliasField.field = field;
aliasField.expr = expr;
......@@ -1248,7 +1340,16 @@ public class ScopeVisitor extends ParseVisitor {
if (subFields.size() <= 0) {
tables.addAll(current.getBranchTables());
} else {
for(FieldMemo subField : subFields) {
Iterator var12 = subFields.iterator();
label80:
while(true) {
while(true) {
if (!var12.hasNext()) {
break label80;
}
FieldMemo subField = (FieldMemo)var12.next();
if (!names.contains(subField.getUniqueName())) {
children.add(subField);
names.add(subField.getUniqueName());
......@@ -1258,7 +1359,10 @@ public class ScopeVisitor extends ParseVisitor {
tables.add(subField.table);
names.add(subField.table.getQualifiedName());
} else if (subField.tables.size() > 0) {
for(TableMemo table : subField.tables) {
Iterator var14 = subField.tables.iterator();
while(var14.hasNext()) {
TableMemo table = (TableMemo)var14.next();
if (!names.contains(table.getQualifiedName())) {
tables.add(table);
names.add(table.getQualifiedName());
......@@ -1267,6 +1371,7 @@ public class ScopeVisitor extends ParseVisitor {
}
}
}
}
field.tables = tables;
if (tables.size() == 1) {
......@@ -1286,8 +1391,10 @@ public class ScopeVisitor extends ParseVisitor {
if (field.children.size() != 0) {
Set<String> fdNames = field.tableNames();
boolean found = false;
Iterator var4 = field.children.iterator();
for(FieldMemo child : field.children) {
while(var4.hasNext()) {
FieldMemo child = (FieldMemo)var4.next();
if (this.isEqual(field.name, child.alias)) {
Set<String> cdNames = child.tableNames();
cdNames.retainAll(fdNames);
......@@ -1329,9 +1436,10 @@ public class ScopeVisitor extends ParseVisitor {
private TableMemo registerTable(SQLTableSource x) {
Scope current = this.scope.getCurrent();
TableMemo table;
if (x instanceof SQLExprTableSource) {
SQLExprTableSource exprTableSource = (SQLExprTableSource)x;
TableMemo table = new TableMemo(x);
table = new TableMemo(x);
SQLExprTableSource tableSource = (SQLExprTableSource)x;
String tableName = current.dialector.wrap(tableSource.getTableName());
String schemaName = current.dialector.wrap(tableSource.getSchema() == null ? this.scope.getDefaultSchema() : tableSource.getSchema());
......@@ -1418,7 +1526,7 @@ public class ScopeVisitor extends ParseVisitor {
}
} else if (x instanceof SQLSubqueryTableSource) {
SQLSubqueryTableSource tableSource = (SQLSubqueryTableSource)x;
TableMemo table = new TableMemo(x);
table = new TableMemo(x);
table.name = current.dialector.wrap(tableSource.getAlias());
table.alias = current.dialector.wrap(tableSource.getAlias());
table.nowName = table.name;
......@@ -1429,7 +1537,7 @@ public class ScopeVisitor extends ParseVisitor {
return table;
} else if (x instanceof SQLLateralViewTableSource) {
SQLLateralViewTableSource tableSource = (SQLLateralViewTableSource)x;
TableMemo table = new TableMemo(x);
table = new TableMemo(x);
table.name = current.dialector.wrap(tableSource.getAlias());
table.alias = current.dialector.wrap(tableSource.getAlias());
table.schema = current.dialector.wrap(this.scope.getDefaultSchema());
......@@ -1439,7 +1547,7 @@ public class ScopeVisitor extends ParseVisitor {
return table;
} else if (x instanceof SQLUnionQueryTableSource) {
SQLUnionQueryTableSource tableSource = (SQLUnionQueryTableSource)x;
TableMemo table = new TableMemo(x);
table = new TableMemo(x);
table.name = current.dialector.wrap(tableSource.getAlias());
table.alias = table.name;
table.schema = current.dialector.wrap(this.scope.getDefaultSchema());
......@@ -1504,13 +1612,14 @@ public class ScopeVisitor extends ParseVisitor {
private void setAlias(SQLSelectItem x) {
if (x.getAlias() == null) {
SQLExpr e = x.getExpr();
String name;
if (e instanceof SQLIdentifierExpr) {
String name = ((SQLIdentifierExpr)e).getName();
name = ((SQLIdentifierExpr)e).getName();
if (!name.toUpperCase().equals("ROWID")) {
x.setAlias(name);
}
} else if (e instanceof SQLPropertyExpr) {
String name = ((SQLPropertyExpr)e).getName();
name = ((SQLPropertyExpr)e).getName();
if (!name.toUpperCase().equals("ROWID")) {
x.setAlias(name);
}
......@@ -1527,8 +1636,9 @@ public class ScopeVisitor extends ParseVisitor {
if ("LATERAL".equalsIgnoreCase(x.getMethodName())) {
this.scope.getCurrent().isolated = false;
for(Scope s : this.scope.getCurrent().getChildren()) {
s.isolated = false;
Scope s;
for(Iterator var2 = this.scope.getCurrent().getChildren().iterator(); var2.hasNext(); s.isolated = false) {
s = (Scope)var2.next();
}
}
......
......@@ -13,6 +13,7 @@ import com.chenyang.druid.sql.ast.statement.SQLMergeStatement;
import com.chenyang.druid.sql.ast.statement.SQLUpdateSetItem;
import com.chenyang.druid.sql.dialect.mysql.ast.expr.MySqlCharExpr;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
......@@ -37,8 +38,11 @@ public class ValueReplacer {
public void replaceValues(List<ValueInfo> values) {
if (values != null && values.size() != 0) {
for(ValueMemo value : values) {
this.replaceValue(value, null);
Iterator var2 = values.iterator();
while(var2.hasNext()) {
ValueMemo value = (ValueMemo)var2.next();
this.replaceValue(value, (String)null);
}
}
......@@ -205,7 +209,10 @@ public class ValueReplacer {
if (field.getChildren().size() == 0 && this.replace != null && this.replace.containsKey(this.replace.get(field.getAtomName()))) {
output.add(field.getAtomName());
} else {
for(FieldMemo child : field.children) {
Iterator var3 = field.children.iterator();
while(var3.hasNext()) {
FieldMemo child = (FieldMemo)var3.next();
this.getAtomFields(child, output);
}
......@@ -214,15 +221,15 @@ public class ValueReplacer {
private SQLExpr createValueExpr(ValueMemo value, SQLObject parent, String newVal) {
SQLTextLiteralExpr expr = new MySqlCharExpr();
expr.setParent(parent);
((SQLTextLiteralExpr)expr).setParent(parent);
if (newVal != null) {
expr.setText(newVal);
((SQLTextLiteralExpr)expr).setText(newVal);
} else {
String val = value.value.toString();
if (this.replace != null && this.replace.containsKey(value.field.getAtomName())) {
expr.setText((String)this.replace.get(value.field.getAtomName()));
((SQLTextLiteralExpr)expr).setText((String)this.replace.get(value.field.getAtomName()));
} else {
expr.setText(val);
((SQLTextLiteralExpr)expr).setText(val);
}
}
......
......@@ -10,6 +10,7 @@ import com.chenyang.druid.sql.dialect.oracle.ast.stmt.OracleSelectQueryBlock;
import com.chenyang.druid.sql.dialect.oracle.ast.stmt.OracleUpdateStatement;
import com.chenyang.druid.sql.dialect.oracle.visitor.DefaultOracleASTVisitor;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class WhereVisitor extends DefaultOracleASTVisitor {
......@@ -22,7 +23,10 @@ public class WhereVisitor extends DefaultOracleASTVisitor {
public void perform(List<SQLStatement> statements) {
if (statements != null && statements.size() != 0) {
for(SQLStatement statement : statements) {
Iterator var2 = statements.iterator();
while(var2.hasNext()) {
SQLStatement statement = (SQLStatement)var2.next();
statement.accept(this);
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论