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
606d9430
Commit
606d9430
authored
Mar 16, 2022
by
gaogao110
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复phoenix bugs 以及优化sql处理方式
parent
9b8c5882
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
89 additions
and
17 deletions
+89
-17
Dialect.java
dlink-core/src/main/java/com/dlink/config/Dialect.java
+2
-2
ITypeConvert.java
...rc/main/java/com/dlink/metadata/convert/ITypeConvert.java
+4
-0
AbstractJdbcDriver.java
...in/java/com/dlink/metadata/driver/AbstractJdbcDriver.java
+11
-13
pom.xml
dlink-metadata/dlink-metadata-phoenix/pom.xml
+4
-0
PhoenixTypeConvert.java
...n/java/com/dlink/metadata/convert/PhoenixTypeConvert.java
+1
-1
PhoenixDriver.java
...rc/main/java/com/dlink/metadata/driver/PhoenixDriver.java
+48
-0
PhoenixTest.java
...phoenix/src/test/java/com/dlink/metadata/PhoenixTest.java
+1
-1
SimpleTaskForm.tsx
...omponents/Studio/StudioTree/components/SimpleTaskForm.tsx
+1
-0
conf.ts
dlink-web/src/components/Studio/conf.ts
+4
-0
icon.tsx
dlink-web/src/components/Studio/icon.tsx
+6
-0
pom.xml
pom.xml
+7
-0
No files found.
dlink-core/src/main/java/com/dlink/config/Dialect.java
View file @
606d9430
...
...
@@ -12,7 +12,7 @@ public enum Dialect {
FLINKSQL
(
"FlinkSql"
),
FLINKJAR
(
"FlinkJar"
),
FLINKSQLENV
(
"FlinkSqlEnv"
),
SQL
(
"Sql"
),
JAVA
(
"Java"
),
MYSQL
(
"Mysql"
),
ORACLE
(
"Oracle"
),
SQLSERVER
(
"SqlServer"
),
POSTGRESQL
(
"PostGreSql"
),
CLICKHOUSE
(
"ClickHouse"
),
DORIS
(
"Doris"
);
DORIS
(
"Doris"
)
,
PHOENIX
(
"Phoenix"
)
;
private
String
value
;
...
...
@@ -42,7 +42,7 @@ public enum Dialect {
public
static
boolean
isSql
(
String
value
){
Dialect
dialect
=
Dialect
.
get
(
value
);
switch
(
dialect
){
case
SQL:
case
MYSQL:
case
ORACLE:
case
SQLSERVER:
case
POSTGRESQL:
case
CLICKHOUSE:
case
DORIS:
case
SQL:
case
MYSQL:
case
ORACLE:
case
SQLSERVER:
case
POSTGRESQL:
case
CLICKHOUSE:
case
DORIS:
case
PHOENIX:
return
true
;
default
:
return
false
;
...
...
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/convert/ITypeConvert.java
View file @
606d9430
package
com
.
dlink
.
metadata
.
convert
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.model.Column
;
import
com.dlink.model.ColumnType
;
...
...
@@ -23,6 +24,9 @@ public interface ITypeConvert {
String
convertToDB
(
ColumnType
columnType
);
default
Object
convertValue
(
ResultSet
results
,
String
columnName
,
String
javaType
)
throws
SQLException
{
if
(
Asserts
.
isNull
(
javaType
))
{
return
results
.
getString
(
columnName
);
}
switch
(
javaType
.
toLowerCase
())
{
case
"string"
:
return
results
.
getString
(
columnName
);
...
...
dlink-metadata/dlink-metadata-base/src/main/java/com/dlink/metadata/driver/AbstractJdbcDriver.java
View file @
606d9430
...
...
@@ -2,9 +2,6 @@ package com.dlink.metadata.driver;
import
com.alibaba.druid.sql.SQLUtils
;
import
com.alibaba.druid.sql.ast.SQLStatement
;
import
com.alibaba.druid.sql.parser.ParserException
;
import
com.alibaba.druid.sql.parser.SQLStatementParser
;
import
com.alibaba.druid.sql.parser.Token
;
import
com.dlink.assertion.Asserts
;
import
com.dlink.constant.CommonConstant
;
import
com.dlink.metadata.query.IDBQuery
;
...
...
@@ -17,13 +14,7 @@ import com.dlink.utils.LogUtil;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.ResultSetMetaData
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.sql.*
;
import
java.util.*
;
/**
...
...
@@ -389,6 +380,12 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
}
}
/**
* 如果执行多条语句返回最后一条语句执行结果
* @param sql
* @param limit
* @return
*/
@Override
public
JdbcSelectResult
executeSql
(
String
sql
,
Integer
limit
)
{
List
<
SQLStatement
>
stmtList
=
SQLUtils
.
parseStatements
(
sql
,
config
.
getType
().
toLowerCase
());
...
...
@@ -396,11 +393,12 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
JdbcSelectResult
result
=
JdbcSelectResult
.
buildResult
();
for
(
SQLStatement
item
:
stmtList
){
String
type
=
item
.
getClass
().
getSimpleName
();
if
(
type
.
toUpperCase
().
contains
(
"SELECT"
)||
type
.
toUpperCase
().
contains
(
"SHOW"
)||
type
.
toUpperCase
().
contains
(
"DESC"
)){
re
turn
query
(
item
.
toString
(),
limit
);
if
(
type
.
toUpperCase
().
contains
(
"SELECT"
)||
type
.
toUpperCase
().
contains
(
"SHOW"
)||
type
.
toUpperCase
().
contains
(
"DESC"
)
||
type
.
toUpperCase
().
contains
(
"SQLEXPLAINSTATEMENT"
)
){
re
sult
=
query
(
item
.
toString
(),
limit
);
}
else
if
(
type
.
toUpperCase
().
contains
(
"INSERT"
)||
type
.
toUpperCase
().
contains
(
"UPDATE"
)||
type
.
toUpperCase
().
contains
(
"DELETE"
)){
try
{
resList
.
add
(
executeUpdate
(
item
.
toString
()));
result
.
setStatusList
(
resList
);
}
catch
(
Exception
e
)
{
resList
.
add
(
0
);
result
.
setStatusList
(
resList
);
...
...
@@ -411,6 +409,7 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
try
{
execute
(
item
.
toString
());
resList
.
add
(
1
);
result
.
setStatusList
(
resList
);
}
catch
(
Exception
e
)
{
resList
.
add
(
0
);
result
.
setStatusList
(
resList
);
...
...
@@ -419,7 +418,6 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
}
}
}
result
.
setStatusList
(
resList
);
result
.
success
();
return
result
;
}
...
...
dlink-metadata/dlink-metadata-phoenix/pom.xml
View file @
606d9430
...
...
@@ -32,6 +32,10 @@
<version>
4.14.2-HBase-1.4
</version>
<!-- <scope>test</scope>-->
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
dlink-metadata/dlink-metadata-phoenix/src/main/java/com/dlink/metadata/convert/PhoenixTypeConvert.java
View file @
606d9430
...
...
@@ -7,7 +7,7 @@ import com.dlink.model.ColumnType;
public
class
PhoenixTypeConvert
implements
ITypeConvert
{
@Override
public
ColumnType
convert
(
Column
column
)
{
if
(
Asserts
.
isNull
(
column
))
{
if
(
Asserts
.
isNull
(
column
)
||
Asserts
.
isNull
(
column
.
getType
())
)
{
return
ColumnType
.
STRING
;
}
String
t
=
column
.
getType
().
toLowerCase
();
...
...
dlink-metadata/dlink-metadata-phoenix/src/main/java/com/dlink/metadata/driver/PhoenixDriver.java
View file @
606d9430
...
...
@@ -5,9 +5,15 @@ import com.dlink.metadata.convert.ITypeConvert;
import
com.dlink.metadata.convert.PhoenixTypeConvert
;
import
com.dlink.metadata.query.IDBQuery
;
import
com.dlink.metadata.query.PhoenixQuery
;
import
com.dlink.metadata.result.JdbcSelectResult
;
import
com.dlink.model.Column
;
import
com.dlink.model.Table
;
import
org.apache.commons.lang3.StringUtils
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
import
java.util.List
;
import
java.util.Properties
;
/**
*
...
...
@@ -57,4 +63,46 @@ public class PhoenixDriver extends AbstractJdbcDriver {
sql
.
append
(
" ) "
);
return
sql
.
toString
();
}
@Override
public
Driver
connect
()
{
try
{
Class
.
forName
(
getDriverClass
());
//TODO:phoenix连接配置,后续可设置为参数传入,以适应不同配置的集群
Properties
properties
=
new
Properties
();
properties
.
put
(
"phoenix.schema.isNamespaceMappingEnabled"
,
"true"
);
properties
.
put
(
"phoenix.schema.mapSystemTablesToNamespac"
,
"true"
);
conn
=
DriverManager
.
getConnection
(
config
.
getUrl
(),
properties
);
//设置为自动提交,否则upsert语句不生效
conn
.
setAutoCommit
(
true
);
}
catch
(
ClassNotFoundException
|
SQLException
e
)
{
throw
new
RuntimeException
(
e
);
}
return
this
;
}
/**
* 解决phoenix SQL多语句执行问题
* phoenix SQL中不能执行带;语句
* @param sql
* @return
*/
public
String
parsePhoenixSql
(
String
sql
)
{
return
StringUtils
.
remove
(
sql
,
";"
);
}
@Override
public
JdbcSelectResult
query
(
String
sql
,
Integer
limit
)
{
return
super
.
query
(
parsePhoenixSql
(
sql
),
limit
);
}
@Override
public
int
executeUpdate
(
String
sql
)
throws
Exception
{
return
super
.
executeUpdate
(
parsePhoenixSql
(
sql
));
}
@Override
public
boolean
execute
(
String
sql
)
throws
Exception
{
return
super
.
execute
(
parsePhoenixSql
(
sql
));
}
}
dlink-metadata/dlink-metadata-phoenix/src/test/java/com/dlink/metadata/PhoenixTest.java
View file @
606d9430
...
...
@@ -21,7 +21,7 @@ public class PhoenixTest {
DriverConfig
config
=
new
DriverConfig
();
config
.
setName
(
"phoenix"
);
config
.
setType
(
"Phoenix"
);
config
.
setUrl
(
"jdbc:phoenix:
10.1.51.24
:2181"
);
config
.
setUrl
(
"jdbc:phoenix:
zxbd-test-hbase
:2181"
);
try
{
driver
=
Driver
.
build
(
config
);
}
catch
(
Exception
e
)
{
...
...
dlink-web/src/components/Studio/StudioTree/components/SimpleTaskForm.tsx
View file @
606d9430
...
...
@@ -60,6 +60,7 @@ const SimpleTaskForm: React.FC<UpdateFormProps> = (props) => {
<
Option
value=
{
DIALECT
.
POSTGRESQL
}
>
{
DIALECT
.
POSTGRESQL
}
</
Option
>
<
Option
value=
{
DIALECT
.
CLICKHOUSE
}
>
{
DIALECT
.
CLICKHOUSE
}
</
Option
>
<
Option
value=
{
DIALECT
.
DORIS
}
>
{
DIALECT
.
DORIS
}
</
Option
>
<
Option
value=
{
DIALECT
.
PHOENIX
}
>
{
DIALECT
.
PHOENIX
}
</
Option
>
<
Option
value=
{
DIALECT
.
JAVA
}
>
{
DIALECT
.
JAVA
}
</
Option
>
<
Option
value=
{
DIALECT
.
SQL
}
>
{
DIALECT
.
SQL
}
</
Option
>
</
Select
>
...
...
dlink-web/src/components/Studio/conf.ts
View file @
606d9430
...
...
@@ -19,6 +19,7 @@ export const DIALECT = {
POSTGRESQL
:
'PostGreSql'
,
CLICKHOUSE
:
'ClickHouse'
,
DORIS
:
'Doris'
,
PHOENIX
:
'Phoenix'
,
JAVA
:
'Java'
,
};
...
...
@@ -36,6 +37,7 @@ export const isSql = (dialect: string) => {
case
DIALECT
.
SQLSERVER
:
case
DIALECT
.
POSTGRESQL
:
case
DIALECT
.
CLICKHOUSE
:
case
DIALECT
.
PHOENIX
:
case
DIALECT
.
DORIS
:
return
true
;
default
:
...
...
@@ -55,6 +57,7 @@ export const isExecuteSql = (dialect: string) => {
case
DIALECT
.
POSTGRESQL
:
case
DIALECT
.
CLICKHOUSE
:
case
DIALECT
.
DORIS
:
case
DIALECT
.
PHOENIX
:
case
DIALECT
.
FLINKSQL
:
return
true
;
default
:
...
...
@@ -74,6 +77,7 @@ export const isTask = (dialect: string) => {
case
DIALECT
.
POSTGRESQL
:
case
DIALECT
.
CLICKHOUSE
:
case
DIALECT
.
DORIS
:
case
DIALECT
.
PHOENIX
:
case
DIALECT
.
FLINKSQL
:
case
DIALECT
.
FLINKJAR
:
return
true
;
...
...
dlink-web/src/components/Studio/icon.tsx
View file @
606d9430
...
...
@@ -21,6 +21,8 @@ export const getIcon = (type: string)=>{
return
(<
Icon
component=
{
ClickHouseSvg
}
/>);
case
DIALECT
.
DORIS
:
return
(<
Icon
component=
{
DorisSvg
}
/>);
case
DIALECT
.
PHOENIX
:
return
(<
Icon
component=
{
PhoenixSvg
}
/>);
case
DIALECT
.
JAVA
:
return
(<
Icon
component=
{
JavaSvg
}
/>);
default
:
...
...
@@ -262,6 +264,10 @@ export const ClickHouseSvg = () => (
fill=
"#ffcc00"
p
-
id=
"13213"
></
path
>
</
svg
>
);
export
const
PhoenixSvg
=
()
=>
(
<
svg
t=
"987654321"
className=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p
-
id=
"9314"
width=
{
svgSize
}
height=
{
svgSize
}
><
path
d=
"M896 1024H128C57.6 1024 0 966.4 0 896V128C0 57.6 57.6 0 128 0h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128z"
fill=
"#FFFFFF"
p
-
id=
"1695"
></
path
><
path
d=
"M726.4 216.533c39.467-129.066 55.467-141.866 55.467-141.866s-107.734 38.4-141.867 147.2C605.867 331.733 663.467 464 675.2 508.8c10.667 44.8 76.8 304-145.067 318.933C369.067 838.4 323.2 670.933 339.2 596.267c4.267-19.2 21.333-90.667 52.267-141.867C422.4 403.2 435.2 324.267 435.2 324.267s25.6 5.333 37.333-14.934c0 0-23.466 0-8.533-11.733 13.867-11.733 8.533-25.6 8.533-25.6s-25.6 17.067-52.266 3.2c-25.6-13.867-84.267-52.267-124.8 8.533 0 0-43.734 7.467-64 35.2 0 0 43.733-17.066 64-5.333 21.333 11.733 54.4 37.333 20.266 118.4C281.6 513.067 190.933 577.067 240 724.267c49.067 147.2 160 205.866 304 205.866S792.533 784 792.533 641.067c0-142.934-105.6-295.467-66.133-424.534zM487.467 541.867c-51.2-43.734-52.267-150.4-52.267-150.4-17.067 120.533-8.533 194.133 72.533 240C588.8 678.4 612.267 736 612.267 736c3.2-32-72.534-150.4-124.8-194.133z m145.066 179.2s32-109.867 0-208c-28.8-87.467-53.333-117.334-52.266-179.2 1.066-61.867 29.866-182.4 45.866-197.334 0 0-100.266 89.6-101.333 185.6-1.067 96 39.467 141.867 64 182.4 24.533 40.534 57.6 110.934 43.733 216.534zM522.667 214.4s-80 118.4-60.8 228.267C464 461.867 476.8 498.133 528 552.533c51.2 54.4 92.8 148.267 96 167.467 0 0-2.133-104.533-40.533-173.867C545.067 476.8 478.933 388.267 502.4 294.4c4.267-23.467 20.267-80 20.267-80z"
fill=
"#EC4C2E"
p
-
id=
"1696"
></
path
></
svg
>
);
export
const
DorisSvg
=
()
=>
(
<
svg
t=
"1640789853861"
className=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p
-
id=
"13678"
width=
{
svgSize
}
height=
{
svgSize
}
>
...
...
pom.xml
View file @
606d9430
...
...
@@ -56,10 +56,17 @@
<!-- `provided` for product environment ,`compile` for dev environment -->
<scope.runtime>
provided
</scope.runtime>
<scala.binary.version>
2.11
</scala.binary.version>
<protobuf-java.version>
2.5.0
</protobuf-java.version>
</properties>
<dependencyManagement>
<dependencies>
<!--解决mysql与phoenix依赖冲突-->
<dependency>
<groupId>
com.google.protobuf
</groupId>
<artifactId>
protobuf-java
</artifactId>
<version>
${protobuf-java.version}
</version>
</dependency>
<!-- hutool java工具类库 -->
<dependency>
<groupId>
cn.hutool
</groupId>
...
...
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