Commit f88168cb by wuchao

更改路径

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