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 个修改的文件
包含
162 行增加
和
84 行删除
+162
-84
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
+31
-12
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
+43
-30
src/main/java/util/sqlparse/visitor/oracle/visitor/ScopeVisitor.java
+0
-0
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 {
...
@@ -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
)
{
...
...
src/main/java/util/SqlUtil.java
View file @
f88168cb
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
;
...
...
src/main/java/util/sqlparse/visitor/oracle/OracleNameWrapper.java
View file @
f88168cb
...
@@ -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,13 +78,18 @@ public class OracleNameWrapper extends NameWrapper {
...
@@ -77,13 +78,18 @@ 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
();
}
}
}
}
}
}
...
@@ -105,25 +111,31 @@ public class OracleNameWrapper extends NameWrapper {
...
@@ -105,25 +111,31 @@ 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
();
...
...
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;
...
@@ -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
;
}
}
...
...
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;
...
@@ -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
();
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
{
Iterator
var6
=
fieldInfo
.
getRelations
().
iterator
();
for
(
FieldInfo
fieldInfo
:
fields
)
{
while
(
true
)
{
if
(
fieldInfo
.
getRelations
().
size
()
<=
0
)
{
FieldInfo
fieldInfo1
;
if
(
this
.
isHit
(
fieldInfo
,
this
.
result
.
isCaseSensitive
))
{
do
{
this
.
repalceFromRef
(
fieldInfo
.
getMemo
(),
parsed
);
if
(!
var6
.
hasNext
())
{
this
.
params
.
put
(
"isMatched"
,
"true"
);
continue
label40
;
}
}
}
else
{
for
(
FieldInfo
fieldInfo1
:
fieldInfo
.
getRelations
())
{
fieldInfo1
=
(
FieldInfo
)
var6
.
next
();
if
(
this
.
isHit
(
fieldInfo1
,
this
.
result
.
isCaseSensitive
))
{
}
while
(!
this
.
isHit
(
fieldInfo1
,
this
.
result
.
isCaseSensitive
));
for
(
FieldMemo
memo
:
fieldInfo1
.
getMemos
())
{
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
)
{
...
...
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;
...
@@ -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
);
}
}
...
...
src/main/java/util/sqlparse/visitor/oracle/visitor/OracleScopeDialector.java
View file @
f88168cb
...
@@ -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
;
...
...
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;
...
@@ -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,41 +56,53 @@ public class RowVisitController {
...
@@ -55,41 +56,53 @@ 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
();
while
(
true
)
{
TableInfo
table
;
String
name
;
do
{
if
(!
var6
.
hasNext
())
{
this
.
params
.
put
(
"newSql"
,
statement
.
toString
());
return
;
}
for
(
TableInfo
table
:
tables
)
{
table
=
(
TableInfo
)
var6
.
next
();
String
name
=
OracleNameWrapper
.
normalize
(
table
.
getTable
().
name
);
name
=
OracleNameWrapper
.
normalize
(
table
.
getTable
().
name
);
if
(
pattern
.
matcher
(
name
).
matches
())
{
}
while
(!
pattern
.
matcher
(
name
).
matches
());
for
(
TableMemo
memo
:
table
.
getMemos
())
{
SQLObject
ref
=
memo
.
ref
;
List
<
TableMemo
>
memos
=
table
.
getMemos
();
if
(!
parsed
.
contains
(
ref
)
&&
ref
instanceof
SQLTableSource
)
{
Iterator
var10
=
memos
.
iterator
();
this
.
params
.
put
(
"isMatched"
,
"true"
);
switch
(
this
.
result
.
statementType
)
{
while
(
var10
.
hasNext
())
{
case
select:
TableMemo
memo
=
(
TableMemo
)
var10
.
next
();
this
.
select
(
ref
,
table
);
SQLObject
ref
=
memo
.
ref
;
break
;
if
(!
parsed
.
contains
(
ref
)
&&
ref
instanceof
SQLTableSource
)
{
case
insert:
this
.
params
.
put
(
"isMatched"
,
"true"
);
this
.
insert
(
ref
,
table
);
switch
(
this
.
result
.
statementType
)
{
break
;
case
select:
case
update:
this
.
select
(
ref
,
table
);
this
.
update
(
ref
,
table
);
break
;
break
;
case
insert:
case
replace:
this
.
insert
(
ref
,
table
);
this
.
replace
(
ref
,
table
);
break
;
break
;
case
update:
case
delete:
this
.
update
(
ref
,
table
);
this
.
delete
(
ref
,
table
);
break
;
break
;
case
replace:
default
:
this
.
replace
(
ref
,
table
);
this
.
params
.
put
(
"isMatched"
,
"false"
);
break
;
}
case
delete:
this
.
delete
(
ref
,
table
);
parsed
.
add
(
ref
);
break
;
default
:
this
.
params
.
put
(
"isMatched"
,
"false"
);
}
}
parsed
.
add
(
ref
);
}
}
}
}
}
}
this
.
params
.
put
(
"newSql"
,
statement
.
toString
());
}
}
}
}
...
...
src/main/java/util/sqlparse/visitor/oracle/visitor/ScopeVisitor.java
View file @
f88168cb
差异被折叠。
点击展开。
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;
...
@@ -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
);
}
}
}
}
...
...
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;
...
@@ -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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论