Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dlink
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhaowei
dlink
Commits
0d660379
Commit
0d660379
authored
Jul 14, 2021
by
wenmo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
血缘分析代码优化
parent
88912918
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
86 additions
and
253 deletions
+86
-253
StudioController.java
.../src/main/java/com/dlink/controller/StudioController.java
+1
-1
Asserts.java
dlink-core/src/main/java/com/dlink/assertion/Asserts.java
+19
-1
FlinkConstant.java
...-core/src/main/java/com/dlink/constant/FlinkConstant.java
+0
-4
FlinkJobConstant.java
...re/src/main/java/com/dlink/constant/FlinkJobConstant.java
+0
-23
FlinkSQLConstant.java
...re/src/main/java/com/dlink/constant/FlinkSQLConstant.java
+6
-66
NetConstant.java
dlink-core/src/main/java/com/dlink/constant/NetConstant.java
+0
-4
Executor.java
dlink-core/src/main/java/com/dlink/executor/Executor.java
+1
-0
Explainer.java
dlink-core/src/main/java/com/dlink/explainer/Explainer.java
+23
-19
CABuilder.java
...-core/src/main/java/com/dlink/explainer/ca/CABuilder.java
+3
-3
ColumnCAGenerator.java
...c/main/java/com/dlink/explainer/ca/ColumnCAGenerator.java
+4
-1
FlinkInterceptor.java
...src/main/java/com/dlink/interceptor/FlinkInterceptor.java
+2
-1
JobManager.java
dlink-core/src/main/java/com/dlink/job/JobManager.java
+2
-2
FlinkSqlPlus.java
dlink-core/src/main/java/com/dlink/plus/FlinkSqlPlus.java
+2
-2
Operations.java
dlink-core/src/main/java/com/dlink/trans/Operations.java
+3
-22
AggTable.java
dlink-core/src/main/java/com/dlink/trans/ddl/AggTable.java
+0
-1
CreateAggTableOperation.java
...ain/java/com/dlink/trans/ddl/CreateAggTableOperation.java
+0
-5
SqlExtractUtil.java
dlink-core/src/main/java/com/dlink/utils/SqlExtractUtil.java
+0
-98
SqlUtil.java
dlink-core/src/main/java/com/dlink/utils/SqlUtil.java
+20
-0
No files found.
dlink-admin/src/main/java/com/dlink/controller/StudioController.java
View file @
0d660379
...
@@ -63,7 +63,7 @@ public class StudioController {
...
@@ -63,7 +63,7 @@ public class StudioController {
public
Result
getCAByStatement
(
@RequestBody
StudioCADTO
studioCADTO
)
{
public
Result
getCAByStatement
(
@RequestBody
StudioCADTO
studioCADTO
)
{
switch
(
studioCADTO
.
getType
()){
switch
(
studioCADTO
.
getType
()){
case
1
:
return
Result
.
succeed
(
studioService
.
getOneTableColumnCAByStatement
(
studioCADTO
.
getStatement
()),
"执行成功"
);
case
1
:
return
Result
.
succeed
(
studioService
.
getOneTableColumnCAByStatement
(
studioCADTO
.
getStatement
()),
"执行成功"
);
//
case 2:return Result.succeed(studioService.getColumnCAByStatement(studioCADTO.getStatement()),"执行成功");
case
2
:
return
Result
.
succeed
(
studioService
.
getColumnCAByStatement
(
studioCADTO
.
getStatement
()),
"执行成功"
);
default
:
return
Result
.
failed
(
"敬请期待"
);
default
:
return
Result
.
failed
(
"敬请期待"
);
}
}
}
}
...
...
dlink-core/src/main/java/com/dlink/assertion/Asserts.java
View file @
0d660379
...
@@ -10,10 +10,28 @@ import com.dlink.exception.JobException;
...
@@ -10,10 +10,28 @@ import com.dlink.exception.JobException;
*/
*/
public
class
Asserts
{
public
class
Asserts
{
public
static
boolean
check
NotNull
(
Object
object
){
public
static
boolean
is
NotNull
(
Object
object
){
return
object
!=
null
;
return
object
!=
null
;
}
}
public
static
boolean
isNull
(
Object
object
){
return
object
==
null
;
}
public
static
boolean
isNullString
(
String
str
){
return
str
==
null
||
""
.
equals
(
str
);
}
public
static
boolean
isEquals
(
String
str1
,
String
str2
){
if
(
isNull
(
str1
)&&
isNull
(
str2
)){
return
true
;
}
else
if
(
isNull
(
str1
)||
isNull
(
str2
)){
return
false
;
}
else
{
return
str1
.
equals
(
str2
);
}
}
public
static
void
checkNull
(
String
key
,
String
msg
)
{
public
static
void
checkNull
(
String
key
,
String
msg
)
{
if
(
key
==
null
||
""
.
equals
(
key
))
{
if
(
key
==
null
||
""
.
equals
(
key
))
{
throw
new
JobException
(
msg
);
throw
new
JobException
(
msg
);
...
...
dlink-core/src/main/java/com/dlink/constant/FlinkConstant.java
View file @
0d660379
...
@@ -20,10 +20,6 @@ public interface FlinkConstant {
...
@@ -20,10 +20,6 @@ public interface FlinkConstant {
* flink加载因子
* flink加载因子
*/
*/
Double
DEFAULT_FACTOR
=
0.75
;
Double
DEFAULT_FACTOR
=
0.75
;
/**
* flink运行节点
*/
String
FLINK_JOB_MANAGER_HOST
=
"flinkJobManagerHOST"
;
/**
/**
* 本地模式host
* 本地模式host
*/
*/
...
...
dlink-core/src/main/java/com/dlink/constant/FlinkJobConstant.java
deleted
100644 → 0
View file @
88912918
package
com
.
dlink
.
constant
;
/**
* flink任务的常量
*/
public
interface
FlinkJobConstant
{
/**
* flink job id
*/
String
FLINK_JOB_ID
=
"jobId"
;
/**
* flink job error
*/
String
FLINK_JOB_ERROR
=
"error"
;
/**
* 默认空串
*/
String
DEFAULT_EMPTY
=
""
;
/**
* 默认端口
*/
int
DEFAULT_PORT
=
8081
;
}
dlink-core/src/main/java/com/dlink/constant/FlinkSQLConstant.java
View file @
0d660379
...
@@ -8,75 +8,15 @@ package com.dlink.constant;
...
@@ -8,75 +8,15 @@ package com.dlink.constant;
**/
**/
public
interface
FlinkSQLConstant
{
public
interface
FlinkSQLConstant
{
/**
/**
* 查询
* 分隔符
*/
String
SELECT
=
"SELECT"
;
/**
* 创建
*/
String
CREATE
=
"CREATE"
;
/**
* 删除
*/
String
DROP
=
"DROP"
;
/**
* 修改
*/
String
ALTER
=
"ALTER"
;
/**
* 插入
*/
String
INSERT
=
"INSERT"
;
/**
* DESCRIBE
*/
String
DESCRIBE
=
"DESCRIBE"
;
/**
* EXPLAIN
*/
String
EXPLAIN
=
"EXPLAIN"
;
/**
* USE
*/
String
USE
=
"USE"
;
/**
* SHOW
*/
String
SHOW
=
"SHOW"
;
/**
* LOAD
*/
String
LOAD
=
"LOAD"
;
/**
* UNLOAD
*/
String
UNLOAD
=
"UNLOAD"
;
/**
* SET
*/
String
SET
=
"SET"
;
/**
* RESET
*/
String
RESET
=
"RESET"
;
/**
* 未知操作类型
*/
String
UNKNOWN
=
"UNKNOWN"
;
/**
* 查询时null对应的值
*/
String
NULL_COLUMNS
=
""
;
/**
* 创建聚合表 CREATEAGGTABLE
*/
*/
String
CREATE_AGG_TABLE
=
"CREATEAGGTABLE
"
;
String
SEPARATOR
=
";
"
;
/**
/**
*
删除表语句的头部 DROP TABLE IF EXISTS
*
DDL 类型
*/
*/
String
D
ROP_TABLE_HEAD
=
" DROP TABLE IF EXISTS
"
;
String
D
DL
=
"DDL
"
;
/**
/**
*
分隔符
*
DML 类型
*/
*/
String
SEPARATOR
=
";
"
;
String
DML
=
"DML
"
;
}
}
dlink-core/src/main/java/com/dlink/constant/NetConstant.java
View file @
0d660379
...
@@ -13,10 +13,6 @@ public interface NetConstant {
...
@@ -13,10 +13,6 @@ public interface NetConstant {
* 斜杠/
* 斜杠/
*/
*/
String
SLASH
=
"/"
;
String
SLASH
=
"/"
;
/**
* Flink默认端口
*/
String
PORT
=
"8081"
;
/**
/**
* 连接运行服务器超时时间 1000
* 连接运行服务器超时时间 1000
*/
*/
...
...
dlink-core/src/main/java/com/dlink/executor/Executor.java
View file @
0d660379
...
@@ -138,6 +138,7 @@ public abstract class Executor {
...
@@ -138,6 +138,7 @@ public abstract class Executor {
}
}
stEnvironment
=
newstEnvironment
;
stEnvironment
=
newstEnvironment
;
}
}
public
JobExecutionResult
execute
(
String
jobName
)
throws
Exception
{
public
JobExecutionResult
execute
(
String
jobName
)
throws
Exception
{
return
stEnvironment
.
execute
(
jobName
);
return
stEnvironment
.
execute
(
jobName
);
}
}
...
...
dlink-core/src/main/java/com/dlink/explainer/Explainer.java
View file @
0d660379
package
com
.
dlink
.
explainer
;
package
com
.
dlink
.
explainer
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.constant.FlinkSQLConstant
;
import
com.dlink.executor.Executor
;
import
com.dlink.executor.Executor
;
import
com.dlink.explainer.ca.ColumnCAGenerator
;
import
com.dlink.explainer.ca.ColumnCAGenerator
;
import
com.dlink.explainer.ca.ColumnCAResult
;
import
com.dlink.explainer.ca.ColumnCAResult
;
...
@@ -10,6 +12,7 @@ import com.dlink.explainer.trans.Trans;
...
@@ -10,6 +12,7 @@ import com.dlink.explainer.trans.Trans;
import
com.dlink.explainer.trans.TransGenerator
;
import
com.dlink.explainer.trans.TransGenerator
;
import
com.dlink.interceptor.FlinkInterceptor
;
import
com.dlink.interceptor.FlinkInterceptor
;
import
com.dlink.result.SqlExplainResult
;
import
com.dlink.result.SqlExplainResult
;
import
com.dlink.utils.SqlUtil
;
import
org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ObjectNode
;
import
org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ObjectNode
;
import
org.apache.flink.table.api.ExplainDetail
;
import
org.apache.flink.table.api.ExplainDetail
;
import
org.apache.flink.table.catalog.CatalogManager
;
import
org.apache.flink.table.catalog.CatalogManager
;
...
@@ -36,23 +39,23 @@ public class Explainer {
...
@@ -36,23 +39,23 @@ public class Explainer {
}
}
public
List
<
SqlExplainResult
>
explainSqlResult
(
String
statement
,
ExplainDetail
...
extraDetails
)
{
public
List
<
SqlExplainResult
>
explainSqlResult
(
String
statement
,
ExplainDetail
...
extraDetails
)
{
String
[]
sqls
=
statement
.
split
(
";"
);
String
[]
sqls
=
SqlUtil
.
getStatements
(
statement
);
List
<
SqlExplainResult
>
sqlExplainRecords
=
new
ArrayList
<>();
List
<
SqlExplainResult
>
sqlExplainRecords
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
sqls
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
sqls
.
length
;
i
++)
{
SqlExplainResult
record
=
new
SqlExplainResult
();
SqlExplainResult
record
=
new
SqlExplainResult
();
try
{
try
{
if
(!
FlinkInterceptor
.
build
(
executor
.
getCustomTableEnvironmentImpl
(),
sqls
[
i
]))
{
if
(!
FlinkInterceptor
.
build
(
executor
.
getCustomTableEnvironmentImpl
(),
sqls
[
i
]))
{
record
=
executor
.
explainSqlRecord
(
sqls
[
i
],
extraDetails
);
record
=
executor
.
explainSqlRecord
(
sqls
[
i
],
extraDetails
);
if
(
"DDL"
.
equals
(
record
.
getType
()))
{
if
(
Asserts
.
isEquals
(
FlinkSQLConstant
.
DDL
,
record
.
getType
()))
{
executor
.
executeSql
(
sqls
[
i
]);
executor
.
executeSql
(
sqls
[
i
]);
}
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
record
.
setError
(
e
.
getMessage
());
record
.
setError
(
e
.
getMessage
());
}
finally
{
}
finally
{
record
.
setExplainTime
(
new
Date
());
record
.
setExplainTime
(
new
Date
());
record
.
setIndex
(
i
+
1
);
record
.
setIndex
(
i
+
1
);
record
.
setSql
(
sqls
[
i
]);
record
.
setSql
(
sqls
[
i
]);
sqlExplainRecords
.
add
(
record
);
sqlExplainRecords
.
add
(
record
);
}
}
...
@@ -60,11 +63,12 @@ public class Explainer {
...
@@ -60,11 +63,12 @@ public class Explainer {
return
sqlExplainRecords
;
return
sqlExplainRecords
;
}
}
private
List
<
TableCAResult
>
explainSqlTableCA
(
String
statement
,
boolean
onlyTable
)
{
private
List
<
TableCAResult
>
generateTableCA
(
String
statement
,
boolean
onlyTable
)
{
List
<
SqlExplainResult
>
sqlExplainRecords
=
explainSqlResult
(
statement
);
List
<
SqlExplainResult
>
sqlExplainRecords
=
explainSqlResult
(
statement
);
List
<
String
>
strPlans
=
new
ArrayList
<>();
List
<
String
>
strPlans
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
sqlExplainRecords
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
sqlExplainRecords
.
size
();
i
++)
{
if
(
sqlExplainRecords
.
get
(
i
).
getType
()!=
null
&&
sqlExplainRecords
.
get
(
i
).
getType
().
contains
(
"DML"
)){
if
(
Asserts
.
isNotNull
(
sqlExplainRecords
.
get
(
i
).
getType
())
&&
sqlExplainRecords
.
get
(
i
).
getType
().
contains
(
FlinkSQLConstant
.
DML
))
{
strPlans
.
add
(
sqlExplainRecords
.
get
(
i
).
getSql
());
strPlans
.
add
(
sqlExplainRecords
.
get
(
i
).
getSql
());
}
}
}
}
...
@@ -72,21 +76,21 @@ public class Explainer {
...
@@ -72,21 +76,21 @@ public class Explainer {
for
(
int
i
=
0
;
i
<
strPlans
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
strPlans
.
size
();
i
++)
{
List
<
Trans
>
trans
=
translateTrans
(
translateObjectNode
(
strPlans
.
get
(
i
)));
List
<
Trans
>
trans
=
translateTrans
(
translateObjectNode
(
strPlans
.
get
(
i
)));
TableCAGenerator
generator
=
new
TableCAGenerator
(
trans
);
TableCAGenerator
generator
=
new
TableCAGenerator
(
trans
);
if
(
onlyTable
)
{
if
(
onlyTable
)
{
generator
.
translateOnlyTable
();
generator
.
translateOnlyTable
();
}
else
{
}
else
{
generator
.
translate
();
generator
.
translate
();
}
}
results
.
add
(
new
TableCAResult
(
generator
));
results
.
add
(
new
TableCAResult
(
generator
));
}
}
if
(
results
.
size
()>
0
)
{
if
(
results
.
size
()
>
0
)
{
CatalogManager
catalogManager
=
executor
.
getCatalogManager
();
CatalogManager
catalogManager
=
executor
.
getCatalogManager
();
for
(
int
i
=
0
;
i
<
results
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
results
.
size
();
i
++)
{
TableCA
sinkTableCA
=
(
TableCA
)
results
.
get
(
i
).
getSinkTableCA
();
TableCA
sinkTableCA
=
(
TableCA
)
results
.
get
(
i
).
getSinkTableCA
();
if
(
sinkTableCA
!=
null
)
{
if
(
sinkTableCA
!=
null
)
{
ObjectIdentifier
objectIdentifier
=
ObjectIdentifier
.
of
(
sinkTableCA
.
getCatalog
(),
sinkTableCA
.
getDatabase
(),
sinkTableCA
.
getTable
());
ObjectIdentifier
objectIdentifier
=
ObjectIdentifier
.
of
(
sinkTableCA
.
getCatalog
(),
sinkTableCA
.
getDatabase
(),
sinkTableCA
.
getTable
());
Optional
<
CatalogManager
.
TableLookupResult
>
tableOpt
=
catalogManager
.
getTable
(
objectIdentifier
);
Optional
<
CatalogManager
.
TableLookupResult
>
tableOpt
=
catalogManager
.
getTable
(
objectIdentifier
);
if
(
tableOpt
.
isPresent
())
{
if
(
tableOpt
.
isPresent
())
{
String
[]
fieldNames
=
tableOpt
.
get
().
getResolvedSchema
().
getFieldNames
();
String
[]
fieldNames
=
tableOpt
.
get
().
getResolvedSchema
().
getFieldNames
();
sinkTableCA
.
setFields
(
Arrays
.
asList
(
fieldNames
));
sinkTableCA
.
setFields
(
Arrays
.
asList
(
fieldNames
));
}
}
...
@@ -96,19 +100,19 @@ public class Explainer {
...
@@ -96,19 +100,19 @@ public class Explainer {
return
results
;
return
results
;
}
}
public
List
<
TableCAResult
>
explainSql
TableCA
(
String
statement
)
{
public
List
<
TableCAResult
>
generate
TableCA
(
String
statement
)
{
return
explainSqlTableCA
(
statement
,
true
);
return
generateTableCA
(
statement
,
true
);
}
}
public
List
<
TableCAResult
>
explainSqlTableColumnCA
(
String
statement
)
{
public
List
<
TableCAResult
>
explainSqlTableColumnCA
(
String
statement
)
{
return
explainSqlTableCA
(
statement
,
false
);
return
generateTableCA
(
statement
,
false
);
}
}
public
List
<
ColumnCAResult
>
explainSqlColumnCA
(
String
statement
)
{
public
List
<
ColumnCAResult
>
explainSqlColumnCA
(
String
statement
)
{
List
<
SqlExplainResult
>
sqlExplainRecords
=
explainSqlResult
(
statement
);
List
<
SqlExplainResult
>
sqlExplainRecords
=
explainSqlResult
(
statement
);
List
<
String
>
strPlans
=
new
ArrayList
<>();
List
<
String
>
strPlans
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
sqlExplainRecords
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
sqlExplainRecords
.
size
();
i
++)
{
if
(
sqlExplainRecords
.
get
(
i
).
getType
().
contains
(
"DML"
))
{
if
(
Asserts
.
isNotNull
(
sqlExplainRecords
.
get
(
i
).
getType
())
&&
sqlExplainRecords
.
get
(
i
).
getType
().
contains
(
"DML"
))
{
strPlans
.
add
(
sqlExplainRecords
.
get
(
i
).
getSql
());
strPlans
.
add
(
sqlExplainRecords
.
get
(
i
).
getSql
());
}
}
}
}
...
@@ -125,11 +129,11 @@ public class Explainer {
...
@@ -125,11 +129,11 @@ public class Explainer {
return
results
;
return
results
;
}
}
private
ObjectNode
translateObjectNode
(
String
strPlans
){
private
ObjectNode
translateObjectNode
(
String
strPlans
)
{
return
executor
.
getStreamGraph
(
strPlans
);
return
executor
.
getStreamGraph
(
strPlans
);
}
}
private
List
<
Trans
>
translateTrans
(
ObjectNode
plan
){
private
List
<
Trans
>
translateTrans
(
ObjectNode
plan
)
{
return
new
TransGenerator
(
plan
).
translateTrans
();
return
new
TransGenerator
(
plan
).
translateTrans
();
}
}
...
...
dlink-core/src/main/java/com/dlink/explainer/ca/CABuilder.java
View file @
0d660379
...
@@ -17,7 +17,7 @@ public class CABuilder {
...
@@ -17,7 +17,7 @@ public class CABuilder {
public
static
List
<
TableCANode
>
getOneTableCAByStatement
(
String
statement
){
public
static
List
<
TableCANode
>
getOneTableCAByStatement
(
String
statement
){
List
<
TableCANode
>
tableCANodes
=
new
ArrayList
<>();
List
<
TableCANode
>
tableCANodes
=
new
ArrayList
<>();
FlinkSqlPlus
plus
=
FlinkSqlPlus
.
build
();
FlinkSqlPlus
plus
=
FlinkSqlPlus
.
build
();
List
<
TableCAResult
>
results
=
plus
.
explainSql
TableCA
(
statement
);
List
<
TableCAResult
>
results
=
plus
.
generate
TableCA
(
statement
);
for
(
int
j
=
0
;
j
<
results
.
size
();
j
++)
{
for
(
int
j
=
0
;
j
<
results
.
size
();
j
++)
{
TableCAResult
result
=
results
.
get
(
j
);
TableCAResult
result
=
results
.
get
(
j
);
TableCANode
node
=
new
TableCANode
();
TableCANode
node
=
new
TableCANode
();
...
@@ -59,10 +59,10 @@ public class CABuilder {
...
@@ -59,10 +59,10 @@ public class CABuilder {
List
<
ColumnCAResult
>
columnCAResults
=
plus
.
explainSqlColumnCA
(
statement
);
List
<
ColumnCAResult
>
columnCAResults
=
plus
.
explainSqlColumnCA
(
statement
);
for
(
int
j
=
0
;
j
<
columnCAResults
.
size
();
j
++)
{
for
(
int
j
=
0
;
j
<
columnCAResults
.
size
();
j
++)
{
ColumnCAResult
result
=
columnCAResults
.
get
(
j
);
ColumnCAResult
result
=
columnCAResults
.
get
(
j
);
ColumnCANode
node
=
new
ColumnCANode
();
List
<
Integer
>
sinkColumns
=
result
.
getSinkColumns
();
List
<
Integer
>
sinkColumns
=
result
.
getSinkColumns
();
for
(
int
k
=
0
;
k
<
sinkColumns
.
size
();
k
++)
{
for
(
int
k
=
0
;
k
<
sinkColumns
.
size
();
k
++)
{
ColumnCA
columnCA
=
(
ColumnCA
)
result
.
getColumnCASMaps
().
get
(
sinkColumns
.
get
(
k
));
ColumnCA
columnCA
=
(
ColumnCA
)
result
.
getColumnCASMaps
().
get
(
sinkColumns
.
get
(
k
));
ColumnCANode
node
=
new
ColumnCANode
();
node
.
setName
(
columnCA
.
getAlias
());
node
.
setName
(
columnCA
.
getAlias
());
node
.
setType
(
columnCA
.
getType
());
node
.
setType
(
columnCA
.
getType
());
node
.
setTitle
(
columnCA
.
getAlias
());
node
.
setTitle
(
columnCA
.
getAlias
());
...
@@ -70,9 +70,9 @@ public class CABuilder {
...
@@ -70,9 +70,9 @@ public class CABuilder {
List
<
ColumnCANode
>
children
=
new
ArrayList
<>();
List
<
ColumnCANode
>
children
=
new
ArrayList
<>();
buildColumnCANodeChildren
(
children
,
result
,
sinkColumns
.
get
(
k
),
columnCA
.
getOperation
());
buildColumnCANodeChildren
(
children
,
result
,
sinkColumns
.
get
(
k
),
columnCA
.
getOperation
());
node
.
setChildren
(
children
);
node
.
setChildren
(
children
);
}
columnCANodes
.
add
(
node
);
columnCANodes
.
add
(
node
);
}
}
}
return
columnCANodes
;
return
columnCANodes
;
}
}
...
...
dlink-core/src/main/java/com/dlink/explainer/ca/ColumnCAGenerator.java
View file @
0d660379
...
@@ -72,7 +72,10 @@ public class ColumnCAGenerator implements CAGenerator {
...
@@ -72,7 +72,10 @@ public class ColumnCAGenerator implements CAGenerator {
buildColumnCAFields
(
tableCA
,
tableCA
.
getParentId
(),
columnCA
);
buildColumnCAFields
(
tableCA
,
tableCA
.
getParentId
(),
columnCA
);
}
}
}
}
}
else
if
(
transList
.
get
(
i
)
instanceof
SinkTrans
)
{
}
}
for
(
int
i
=
0
;
i
<
transList
.
size
();
i
++)
{
if
(
transList
.
get
(
i
)
instanceof
SinkTrans
)
{
TableCA
tableCA
=
new
TableCA
((
SinkTrans
)
transList
.
get
(
i
));
TableCA
tableCA
=
new
TableCA
((
SinkTrans
)
transList
.
get
(
i
));
searchColumnCAId
(
tableCA
);
searchColumnCAId
(
tableCA
);
this
.
sinkTableCA
=
tableCA
;
this
.
sinkTableCA
=
tableCA
;
...
...
dlink-core/src/main/java/com/dlink/interceptor/FlinkInterceptor.java
View file @
0d660379
package
com
.
dlink
.
interceptor
;
package
com
.
dlink
.
interceptor
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.catalog.function.FunctionManager
;
import
com.dlink.catalog.function.FunctionManager
;
import
com.dlink.catalog.function.UDFunction
;
import
com.dlink.catalog.function.UDFunction
;
import
com.dlink.constant.FlinkFunctionConstant
;
import
com.dlink.constant.FlinkFunctionConstant
;
...
@@ -25,7 +26,7 @@ public class FlinkInterceptor {
...
@@ -25,7 +26,7 @@ public class FlinkInterceptor {
public
static
boolean
build
(
CustomTableEnvironmentImpl
stEnvironment
,
String
statemnet
){
public
static
boolean
build
(
CustomTableEnvironmentImpl
stEnvironment
,
String
statemnet
){
initFunctions
(
stEnvironment
,
statemnet
);
initFunctions
(
stEnvironment
,
statemnet
);
Operation
operation
=
Operations
.
buildOperation
(
statemnet
);
Operation
operation
=
Operations
.
buildOperation
(
statemnet
);
if
(
operation
!=
null
)
{
if
(
Asserts
.
isNotNull
(
operation
)
)
{
operation
.
build
(
stEnvironment
);
operation
.
build
(
stEnvironment
);
return
operation
.
noExecute
();
return
operation
.
noExecute
();
}
}
...
...
dlink-core/src/main/java/com/dlink/job/JobManager.java
View file @
0d660379
...
@@ -86,7 +86,7 @@ public class JobManager extends RunTime {
...
@@ -86,7 +86,7 @@ public class JobManager extends RunTime {
private
Executor
createExecutorWithSession
()
{
private
Executor
createExecutorWithSession
()
{
if
(
config
.
isUseSession
())
{
if
(
config
.
isUseSession
())
{
ExecutorEntity
executorEntity
=
SessionPool
.
get
(
config
.
getSession
());
ExecutorEntity
executorEntity
=
SessionPool
.
get
(
config
.
getSession
());
if
(
Asserts
.
check
NotNull
(
executorEntity
))
{
if
(
Asserts
.
is
NotNull
(
executorEntity
))
{
executor
=
executorEntity
.
getExecutor
();
executor
=
executorEntity
.
getExecutor
();
config
.
setSessionConfig
(
executorEntity
.
getSessionConfig
());
config
.
setSessionConfig
(
executorEntity
.
getSessionConfig
());
initEnvironmentSetting
();
initEnvironmentSetting
();
...
@@ -225,7 +225,7 @@ public class JobManager extends RunTime {
...
@@ -225,7 +225,7 @@ public class JobManager extends RunTime {
job
.
setResult
(
result
);
job
.
setResult
(
result
);
}
}
}
}
if
(
FlinkSQLConstant
.
INSERT
.
equals
(
operationType
)||
FlinkSQLConstant
.
SELECT
.
equals
(
operationType
)
){
if
(
operationType
==
SqlType
.
INSERT
||
operationType
==
SqlType
.
SELECT
){
break
;
break
;
}
}
}
}
...
...
dlink-core/src/main/java/com/dlink/plus/FlinkSqlPlus.java
View file @
0d660379
...
@@ -68,8 +68,8 @@ public class FlinkSqlPlus {
...
@@ -68,8 +68,8 @@ public class FlinkSqlPlus {
return
explainer
.
explainSqlTableColumnCA
(
statement
);
return
explainer
.
explainSqlTableColumnCA
(
statement
);
}
}
public
List
<
TableCAResult
>
explainSql
TableCA
(
String
statement
)
{
public
List
<
TableCAResult
>
generate
TableCA
(
String
statement
)
{
return
explainer
.
explainSql
TableCA
(
statement
);
return
explainer
.
generate
TableCA
(
statement
);
}
}
public
List
<
ColumnCAResult
>
explainSqlColumnCA
(
String
statement
)
{
public
List
<
ColumnCAResult
>
explainSqlColumnCA
(
String
statement
)
{
...
...
dlink-core/src/main/java/com/dlink/trans/Operations.java
View file @
0d660379
package
com
.
dlink
.
trans
;
package
com
.
dlink
.
trans
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.constant.FlinkSQLConstant
;
import
com.dlink.constant.FlinkSQLConstant
;
import
com.dlink.parser.SqlType
;
import
com.dlink.parser.SqlType
;
import
com.dlink.trans.ddl.CreateAggTableOperation
;
import
com.dlink.trans.ddl.CreateAggTableOperation
;
...
@@ -24,7 +25,7 @@ public class Operations {
...
@@ -24,7 +25,7 @@ public class Operations {
continue
;
continue
;
}
}
sqlType
=
Operations
.
getOperationType
(
item
);
sqlType
=
Operations
.
getOperationType
(
item
);
if
(
FlinkSQLConstant
.
INSERT
.
equals
(
sqlType
)||
FlinkSQLConstant
.
SELECT
.
equals
(
sqlType
)
){
if
(
sqlType
==
SqlType
.
INSERT
||
sqlType
==
SqlType
.
SELECT
){
return
sqlType
;
return
sqlType
;
}
}
}
}
...
@@ -41,30 +42,10 @@ public class Operations {
...
@@ -41,30 +42,10 @@ public class Operations {
}
}
}
}
return
type
;
return
type
;
/*if (sqlTrim.startsWith(FlinkSQLConstant.CREATE)) {
return FlinkSQLConstant.CREATE;
}
if (sqlTrim.startsWith(FlinkSQLConstant.ALTER)) {
return FlinkSQLConstant.ALTER;
}
if (sqlTrim.startsWith(FlinkSQLConstant.INSERT)) {
return FlinkSQLConstant.INSERT;
}
if (sqlTrim.startsWith(FlinkSQLConstant.DROP)) {
return FlinkSQLConstant.DROP;
}
if (sqlTrim.startsWith(FlinkSQLConstant.SELECT)) {
return FlinkSQLConstant.SELECT;
}
if (sqlTrim.startsWith(FlinkSQLConstant.SHOW)) {
return FlinkSQLConstant.SHOW;
}
return FlinkSQLConstant.UNKNOWN;*/
}
}
public
static
Operation
buildOperation
(
String
statement
){
public
static
Operation
buildOperation
(
String
statement
){
statement
=
statement
.
replace
(
"\n"
,
" "
).
replaceAll
(
"\\s{1,}"
,
" "
).
trim
();
String
sql
=
statement
.
replace
(
"\n"
,
" "
).
replaceAll
(
"\\s{1,}"
,
" "
).
trim
().
toUpperCase
();
String
sql
=
statement
.
toUpperCase
();
for
(
int
i
=
0
;
i
<
operations
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
operations
.
length
;
i
++)
{
if
(
sql
.
startsWith
(
operations
[
i
].
getHandle
())){
if
(
sql
.
startsWith
(
operations
[
i
].
getHandle
())){
return
operations
[
i
].
create
(
statement
);
return
operations
[
i
].
create
(
statement
);
...
...
dlink-core/src/main/java/com/dlink/trans/ddl/AggTable.java
View file @
0d660379
package
com
.
dlink
.
trans
.
ddl
;
package
com
.
dlink
.
trans
.
ddl
;
import
com.dlink.parser.SingleSqlParserFactory
;
import
com.dlink.parser.SingleSqlParserFactory
;
import
com.dlink.utils.SqlExtractUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
java.util.List
;
import
java.util.List
;
...
...
dlink-core/src/main/java/com/dlink/trans/ddl/CreateAggTableOperation.java
View file @
0d660379
...
@@ -52,9 +52,4 @@ public class CreateAggTableOperation extends AbstractOperation implements Operat
...
@@ -52,9 +52,4 @@ public class CreateAggTableOperation extends AbstractOperation implements Operat
.
select
(
aggTable
.
getColumns
());
.
select
(
aggTable
.
getColumns
());
stEnvironment
.
registerTable
(
aggTable
.
getName
(),
sink
);
stEnvironment
.
registerTable
(
aggTable
.
getName
(),
sink
);
}
}
/*@Override
public boolean noExecute(){
return true;
}*/
}
}
dlink-core/src/main/java/com/dlink/utils/SqlExtractUtil.java
deleted
100644 → 0
View file @
88912918
package
com
.
dlink
.
utils
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* TODO
*
* @author wenmo
* @since 2021/6/13 21:09
*/
public
class
SqlExtractUtil
{
private
String
[]
KEY_WORDS
=
{
"AGG"
,
"AGGTABLE"
,
"AGGTABLES"
,
"AND"
,
"AS"
,
"BY"
,
"CREATE"
,
"DROP"
,
"FRAGMENT"
,
"FRAGMENTS"
,
"FROM"
,
"GROUP"
,
"LIMIT"
,
"OR"
,
"ORDER"
,
"SELECT"
,
"SHOW"
,
"TABLE"
,
"TABLES"
,
"VIEW"
,
"VIEWS"
,
"WHERE"
};
/**
* 获取固定分割符之间的内容 如 select a.name ,b.name from 中select和from之间的内容
*
* @param original
* @param upperStr
* @param start
* @param end
* @return
*/
public
static
String
getSubStringPara
(
String
original
,
String
upperStr
,
String
beforeStr
,
String
start
,
String
end
,
String
secondEnd
,
boolean
isStopTrim
)
{
int
beforeIndex
=
upperStr
.
indexOf
(
" "
+
beforeStr
+
" "
);
int
startIndex
=
upperStr
.
indexOf
(
" "
+
start
+
" "
,
beforeIndex
);
if
(
startIndex
<
0
)
{
return
""
;
}
if
(
end
.
length
()
==
0
)
{
String
resWitgout
=
original
.
substring
(
start
.
length
()
+
startIndex
+
1
);
return
isStopTrim
?
resWitgout:
resWitgout
.
trim
();
}
int
endIndex
=
upperStr
.
indexOf
(
" "
+
end
+
" "
,
startIndex
);
if
(
endIndex
<
0
)
{
endIndex
=
upperStr
.
indexOf
(
" "
+
secondEnd
+
" "
,
startIndex
);
}
if
(
endIndex
<
0
)
{
return
""
;
}
String
res
=
original
.
substring
(
start
.
length
()
+
startIndex
+
1
,
endIndex
);
return
isStopTrim
?
res:
res
.
trim
();
}
/**
* 处理一类固定分隔符的工具 例如条件语句 s1.name = s2.name and s1.age = s2.age And s1.sex=s2.sex
* 转换成 list = ["s1.name = s2.name", "and s1.age = s2", "And s1.sex=s2.sex"]
*
* @param original
* @param upperStr
* @param start
* @param end
* @param secondLayer
* @return
*/
public
static
List
<
String
>
getSubStringList
(
String
original
,
String
upperStr
,
String
start
,
String
end
,
String
secondLayer
)
{
String
subStringPara
=
getSubStringPara
(
original
,
upperStr
,
start
,
start
,
end
,
""
,
false
);
List
<
String
>
list
=
new
ArrayList
<>();
if
(
subStringPara
.
length
()
==
0
)
{
return
list
;
}
String
str
[]
=
subStringPara
.
split
(
" "
+
secondLayer
.
toUpperCase
()
+
" "
);
for
(
int
i
=
0
;
i
<
str
.
length
;
i
++)
{
String
[]
split
=
str
[
i
].
split
(
" "
+
secondLayer
.
toLowerCase
()
+
" "
);
for
(
int
j
=
0
;
j
<
split
.
length
;
j
++)
{
if
(
split
[
j
].
replace
(
" "
,
""
).
length
()
>
0
)
{
list
.
add
(
split
[
j
]);
}
}
}
return
list
;
}
}
dlink-core/src/main/java/com/dlink/utils/SqlUtil.java
0 → 100644
View file @
0d660379
package
com
.
dlink
.
utils
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.constant.FlinkSQLConstant
;
/**
* SqlUtil
*
* @author wenmo
* @since 2021/7/14 21:57
*/
public
class
SqlUtil
{
public
static
String
[]
getStatements
(
String
sql
){
if
(
Asserts
.
isNullString
(
sql
)){
return
new
String
[
0
];
}
return
sql
.
split
(
FlinkSQLConstant
.
SEPARATOR
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment