Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
N
NsePlugin
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Members
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
吴超
NsePlugin
Commits
f88168cb
Commit
f88168cb
authored
Sep 09, 2025
by
wuchao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更改路径
parent
53bd9ac4
显示空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
330 行增加
和
142 行删除
+330
-142
src/main/java/com/chenyang/druid/sql/ast/SQLObjectImpl.java
+2
-2
src/main/java/util/SqlUtil.java
+2
-4
src/main/java/util/sqlparse/visitor/oracle/OracleNameWrapper.java
+32
-17
src/main/java/util/sqlparse/visitor/oracle/visitor/Desensitization.java
+15
-5
src/main/java/util/sqlparse/visitor/oracle/visitor/FieldReplaceController.java
+24
-5
src/main/java/util/sqlparse/visitor/oracle/visitor/FormatVisitor.java
+5
-1
src/main/java/util/sqlparse/visitor/oracle/visitor/OracleScopeDialector.java
+13
-5
src/main/java/util/sqlparse/visitor/oracle/visitor/RowVisitController.java
+20
-7
src/main/java/util/sqlparse/visitor/oracle/visitor/ScopeVisitor.java
+198
-88
src/main/java/util/sqlparse/visitor/oracle/visitor/ValueReplacer.java
+14
-7
src/main/java/util/sqlparse/visitor/oracle/visitor/WhereVisitor.java
+5
-1
没有找到文件。
src/main/java/com/chenyang/druid/sql/ast/SQLObjectImpl.java
View file @
f88168cb
...
...
@@ -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
)
{
...
...
src/main/java/util/SqlUtil.java
View file @
f88168cb
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
;
...
...
src/main/java/util/sqlparse/visitor/oracle/OracleNameWrapper.java
View file @
f88168cb
...
...
@@ -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
();
...
...
src/main/java/util/sqlparse/visitor/oracle/visitor/Desensitization.java
View file @
f88168cb
...
...
@@ -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
;
}
...
...
src/main/java/util/sqlparse/visitor/oracle/visitor/FieldReplaceController.java
View file @
f88168cb
...
...
@@ -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
)
{
...
...
src/main/java/util/sqlparse/visitor/oracle/visitor/FormatVisitor.java
View file @
f88168cb
...
...
@@ -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
);
}
...
...
src/main/java/util/sqlparse/visitor/oracle/visitor/OracleScopeDialector.java
View file @
f88168cb
...
...
@@ -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
;
...
...
src/main/java/util/sqlparse/visitor/oracle/visitor/RowVisitController.java
View file @
f88168cb
...
...
@@ -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
()
{
...
...
src/main/java/util/sqlparse/visitor/oracle/visitor/ScopeVisitor.java
View file @
f88168cb
...
...
@@ -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
memo
New1236
=
this
.
getOrCreateFieldByName
(
name
,
true
);
if
(
memo
New1236
.
name
==
null
)
{
memo
New1236
.
name
=
name
;
memo
New1236
.
alias
=
memoNew1236
.
name
;
}
memo
.
ref
=
column
;
memo
.
exprs
.
add
(
column
);
newFields
.
add
(
memo
);
memo
New1236
.
ref
=
column
;
memo
New1236
.
exprs
.
add
(
column
);
newFields
.
add
(
memo
New1236
);
}
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 {
}
}
i
nt
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
();
}
}
...
...
src/main/java/util/sqlparse/visitor/oracle/visitor/ValueReplacer.java
View file @
f88168cb
...
...
@@ -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
);
}
}
...
...
src/main/java/util/sqlparse/visitor/oracle/visitor/WhereVisitor.java
View file @
f88168cb
...
...
@@ -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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论