Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
57ac81aa
Shardingsphere
项目概览
apache
/
Shardingsphere
通知
56
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Shardingsphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
57ac81aa
编写于
5月 13, 2020
作者:
L
Liang Zhang
提交者:
GitHub
5月 13, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix compile error for #5573 (#5575)
* fix compile error * rename variable name from logicSchema to schema
上级
4d4c3463
变更
29
隐藏空白更改
内联
并排
Showing
29 changed file
with
115 addition
and
144 deletion
+115
-144
examples/sharding-jdbc-example/other-feature-example/shadow-example/shadow-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/shadow/table/raw/jdbc/config/ShadowDatabasesConfiguration.java
...w/table/raw/jdbc/config/ShadowDatabasesConfiguration.java
+5
-7
shadow-core/shadow-core-api/src/main/java/org/apache/shardingsphere/shadow/api/config/ShadowRuleConfiguration.java
...dingsphere/shadow/api/config/ShadowRuleConfiguration.java
+2
-2
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/DatabaseCommunicationEngineFactory.java
...end/communication/DatabaseCommunicationEngineFactory.java
+6
-6
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
...d/communication/jdbc/JDBCDatabaseCommunicationEngine.java
+4
-7
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/connection/BackendConnection.java
...kend/communication/jdbc/connection/BackendConnection.java
+6
-6
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/connection/BackendTransactionManager.java
...munication/jdbc/connection/BackendTransactionManager.java
+2
-2
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/execute/JDBCExecuteEngine.java
...backend/communication/jdbc/execute/JDBCExecuteEngine.java
+1
-1
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/execute/callback/ProxySQLExecutorCallback.java
...ation/jdbc/execute/callback/ProxySQLExecutorCallback.java
+2
-2
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/wrapper/PreparedStatementExecutorWrapper.java
...cation/jdbc/wrapper/PreparedStatementExecutorWrapper.java
+11
-21
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/wrapper/StatementExecutorWrapper.java
.../communication/jdbc/wrapper/StatementExecutorWrapper.java
+11
-21
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/response/query/QueryHeader.java
...ere/shardingproxy/backend/response/query/QueryHeader.java
+8
-8
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/text/admin/UnicastBackendHandler.java
...ardingproxy/backend/text/admin/UnicastBackendHandler.java
+6
-6
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/text/query/QueryBackendHandler.java
...shardingproxy/backend/text/query/QueryBackendHandler.java
+2
-2
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandler.java
...d/text/sctl/explain/ShardingCTLExplainBackendHandler.java
+1
-1
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/text/sctl/hint/internal/executor/HintShowTableStatusExecutor.java
...l/hint/internal/executor/HintShowTableStatusExecutor.java
+1
-1
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/MockShardingSphereSchemasUtil.java
.../shardingproxy/backend/MockShardingSphereSchemasUtil.java
+1
-1
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/TextProtocolBackendHandlerFactoryTest.java
...gproxy/backend/TextProtocolBackendHandlerFactoryTest.java
+3
-3
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/connection/BackendConnectionTest.java
.../communication/jdbc/connection/BackendConnectionTest.java
+2
-2
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/connection/BackendTransactionManagerTest.java
...cation/jdbc/connection/BackendTransactionManagerTest.java
+3
-3
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/response/query/QueryHeaderTest.java
...shardingproxy/backend/response/query/QueryHeaderTest.java
+15
-15
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/text/sctl/hint/ShardingCTLHintBackendHandlerTest.java
...end/text/sctl/hint/ShardingCTLHintBackendHandlerTest.java
+3
-3
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
...and/query/binary/execute/MySQLComStmtExecuteExecutor.java
+1
-1
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
...and/query/binary/prepare/MySQLComStmtPrepareExecutor.java
+3
-3
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
...query/text/fieldlist/MySQLComFieldListPacketExecutor.java
+1
-1
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
...ontend/mysql/command/MySQLCommandExecutorFactoryTest.java
+1
-1
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
...query/binary/execute/MySQLComStmtExecuteExecutorTest.java
+9
-9
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/command/query/binary/bind/PostgreSQLComBindExecutor.java
.../command/query/binary/bind/PostgreSQLComBindExecutor.java
+1
-1
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/command/query/binary/parse/PostgreSQLComParseExecutor.java
...ommand/query/binary/parse/PostgreSQLComParseExecutor.java
+3
-3
shardingsphere-underlying/shardingsphere-common/src/main/java/org/apache/shardingsphere/underlying/common/database/DefaultSchema.java
...rdingsphere/underlying/common/database/DefaultSchema.java
+1
-5
未找到文件。
examples/sharding-jdbc-example/other-feature-example/shadow-example/shadow-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/shadow/table/raw/jdbc/config/ShadowDatabasesConfiguration.java
浏览文件 @
57ac81aa
...
...
@@ -17,9 +17,9 @@
package
org.apache.shardingsphere.example.shadow.table.raw.jdbc.config
;
import
org.apache.shardingsphere.api.config.shadow.ShadowRuleConfiguration
;
import
org.apache.shardingsphere.example.config.ExampleConfiguration
;
import
org.apache.shardingsphere.example.core.api.DataSourceUtil
;
import
org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration
;
import
org.apache.shardingsphere.shardingjdbc.api.ShardingSphereDataSourceFactory
;
import
javax.sql.DataSource
;
...
...
@@ -28,20 +28,18 @@ import java.util.Collections;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
ShadowDatabasesConfiguration
implements
ExampleConfiguration
{
public
final
class
ShadowDatabasesConfiguration
implements
ExampleConfiguration
{
@Override
public
DataSource
getDataSource
()
{
ShadowRuleConfiguration
shadowRuleConfiguration
=
new
ShadowRuleConfiguration
();
shadowRuleConfiguration
.
setColumn
(
"shadow"
);
shadowRuleConfiguration
.
setShadowMappings
(
Collections
.
singletonMap
(
"ds"
,
"ds_0"
));
ShadowRuleConfiguration
shadowRuleConfiguration
=
new
ShadowRuleConfiguration
(
"shadow"
,
Collections
.
singletonMap
(
"ds"
,
"ds_0"
));
Map
<
String
,
DataSource
>
dataSourceMap
=
new
HashMap
<>();
dataSourceMap
.
put
(
"ds"
,
DataSourceUtil
.
createDataSource
(
"demo_ds"
));
dataSourceMap
.
put
(
"ds_0"
,
DataSourceUtil
.
createDataSource
(
"shadow_demo_ds"
));
try
{
return
ShardingSphereDataSourceFactory
.
createDataSource
(
dataSourceMap
,
Collections
.
singleton
(
shadowRuleConfiguration
),
null
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
catch
(
final
SQLException
ex
)
{
e
x
.
printStackTrace
();
return
null
;
}
}
...
...
shadow-core/shadow-core-api/src/main/java/org/apache/shardingsphere/shadow/api/config/ShadowRuleConfiguration.java
浏览文件 @
57ac81aa
...
...
@@ -30,9 +30,9 @@ import java.util.Map;
@Getter
public
final
class
ShadowRuleConfiguration
implements
RuleConfiguration
{
private
String
column
;
private
final
String
column
;
private
Map
<
String
,
String
>
shadowMappings
;
private
final
Map
<
String
,
String
>
shadowMappings
;
public
ShadowRuleConfiguration
(
final
String
column
,
final
Map
<
String
,
String
>
shadowMappings
)
{
Preconditions
.
checkArgument
(!
Strings
.
isNullOrEmpty
(
column
),
"Column is required."
);
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/DatabaseCommunicationEngineFactory.java
浏览文件 @
57ac81aa
...
...
@@ -48,25 +48,25 @@ public final class DatabaseCommunicationEngineFactory {
/**
* Create new instance of text protocol backend handler.
*
* @param
logicSchema logic
schema
* @param
schema ShardingSphere
schema
* @param sql SQL to be executed
* @param backendConnection backend connection
* @return instance of text protocol backend handler
*/
public
DatabaseCommunicationEngine
newTextProtocolInstance
(
final
ShardingSphereSchema
logicS
chema
,
final
String
sql
,
final
BackendConnection
backendConnection
)
{
return
new
JDBCDatabaseCommunicationEngine
(
logicSchema
,
sql
,
new
JDBCExecuteEngine
(
backendConnection
,
new
StatementExecutorWrapper
(
logicS
chema
)));
public
DatabaseCommunicationEngine
newTextProtocolInstance
(
final
ShardingSphereSchema
s
chema
,
final
String
sql
,
final
BackendConnection
backendConnection
)
{
return
new
JDBCDatabaseCommunicationEngine
(
schema
,
sql
,
new
JDBCExecuteEngine
(
backendConnection
,
new
StatementExecutorWrapper
(
s
chema
)));
}
/**
* Create new instance of text protocol backend handler.
*
* @param
logicSchema logic
schema
* @param
schema ShardingSphere
schema
* @param sql SQL to be executed
* @param parameters SQL parameters
* @param backendConnection backend connection
* @return instance of text protocol backend handler
*/
public
DatabaseCommunicationEngine
newBinaryProtocolInstance
(
final
ShardingSphereSchema
logicS
chema
,
final
String
sql
,
final
List
<
Object
>
parameters
,
final
BackendConnection
backendConnection
)
{
return
new
JDBCDatabaseCommunicationEngine
(
logicSchema
,
sql
,
new
JDBCExecuteEngine
(
backendConnection
,
new
PreparedStatementExecutorWrapper
(
logicS
chema
,
parameters
)));
public
DatabaseCommunicationEngine
newBinaryProtocolInstance
(
final
ShardingSphereSchema
s
chema
,
final
String
sql
,
final
List
<
Object
>
parameters
,
final
BackendConnection
backendConnection
)
{
return
new
JDBCDatabaseCommunicationEngine
(
schema
,
sql
,
new
JDBCExecuteEngine
(
backendConnection
,
new
PreparedStatementExecutorWrapper
(
s
chema
,
parameters
)));
}
}
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
浏览文件 @
57ac81aa
...
...
@@ -56,7 +56,7 @@ import java.util.Optional;
@RequiredArgsConstructor
public
final
class
JDBCDatabaseCommunicationEngine
implements
DatabaseCommunicationEngine
{
private
final
ShardingSphereSchema
logicS
chema
;
private
final
ShardingSphereSchema
s
chema
;
private
final
String
sql
;
...
...
@@ -88,10 +88,7 @@ public final class JDBCDatabaseCommunicationEngine implements DatabaseCommunicat
return
new
ErrorResponse
(
new
TableModifyInTransactionException
(
getTableName
(
sqlStatementContext
)));
}
response
=
executeEngine
.
execute
(
executionContext
);
// TODO refresh non-sharding table meta data
if
(
logicSchema
instanceof
ShardingSphereSchema
)
{
logicSchema
.
refreshTableMetaData
(
executionContext
.
getSqlStatementContext
());
}
schema
.
refreshTableMetaData
(
executionContext
.
getSqlStatementContext
());
return
merge
(
executionContext
.
getSqlStatementContext
());
}
...
...
@@ -126,13 +123,13 @@ public final class JDBCDatabaseCommunicationEngine implements DatabaseCommunicat
}
private
boolean
isNeedAccumulate
(
final
SQLStatementContext
sqlStatementContext
)
{
Optional
<
DataNodeRoutedRule
>
dataNodeRoutedRule
=
logicS
chema
.
getRules
().
stream
().
filter
(
each
->
each
instanceof
DataNodeRoutedRule
).
findFirst
().
map
(
rule
->
(
DataNodeRoutedRule
)
rule
);
Optional
<
DataNodeRoutedRule
>
dataNodeRoutedRule
=
s
chema
.
getRules
().
stream
().
filter
(
each
->
each
instanceof
DataNodeRoutedRule
).
findFirst
().
map
(
rule
->
(
DataNodeRoutedRule
)
rule
);
return
dataNodeRoutedRule
.
isPresent
()
&&
dataNodeRoutedRule
.
get
().
isNeedAccumulate
(
sqlStatementContext
.
getTablesContext
().
getTableNames
());
}
private
MergedResult
mergeQuery
(
final
SQLStatementContext
sqlStatementContext
,
final
List
<
QueryResult
>
queryResults
)
throws
SQLException
{
MergeEngine
mergeEngine
=
new
MergeEngine
(
ShardingSphereSchemas
.
getInstance
().
getDatabaseType
(),
logicSchema
.
getMetaData
().
getSchema
().
getConfiguredSchemaMetaData
(),
ShardingProxyContext
.
getInstance
().
getProperties
(),
logicS
chema
.
getRules
());
schema
.
getMetaData
().
getSchema
().
getConfiguredSchemaMetaData
(),
ShardingProxyContext
.
getInstance
().
getProperties
(),
s
chema
.
getRules
());
return
mergeEngine
.
merge
(
queryResults
,
sqlStatementContext
);
}
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/connection/BackendConnection.java
浏览文件 @
57ac81aa
...
...
@@ -61,7 +61,7 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
private
volatile
String
schemaName
;
private
ShardingSphereSchema
logicS
chema
;
private
ShardingSphereSchema
s
chema
;
private
TransactionType
transactionType
;
...
...
@@ -112,7 +112,7 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
}
/**
* Change
logic
schema of current channel.
* Change schema of current channel.
*
* @param schemaName schema name
*/
...
...
@@ -121,7 +121,7 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
throw
new
ShardingSphereException
(
"Failed to switch schema, please terminate current transaction."
);
}
this
.
schemaName
=
schemaName
;
this
.
logicS
chema
=
ShardingSphereSchemas
.
getInstance
().
getSchema
(
schemaName
);
this
.
s
chema
=
ShardingSphereSchemas
.
getInstance
().
getSchema
(
schemaName
);
}
@SneakyThrows
(
InterruptedException
.
class
)
...
...
@@ -171,7 +171,7 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
}
private
List
<
Connection
>
getConnectionsWithoutTransaction
(
final
String
dataSourceName
,
final
int
connectionSize
,
final
ConnectionMode
connectionMode
)
throws
SQLException
{
Preconditions
.
checkNotNull
(
logicSchema
,
"current logic
schema is null"
);
Preconditions
.
checkNotNull
(
schema
,
"current
schema is null"
);
List
<
Connection
>
result
=
getConnectionFromUnderlying
(
dataSourceName
,
connectionSize
,
connectionMode
);
synchronized
(
cachedConnections
)
{
cachedConnections
.
putAll
(
dataSourceName
,
result
);
...
...
@@ -180,7 +180,7 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
}
private
List
<
Connection
>
createNewConnections
(
final
String
dataSourceName
,
final
int
connectionSize
,
final
ConnectionMode
connectionMode
)
throws
SQLException
{
Preconditions
.
checkNotNull
(
logicSchema
,
"current logic
schema is null"
);
Preconditions
.
checkNotNull
(
schema
,
"current
schema is null"
);
List
<
Connection
>
result
=
getConnectionFromUnderlying
(
dataSourceName
,
connectionSize
,
connectionMode
);
for
(
Connection
each
:
result
)
{
replayMethodsInvocation
(
each
);
...
...
@@ -189,7 +189,7 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
}
private
List
<
Connection
>
getConnectionFromUnderlying
(
final
String
dataSourceName
,
final
int
connectionSize
,
final
ConnectionMode
connectionMode
)
throws
SQLException
{
return
logicS
chema
.
getBackendDataSource
().
getConnections
(
dataSourceName
,
connectionSize
,
connectionMode
,
transactionType
);
return
s
chema
.
getBackendDataSource
().
getConnections
(
dataSourceName
,
connectionSize
,
connectionMode
,
transactionType
);
}
@Override
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/connection/BackendTransactionManager.java
浏览文件 @
57ac81aa
...
...
@@ -39,8 +39,8 @@ public final class BackendTransactionManager implements TransactionManager {
connection
=
backendConnection
;
transactionType
=
connection
.
getTransactionType
();
localTransactionManager
=
new
LocalTransactionManager
(
backendConnection
);
shardingTransactionManager
=
null
==
connection
.
get
Logic
Schema
()
?
null
:
connection
.
get
Logic
Schema
().
getBackendDataSource
().
getShardingTransactionManagerEngine
().
getTransactionManager
(
transactionType
);
shardingTransactionManager
=
null
==
connection
.
getSchema
()
?
null
:
connection
.
getSchema
().
getBackendDataSource
().
getShardingTransactionManagerEngine
().
getTransactionManager
(
transactionType
);
}
@Override
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/execute/JDBCExecuteEngine.java
浏览文件 @
57ac81aa
...
...
@@ -110,7 +110,7 @@ public final class JDBCExecuteEngine implements SQLExecuteEngine {
}
private
SQLExecutorCallback
<
ExecuteResponse
>
getSQLExecutorCallback
(
final
ProxySQLExecutorCallback
callback
)
{
Map
<
ShardingSphereRule
,
RuleProxySQLExecutorCallback
>
callbackMap
=
OrderedSPIRegistry
.
getRegisteredServices
(
backendConnection
.
get
Logic
Schema
().
getRules
(),
RuleProxySQLExecutorCallback
.
class
);
Map
<
ShardingSphereRule
,
RuleProxySQLExecutorCallback
>
callbackMap
=
OrderedSPIRegistry
.
getRegisteredServices
(
backendConnection
.
getSchema
().
getRules
(),
RuleProxySQLExecutorCallback
.
class
);
return
callbackMap
.
isEmpty
()
?
callback
:
callbackMap
.
values
().
iterator
().
next
();
}
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/execute/callback/ProxySQLExecutorCallback.java
浏览文件 @
57ac81aa
...
...
@@ -102,7 +102,7 @@ public final class ProxySQLExecutorCallback extends DefaultSQLExecutorCallback<E
private
List
<
QueryHeader
>
getQueryHeaders
(
final
ProjectionsContext
projectionsContext
,
final
ResultSetMetaData
resultSetMetaData
)
throws
SQLException
{
List
<
QueryHeader
>
result
=
new
LinkedList
<>();
for
(
int
columnIndex
=
1
;
columnIndex
<=
projectionsContext
.
getExpandProjections
().
size
();
columnIndex
++)
{
result
.
add
(
new
QueryHeader
(
projectionsContext
,
resultSetMetaData
,
backendConnection
.
get
Logic
Schema
(),
columnIndex
));
result
.
add
(
new
QueryHeader
(
projectionsContext
,
resultSetMetaData
,
backendConnection
.
getSchema
(),
columnIndex
));
}
return
result
;
}
...
...
@@ -110,7 +110,7 @@ public final class ProxySQLExecutorCallback extends DefaultSQLExecutorCallback<E
private
List
<
QueryHeader
>
getQueryHeaders
(
final
ResultSetMetaData
resultSetMetaData
)
throws
SQLException
{
List
<
QueryHeader
>
result
=
new
LinkedList
<>();
for
(
int
columnIndex
=
1
;
columnIndex
<=
resultSetMetaData
.
getColumnCount
();
columnIndex
++)
{
result
.
add
(
new
QueryHeader
(
resultSetMetaData
,
backendConnection
.
get
Logic
Schema
(),
columnIndex
));
result
.
add
(
new
QueryHeader
(
resultSetMetaData
,
backendConnection
.
getSchema
(),
columnIndex
));
}
return
result
;
}
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/wrapper/PreparedStatementExecutorWrapper.java
浏览文件 @
57ac81aa
...
...
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.shardingproxy.backend.communication.jdbc.wrapp
import
lombok.RequiredArgsConstructor
;
import
org.apache.shardingsphere.shardingproxy.backend.schema.ShardingSphereSchema
;
import
org.apache.shardingsphere.shardingproxy.backend.schema.impl.ShardingSphereSchema
;
import
org.apache.shardingsphere.shardingproxy.context.ShardingProxyContext
;
import
org.apache.shardingsphere.sql.parser.binder.statement.CommonSQLStatementContext
;
import
org.apache.shardingsphere.sql.parser.sql.statement.SQLStatement
;
...
...
@@ -52,38 +51,29 @@ public final class PreparedStatementExecutorWrapper implements JDBCExecutorWrapp
private
static
final
ShardingProxyContext
SHARDING_PROXY_CONTEXT
=
ShardingProxyContext
.
getInstance
();
private
final
ShardingSphereSchema
logicS
chema
;
private
final
ShardingSphereSchema
s
chema
;
private
final
List
<
Object
>
parameters
;
@SuppressWarnings
(
"unchecked"
)
@Override
public
ExecutionContext
route
(
final
String
sql
)
{
if
(
logicSchema
instanceof
ShardingSphereSchema
)
{
return
doShardingRoute
(
sql
);
SQLStatement
sqlStatement
=
schema
.
getSqlParserEngine
().
parse
(
sql
,
true
);
Collection
<
ShardingSphereRule
>
rules
=
schema
.
getRules
();
if
(
rules
.
isEmpty
())
{
return
new
ExecutionContext
(
new
CommonSQLStatementContext
(
sqlStatement
),
new
ExecutionUnit
(
schema
.
getDataSources
().
keySet
().
iterator
().
next
(),
new
SQLUnit
(
sql
,
Collections
.
emptyList
())));
}
return
doTransparentRoute
(
sql
);
}
private
ExecutionContext
doShardingRoute
(
final
String
sql
)
{
Collection
<
ShardingSphereRule
>
rules
=
logicSchema
.
getRules
();
SQLStatement
sqlStatement
=
logicSchema
.
getSqlParserEngine
().
parse
(
sql
,
true
);
RouteContext
routeContext
=
new
DataNodeRouter
(
logicSchema
.
getMetaData
(),
SHARDING_PROXY_CONTEXT
.
getProperties
(),
rules
).
route
(
sqlStatement
,
sql
,
parameters
);
SQLRewriteResult
sqlRewriteResult
=
new
SQLRewriteEntry
(
logicSchema
.
getMetaData
().
getSchema
().
getConfiguredSchemaMetaData
(),
RouteContext
routeContext
=
new
DataNodeRouter
(
schema
.
getMetaData
(),
SHARDING_PROXY_CONTEXT
.
getProperties
(),
rules
).
route
(
sqlStatement
,
sql
,
parameters
);
SQLRewriteResult
sqlRewriteResult
=
new
SQLRewriteEntry
(
schema
.
getMetaData
().
getSchema
().
getConfiguredSchemaMetaData
(),
SHARDING_PROXY_CONTEXT
.
getProperties
(),
rules
).
rewrite
(
sql
,
new
ArrayList
<>(
parameters
),
routeContext
);
return
new
ExecutionContext
(
routeContext
.
getSqlStatementContext
(),
ExecutionContextBuilder
.
build
(
logicSchema
.
getMetaData
(),
sqlRewriteResult
));
}
@SuppressWarnings
(
"unchecked"
)
private
ExecutionContext
doTransparentRoute
(
final
String
sql
)
{
SQLStatement
sqlStatement
=
logicSchema
.
getSqlParserEngine
().
parse
(
sql
,
false
);
return
new
ExecutionContext
(
new
CommonSQLStatementContext
(
sqlStatement
),
new
ExecutionUnit
(
logicSchema
.
getDataSources
().
keySet
().
iterator
().
next
(),
new
SQLUnit
(
sql
,
Collections
.
emptyList
())));
return
new
ExecutionContext
(
routeContext
.
getSqlStatementContext
(),
ExecutionContextBuilder
.
build
(
schema
.
getMetaData
(),
sqlRewriteResult
));
}
@Override
public
ExecuteGroupEngine
getExecuteGroupEngine
()
{
int
maxConnectionsSizePerQuery
=
ShardingProxyContext
.
getInstance
().
getProperties
().<
Integer
>
getValue
(
ConfigurationPropertyKey
.
MAX_CONNECTIONS_SIZE_PER_QUERY
);
return
new
PreparedStatementExecuteGroupEngine
(
maxConnectionsSizePerQuery
,
logicS
chema
.
getRules
());
return
new
PreparedStatementExecuteGroupEngine
(
maxConnectionsSizePerQuery
,
s
chema
.
getRules
());
}
@Override
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/wrapper/StatementExecutorWrapper.java
浏览文件 @
57ac81aa
...
...
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.shardingproxy.backend.communication.jdbc.wrapp
import
lombok.RequiredArgsConstructor
;
import
org.apache.shardingsphere.shardingproxy.backend.schema.ShardingSphereSchema
;
import
org.apache.shardingsphere.shardingproxy.backend.schema.impl.ShardingSphereSchema
;
import
org.apache.shardingsphere.shardingproxy.context.ShardingProxyContext
;
import
org.apache.shardingsphere.sql.parser.binder.statement.CommonSQLStatementContext
;
import
org.apache.shardingsphere.sql.parser.sql.statement.SQLStatement
;
...
...
@@ -49,36 +48,27 @@ public final class StatementExecutorWrapper implements JDBCExecutorWrapper {
private
static
final
ShardingProxyContext
SHARDING_PROXY_CONTEXT
=
ShardingProxyContext
.
getInstance
();
private
final
ShardingSphereSchema
logicS
chema
;
private
final
ShardingSphereSchema
s
chema
;
@SuppressWarnings
(
"unchecked"
)
@Override
public
ExecutionContext
route
(
final
String
sql
)
{
if
(
logicSchema
instanceof
ShardingSphereSchema
)
{
return
doShardingRoute
(
sql
);
SQLStatement
sqlStatement
=
schema
.
getSqlParserEngine
().
parse
(
sql
,
false
);
Collection
<
ShardingSphereRule
>
rules
=
schema
.
getRules
();
if
(
rules
.
isEmpty
())
{
return
new
ExecutionContext
(
new
CommonSQLStatementContext
(
sqlStatement
),
new
ExecutionUnit
(
schema
.
getDataSources
().
keySet
().
iterator
().
next
(),
new
SQLUnit
(
sql
,
Collections
.
emptyList
())));
}
return
doTransparentRoute
(
sql
);
}
private
ExecutionContext
doShardingRoute
(
final
String
sql
)
{
Collection
<
ShardingSphereRule
>
rules
=
logicSchema
.
getRules
();
SQLStatement
sqlStatement
=
logicSchema
.
getSqlParserEngine
().
parse
(
sql
,
false
);
RouteContext
routeContext
=
new
DataNodeRouter
(
logicSchema
.
getMetaData
(),
SHARDING_PROXY_CONTEXT
.
getProperties
(),
rules
).
route
(
sqlStatement
,
sql
,
Collections
.
emptyList
());
SQLRewriteResult
sqlRewriteResult
=
new
SQLRewriteEntry
(
logicSchema
.
getMetaData
().
getSchema
().
getConfiguredSchemaMetaData
(),
RouteContext
routeContext
=
new
DataNodeRouter
(
schema
.
getMetaData
(),
SHARDING_PROXY_CONTEXT
.
getProperties
(),
rules
).
route
(
sqlStatement
,
sql
,
Collections
.
emptyList
());
SQLRewriteResult
sqlRewriteResult
=
new
SQLRewriteEntry
(
schema
.
getMetaData
().
getSchema
().
getConfiguredSchemaMetaData
(),
SHARDING_PROXY_CONTEXT
.
getProperties
(),
rules
).
rewrite
(
sql
,
Collections
.
emptyList
(),
routeContext
);
return
new
ExecutionContext
(
routeContext
.
getSqlStatementContext
(),
ExecutionContextBuilder
.
build
(
logicSchema
.
getMetaData
(),
sqlRewriteResult
));
}
@SuppressWarnings
(
"unchecked"
)
private
ExecutionContext
doTransparentRoute
(
final
String
sql
)
{
SQLStatement
sqlStatement
=
logicSchema
.
getSqlParserEngine
().
parse
(
sql
,
false
);
return
new
ExecutionContext
(
new
CommonSQLStatementContext
(
sqlStatement
),
new
ExecutionUnit
(
logicSchema
.
getDataSources
().
keySet
().
iterator
().
next
(),
new
SQLUnit
(
sql
,
Collections
.
emptyList
())));
return
new
ExecutionContext
(
routeContext
.
getSqlStatementContext
(),
ExecutionContextBuilder
.
build
(
schema
.
getMetaData
(),
sqlRewriteResult
));
}
@Override
public
ExecuteGroupEngine
getExecuteGroupEngine
()
{
int
maxConnectionsSizePerQuery
=
ShardingProxyContext
.
getInstance
().
getProperties
().<
Integer
>
getValue
(
ConfigurationPropertyKey
.
MAX_CONNECTIONS_SIZE_PER_QUERY
);
return
new
StatementExecuteGroupEngine
(
maxConnectionsSizePerQuery
,
logicS
chema
.
getRules
());
return
new
StatementExecuteGroupEngine
(
maxConnectionsSizePerQuery
,
s
chema
.
getRules
());
}
@Override
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/response/query/QueryHeader.java
浏览文件 @
57ac81aa
...
...
@@ -59,17 +59,17 @@ public final class QueryHeader {
private
final
boolean
autoIncrement
;
public
QueryHeader
(
final
ResultSetMetaData
resultSetMetaData
,
final
ShardingSphereSchema
logicS
chema
,
final
int
columnIndex
)
throws
SQLException
{
this
(
resultSetMetaData
,
logicS
chema
,
resultSetMetaData
.
getColumnName
(
columnIndex
),
columnIndex
);
public
QueryHeader
(
final
ResultSetMetaData
resultSetMetaData
,
final
ShardingSphereSchema
s
chema
,
final
int
columnIndex
)
throws
SQLException
{
this
(
resultSetMetaData
,
s
chema
,
resultSetMetaData
.
getColumnName
(
columnIndex
),
columnIndex
);
}
public
QueryHeader
(
final
ProjectionsContext
projectionsContext
,
final
ResultSetMetaData
resultSetMetaData
,
final
ShardingSphereSchema
logicS
chema
,
final
int
columnIndex
)
throws
SQLException
{
this
(
resultSetMetaData
,
logicS
chema
,
getColumnName
(
projectionsContext
,
resultSetMetaData
,
columnIndex
),
columnIndex
);
public
QueryHeader
(
final
ProjectionsContext
projectionsContext
,
final
ResultSetMetaData
resultSetMetaData
,
final
ShardingSphereSchema
s
chema
,
final
int
columnIndex
)
throws
SQLException
{
this
(
resultSetMetaData
,
s
chema
,
getColumnName
(
projectionsContext
,
resultSetMetaData
,
columnIndex
),
columnIndex
);
}
private
QueryHeader
(
final
ResultSetMetaData
resultSetMetaData
,
final
ShardingSphereSchema
logicS
chema
,
final
String
columnName
,
final
int
columnIndex
)
throws
SQLException
{
private
QueryHeader
(
final
ResultSetMetaData
resultSetMetaData
,
final
ShardingSphereSchema
s
chema
,
final
String
columnName
,
final
int
columnIndex
)
throws
SQLException
{
this
.
columnName
=
columnName
;
schema
=
logicS
chema
.
getName
();
this
.
schema
=
s
chema
.
getName
();
columnLabel
=
resultSetMetaData
.
getColumnLabel
(
columnIndex
);
columnLength
=
resultSetMetaData
.
getColumnDisplaySize
(
columnIndex
);
columnType
=
resultSetMetaData
.
getColumnType
(
columnIndex
);
...
...
@@ -78,10 +78,10 @@ public final class QueryHeader {
notNull
=
resultSetMetaData
.
isNullable
(
columnIndex
)
==
ResultSetMetaData
.
columnNoNulls
;
autoIncrement
=
resultSetMetaData
.
isAutoIncrement
(
columnIndex
);
String
actualTableName
=
resultSetMetaData
.
getTableName
(
columnIndex
);
Optional
<
DataNodeRoutedRule
>
dataNodeRoutedRule
=
logicS
chema
.
getRules
().
stream
().
filter
(
each
->
each
instanceof
DataNodeRoutedRule
).
findFirst
().
map
(
rule
->
(
DataNodeRoutedRule
)
rule
);
Optional
<
DataNodeRoutedRule
>
dataNodeRoutedRule
=
s
chema
.
getRules
().
stream
().
filter
(
each
->
each
instanceof
DataNodeRoutedRule
).
findFirst
().
map
(
rule
->
(
DataNodeRoutedRule
)
rule
);
if
(
null
!=
actualTableName
&&
dataNodeRoutedRule
.
isPresent
())
{
table
=
dataNodeRoutedRule
.
get
().
findLogicTableByActualTable
(
actualTableName
).
orElse
(
""
);
TableMetaData
tableMetaData
=
logicS
chema
.
getMetaData
().
getSchema
().
getConfiguredSchemaMetaData
().
get
(
table
);
TableMetaData
tableMetaData
=
s
chema
.
getMetaData
().
getSchema
().
getConfiguredSchemaMetaData
().
get
(
table
);
primaryKey
=
null
!=
tableMetaData
&&
tableMetaData
.
getColumns
().
get
(
resultSetMetaData
.
getColumnName
(
columnIndex
).
toLowerCase
()).
isPrimaryKey
();
}
else
{
table
=
actualTableName
;
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/text/admin/UnicastBackendHandler.java
浏览文件 @
57ac81aa
...
...
@@ -45,13 +45,13 @@ public final class UnicastBackendHandler implements TextProtocolBackendHandler {
@Override
public
BackendResponse
execute
()
{
// TODO we should remove set default
logicS
chema after parser can recognize all DAL broadcast SQL.
ShardingSphereSchema
logicSchema
=
backendConnection
.
getLogic
Schema
();
if
(
null
==
logicS
chema
)
{
logicS
chema
=
ShardingSphereSchemas
.
getInstance
().
getSchemas
().
values
().
iterator
().
next
();
backendConnection
.
setCurrentSchema
(
logicS
chema
.
getName
());
// TODO we should remove set default
ShardingSphere s
chema after parser can recognize all DAL broadcast SQL.
ShardingSphereSchema
schema
=
backendConnection
.
get
Schema
();
if
(
null
==
s
chema
)
{
s
chema
=
ShardingSphereSchemas
.
getInstance
().
getSchemas
().
values
().
iterator
().
next
();
backendConnection
.
setCurrentSchema
(
s
chema
.
getName
());
}
databaseCommunicationEngine
=
databaseCommunicationEngineFactory
.
newTextProtocolInstance
(
logicS
chema
,
sql
,
backendConnection
);
databaseCommunicationEngine
=
databaseCommunicationEngineFactory
.
newTextProtocolInstance
(
s
chema
,
sql
,
backendConnection
);
return
databaseCommunicationEngine
.
execute
();
}
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/text/query/QueryBackendHandler.java
浏览文件 @
57ac81aa
...
...
@@ -45,10 +45,10 @@ public final class QueryBackendHandler implements TextProtocolBackendHandler {
@Override
public
BackendResponse
execute
()
{
if
(
null
==
backendConnection
.
get
Logic
Schema
())
{
if
(
null
==
backendConnection
.
getSchema
())
{
return
new
ErrorResponse
(
new
NoDatabaseSelectedException
());
}
databaseCommunicationEngine
=
databaseCommunicationEngineFactory
.
newTextProtocolInstance
(
backendConnection
.
get
Logic
Schema
(),
sql
,
backendConnection
);
databaseCommunicationEngine
=
databaseCommunicationEngineFactory
.
newTextProtocolInstance
(
backendConnection
.
getSchema
(),
sql
,
backendConnection
);
return
databaseCommunicationEngine
.
execute
();
}
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandler.java
浏览文件 @
57ac81aa
...
...
@@ -55,7 +55,7 @@ public final class ShardingCTLExplainBackendHandler implements TextProtocolBacke
if
(!
explainStatement
.
isPresent
())
{
return
new
ErrorResponse
(
new
InvalidShardingCTLFormatException
(
sql
));
}
StatementExecutorWrapper
statementExecutorWrapper
=
new
StatementExecutorWrapper
(
backendConnection
.
get
Logic
Schema
());
StatementExecutorWrapper
statementExecutorWrapper
=
new
StatementExecutorWrapper
(
backendConnection
.
getSchema
());
executionUnits
=
statementExecutorWrapper
.
route
(
explainStatement
.
get
().
getSql
()).
getExecutionUnits
().
iterator
();
queryHeaders
=
new
ArrayList
<>(
2
);
queryHeaders
.
add
(
new
QueryHeader
(
""
,
""
,
"datasource_name"
,
""
,
255
,
Types
.
CHAR
,
0
,
false
,
false
,
false
,
false
));
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/text/sctl/hint/internal/executor/HintShowTableStatusExecutor.java
浏览文件 @
57ac81aa
...
...
@@ -55,7 +55,7 @@ public final class HintShowTableStatusExecutor extends AbstractHintQueryExecutor
@Override
protected
MergedResult
createMergedResult
()
{
Map
<
String
,
HintShowTableStatusResult
>
results
=
new
HashMap
<>();
for
(
String
each
:
backendConnection
.
get
Logic
Schema
().
getMetaData
().
getSchema
().
getConfiguredSchemaMetaData
().
getAllTableNames
())
{
for
(
String
each
:
backendConnection
.
getSchema
().
getMetaData
().
getSchema
().
getConfiguredSchemaMetaData
().
getAllTableNames
())
{
if
(
HintManager
.
isDatabaseShardingOnly
())
{
fillShardingValues
(
results
,
each
,
HintManager
.
getDatabaseShardingValues
(),
Collections
.
emptyList
());
}
else
{
...
...
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/MockShardingSphereSchemasUtil.java
浏览文件 @
57ac81aa
...
...
@@ -30,7 +30,7 @@ import static org.mockito.Mockito.mock;
public
final
class
MockShardingSphereSchemasUtil
{
/**
* Set
logic
schemas for global registry.
* Set schemas for global registry.
*
* @param prefix prefix of schema
* @param size size of schemas
...
...
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/TextProtocolBackendHandlerFactoryTest.java
浏览文件 @
57ac81aa
...
...
@@ -59,11 +59,11 @@ public final class TextProtocolBackendHandlerFactoryTest {
@Before
public
void
setUp
()
{
when
(
backendConnection
.
getTransactionType
()).
thenReturn
(
TransactionType
.
LOCAL
);
ShardingSphereSchema
logicS
chema
=
mock
(
ShardingSphereSchema
.
class
);
ShardingSphereSchema
s
chema
=
mock
(
ShardingSphereSchema
.
class
);
JDBCBackendDataSource
backendDataSource
=
mock
(
JDBCBackendDataSource
.
class
);
when
(
backendDataSource
.
getShardingTransactionManagerEngine
()).
thenReturn
(
mock
(
ShardingTransactionManagerEngine
.
class
));
when
(
logicS
chema
.
getBackendDataSource
()).
thenReturn
(
backendDataSource
);
when
(
backendConnection
.
get
LogicSchema
()).
thenReturn
(
logicS
chema
);
when
(
s
chema
.
getBackendDataSource
()).
thenReturn
(
backendDataSource
);
when
(
backendConnection
.
get
Schema
()).
thenReturn
(
s
chema
);
}
@Test
...
...
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/connection/BackendConnectionTest.java
浏览文件 @
57ac81aa
...
...
@@ -64,7 +64,7 @@ public final class BackendConnectionTest {
public
void
setUp
()
{
MockShardingSphereSchemasUtil
.
setSchemas
(
"schema"
,
2
);
backendConnection
.
setCurrentSchema
(
"schema_0"
);
when
(
backendConnection
.
get
Logic
Schema
().
getBackendDataSource
()).
thenReturn
(
backendDataSource
);
when
(
backendConnection
.
getSchema
().
getBackendDataSource
()).
thenReturn
(
backendDataSource
);
when
(
backendDataSource
.
getShardingTransactionManagerEngine
()).
thenReturn
(
mock
(
ShardingTransactionManagerEngine
.
class
));
}
...
...
@@ -226,7 +226,7 @@ public final class BackendConnectionTest {
}
@Test
(
expected
=
ShardingSphereException
.
class
)
public
void
assertFailedSwitch
Logic
SchemaWhileBegin
()
{
public
void
assertFailedSwitchSchemaWhileBegin
()
{
BackendTransactionManager
transactionManager
=
new
BackendTransactionManager
(
backendConnection
);
transactionManager
.
begin
();
backendConnection
.
setCurrentSchema
(
"newSchema"
);
...
...
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/connection/BackendTransactionManagerTest.java
浏览文件 @
57ac81aa
...
...
@@ -41,7 +41,7 @@ import static org.mockito.Mockito.when;
public
final
class
BackendTransactionManagerTest
{
@Mock
private
ShardingSphereSchema
logicS
chema
;
private
ShardingSphereSchema
s
chema
;
@Mock
private
BackendConnection
backendConnection
;
...
...
@@ -63,8 +63,8 @@ public final class BackendTransactionManagerTest {
when
(
shardingTransactionManagerEngine
.
getTransactionManager
(
TransactionType
.
XA
)).
thenReturn
(
shardingTransactionManager
);
JDBCBackendDataSource
backendDataSource
=
mock
(
JDBCBackendDataSource
.
class
);
when
(
backendDataSource
.
getShardingTransactionManagerEngine
()).
thenReturn
(
shardingTransactionManagerEngine
);
when
(
logicS
chema
.
getBackendDataSource
()).
thenReturn
(
backendDataSource
);
when
(
backendConnection
.
get
LogicSchema
()).
thenReturn
(
logicS
chema
);
when
(
s
chema
.
getBackendDataSource
()).
thenReturn
(
backendDataSource
);
when
(
backendConnection
.
get
Schema
()).
thenReturn
(
s
chema
);
when
(
backendConnection
.
getStateHandler
()).
thenReturn
(
stateHandler
);
}
...
...
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/response/query/QueryHeaderTest.java
浏览文件 @
57ac81aa
...
...
@@ -18,7 +18,7 @@
package
org.apache.shardingsphere.shardingproxy.backend.response.query
;
import
org.apache.shardingsphere.sharding.core.rule.ShardingRule
;
import
org.apache.shardingsphere.shardingproxy.backend.schema.
impl.
ShardingSphereSchema
;
import
org.apache.shardingsphere.shardingproxy.backend.schema.ShardingSphereSchema
;
import
org.apache.shardingsphere.sql.parser.binder.metadata.column.ColumnMetaData
;
import
org.apache.shardingsphere.sql.parser.binder.metadata.index.IndexMetaData
;
import
org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData
;
...
...
@@ -49,83 +49,83 @@ public final class QueryHeaderTest {
@Test
public
void
assertQueryHeaderSchema
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertThat
(
header
.
getSchema
(),
is
(
"sharding_schema"
));
}
@Test
public
void
assertQueryHeaderTable
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertThat
(
header
.
getTable
(),
is
(
"t_logic_order"
));
}
@Test
public
void
assertQueryHeaderColumnLabel
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertThat
(
header
.
getColumnLabel
(),
is
(
"order_id"
));
}
@Test
public
void
assertQueryHeaderColumnNameWithoutProjectionsContext
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertThat
(
header
.
getColumnName
(),
is
(
"order_id"
));
}
@Test
public
void
assertQueryHeaderColumnNameFromProjectionsContext
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createProjectionsContext
(),
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createProjectionsContext
(),
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertThat
(
header
.
getColumnName
(),
is
(
"order_id"
));
}
@Test
public
void
assertQueryHeaderColumnNameFromMetaData
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createProjectionsContext
(),
createResultSetMetaData
(),
getShardingSchema
(),
2
);
QueryHeader
header
=
new
QueryHeader
(
createProjectionsContext
(),
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
2
);
assertThat
(
header
.
getColumnName
(),
is
(
"expr"
));
}
@Test
public
void
assertQueryHeaderColumnLength
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertThat
(
header
.
getColumnLength
(),
is
(
1
));
}
@Test
public
void
assertQueryHeaderColumnType
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertThat
(
header
.
getColumnType
(),
is
(
Types
.
INTEGER
));
}
@Test
public
void
assertQueryHeaderDecimals
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertThat
(
header
.
getDecimals
(),
is
(
1
));
}
@Test
public
void
assertQueryHeaderSigned
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertTrue
(
header
.
isSigned
());
}
@Test
public
void
assertQueryHeaderPrimaryKey
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertTrue
(
header
.
isPrimaryKey
());
}
@Test
public
void
assertQueryHeaderNotNull
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertTrue
(
header
.
isNotNull
());
}
@Test
public
void
assertQueryHeaderAutoIncrement
()
throws
Exception
{
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingSchema
(),
1
);
QueryHeader
header
=
new
QueryHeader
(
createResultSetMetaData
(),
getShardingS
phereS
chema
(),
1
);
assertTrue
(
header
.
isAutoIncrement
());
}
private
ShardingSphereSchema
getShardingSchema
()
{
private
ShardingSphereSchema
getShardingS
phereS
chema
()
{
ShardingSphereSchema
result
=
mock
(
ShardingSphereSchema
.
class
);
ColumnMetaData
columnMetaData
=
new
ColumnMetaData
(
"order_id"
,
Types
.
INTEGER
,
"int"
,
true
,
false
,
false
);
SchemaMetaData
schemaMetaData
=
mock
(
SchemaMetaData
.
class
);
...
...
sharding-proxy/sharding-proxy-backend/src/test/java/org/apache/shardingsphere/shardingproxy/backend/text/sctl/hint/ShardingCTLHintBackendHandlerTest.java
浏览文件 @
57ac81aa
...
...
@@ -160,10 +160,10 @@ public final class ShardingCTLHintBackendHandlerTest {
@Test
public
void
assertShowTableStatus
()
throws
SQLException
{
clearThreadLocal
();
ShardingSphereSchema
logicS
chema
=
mock
(
ShardingSphereSchema
.
class
);
when
(
logicS
chema
.
getMetaData
()).
thenReturn
(
ShardingSphereSchema
s
chema
=
mock
(
ShardingSphereSchema
.
class
);
when
(
s
chema
.
getMetaData
()).
thenReturn
(
new
ShardingSphereMetaData
(
mock
(
DataSourceMetas
.
class
),
new
RuleSchemaMetaData
(
new
SchemaMetaData
(
ImmutableMap
.
of
(
"user"
,
mock
(
TableMetaData
.
class
))),
Collections
.
emptyMap
())));
when
(
backendConnection
.
get
LogicSchema
()).
thenReturn
(
logicS
chema
);
when
(
backendConnection
.
get
Schema
()).
thenReturn
(
s
chema
);
String
sql
=
"sctl:hint show table status"
;
ShardingCTLHintBackendHandler
defaultShardingCTLHintBackendHandler
=
new
ShardingCTLHintBackendHandler
(
sql
,
backendConnection
);
BackendResponse
backendResponse
=
defaultShardingCTLHintBackendHandler
.
execute
();
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
浏览文件 @
57ac81aa
...
...
@@ -68,7 +68,7 @@ public final class MySQLComStmtExecuteExecutor implements QueryCommandExecutor {
public
MySQLComStmtExecuteExecutor
(
final
MySQLComStmtExecutePacket
comStmtExecutePacket
,
final
BackendConnection
backendConnection
)
{
databaseCommunicationEngine
=
DatabaseCommunicationEngineFactory
.
getInstance
().
newBinaryProtocolInstance
(
backendConnection
.
get
Logic
Schema
(),
comStmtExecutePacket
.
getSql
(),
comStmtExecutePacket
.
getParameters
(),
backendConnection
);
backendConnection
.
getSchema
(),
comStmtExecutePacket
.
getSql
(),
comStmtExecutePacket
.
getParameters
(),
backendConnection
);
}
@Override
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
浏览文件 @
57ac81aa
...
...
@@ -44,11 +44,11 @@ public final class MySQLComStmtPrepareExecutor implements CommandExecutor {
private
final
MySQLComStmtPreparePacket
packet
;
private
final
ShardingSphereSchema
logicS
chema
;
private
final
ShardingSphereSchema
s
chema
;
public
MySQLComStmtPrepareExecutor
(
final
MySQLComStmtPreparePacket
packet
,
final
BackendConnection
backendConnection
)
{
this
.
packet
=
packet
;
logicSchema
=
backendConnection
.
getLogic
Schema
();
schema
=
backendConnection
.
get
Schema
();
}
private
int
getColumnsCount
(
final
SQLStatement
sqlStatement
)
{
...
...
@@ -59,7 +59,7 @@ public final class MySQLComStmtPrepareExecutor implements CommandExecutor {
public
Collection
<
DatabasePacket
>
execute
()
{
Collection
<
DatabasePacket
>
result
=
new
LinkedList
<>();
int
currentSequenceId
=
0
;
SQLStatement
sqlStatement
=
logicS
chema
.
getSqlParserEngine
().
parse
(
packet
.
getSql
(),
true
);
SQLStatement
sqlStatement
=
s
chema
.
getSqlParserEngine
().
parse
(
packet
.
getSql
(),
true
);
if
(!
MySQLComStmtPrepareChecker
.
isStatementAllowed
(
sqlStatement
))
{
result
.
add
(
new
MySQLErrPacket
(++
currentSequenceId
,
MySQLServerErrorCode
.
ER_UNSUPPORTED_PS
));
return
result
;
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
浏览文件 @
57ac81aa
...
...
@@ -51,7 +51,7 @@ public final class MySQLComFieldListPacketExecutor implements CommandExecutor {
public
MySQLComFieldListPacketExecutor
(
final
MySQLComFieldListPacket
packet
,
final
BackendConnection
backendConnection
)
{
this
.
packet
=
packet
;
schemaName
=
backendConnection
.
getSchemaName
();
databaseCommunicationEngine
=
DatabaseCommunicationEngineFactory
.
getInstance
().
newTextProtocolInstance
(
backendConnection
.
get
Logic
Schema
(),
getShowColumnsSQL
(),
backendConnection
);
databaseCommunicationEngine
=
DatabaseCommunicationEngineFactory
.
getInstance
().
newTextProtocolInstance
(
backendConnection
.
getSchema
(),
getShowColumnsSQL
(),
backendConnection
);
}
@Override
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
浏览文件 @
57ac81aa
...
...
@@ -49,7 +49,7 @@ public final class MySQLCommandExecutorFactoryTest {
@Test
public
void
assertNewInstance
()
{
BackendConnection
backendConnection
=
mock
(
BackendConnection
.
class
);
when
(
backendConnection
.
get
Logic
Schema
()).
thenReturn
(
mock
(
ShardingSphereSchema
.
class
));
when
(
backendConnection
.
getSchema
()).
thenReturn
(
mock
(
ShardingSphereSchema
.
class
));
assertThat
(
MySQLCommandExecutorFactory
.
newInstance
(
MySQLCommandPacketType
.
COM_QUIT
,
mock
(
CommandPacket
.
class
),
backendConnection
),
instanceOf
(
MySQLComQuitExecutor
.
class
));
assertThat
(
MySQLCommandExecutorFactory
.
newInstance
(
MySQLCommandPacketType
.
COM_INIT_DB
,
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
浏览文件 @
57ac81aa
...
...
@@ -53,9 +53,9 @@ public class MySQLComStmtExecuteExecutorTest {
@SneakyThrows
public
void
assertIsErrorResponse
()
{
BackendConnection
backendConnection
=
mock
(
BackendConnection
.
class
);
ShardingSphereSchema
logicS
chema
=
mock
(
ShardingSphereSchema
.
class
);
when
(
logicS
chema
.
getRules
()).
thenReturn
(
Collections
.
emptyList
());
when
(
backendConnection
.
get
LogicSchema
()).
thenReturn
(
logicS
chema
);
ShardingSphereSchema
s
chema
=
mock
(
ShardingSphereSchema
.
class
);
when
(
s
chema
.
getRules
()).
thenReturn
(
Collections
.
emptyList
());
when
(
backendConnection
.
get
Schema
()).
thenReturn
(
s
chema
);
MySQLComStmtExecuteExecutor
mysqlComStmtExecuteExecutor
=
new
MySQLComStmtExecuteExecutor
(
mock
(
MySQLComStmtExecutePacket
.
class
),
backendConnection
);
FieldSetter
.
setField
(
mysqlComStmtExecuteExecutor
,
MySQLComStmtExecuteExecutor
.
class
.
getDeclaredField
(
"databaseCommunicationEngine"
),
databaseCommunicationEngine
);
when
(
sqlException
.
getCause
()).
thenReturn
(
new
Exception
());
...
...
@@ -68,9 +68,9 @@ public class MySQLComStmtExecuteExecutorTest {
@SneakyThrows
public
void
assertIsUpdateResponse
()
{
BackendConnection
backendConnection
=
mock
(
BackendConnection
.
class
);
ShardingSphereSchema
logicS
chema
=
mock
(
ShardingSphereSchema
.
class
);
when
(
logicS
chema
.
getRules
()).
thenReturn
(
Collections
.
emptyList
());
when
(
backendConnection
.
get
LogicSchema
()).
thenReturn
(
logicS
chema
);
ShardingSphereSchema
s
chema
=
mock
(
ShardingSphereSchema
.
class
);
when
(
s
chema
.
getRules
()).
thenReturn
(
Collections
.
emptyList
());
when
(
backendConnection
.
get
Schema
()).
thenReturn
(
s
chema
);
MySQLComStmtExecuteExecutor
mysqlComStmtExecuteExecutor
=
new
MySQLComStmtExecuteExecutor
(
mock
(
MySQLComStmtExecutePacket
.
class
),
backendConnection
);
FieldSetter
.
setField
(
mysqlComStmtExecuteExecutor
,
MySQLComStmtExecuteExecutor
.
class
.
getDeclaredField
(
"databaseCommunicationEngine"
),
databaseCommunicationEngine
);
when
(
databaseCommunicationEngine
.
execute
()).
thenReturn
(
new
UpdateResponse
());
...
...
@@ -82,9 +82,9 @@ public class MySQLComStmtExecuteExecutorTest {
@SneakyThrows
public
void
assertIsQuery
()
{
BackendConnection
backendConnection
=
mock
(
BackendConnection
.
class
);
ShardingSphereSchema
logicS
chema
=
mock
(
ShardingSphereSchema
.
class
);
when
(
logicS
chema
.
getRules
()).
thenReturn
(
Collections
.
emptyList
());
when
(
backendConnection
.
get
LogicSchema
()).
thenReturn
(
logicS
chema
);
ShardingSphereSchema
s
chema
=
mock
(
ShardingSphereSchema
.
class
);
when
(
s
chema
.
getRules
()).
thenReturn
(
Collections
.
emptyList
());
when
(
backendConnection
.
get
Schema
()).
thenReturn
(
s
chema
);
MySQLComStmtExecuteExecutor
mysqlComStmtExecuteExecutor
=
new
MySQLComStmtExecuteExecutor
(
mock
(
MySQLComStmtExecutePacket
.
class
),
backendConnection
);
FieldSetter
.
setField
(
mysqlComStmtExecuteExecutor
,
MySQLComStmtExecuteExecutor
.
class
.
getDeclaredField
(
"databaseCommunicationEngine"
),
databaseCommunicationEngine
);
when
(
databaseCommunicationEngine
.
execute
()).
thenReturn
(
new
QueryResponse
(
Collections
.
singletonList
(
mock
(
QueryHeader
.
class
))));
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/command/query/binary/bind/PostgreSQLComBindExecutor.java
浏览文件 @
57ac81aa
...
...
@@ -70,7 +70,7 @@ public final class PostgreSQLComBindExecutor implements QueryCommandExecutor {
public
PostgreSQLComBindExecutor
(
final
PostgreSQLComBindPacket
packet
,
final
BackendConnection
backendConnection
)
{
this
.
packet
=
packet
;
databaseCommunicationEngine
=
null
==
packet
.
getSql
()
?
null
:
DatabaseCommunicationEngineFactory
.
getInstance
().
newBinaryProtocolInstance
(
backendConnection
.
get
Logic
Schema
(),
packet
.
getSql
(),
packet
.
getParameters
(),
backendConnection
);
?
null
:
DatabaseCommunicationEngineFactory
.
getInstance
().
newBinaryProtocolInstance
(
backendConnection
.
getSchema
(),
packet
.
getSql
(),
packet
.
getParameters
(),
backendConnection
);
}
@Override
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/command/query/binary/parse/PostgreSQLComParseExecutor.java
浏览文件 @
57ac81aa
...
...
@@ -37,20 +37,20 @@ public final class PostgreSQLComParseExecutor implements CommandExecutor {
private
final
PostgreSQLComParsePacket
packet
;
private
final
ShardingSphereSchema
logicS
chema
;
private
final
ShardingSphereSchema
s
chema
;
private
final
ConnectionScopeBinaryStatementRegistry
binaryStatementRegistry
;
public
PostgreSQLComParseExecutor
(
final
PostgreSQLComParsePacket
packet
,
final
BackendConnection
backendConnection
)
{
this
.
packet
=
packet
;
logicSchema
=
backendConnection
.
getLogic
Schema
();
schema
=
backendConnection
.
get
Schema
();
binaryStatementRegistry
=
BinaryStatementRegistry
.
getInstance
().
get
(
backendConnection
.
getConnectionId
());
}
@Override
public
Collection
<
DatabasePacket
>
execute
()
{
if
(!
packet
.
getSql
().
isEmpty
())
{
SQLStatement
sqlStatement
=
logicS
chema
.
getSqlParserEngine
().
parse
(
packet
.
getSql
(),
true
);
SQLStatement
sqlStatement
=
s
chema
.
getSqlParserEngine
().
parse
(
packet
.
getSql
(),
true
);
binaryStatementRegistry
.
register
(
packet
.
getStatementId
(),
packet
.
getSql
(),
sqlStatement
.
getParameterCount
(),
packet
.
getBinaryStatementParameterTypes
());
}
return
Collections
.
singletonList
(
new
PostgreSQLParseCompletePacket
());
...
...
shardingsphere-underlying/shardingsphere-common/src/main/java/org/apache/shardingsphere/underlying/common/database/DefaultSchema.java
浏览文件 @
57ac81aa
...
...
@@ -27,11 +27,7 @@ import lombok.NoArgsConstructor;
public
final
class
DefaultSchema
{
/**
* Logic schema name.
*
* <p>
* ShardingSphere just have one logic database table.
* </p>
* Schema name.
*/
public
static
final
String
LOGIC_NAME
=
"logic_db"
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录