This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 233fb2082c6 support save unique key in metadata for Oracle (#28072)
233fb2082c6 is described below
commit 233fb2082c614a7c0a593b7365e288f2f18a0cf8
Author: Zonglei Dong <[email protected]>
AuthorDate: Mon Aug 14 13:39:50 2023 +0800
support save unique key in metadata for Oracle (#28072)
---
.../database/oracle/metadata/data/loader/OracleMetaDataLoader.java | 7 +++++--
.../oracle/metadata/data/loader/OracleMetaDataLoaderTest.java | 7 +++++--
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoader.java
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoader.java
index 982065ca52f..701f8909584 100644
---
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoader.java
+++
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoader.java
@@ -58,7 +58,7 @@ public final class OracleMetaDataLoader implements
DialectMetaDataLoader {
private static final String TABLE_META_DATA_SQL_IN_TABLES =
TABLE_META_DATA_SQL_NO_ORDER + " AND TABLE_NAME IN (%s)" + ORDER_BY_COLUMN_ID;
- private static final String INDEX_META_DATA_SQL = "SELECT OWNER AS
TABLE_SCHEMA, TABLE_NAME, INDEX_NAME FROM ALL_INDEXES WHERE OWNER = ? AND
TABLE_NAME IN (%s)";
+ private static final String INDEX_META_DATA_SQL = "SELECT OWNER AS
TABLE_SCHEMA, TABLE_NAME, INDEX_NAME, UNIQUENESS FROM ALL_INDEXES WHERE OWNER =
? AND TABLE_NAME IN (%s)";
private static final String PRIMARY_KEY_META_DATA_SQL = "SELECT A.OWNER AS
TABLE_SCHEMA, A.TABLE_NAME AS TABLE_NAME, B.COLUMN_NAME AS COLUMN_NAME FROM
ALL_CONSTRAINTS A INNER JOIN"
+ " ALL_CONS_COLUMNS B ON A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
WHERE CONSTRAINT_TYPE = 'P' AND A.OWNER = '%s'";
@@ -162,10 +162,13 @@ public final class OracleMetaDataLoader implements
DialectMetaDataLoader {
while (resultSet.next()) {
String indexName = resultSet.getString("INDEX_NAME");
String tableName = resultSet.getString("TABLE_NAME");
+ boolean isUnique =
"UNIQUE".equals(resultSet.getString("UNIQUENESS"));
if (!result.containsKey(tableName)) {
result.put(tableName, new LinkedList<>());
}
- result.get(tableName).add(new IndexMetaData(indexName));
+ IndexMetaData indexMetaData = new IndexMetaData(indexName);
+ indexMetaData.setUnique(isUnique);
+ result.get(tableName).add(indexMetaData);
}
}
}
diff --git
a/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
index 05409c711ed..0b56585ef12 100644
---
a/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
+++
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
@@ -51,7 +51,7 @@ class OracleMetaDataLoaderTest {
private static final String ALL_CONSTRAINTS_SQL_WITH_TABLES = "SELECT
A.OWNER AS TABLE_SCHEMA, A.TABLE_NAME AS TABLE_NAME, B.COLUMN_NAME AS
COLUMN_NAME FROM ALL_CONSTRAINTS A"
+ " INNER JOIN ALL_CONS_COLUMNS B ON A.CONSTRAINT_NAME =
B.CONSTRAINT_NAME WHERE CONSTRAINT_TYPE = 'P' AND A.OWNER = 'TEST' AND
A.TABLE_NAME IN ('tbl')";
- private static final String ALL_INDEXES_SQL = "SELECT OWNER AS
TABLE_SCHEMA, TABLE_NAME, INDEX_NAME FROM ALL_INDEXES WHERE OWNER = ? AND
TABLE_NAME IN ('tbl')";
+ private static final String ALL_INDEXES_SQL = "SELECT OWNER AS
TABLE_SCHEMA, TABLE_NAME, INDEX_NAME, UNIQUENESS FROM ALL_INDEXES WHERE OWNER =
? AND TABLE_NAME IN ('tbl')";
private static final String ALL_TAB_COLUMNS_SQL_CONDITION1 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, NULLABLE, DATA_TYPE, COLUMN_ID,
HIDDEN_COLUMN , IDENTITY_COLUMN, COLLATION"
+ " FROM ALL_TAB_COLS WHERE OWNER = ? AND TABLE_NAME IN ('tbl')
ORDER BY COLUMN_ID";
@@ -259,6 +259,7 @@ class OracleMetaDataLoaderTest {
when(result.next()).thenReturn(true, false);
when(result.getString("INDEX_NAME")).thenReturn("id");
when(result.getString("TABLE_NAME")).thenReturn("tbl");
+ when(result.getString("UNIQUENESS")).thenReturn("UNIQUE");
return result;
}
@@ -282,6 +283,8 @@ class OracleMetaDataLoaderTest {
assertThat(actualTableMetaData.getColumns().size(), is(3));
assertThat(actualTableMetaData.getIndexes().size(), is(1));
Iterator<IndexMetaData> indexesIterator =
actualTableMetaData.getIndexes().iterator();
- assertThat(indexesIterator.next(), is(new IndexMetaData("id")));
+ IndexMetaData indexMetaData = new IndexMetaData("id");
+ indexMetaData.setUnique(true);
+ assertThat(indexesIterator.next(), is(indexMetaData));
}
}