Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
57b8764a
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 搜索 >>
提交
57b8764a
编写于
8月 21, 2019
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
for #2900, add ShardingTableMetaData
上级
f9ec9865
变更
17
隐藏空白更改
内联
并排
Showing
17 changed file
with
162 addition
and
69 deletion
+162
-69
sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/ColumnMetaData.java
...he/shardingsphere/core/metadata/table/ColumnMetaData.java
+2
-2
sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/TableMetaData.java
...che/shardingsphere/core/metadata/table/TableMetaData.java
+4
-8
sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/TableMetas.java
...apache/shardingsphere/core/metadata/table/TableMetas.java
+4
-14
sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/sharding/ShardingTableMetaData.java
...e/core/metadata/table/sharding/ShardingTableMetaData.java
+55
-0
sharding-core/sharding-core-execute/src/main/java/org/apache/shardingsphere/core/execute/metadata/TableMetaDataInitializer.java
...phere/core/execute/metadata/TableMetaDataInitializer.java
+1
-1
sharding-core/sharding-core-execute/src/main/java/org/apache/shardingsphere/core/execute/metadata/TableMetaDataLoader.java
...dingsphere/core/execute/metadata/TableMetaDataLoader.java
+5
-4
sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dal/show/ShowCreateTableMergedResultTest.java
.../core/merge/dal/show/ShowCreateTableMergedResultTest.java
+4
-3
sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dal/show/ShowTablesMergedResultTest.java
...phere/core/merge/dal/show/ShowTablesMergedResultTest.java
+4
-3
sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/sharding/engnie/ddl/ShardingDropIndexOptimizeEngine.java
.../sharding/engnie/ddl/ShardingDropIndexOptimizeEngine.java
+11
-1
sharding-core/sharding-core-optimize/src/test/java/org/apache/shardingsphere/core/optimize/sharding/engnie/ddl/ShardingDropIndexOptimizeEngineTest.java
...rding/engnie/ddl/ShardingDropIndexOptimizeEngineTest.java
+8
-8
sharding-core/sharding-core-optimize/src/test/java/org/apache/shardingsphere/core/optimize/sharding/engnie/dml/ShardingSelectOptimizeEngineTest.java
...sharding/engnie/dml/ShardingSelectOptimizeEngineTest.java
+4
-3
sharding-core/sharding-core-optimize/src/test/java/org/apache/shardingsphere/core/optimize/sharding/segment/select/item/SelectItemsTest.java
...ptimize/sharding/segment/select/item/SelectItemsTest.java
+4
-3
sharding-core/sharding-core-route/src/test/java/org/apache/shardingsphere/core/route/DatabaseTest.java
...va/org/apache/shardingsphere/core/route/DatabaseTest.java
+4
-4
sharding-core/sharding-core-route/src/test/java/org/apache/shardingsphere/core/route/type/standard/AbstractSQLRouteTest.java
...sphere/core/route/type/standard/AbstractSQLRouteTest.java
+5
-4
sharding-jdbc/sharding-jdbc-core/src/main/java/org/apache/shardingsphere/shardingjdbc/executor/AbstractStatementExecutor.java
...here/shardingjdbc/executor/AbstractStatementExecutor.java
+22
-4
sharding-jdbc/sharding-jdbc-core/src/main/java/org/apache/shardingsphere/shardingjdbc/jdbc/core/context/EncryptRuntimeContext.java
...shardingjdbc/jdbc/core/context/EncryptRuntimeContext.java
+4
-3
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/schema/impl/ShardingSchema.java
...ere/shardingproxy/backend/schema/impl/ShardingSchema.java
+21
-4
未找到文件。
sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/
impl/
ColumnMetaData.java
→
sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/ColumnMetaData.java
浏览文件 @
57b8764a
...
...
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package
org.apache.shardingsphere.core.metadata.table
.impl
;
package
org.apache.shardingsphere.core.metadata.table
;
import
lombok.EqualsAndHashCode
;
import
lombok.Getter
;
...
...
@@ -23,7 +23,7 @@ import lombok.RequiredArgsConstructor;
import
lombok.ToString
;
/**
* Column metadata.
* Column meta
data.
*
* @author panjuan
*/
...
...
sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/
impl/
TableMetaData.java
→
sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/TableMetaData.java
浏览文件 @
57b8764a
...
...
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package
org.apache.shardingsphere.core.metadata.table
.impl
;
package
org.apache.shardingsphere.core.metadata.table
;
import
lombok.EqualsAndHashCode
;
import
lombok.Getter
;
...
...
@@ -25,25 +25,21 @@ import java.util.Collection;
import
java.util.Collections
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
java.util.concurrent.CopyOnWriteArraySet
;
/**
* Table metadata.
* Table meta
data.
*
* @author panjuan
*/
@Getter
@EqualsAndHashCode
@ToString
public
final
class
TableMetaData
{
public
class
TableMetaData
{
private
final
Map
<
String
,
ColumnMetaData
>
columns
;
private
final
Collection
<
String
>
logicIndexes
;
public
TableMetaData
(
final
Collection
<
ColumnMetaData
>
columnMetaDataList
,
final
Collection
<
String
>
logicIndexes
)
{
public
TableMetaData
(
final
Collection
<
ColumnMetaData
>
columnMetaDataList
)
{
columns
=
getColumns
(
columnMetaDataList
);
this
.
logicIndexes
=
new
CopyOnWriteArraySet
<>(
logicIndexes
);
}
private
Map
<
String
,
ColumnMetaData
>
getColumns
(
final
Collection
<
ColumnMetaData
>
columnMetaDataList
)
{
...
...
sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/TableMetas.java
浏览文件 @
57b8764a
...
...
@@ -17,13 +17,9 @@
package
org.apache.shardingsphere.core.metadata.table
;
import
com.google.common.base.Optional
;
import
org.apache.shardingsphere.core.metadata.table.impl.TableMetaData
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
...
...
@@ -102,17 +98,11 @@ public final class TableMetas {
}
/**
* Get
logic table name
.
* Get
all table names
.
*
* @param logicIndexName logic index name
* @return logic table name
* @return all table names
*/
public
Optional
<
String
>
getLogicTableName
(
final
String
logicIndexName
)
{
for
(
Entry
<
String
,
TableMetaData
>
entry
:
tables
.
entrySet
())
{
if
(
entry
.
getValue
().
getLogicIndexes
().
contains
(
logicIndexName
))
{
return
Optional
.
of
(
entry
.
getKey
());
}
}
return
Optional
.
absent
();
public
Collection
<
String
>
getAllTableNames
()
{
return
tables
.
keySet
();
}
}
sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/metadata/table/sharding/ShardingTableMetaData.java
0 → 100644
浏览文件 @
57b8764a
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.apache.shardingsphere.core.metadata.table.sharding
;
import
lombok.EqualsAndHashCode
;
import
lombok.Getter
;
import
lombok.ToString
;
import
org.apache.shardingsphere.core.metadata.table.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
java.util.Collection
;
import
java.util.concurrent.CopyOnWriteArraySet
;
/**
* Table meta data for sharding.
*
* @author zhangliang
*/
@Getter
@EqualsAndHashCode
(
callSuper
=
true
)
@ToString
(
callSuper
=
true
)
public
final
class
ShardingTableMetaData
extends
TableMetaData
{
private
final
Collection
<
String
>
logicIndexes
;
public
ShardingTableMetaData
(
final
Collection
<
ColumnMetaData
>
columnMetaDataList
,
final
Collection
<
String
>
logicIndexes
)
{
super
(
columnMetaDataList
);
this
.
logicIndexes
=
new
CopyOnWriteArraySet
<>(
logicIndexes
);
}
/**
* Judge contains index or not.
*
* @param logicIndexName logic index name
* @return contains index or not
*/
public
boolean
containsIndex
(
final
String
logicIndexName
)
{
return
logicIndexes
.
contains
(
logicIndexName
);
}
}
sharding-core/sharding-core-execute/src/main/java/org/apache/shardingsphere/core/execute/metadata/TableMetaDataInitializer.java
浏览文件 @
57b8764a
...
...
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.core.execute.metadata;
import
com.google.common.base.Optional
;
import
org.apache.shardingsphere.core.execute.ShardingExecuteEngine
;
import
org.apache.shardingsphere.core.metadata.datasource.DataSourceMetas
;
import
org.apache.shardingsphere.core.metadata.table.
impl.
TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
import
org.apache.shardingsphere.core.rule.TableRule
;
import
org.apache.shardingsphere.spi.database.DataSourceMetaData
;
...
...
sharding-core/sharding-core-execute/src/main/java/org/apache/shardingsphere/core/execute/metadata/TableMetaDataLoader.java
浏览文件 @
57b8764a
...
...
@@ -25,8 +25,9 @@ import org.apache.shardingsphere.core.execute.ShardingExecuteEngine;
import
org.apache.shardingsphere.core.execute.ShardingExecuteGroup
;
import
org.apache.shardingsphere.core.execute.ShardingGroupExecuteCallback
;
import
org.apache.shardingsphere.core.metadata.datasource.DataSourceMetas
;
import
org.apache.shardingsphere.core.metadata.table.impl.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.impl.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.rule.DataNode
;
import
org.apache.shardingsphere.core.rule.ShardingDataSourceNames
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
...
...
@@ -133,9 +134,9 @@ public final class TableMetaDataLoader {
private
TableMetaData
createTableMetaData
(
final
Connection
connection
,
final
String
catalog
,
final
String
actualTableName
)
throws
SQLException
{
if
(
isTableExist
(
connection
,
catalog
,
actualTableName
))
{
return
new
TableMetaData
(
getColumnMetaDataList
(
connection
,
catalog
,
actualTableName
),
getLogicIndexes
(
connection
,
catalog
,
actualTableName
));
return
new
Sharding
TableMetaData
(
getColumnMetaDataList
(
connection
,
catalog
,
actualTableName
),
getLogicIndexes
(
connection
,
catalog
,
actualTableName
));
}
return
new
TableMetaData
(
Collections
.<
ColumnMetaData
>
emptyList
(),
Collections
.<
String
>
emptySet
());
return
new
Sharding
TableMetaData
(
Collections
.<
ColumnMetaData
>
emptyList
(),
Collections
.<
String
>
emptySet
());
}
private
boolean
isTableExist
(
final
Connection
connection
,
final
String
catalog
,
final
String
actualTableName
)
throws
SQLException
{
...
...
sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dal/show/ShowCreateTableMergedResultTest.java
浏览文件 @
57b8764a
...
...
@@ -24,9 +24,10 @@ import org.apache.shardingsphere.api.config.sharding.strategy.ComplexShardingStr
import
org.apache.shardingsphere.core.execute.sql.execute.result.QueryResult
;
import
org.apache.shardingsphere.core.merge.fixture.ComplexKeysShardingAlgorithmFixture
;
import
org.apache.shardingsphere.core.merge.fixture.TestQueryResult
;
import
org.apache.shardingsphere.core.metadata.table.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.metadata.table.impl.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.impl.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
import
org.junit.Before
;
import
org.junit.Test
;
...
...
@@ -63,7 +64,7 @@ public final class ShowCreateTableMergedResultTest {
shardingRuleConfig
.
getTableRuleConfigs
().
add
(
tableRuleConfig
);
shardingRule
=
new
ShardingRule
(
shardingRuleConfig
,
Lists
.
newArrayList
(
"ds"
));
Map
<
String
,
TableMetaData
>
tableMetaDataMap
=
new
HashMap
<>(
1
,
1
);
tableMetaDataMap
.
put
(
"table"
,
new
TableMetaData
(
Collections
.<
ColumnMetaData
>
emptyList
(),
Collections
.<
String
>
emptySet
()));
tableMetaDataMap
.
put
(
"table"
,
new
Sharding
TableMetaData
(
Collections
.<
ColumnMetaData
>
emptyList
(),
Collections
.<
String
>
emptySet
()));
tableMetas
=
new
TableMetas
(
tableMetaDataMap
);
resultSet
=
mock
(
ResultSet
.
class
);
ResultSetMetaData
resultSetMetaData
=
mock
(
ResultSetMetaData
.
class
);
...
...
sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/core/merge/dal/show/ShowTablesMergedResultTest.java
浏览文件 @
57b8764a
...
...
@@ -24,9 +24,10 @@ import org.apache.shardingsphere.api.config.sharding.strategy.ComplexShardingStr
import
org.apache.shardingsphere.core.execute.sql.execute.result.QueryResult
;
import
org.apache.shardingsphere.core.merge.fixture.ComplexKeysShardingAlgorithmFixture
;
import
org.apache.shardingsphere.core.merge.fixture.TestQueryResult
;
import
org.apache.shardingsphere.core.metadata.table.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.metadata.table.impl.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.impl.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
import
org.junit.Before
;
import
org.junit.Test
;
...
...
@@ -63,7 +64,7 @@ public final class ShowTablesMergedResultTest {
shardingRuleConfig
.
getTableRuleConfigs
().
add
(
tableRuleConfig
);
shardingRule
=
new
ShardingRule
(
shardingRuleConfig
,
Lists
.
newArrayList
(
"ds"
));
Map
<
String
,
TableMetaData
>
tableMetaDataMap
=
new
HashMap
<>(
1
,
1
);
tableMetaDataMap
.
put
(
"table"
,
new
TableMetaData
(
Collections
.<
ColumnMetaData
>
emptyList
(),
Collections
.<
String
>
emptySet
()));
tableMetaDataMap
.
put
(
"table"
,
new
Sharding
TableMetaData
(
Collections
.<
ColumnMetaData
>
emptyList
(),
Collections
.<
String
>
emptySet
()));
tableMetas
=
new
TableMetas
(
tableMetaDataMap
);
resultSet
=
mock
(
ResultSet
.
class
);
ResultSetMetaData
resultSetMetaData
=
mock
(
ResultSetMetaData
.
class
);
...
...
sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/sharding/engnie/ddl/ShardingDropIndexOptimizeEngine.java
浏览文件 @
57b8764a
...
...
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.core.optimize.sharding.engnie.ddl;
import
com.google.common.base.Optional
;
import
com.google.common.base.Preconditions
;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.optimize.api.segment.Tables
;
import
org.apache.shardingsphere.core.optimize.sharding.engnie.ShardingOptimizeEngine
;
import
org.apache.shardingsphere.core.optimize.sharding.statement.ddl.ShardingDropIndexOptimizedStatement
;
...
...
@@ -53,10 +54,19 @@ public final class ShardingDropIndexOptimizeEngine implements ShardingOptimizeEn
private
Collection
<
String
>
getTableNames
(
final
TableMetas
tableMetas
,
final
DropIndexStatement
sqlStatement
)
{
Collection
<
String
>
result
=
new
LinkedList
<>();
for
(
IndexSegment
each
:
sqlStatement
.
getIndexes
())
{
Optional
<
String
>
tableName
=
tableMetas
.
getLogicTableName
(
each
.
getName
());
Optional
<
String
>
tableName
=
findLogicTableName
(
tableMetas
,
each
.
getName
());
Preconditions
.
checkState
(
tableName
.
isPresent
(),
"Cannot find table for index name `%s` from sharding rule."
,
each
.
getName
());
result
.
add
(
tableName
.
get
());
}
return
result
;
}
private
Optional
<
String
>
findLogicTableName
(
final
TableMetas
tableMetas
,
final
String
logicIndexName
)
{
for
(
String
each
:
tableMetas
.
getAllTableNames
())
{
if
(
tableMetas
.
get
(
each
)
instanceof
ShardingTableMetaData
&&
((
ShardingTableMetaData
)
tableMetas
.
get
(
each
)).
containsIndex
(
logicIndexName
))
{
return
Optional
.
of
(
each
);
}
}
return
Optional
.
absent
();
}
}
sharding-core/sharding-core-optimize/src/test/java/org/apache/shardingsphere/core/optimize/sharding/engnie/ddl/ShardingDropIndexOptimizeEngineTest.java
浏览文件 @
57b8764a
...
...
@@ -17,8 +17,10 @@
package
org.apache.shardingsphere.core.optimize.sharding.engnie.ddl
;
import
com.google.common.base.Optional
;
import
org.apache.shardingsphere.core.metadata.table.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.optimize.sharding.statement.ddl.ShardingDropIndexOptimizedStatement
;
import
org.apache.shardingsphere.core.parse.sql.segment.ddl.index.IndexSegment
;
import
org.apache.shardingsphere.core.parse.sql.segment.generic.TableSegment
;
...
...
@@ -27,30 +29,28 @@ import org.apache.shardingsphere.core.parse.sql.statement.ddl.DropIndexStatement
import
org.apache.shardingsphere.core.rule.ShardingRule
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.Mock
;
import
org.mockito.junit.MockitoJUnitRunner
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.Map
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
junit
.
Assert
.
assertThat
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
when
;
@RunWith
(
MockitoJUnitRunner
.
class
)
public
final
class
ShardingDropIndexOptimizeEngineTest
{
private
DropIndexStatement
dropIndexStatement
;
@Mock
private
TableMetas
tableMetas
;
@Before
public
void
setUp
()
{
dropIndexStatement
=
new
DropIndexStatement
();
dropIndexStatement
.
getIndexes
().
add
(
new
IndexSegment
(
0
,
0
,
"idx"
));
when
(
tableMetas
.
getLogicTableName
(
"idx"
)).
thenReturn
(
Optional
.
of
(
"meta_tbl"
));
Map
<
String
,
TableMetaData
>
tables
=
new
HashMap
<>(
1
,
1
);
tables
.
put
(
"meta_tbl"
,
new
ShardingTableMetaData
(
Collections
.<
ColumnMetaData
>
emptyList
(),
Collections
.
singletonList
(
"idx"
)));
tableMetas
=
new
TableMetas
(
tables
);
}
@Test
...
...
sharding-core/sharding-core-optimize/src/test/java/org/apache/shardingsphere/core/optimize/sharding/engnie/dml/ShardingSelectOptimizeEngineTest.java
浏览文件 @
57b8764a
...
...
@@ -19,9 +19,10 @@ package org.apache.shardingsphere.core.optimize.sharding.engnie.dml;
import
com.google.common.base.Optional
;
import
com.google.common.collect.Range
;
import
org.apache.shardingsphere.core.metadata.table.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.metadata.table.impl.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.impl.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.optimize.sharding.segment.condition.ShardingCondition
;
import
org.apache.shardingsphere.core.optimize.sharding.segment.condition.ShardingConditions
;
import
org.apache.shardingsphere.core.optimize.sharding.segment.select.item.SelectItems
;
...
...
@@ -232,6 +233,6 @@ public final class ShardingSelectOptimizeEngineTest {
private
TableMetaData
createTableMetaData
()
{
ColumnMetaData
idColumnMetaData
=
new
ColumnMetaData
(
"id"
,
"int"
,
true
);
ColumnMetaData
nameColumnMetaData
=
new
ColumnMetaData
(
"user_id"
,
"int"
,
false
);
return
new
TableMetaData
(
Arrays
.
asList
(
idColumnMetaData
,
nameColumnMetaData
),
Arrays
.
asList
(
"id"
,
"user_id"
));
return
new
Sharding
TableMetaData
(
Arrays
.
asList
(
idColumnMetaData
,
nameColumnMetaData
),
Arrays
.
asList
(
"id"
,
"user_id"
));
}
}
sharding-core/sharding-core-optimize/src/test/java/org/apache/shardingsphere/core/optimize/sharding/segment/select/item/SelectItemsTest.java
浏览文件 @
57b8764a
...
...
@@ -17,9 +17,10 @@
package
org.apache.shardingsphere.core.optimize.sharding.segment.select.item
;
import
org.apache.shardingsphere.core.metadata.table.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.metadata.table.impl.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.impl.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.parse.core.constant.AggregationType
;
import
org.apache.shardingsphere.core.parse.sql.segment.generic.TableSegment
;
import
org.junit.Test
;
...
...
@@ -166,7 +167,7 @@ public final class SelectItemsTest {
private
TableMetas
createTableMetas
()
{
Map
<
String
,
TableMetaData
>
tables
=
new
HashMap
<>(
1
,
1
);
tables
.
put
(
"table"
,
new
TableMetaData
(
Arrays
.
asList
(
new
ColumnMetaData
(
"id"
,
"number"
,
true
),
new
ColumnMetaData
(
"name"
,
"varchar"
,
false
)),
Collections
.<
String
>
emptyList
()));
tables
.
put
(
"table"
,
new
Sharding
TableMetaData
(
Arrays
.
asList
(
new
ColumnMetaData
(
"id"
,
"number"
,
true
),
new
ColumnMetaData
(
"name"
,
"varchar"
,
false
)),
Collections
.<
String
>
emptyList
()));
return
new
TableMetas
(
tables
);
}
...
...
sharding-core/sharding-core-route/src/test/java/org/apache/shardingsphere/core/route/DatabaseTest.java
浏览文件 @
57b8764a
...
...
@@ -25,9 +25,9 @@ import org.apache.shardingsphere.api.config.sharding.strategy.InlineShardingStra
import
org.apache.shardingsphere.api.hint.HintManager
;
import
org.apache.shardingsphere.core.database.DatabaseTypes
;
import
org.apache.shardingsphere.core.metadata.ShardingSphereMetaData
;
import
org.apache.shardingsphere.core.metadata.table.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.metadata.table.impl.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.impl.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.optimize.sharding.statement.dml.ShardingSelectOptimizedStatement
;
import
org.apache.shardingsphere.core.parse.SQLParseEngine
;
import
org.apache.shardingsphere.core.route.fixture.HintShardingAlgorithmFixture
;
...
...
@@ -91,7 +91,7 @@ public final class DatabaseTest {
ColumnMetaData
idColumnMetaData
=
new
ColumnMetaData
(
"id"
,
"int"
,
true
);
ColumnMetaData
nameColumnMetaData
=
new
ColumnMetaData
(
"user_id"
,
"int"
,
false
);
TableMetas
tableMetas
=
mock
(
TableMetas
.
class
);
when
(
tableMetas
.
get
(
"tesT"
)).
thenReturn
(
new
TableMetaData
(
Arrays
.
asList
(
idColumnMetaData
,
nameColumnMetaData
),
Arrays
.
asList
(
"id"
,
"user_id"
)));
when
(
tableMetas
.
get
(
"tesT"
)).
thenReturn
(
new
Sharding
TableMetaData
(
Arrays
.
asList
(
idColumnMetaData
,
nameColumnMetaData
),
Arrays
.
asList
(
"id"
,
"user_id"
)));
ShardingSphereMetaData
result
=
mock
(
ShardingSphereMetaData
.
class
);
when
(
result
.
getTables
()).
thenReturn
(
tableMetas
);
return
result
;
...
...
@@ -115,7 +115,7 @@ public final class DatabaseTest {
ColumnMetaData
idColumnMetaData
=
new
ColumnMetaData
(
"id"
,
"int"
,
true
);
ColumnMetaData
nameColumnMetaData
=
new
ColumnMetaData
(
"user_id"
,
"int"
,
false
);
TableMetas
tableMetas
=
mock
(
TableMetas
.
class
);
when
(
tableMetas
.
get
(
"tbl_pagination"
)).
thenReturn
(
new
TableMetaData
(
Arrays
.
asList
(
idColumnMetaData
,
nameColumnMetaData
),
Arrays
.
asList
(
"id"
,
"user_id"
)));
when
(
tableMetas
.
get
(
"tbl_pagination"
)).
thenReturn
(
new
Sharding
TableMetaData
(
Arrays
.
asList
(
idColumnMetaData
,
nameColumnMetaData
),
Arrays
.
asList
(
"id"
,
"user_id"
)));
ShardingSphereMetaData
result
=
mock
(
ShardingSphereMetaData
.
class
);
when
(
result
.
getTables
()).
thenReturn
(
tableMetas
);
return
result
;
...
...
sharding-core/sharding-core-route/src/test/java/org/apache/shardingsphere/core/route/type/standard/AbstractSQLRouteTest.java
浏览文件 @
57b8764a
...
...
@@ -24,9 +24,10 @@ import org.apache.shardingsphere.api.config.sharding.strategy.InlineShardingStra
import
org.apache.shardingsphere.core.database.DatabaseTypes
;
import
org.apache.shardingsphere.core.metadata.ShardingSphereMetaData
;
import
org.apache.shardingsphere.core.metadata.datasource.DataSourceMetas
;
import
org.apache.shardingsphere.core.metadata.table.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.metadata.table.impl.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.impl.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.parse.SQLParseEngine
;
import
org.apache.shardingsphere.core.route.PreparedStatementRoutingEngine
;
import
org.apache.shardingsphere.core.route.SQLRouteResult
;
...
...
@@ -113,9 +114,9 @@ public abstract class AbstractSQLRouteTest {
private
TableMetas
buildTableMetas
()
{
Map
<
String
,
TableMetaData
>
tableMetaDataMap
=
new
HashMap
<>(
3
,
1
);
tableMetaDataMap
.
put
(
"t_order"
,
new
TableMetaData
(
Arrays
.
asList
(
new
ColumnMetaData
(
"order_id"
,
"int"
,
true
),
new
ColumnMetaData
(
"user_id"
,
"int"
,
false
),
tableMetaDataMap
.
put
(
"t_order"
,
new
Sharding
TableMetaData
(
Arrays
.
asList
(
new
ColumnMetaData
(
"order_id"
,
"int"
,
true
),
new
ColumnMetaData
(
"user_id"
,
"int"
,
false
),
new
ColumnMetaData
(
"status"
,
"int"
,
false
)),
Collections
.<
String
>
emptySet
()));
tableMetaDataMap
.
put
(
"t_order_item"
,
new
TableMetaData
(
Arrays
.
asList
(
new
ColumnMetaData
(
"item_id"
,
"int"
,
true
),
new
ColumnMetaData
(
"order_id"
,
"int"
,
false
),
tableMetaDataMap
.
put
(
"t_order_item"
,
new
Sharding
TableMetaData
(
Arrays
.
asList
(
new
ColumnMetaData
(
"item_id"
,
"int"
,
true
),
new
ColumnMetaData
(
"order_id"
,
"int"
,
false
),
new
ColumnMetaData
(
"user_id"
,
"int"
,
false
),
new
ColumnMetaData
(
"status"
,
"varchar"
,
false
),
new
ColumnMetaData
(
"c_date"
,
"timestamp"
,
false
)),
Collections
.<
String
>
emptySet
()));
return
new
TableMetas
(
tableMetaDataMap
);
...
...
sharding-jdbc/sharding-jdbc-core/src/main/java/org/apache/shardingsphere/shardingjdbc/executor/AbstractStatementExecutor.java
浏览文件 @
57b8764a
...
...
@@ -32,6 +32,9 @@ import org.apache.shardingsphere.core.execute.metadata.TableMetaDataInitializer;
import
org.apache.shardingsphere.core.execute.sql.execute.SQLExecuteCallback
;
import
org.apache.shardingsphere.core.execute.sql.execute.SQLExecuteTemplate
;
import
org.apache.shardingsphere.core.execute.sql.prepare.SQLExecutePrepareTemplate
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.optimize.api.statement.OptimizedStatement
;
import
org.apache.shardingsphere.core.parse.sql.segment.ddl.index.IndexSegment
;
import
org.apache.shardingsphere.core.parse.sql.statement.ddl.AlterTableStatement
;
...
...
@@ -196,19 +199,25 @@ public class AbstractStatementExecutor {
if
(
null
==
createIndexStatement
.
getIndex
())
{
return
;
}
runtimeContext
.
getMetaData
().
getTables
().
get
(
optimizedStatement
.
getTables
().
getSingleTableName
()).
getLogicIndexes
().
add
(
createIndexStatement
.
getIndex
().
getName
());
TableMetaData
tableMetaData
=
runtimeContext
.
getMetaData
().
getTables
().
get
(
optimizedStatement
.
getTables
().
getSingleTableName
());
if
(
tableMetaData
instanceof
ShardingTableMetaData
)
{
((
ShardingTableMetaData
)
tableMetaData
).
getLogicIndexes
().
add
(
createIndexStatement
.
getIndex
().
getName
());
}
}
private
void
refreshTableMetaDataForDropIndex
(
final
ShardingRuntimeContext
runtimeContext
,
final
OptimizedStatement
optimizedStatement
)
{
DropIndexStatement
dropIndexStatement
=
(
DropIndexStatement
)
optimizedStatement
.
getSQLStatement
();
Collection
<
String
>
indexNames
=
getIndexNames
(
dropIndexStatement
);
if
(!
optimizedStatement
.
getTables
().
isEmpty
())
{
runtimeContext
.
getMetaData
().
getTables
().
get
(
optimizedStatement
.
getTables
().
getSingleTableName
()).
getLogicIndexes
().
removeAll
(
indexNames
);
TableMetaData
tableMetaData
=
runtimeContext
.
getMetaData
().
getTables
().
get
(
optimizedStatement
.
getTables
().
getSingleTableName
());
if
(
tableMetaData
instanceof
ShardingTableMetaData
)
{
((
ShardingTableMetaData
)
tableMetaData
).
getLogicIndexes
().
removeAll
(
indexNames
);
}
}
for
(
String
each
:
indexNames
)
{
Optional
<
String
>
logicTableName
=
runtimeContext
.
getMetaData
().
getTables
().
getLogicTableName
(
each
);
Optional
<
String
>
logicTableName
=
findLogicTableName
(
runtimeContext
.
getMetaData
().
getTables
(),
each
);
if
(
logicTableName
.
isPresent
())
{
runtimeContext
.
getMetaData
().
getTables
().
get
(
logicTableName
.
get
(
)).
getLogicIndexes
().
remove
(
each
);
((
ShardingTableMetaData
)
runtimeContext
.
getMetaData
().
getTables
().
get
(
optimizedStatement
.
getTables
().
getSingleTableName
()
)).
getLogicIndexes
().
remove
(
each
);
}
}
}
...
...
@@ -221,6 +230,15 @@ public class AbstractStatementExecutor {
return
result
;
}
private
Optional
<
String
>
findLogicTableName
(
final
TableMetas
tableMetas
,
final
String
logicIndexName
)
{
for
(
String
each
:
tableMetas
.
getAllTableNames
())
{
if
(
tableMetas
.
get
(
each
)
instanceof
ShardingTableMetaData
&&
((
ShardingTableMetaData
)
tableMetas
.
get
(
each
)).
containsIndex
(
logicIndexName
))
{
return
Optional
.
of
(
each
);
}
}
return
Optional
.
absent
();
}
private
TableMetaDataInitializer
getTableMetaDataInitializer
()
{
ShardingProperties
shardingProperties
=
connection
.
getRuntimeContext
().
getProps
();
return
new
TableMetaDataInitializer
(
connection
.
getRuntimeContext
().
getMetaData
().
getDataSources
(),
...
...
sharding-jdbc/sharding-jdbc-core/src/main/java/org/apache/shardingsphere/shardingjdbc/jdbc/core/context/EncryptRuntimeContext.java
浏览文件 @
57b8764a
...
...
@@ -19,9 +19,10 @@ package org.apache.shardingsphere.shardingjdbc.jdbc.core.context;
import
com.google.common.base.Optional
;
import
lombok.Getter
;
import
org.apache.shardingsphere.core.metadata.table.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.metadata.table.impl.ColumnMetaData
;
import
org.apache.shardingsphere.core.metadata.table.impl.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
import
org.apache.shardingsphere.spi.database.DatabaseType
;
...
...
@@ -58,7 +59,7 @@ public final class EncryptRuntimeContext extends AbstractRuntimeContext<EncryptR
try
(
Connection
connection
=
dataSource
.
getConnection
())
{
for
(
String
each
:
encryptRule
.
getEncryptTableNames
())
{
if
(
isTableExist
(
connection
,
each
))
{
tables
.
put
(
each
,
new
TableMetaData
(
getColumnMetaDataList
(
connection
,
each
),
getLogicIndexes
(
connection
,
each
)));
tables
.
put
(
each
,
new
Sharding
TableMetaData
(
getColumnMetaDataList
(
connection
,
each
),
getLogicIndexes
(
connection
,
each
)));
}
}
}
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/schema/impl/ShardingSchema.java
浏览文件 @
57b8764a
...
...
@@ -23,7 +23,9 @@ import lombok.Getter;
import
org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration
;
import
org.apache.shardingsphere.core.metadata.ShardingSphereMetaData
;
import
org.apache.shardingsphere.core.metadata.datasource.DataSourceMetas
;
import
org.apache.shardingsphere.core.metadata.table.TableMetaData
;
import
org.apache.shardingsphere.core.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.metadata.table.sharding.ShardingTableMetaData
;
import
org.apache.shardingsphere.core.optimize.api.statement.OptimizedStatement
;
import
org.apache.shardingsphere.core.parse.sql.segment.ddl.index.IndexSegment
;
import
org.apache.shardingsphere.core.parse.sql.statement.ddl.AlterTableStatement
;
...
...
@@ -149,19 +151,25 @@ public final class ShardingSchema extends LogicSchema {
if
(
null
==
createIndexStatement
.
getIndex
())
{
return
;
}
getMetaData
().
getTables
().
get
(
optimizedStatement
.
getTables
().
getSingleTableName
()).
getLogicIndexes
().
add
(
createIndexStatement
.
getIndex
().
getName
());
TableMetaData
tableMetaData
=
getMetaData
().
getTables
().
get
(
optimizedStatement
.
getTables
().
getSingleTableName
());
if
(
tableMetaData
instanceof
ShardingTableMetaData
)
{
((
ShardingTableMetaData
)
tableMetaData
).
getLogicIndexes
().
add
(
createIndexStatement
.
getIndex
().
getName
());
}
}
private
void
refreshTableMetaDataForDropIndex
(
final
OptimizedStatement
optimizedStatement
)
{
DropIndexStatement
dropIndexStatement
=
(
DropIndexStatement
)
optimizedStatement
.
getSQLStatement
();
Collection
<
String
>
indexNames
=
getIndexNames
(
dropIndexStatement
);
if
(!
optimizedStatement
.
getTables
().
isEmpty
())
{
getMetaData
().
getTables
().
get
(
optimizedStatement
.
getTables
().
getSingleTableName
()).
getLogicIndexes
().
removeAll
(
indexNames
);
TableMetaData
tableMetaData
=
getMetaData
().
getTables
().
get
(
optimizedStatement
.
getTables
().
getSingleTableName
());
if
(
tableMetaData
instanceof
ShardingTableMetaData
)
{
((
ShardingTableMetaData
)
tableMetaData
).
getLogicIndexes
().
removeAll
(
indexNames
);
}
}
for
(
String
each
:
indexNames
)
{
Optional
<
String
>
logicTableName
=
getMetaData
().
getTables
().
getLogicTableName
(
each
);
Optional
<
String
>
logicTableName
=
findLogicTableName
(
getMetaData
().
getTables
(),
each
);
if
(
logicTableName
.
isPresent
())
{
getMetaData
().
getTables
().
get
(
logicTableName
.
get
(
)).
getLogicIndexes
().
remove
(
each
);
((
ShardingTableMetaData
)
getMetaData
().
getTables
().
get
(
optimizedStatement
.
getTables
().
getSingleTableName
()
)).
getLogicIndexes
().
remove
(
each
);
}
}
}
...
...
@@ -173,4 +181,13 @@ public final class ShardingSchema extends LogicSchema {
}
return
result
;
}
private
Optional
<
String
>
findLogicTableName
(
final
TableMetas
tableMetas
,
final
String
logicIndexName
)
{
for
(
String
each
:
tableMetas
.
getAllTableNames
())
{
if
(
tableMetas
.
get
(
each
)
instanceof
ShardingTableMetaData
&&
((
ShardingTableMetaData
)
tableMetas
.
get
(
each
)).
containsIndex
(
logicIndexName
))
{
return
Optional
.
of
(
each
);
}
}
return
Optional
.
absent
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录