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
45703a64
Commit
45703a64
authored
Feb 14, 2022
by
godkaikai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化SQL生成
parent
64050869
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
67 additions
and
110 deletions
+67
-110
DataBaseServiceImpl.java
...main/java/com/dlink/service/impl/DataBaseServiceImpl.java
+1
-2
Table.java
dlink-common/src/main/java/com/dlink/model/Table.java
+10
-2
AbstractDriver.java
...c/main/java/com/dlink/metadata/driver/AbstractDriver.java
+15
-0
AbstractJdbcDriver.java
...in/java/com/dlink/metadata/driver/AbstractJdbcDriver.java
+20
-0
Driver.java
...-base/src/main/java/com/dlink/metadata/driver/Driver.java
+2
-0
AbstractDBQuery.java
...c/main/java/com/dlink/metadata/query/AbstractDBQuery.java
+11
-0
IDBQuery.java
...base/src/main/java/com/dlink/metadata/query/IDBQuery.java
+8
-0
ClickHouseDriver.java
...main/java/com/dlink/metadata/driver/ClickHouseDriver.java
+0
-5
DorisDriver.java
.../src/main/java/com/dlink/metadata/driver/DorisDriver.java
+0
-49
MySqlDriver.java
.../src/main/java/com/dlink/metadata/driver/MySqlDriver.java
+0
-44
MySqlQuery.java
...ql/src/main/java/com/dlink/metadata/query/MySqlQuery.java
+0
-3
PostgreSqlDriver.java
...main/java/com/dlink/metadata/driver/PostgreSqlDriver.java
+0
-5
No files found.
dlink-admin/src/main/java/com/dlink/service/impl/DataBaseServiceImpl.java
View file @
45703a64
...
...
@@ -124,8 +124,7 @@ public class DataBaseServiceImpl extends SuperServiceImpl<DataBaseMapper, DataBa
DataBase
dataBase
=
getById
(
id
);
Asserts
.
checkNotNull
(
dataBase
,
"该数据源不存在!"
);
Driver
driver
=
Driver
.
build
(
dataBase
.
getDriverConfig
()).
connect
();
List
<
Column
>
columns
=
driver
.
listColumns
(
schemaName
,
tableName
);
Table
table
=
Table
.
build
(
tableName
,
schemaName
,
columns
);
Table
table
=
driver
.
getTable
(
schemaName
,
tableName
);
SqlGeneration
sqlGeneration
=
new
SqlGeneration
();
sqlGeneration
.
setFlinkSqlCreate
(
table
.
getFlinkTableSql
(
dataBase
.
getName
(),
driver
.
getFlinkColumnTypeConversion
(),
dataBase
.
getFlinkConfig
()));
sqlGeneration
.
setSqlSelect
(
table
.
getSqlSelect
(
dataBase
.
getName
()));
...
...
dlink-common/src/main/java/com/dlink/model/Table.java
View file @
45703a64
...
...
@@ -82,7 +82,11 @@ public class Table implements Serializable, Comparable<Table> {
if
(
i
>
0
)
{
sb
.
append
(
","
);
}
sb
.
append
(
columns
.
get
(
i
).
getName
()
+
" "
+
type
+
"\n"
);
sb
.
append
(
columns
.
get
(
i
).
getName
()
+
" "
+
type
);
if
(
Asserts
.
isNotNullString
(
columns
.
get
(
i
).
getComment
()))
{
sb
.
append
(
" COMMENT '"
+
columns
.
get
(
i
).
getComment
()
+
"'"
);
}
sb
.
append
(
"\n"
);
if
(
columns
.
get
(
i
).
isKeyFlag
())
{
pks
.
add
(
columns
.
get
(
i
).
getName
());
}
...
...
@@ -99,7 +103,11 @@ public class Table implements Serializable, Comparable<Table> {
sb
.
append
(
" ,"
);
sb
.
append
(
pksb
);
}
sb
.
append
(
") WITH (\n"
);
sb
.
append
(
")"
);
if
(
Asserts
.
isNotNullString
(
comment
)){
sb
.
append
(
" COMMENT '"
+
comment
+
"'\n"
);
}
sb
.
append
(
" WITH (\n"
);
sb
.
append
(
getFlinkTableWith
(
flinkConfig
));
sb
.
append
(
"\n);\n"
);
return
sb
.
toString
();
...
...
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/driver/AbstractDriver.java
View file @
45703a64
...
...
@@ -42,6 +42,21 @@ public abstract class AbstractDriver implements Driver {
return
listTables
(
schema
).
stream
().
peek
(
table
->
table
.
setColumns
(
listColumns
(
schema
,
table
.
getName
()))).
sorted
().
collect
(
Collectors
.
toList
());
}
@Override
public
Table
getTable
(
String
schemaName
,
String
tableName
)
{
List
<
Table
>
tables
=
listTables
(
schemaName
);
Table
table
=
null
;
for
(
Table
item
:
tables
){
if
(
Asserts
.
isEquals
(
item
.
getName
(),
tableName
)){
table
=
item
;
}
}
if
(
Asserts
.
isNotNull
(
table
))
{
table
.
setColumns
(
listColumns
(
schemaName
,
table
.
getName
()));
}
return
table
;
}
@Override
public
boolean
existTable
(
Table
table
){
return
listTables
(
table
.
getSchema
()).
stream
().
anyMatch
(
tableItem
->
Asserts
.
isEquals
(
tableItem
.
getName
(),
table
.
getName
()));
...
...
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/driver/AbstractJdbcDriver.java
View file @
45703a64
...
...
@@ -214,6 +214,26 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
}
}
@Override
public
String
getCreateTableSql
(
Table
table
)
{
String
createTable
=
null
;
PreparedStatement
preparedStatement
=
null
;
ResultSet
results
=
null
;
String
createTableSql
=
getDBQuery
().
createTableSql
(
table
.
getSchema
(),
table
.
getName
());
try
{
preparedStatement
=
conn
.
prepareStatement
(
createTableSql
);
results
=
preparedStatement
.
executeQuery
();
if
(
results
.
next
())
{
createTable
=
results
.
getString
(
getDBQuery
().
createTableName
());
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
close
(
preparedStatement
,
results
);
}
return
createTable
;
}
@Override
public
String
getDropTableSql
(
Table
table
)
{
StringBuilder
sb
=
new
StringBuilder
();
...
...
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/driver/Driver.java
View file @
45703a64
...
...
@@ -67,6 +67,8 @@ public interface Driver {
List
<
Table
>
getTablesAndColumns
(
String
schemaName
);
Table
getTable
(
String
schemaName
,
String
tableName
);
boolean
existTable
(
Table
table
);
boolean
createTable
(
Table
table
)
throws
Exception
;
...
...
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/query/AbstractDBQuery.java
View file @
45703a64
...
...
@@ -11,6 +11,17 @@ import java.sql.SQLException;
**/
public
abstract
class
AbstractDBQuery
implements
IDBQuery
{
@Override
public
String
createTableSql
(
String
schemaName
,
String
tableName
)
{
return
"show create table "
+
schemaName
+
"."
+
tableName
;
}
@Override
public
String
createTableName
()
{
return
"Create Table"
;
}
@Override
public
String
[]
columnCustom
()
{
return
null
;
...
...
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/query/IDBQuery.java
View file @
45703a64
...
...
@@ -22,6 +22,14 @@ public interface IDBQuery {
* 表字段信息查询 SQL
*/
String
columnsSql
(
String
schemaName
,
String
tableName
);
/**
* 建表 SQL
*/
String
createTableSql
(
String
schemaName
,
String
tableName
);
/**
* 建表语句列名
*/
String
createTableName
();
/**
* 数据库、模式、组织名称
*/
...
...
dlink-metadata/dlink-metadata-clickhouse/src/main/java/com/dlink/metadata/driver/ClickHouseDriver.java
View file @
45703a64
...
...
@@ -82,11 +82,6 @@ public class ClickHouseDriver extends AbstractJdbcDriver {
return
tableList
;
}
@Override
public
String
getCreateTableSql
(
Table
table
)
{
return
null
;
}
@Override
public
List
<
SqlExplainResult
>
explain
(
String
sql
){
String
initialSql
=
sql
;
...
...
dlink-metadata/dlink-metadata-doris/src/main/java/com/dlink/metadata/driver/DorisDriver.java
View file @
45703a64
package
com
.
dlink
.
metadata
.
driver
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.metadata.convert.DorisTypeConvert
;
import
com.dlink.metadata.convert.ITypeConvert
;
import
com.dlink.metadata.query.DorisQuery
;
import
com.dlink.metadata.query.IDBQuery
;
import
com.dlink.model.Column
;
import
com.dlink.model.Table
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
class
DorisDriver
extends
AbstractJdbcDriver
{
...
...
@@ -39,50 +34,6 @@ public class DorisDriver extends AbstractJdbcDriver{
return
"Doris"
;
}
@Override
public
String
getCreateTableSql
(
Table
table
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"CREATE TABLE "
+
table
.
getSchema
()
+
"."
+
table
.
getName
()
+
" ("
);
List
<
Column
>
columns
=
table
.
getColumns
();
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
if
(
i
>
0
)
{
sb
.
append
(
","
);
}
sb
.
append
(
columns
.
get
(
i
).
getName
()
+
" "
+
getTypeConvert
().
convertToDB
(
columns
.
get
(
i
)));
if
(
"YES"
.
equals
(
columns
.
get
(
i
).
isNullable
()))
{
sb
.
append
(
" NOT NULL "
);
}
else
{
sb
.
append
(
" NULL "
);
}
if
(
Asserts
.
isNotNullString
(
columns
.
get
(
i
).
getComment
()))
{
sb
.
append
(
" COMMENT '"
+
columns
.
get
(
i
).
getComment
()
+
"' "
);
}
}
sb
.
append
(
" ) ENGINE = olap "
);
List
<
String
>
pks
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
if
(
columns
.
get
(
i
).
isKeyFlag
())
{
pks
.
add
(
columns
.
get
(
i
).
getName
());
}
}
if
(
pks
.
size
()
>
0
)
{
sb
.
append
(
"UNIQUE KEY( "
);
for
(
int
i
=
0
;
i
<
pks
.
size
();
i
++)
{
if
(
i
>
0
)
{
sb
.
append
(
","
);
}
sb
.
append
(
pks
.
get
(
i
));
}
sb
.
append
(
") "
);
}
if
(
Asserts
.
isNotNullString
(
table
.
getComment
())){
sb
.
append
(
"COMMENT '"
+
table
.
getComment
()
+
"' "
);
}
sb
.
append
(
"DISTRIBUTED BY HASH("
+
pks
.
get
(
0
)
+
") BUCKETS 32 "
);
sb
.
append
(
"PROPERTIES('replication_num' = '1')"
);
return
sb
.
toString
();
}
@Override
public
Map
<
String
,
String
>
getFlinkColumnTypeConversion
(){
return
new
HashMap
<>();
...
...
dlink-metadata/dlink-metadata-mysql/src/main/java/com/dlink/metadata/driver/MySqlDriver.java
View file @
45703a64
package
com
.
dlink
.
metadata
.
driver
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.metadata.convert.ITypeConvert
;
import
com.dlink.metadata.convert.MySqlTypeConvert
;
import
com.dlink.metadata.query.IDBQuery
;
import
com.dlink.metadata.query.MySqlQuery
;
import
com.dlink.model.Column
;
import
com.dlink.model.Table
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
...
...
@@ -46,45 +41,6 @@ public class MySqlDriver extends AbstractJdbcDriver {
return
"com.mysql.cj.jdbc.Driver"
;
}
@Override
public
String
getCreateTableSql
(
Table
table
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"CREATE TABLE `"
+
table
.
getName
()
+
"` ("
);
List
<
Column
>
columns
=
table
.
getColumns
();
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
if
(
i
>
0
){
sb
.
append
(
","
);
}
sb
.
append
(
"`"
+
columns
.
get
(
i
).
getName
()
+
"` "
+
getTypeConvert
().
convertToDB
(
columns
.
get
(
i
)));
if
(
columns
.
get
(
i
).
isNullable
()){
sb
.
append
(
" NOT NULL"
);
}
else
{
sb
.
append
(
" NULL"
);
}
if
(
Asserts
.
isNotNull
(
columns
.
get
(
i
).
getComment
())){
sb
.
append
(
" COMMENT '"
+
columns
.
get
(
i
).
getComment
()+
"'"
);
}
}
List
<
String
>
pks
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
columns
.
size
();
i
++)
{
if
(
columns
.
get
(
i
).
isKeyFlag
()){
pks
.
add
(
columns
.
get
(
i
).
getName
());
}
}
if
(
pks
.
size
()>
0
){
sb
.
append
(
", PRIMARY KEY ( "
);
for
(
int
i
=
0
;
i
<
pks
.
size
();
i
++)
{
if
(
i
>
0
){
sb
.
append
(
","
);
}
sb
.
append
(
"`"
+
pks
.
get
(
i
)+
"`"
);
}
sb
.
append
(
" ) USING BTREE"
);
}
sb
.
append
(
") ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '"
+(
table
.
getComment
()!=
null
?
table
.
getComment
():
""
)+
"' ROW_FORMAT = Dynamic;"
);
return
sb
.
toString
();
}
@Override
public
Map
<
String
,
String
>
getFlinkColumnTypeConversion
(){
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
...
...
dlink-metadata/dlink-metadata-mysql/src/main/java/com/dlink/metadata/query/MySqlQuery.java
View file @
45703a64
package
com
.
dlink
.
metadata
.
query
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
/**
* MySqlQuery
*
...
...
dlink-metadata/dlink-metadata-postgresql/src/main/java/com/dlink/metadata/driver/PostgreSqlDriver.java
View file @
45703a64
...
...
@@ -41,11 +41,6 @@ public class PostgreSqlDriver extends AbstractJdbcDriver {
return
"PostgreSql 数据库"
;
}
@Override
public
String
getCreateTableSql
(
Table
table
)
{
return
null
;
}
@Override
public
Map
<
String
,
String
>
getFlinkColumnTypeConversion
(){
return
new
HashMap
<>();
...
...
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