This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 18bc22c fix column order error. (#12818)
18bc22c is described below
commit 18bc22c6378094660d1d563672fdbce1aea4a258
Author: tuichenchuxin <[email protected]>
AuthorDate: Wed Sep 29 23:34:16 2021 +0800
fix column order error. (#12818)
* fix column order error.
---
.../metadata/EncryptTableMetaDataBuilderTest.java | 3 ++-
.../metadata/ShardingTableMetaDataBuilderTest.java | 3 ++-
.../loader/dialect/H2TableMetaDataLoader.java | 9 +++++++--
.../loader/dialect/MySQLTableMetaDataLoader.java | 9 +++++++--
.../dialect/OpenGaussTableMetaDataLoader.java | 9 +++++++--
.../loader/dialect/OracleTableMetaDataLoader.java | 8 ++++++--
.../dialect/SQLServerTableMetaDataLoader.java | 12 ++++++++----
.../loader/dialect/H2TableMetaDataLoaderTest.java | 6 ++++--
.../dialect/MySQLTableMetaDataLoaderTest.java | 6 ++++--
.../dialect/OracleTableMetaDataLoaderTest.java | 21 +++++++++++----------
.../dialect/SQLServerTableMetaDataLoaderTest.java | 8 ++++----
11 files changed, 62 insertions(+), 32 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptTableMetaDataBuilderTest.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptTableMetaDataBuilderTest.java
index 2899585..2891cf3 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptTableMetaDataBuilderTest.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptTableMetaDataBuilderTest.java
@@ -118,7 +118,8 @@ public final class EncryptTableMetaDataBuilderTest {
ResultSet resultSet = createColumnResultSet();
PreparedStatement preparedStatement = mock(PreparedStatement.class);
when(preparedStatement.executeQuery()).thenReturn(resultSet);
- when(connection.prepareStatement(startsWith("SELECT TABLE_NAME,
COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA, COLLATION_NAME FROM
information_schema.columns"))).thenReturn(preparedStatement);
+ when(connection.prepareStatement(startsWith("SELECT TABLE_NAME,
COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA, COLLATION_NAME, ORDINAL_POSITION
FROM information_schema.columns")))
+ .thenReturn(preparedStatement);
}
private void mockH2ResultSet(final Connection connection) throws
SQLException {
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingTableMetaDataBuilderTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingTableMetaDataBuilderTest.java
index 64b147e..3830b67 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingTableMetaDataBuilderTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingTableMetaDataBuilderTest.java
@@ -144,7 +144,8 @@ public class ShardingTableMetaDataBuilderTest {
ResultSet resultSet = createColumnResultSet("t_order_0");
PreparedStatement preparedStatement = mock(PreparedStatement.class);
when(preparedStatement.executeQuery()).thenReturn(resultSet);
- when(connection.prepareStatement(startsWith("SELECT TABLE_NAME,
COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA, COLLATION_NAME FROM
information_schema.columns"))).thenReturn(preparedStatement);
+ when(connection.prepareStatement(startsWith("SELECT TABLE_NAME,
COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA, COLLATION_NAME, ORDINAL_POSITION
FROM information_schema.columns")))
+ .thenReturn(preparedStatement);
ResultSet indexResultSet = createIndexResultSet();
PreparedStatement indexStatement = mock(PreparedStatement.class);
when(indexStatement.executeQuery()).thenReturn(indexResultSet);
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/H2TableMetaDataLoader.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/H2TableMetaDataLoader.java
index 91260a9..2a8b525 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/H2TableMetaDataLoader.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/H2TableMetaDataLoader.java
@@ -42,9 +42,14 @@ import java.util.stream.Collectors;
*/
public final class H2TableMetaDataLoader implements DialectTableMetaDataLoader
{
- private static final String TABLE_META_DATA_SQL = "SELECT TABLE_CATALOG,
TABLE_NAME, COLUMN_NAME, DATA_TYPE, TYPE_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG=? AND TABLE_SCHEMA=?";
+ private static final String TABLE_META_DATA_NO_ORDER = "SELECT
TABLE_CATALOG, TABLE_NAME, COLUMN_NAME, DATA_TYPE, TYPE_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS "
+ + "WHERE TABLE_CATALOG=? AND TABLE_SCHEMA=?";
+
+ private static final String ORDER_BY_ORDINAL_POSITION = " ORDER BY
ORDINAL_POSITION";
+
+ private static final String TABLE_META_DATA_SQL = TABLE_META_DATA_NO_ORDER
+ ORDER_BY_ORDINAL_POSITION;
- private static final String TABLE_META_DATA_SQL_IN_TABLES =
TABLE_META_DATA_SQL + " AND TABLE_NAME IN (%s)";
+ private static final String TABLE_META_DATA_SQL_IN_TABLES =
TABLE_META_DATA_NO_ORDER + " AND TABLE_NAME IN (%s)" +
ORDER_BY_ORDINAL_POSITION;
private static final String INDEX_META_DATA_SQL = "SELECT TABLE_CATALOG,
TABLE_NAME, INDEX_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.INDEXES"
+ " WHERE TABLE_CATALOG=? AND TABLE_SCHEMA=? AND TABLE_NAME IN
(%s)";
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java
index 1fd8f91..d2fd7aa 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java
@@ -42,9 +42,14 @@ import java.util.stream.Collectors;
*/
public final class MySQLTableMetaDataLoader implements
DialectTableMetaDataLoader {
- private static final String TABLE_META_DATA_SQL = "SELECT TABLE_NAME,
COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA, COLLATION_NAME FROM
information_schema.columns WHERE TABLE_SCHEMA=?";
+ private static final String ORDER_BY_ORDINAL_POSITION = " ORDER BY
ORDINAL_POSITION";
- private static final String TABLE_META_DATA_SQL_IN_TABLES =
TABLE_META_DATA_SQL + " AND TABLE_NAME IN (%s)";
+ private static final String TABLE_META_DATA_NO_ORDER = "SELECT TABLE_NAME,
COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA, COLLATION_NAME, ORDINAL_POSITION
FROM information_schema.columns "
+ + "WHERE TABLE_SCHEMA=?";
+
+ private static final String TABLE_META_DATA_SQL = TABLE_META_DATA_NO_ORDER
+ ORDER_BY_ORDINAL_POSITION;
+
+ private static final String TABLE_META_DATA_SQL_IN_TABLES =
TABLE_META_DATA_NO_ORDER + " AND TABLE_NAME IN (%s)" +
ORDER_BY_ORDINAL_POSITION;
private static final String INDEX_META_DATA_SQL = "SELECT TABLE_NAME,
INDEX_NAME FROM information_schema.statistics WHERE TABLE_SCHEMA=? and
TABLE_NAME IN (%s)";
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OpenGaussTableMetaDataLoader.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OpenGaussTableMetaDataLoader.java
index 1c17fef..7d586d0 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OpenGaussTableMetaDataLoader.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OpenGaussTableMetaDataLoader.java
@@ -44,9 +44,14 @@ import java.util.stream.Collectors;
*/
public final class OpenGaussTableMetaDataLoader implements
DialectTableMetaDataLoader {
- private static final String BASIC_TABLE_META_DATA_SQL = "SELECT
table_name, column_name, data_type, udt_name, column_default FROM
information_schema.columns WHERE table_schema = ?";
+ private static final String BASIC_TABLE_META_DATA_SQL_NO_ORDER = "SELECT
table_name, column_name, ordinal_position, data_type, udt_name, column_default
FROM information_schema.columns "
+ + "WHERE table_schema = ?";
- private static final String TABLE_META_DATA_SQL_WITH_EXISTED_TABLES =
BASIC_TABLE_META_DATA_SQL + " AND table_name IN (%s)";
+ private static final String ORDER_BY_ORDINAL_POSITION = " ORDER BY
ordinal_position";
+
+ private static final String BASIC_TABLE_META_DATA_SQL =
BASIC_TABLE_META_DATA_SQL_NO_ORDER + ORDER_BY_ORDINAL_POSITION;
+
+ private static final String TABLE_META_DATA_SQL_WITH_EXISTED_TABLES =
BASIC_TABLE_META_DATA_SQL_NO_ORDER + " AND table_name IN (%s)" +
ORDER_BY_ORDINAL_POSITION;
private static final String PRIMARY_KEY_META_DATA_SQL = "SELECT
tc.table_name, kc.column_name FROM information_schema.table_constraints tc"
+ " JOIN information_schema.key_column_usage kc"
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OracleTableMetaDataLoader.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OracleTableMetaDataLoader.java
index dcc2cd0..5b64375 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OracleTableMetaDataLoader.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OracleTableMetaDataLoader.java
@@ -44,9 +44,13 @@ import java.util.stream.Collectors;
*/
public final class OracleTableMetaDataLoader implements
DialectTableMetaDataLoader {
- private static final String TABLE_META_DATA_SQL = "SELECT OWNER AS
TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE %s FROM ALL_TAB_COLUMNS WHERE
OWNER = ?";
+ private static final String TABLE_META_DATA_SQL_NO_ORDER = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_ID %s FROM
ALL_TAB_COLUMNS WHERE OWNER = ?";
- private static final String TABLE_META_DATA_SQL_IN_TABLES =
TABLE_META_DATA_SQL + " AND TABLE_NAME IN (%s)";
+ private static final String ORDER_BY_COLUMN_ID = " ORDER BY COLUMN_ID";
+
+ private static final String TABLE_META_DATA_SQL =
TABLE_META_DATA_SQL_NO_ORDER + ORDER_BY_COLUMN_ID;
+
+ 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)";
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/SQLServerTableMetaDataLoader.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/SQLServerTableMetaDataLoader.java
index 835545a..4e7e4c9 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/SQLServerTableMetaDataLoader.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/SQLServerTableMetaDataLoader.java
@@ -42,13 +42,17 @@ import java.util.stream.Collectors;
*/
public final class SQLServerTableMetaDataLoader implements
DialectTableMetaDataLoader {
- private static final String TABLE_META_DATA_SQL = "SELECT obj.name AS
TABLE_NAME, col.name AS COLUMN_NAME, t.name AS DATA_TYPE,"
- + " col.collation_name AS COLLATION_NAME, is_identity AS
IS_IDENTITY,"
+ private static final String TABLE_META_DATA_SQL_NO_ORDER = "SELECT
obj.name AS TABLE_NAME, col.name AS COLUMN_NAME, t.name AS DATA_TYPE,"
+ + " col.collation_name AS COLLATION_NAME, col.column_id,
is_identity AS IS_IDENTITY,"
+ " (SELECT TOP 1 ind.is_primary_key FROM sys.index_columns ic
LEFT JOIN sys.indexes ind ON ic.object_id = ind.object_id"
+ " AND ic.index_id = ind.index_id AND ind.name LIKE 'PK_%' WHERE
ic.object_id = obj.object_id AND ic.column_id = col.column_id) AS
IS_PRIMARY_KEY"
+ " FROM sys.objects obj INNER JOIN sys.columns col ON
obj.object_id = col.object_id LEFT JOIN sys.types t ON t.user_type_id =
col.user_type_id";
- private static final String TABLE_META_DATA_SQL_IN_TABLES = " WHERE
obj.name IN (%s)";
+ private static final String ORDER_BY_COLUMN_ID = " ORDER BY col.column_id";
+
+ private static final String TABLE_META_DATA_SQL =
TABLE_META_DATA_SQL_NO_ORDER + ORDER_BY_COLUMN_ID;
+
+ private static final String TABLE_META_DATA_SQL_IN_TABLES = " WHERE
obj.name IN (%s)" + ORDER_BY_COLUMN_ID;
private static final String INDEX_META_DATA_SQL = "SELECT a.name AS
INDEX_NAME, c.name AS TABLE_NAME FROM sys.indexes a"
+ " JOIN sys.objects c ON a.object_id = c.object_id WHERE
a.index_id NOT IN (0, 255) AND c.name IN (%s)";
@@ -98,7 +102,7 @@ public final class SQLServerTableMetaDataLoader implements
DialectTableMetaDataL
private String getTableMetaDataSQL(final Collection<String> tables) {
return tables.isEmpty() ? TABLE_META_DATA_SQL
- : TABLE_META_DATA_SQL +
String.format(TABLE_META_DATA_SQL_IN_TABLES, tables.stream().map(each ->
String.format("'%s'", each)).collect(Collectors.joining(",")));
+ : TABLE_META_DATA_SQL_NO_ORDER +
String.format(TABLE_META_DATA_SQL_IN_TABLES, tables.stream().map(each ->
String.format("'%s'", each)).collect(Collectors.joining(",")));
}
private Map<String, Collection<IndexMetaData>> loadIndexMetaData(final
DataSource dataSource, final Collection<String> tableNames) throws SQLException
{
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/H2TableMetaDataLoaderTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/H2TableMetaDataLoaderTest.java
index 1f09fb4..049955f 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/H2TableMetaDataLoaderTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/H2TableMetaDataLoaderTest.java
@@ -49,7 +49,8 @@ public final class H2TableMetaDataLoaderTest {
DataSource dataSource = mockDataSource();
ResultSet resultSet = mockTableMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(
- "SELECT TABLE_CATALOG, TABLE_NAME, COLUMN_NAME, DATA_TYPE,
TYPE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG=? AND
TABLE_SCHEMA=?").executeQuery()).thenReturn(resultSet);
+ "SELECT TABLE_CATALOG, TABLE_NAME, COLUMN_NAME, DATA_TYPE,
TYPE_NAME, ORDINAL_POSITION FROM INFORMATION_SCHEMA.COLUMNS WHERE
TABLE_CATALOG=? AND TABLE_SCHEMA=? "
+ + "ORDER BY
ORDINAL_POSITION").executeQuery()).thenReturn(resultSet);
ResultSet indexResultSet = mockIndexMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(
"SELECT TABLE_CATALOG, TABLE_NAME, INDEX_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.INDEXES WHERE TABLE_CATALOG=? AND TABLE_SCHEMA=? AND
TABLE_NAME IN ('tbl')")
@@ -70,7 +71,8 @@ public final class H2TableMetaDataLoaderTest {
DataSource dataSource = mockDataSource();
ResultSet resultSet = mockTableMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(
- "SELECT TABLE_CATALOG, TABLE_NAME, COLUMN_NAME, DATA_TYPE,
TYPE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG=? AND
TABLE_SCHEMA=? AND TABLE_NAME IN ('tbl')")
+ "SELECT TABLE_CATALOG, TABLE_NAME, COLUMN_NAME, DATA_TYPE,
TYPE_NAME, ORDINAL_POSITION FROM INFORMATION_SCHEMA.COLUMNS WHERE
TABLE_CATALOG=? AND TABLE_SCHEMA=? "
+ + "AND TABLE_NAME IN ('tbl') ORDER BY
ORDINAL_POSITION")
.executeQuery()).thenReturn(resultSet);
ResultSet indexResultSet = mockIndexMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoaderTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoaderTest.java
index 97a5b47..d89e2b3 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoaderTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoaderTest.java
@@ -49,7 +49,8 @@ public final class MySQLTableMetaDataLoaderTest {
DataSource dataSource = mockDataSource();
ResultSet resultSet = mockTableMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(
- "SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA,
COLLATION_NAME FROM information_schema.columns WHERE
TABLE_SCHEMA=?").executeQuery()).thenReturn(resultSet);
+ "SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA,
COLLATION_NAME, ORDINAL_POSITION FROM information_schema.columns WHERE
TABLE_SCHEMA=? ORDER BY ORDINAL_POSITION")
+ .executeQuery()).thenReturn(resultSet);
ResultSet indexResultSet = mockIndexMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(
"SELECT TABLE_NAME, INDEX_NAME FROM
information_schema.statistics WHERE TABLE_SCHEMA=? and TABLE_NAME IN
('tbl')").executeQuery()).thenReturn(indexResultSet);
@@ -61,7 +62,8 @@ public final class MySQLTableMetaDataLoaderTest {
DataSource dataSource = mockDataSource();
ResultSet resultSet = mockTableMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(
- "SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA,
COLLATION_NAME FROM information_schema.columns WHERE TABLE_SCHEMA=? AND
TABLE_NAME IN ('tbl')")
+ "SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA,
COLLATION_NAME, ORDINAL_POSITION FROM information_schema.columns WHERE
TABLE_SCHEMA=? AND TABLE_NAME IN ('tbl') "
+ + "ORDER BY ORDINAL_POSITION")
.executeQuery()).thenReturn(resultSet);
ResultSet indexResultSet = mockIndexMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OracleTableMetaDataLoaderTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OracleTableMetaDataLoaderTest.java
index fd8dea3..c1e35e3 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OracleTableMetaDataLoaderTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/OracleTableMetaDataLoaderTest.java
@@ -55,21 +55,22 @@ public final class OracleTableMetaDataLoaderTest {
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_TAB_COLUMNS_SQL_CONDITION1 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE , IDENTITY_COLUMN,
COLLATION"
- + " FROM ALL_TAB_COLUMNS WHERE OWNER = ?";
+ private static final String ALL_TAB_COLUMNS_SQL_CONDITION1 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_ID ,
IDENTITY_COLUMN, COLLATION"
+ + " FROM ALL_TAB_COLUMNS WHERE OWNER = ? ORDER BY COLUMN_ID";
- private static final String ALL_TAB_COLUMNS_SQL_CONDITION2 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE , IDENTITY_COLUMN FROM
ALL_TAB_COLUMNS WHERE OWNER = ?";
+ private static final String ALL_TAB_COLUMNS_SQL_CONDITION2 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_ID ,
IDENTITY_COLUMN FROM ALL_TAB_COLUMNS WHERE OWNER = ?"
+ + " ORDER BY COLUMN_ID";
- private static final String ALL_TAB_COLUMNS_SQL_CONDITION3 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM ALL_TAB_COLUMNS WHERE
OWNER = ?";
+ private static final String ALL_TAB_COLUMNS_SQL_CONDITION3 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_ID FROM
ALL_TAB_COLUMNS WHERE OWNER = ? ORDER BY COLUMN_ID";
- private static final String ALL_TAB_COLUMNS_SQL_CONDITION4 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE , IDENTITY_COLUMN,
COLLATION FROM ALL_TAB_COLUMNS"
- + " WHERE OWNER = ? AND TABLE_NAME IN ('tbl')";
+ private static final String ALL_TAB_COLUMNS_SQL_CONDITION4 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_ID ,
IDENTITY_COLUMN, COLLATION FROM ALL_TAB_COLUMNS"
+ + " WHERE OWNER = ? AND TABLE_NAME IN ('tbl') ORDER BY COLUMN_ID";
- private static final String ALL_TAB_COLUMNS_SQL_CONDITION5 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE , IDENTITY_COLUMN FROM
ALL_TAB_COLUMNS"
- + " WHERE OWNER = ? AND TABLE_NAME IN ('tbl')";
+ private static final String ALL_TAB_COLUMNS_SQL_CONDITION5 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_ID ,
IDENTITY_COLUMN FROM ALL_TAB_COLUMNS"
+ + " WHERE OWNER = ? AND TABLE_NAME IN ('tbl') ORDER BY COLUMN_ID";
- private static final String ALL_TAB_COLUMNS_SQL_CONDITION6 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM ALL_TAB_COLUMNS"
- + " WHERE OWNER = ? AND TABLE_NAME IN ('tbl')";
+ private static final String ALL_TAB_COLUMNS_SQL_CONDITION6 = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_ID FROM
ALL_TAB_COLUMNS"
+ + " WHERE OWNER = ? AND TABLE_NAME IN ('tbl') ORDER BY COLUMN_ID";
@BeforeClass
public static void setUp() {
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/SQLServerTableMetaDataLoaderTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/SQLServerTableMetaDataLoaderTest.java
index dfd3ebc..85504c3 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/SQLServerTableMetaDataLoaderTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/SQLServerTableMetaDataLoaderTest.java
@@ -50,10 +50,10 @@ public final class SQLServerTableMetaDataLoaderTest {
ResultSet resultSet = mockTableMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(
"SELECT obj.name AS TABLE_NAME, col.name AS COLUMN_NAME,
t.name AS DATA_TYPE,"
- + " col.collation_name AS COLLATION_NAME, is_identity
AS IS_IDENTITY,"
+ + " col.collation_name AS COLLATION_NAME,
col.column_id, is_identity AS IS_IDENTITY,"
+ " (SELECT TOP 1 ind.is_primary_key FROM
sys.index_columns ic LEFT JOIN sys.indexes ind ON ic.object_id = ind.object_id"
+ " AND ic.index_id = ind.index_id AND ind.name LIKE
'PK_%' WHERE ic.object_id = obj.object_id AND ic.column_id = col.column_id) AS
IS_PRIMARY_KEY"
- + " FROM sys.objects obj INNER JOIN sys.columns col ON
obj.object_id = col.object_id LEFT JOIN sys.types t ON t.user_type_id =
col.user_type_id")
+ + " FROM sys.objects obj INNER JOIN sys.columns col ON
obj.object_id = col.object_id LEFT JOIN sys.types t ON t.user_type_id =
col.user_type_id ORDER BY col.column_id")
.executeQuery()).thenReturn(resultSet);
ResultSet indexResultSet = mockIndexMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(
@@ -69,11 +69,11 @@ public final class SQLServerTableMetaDataLoaderTest {
ResultSet resultSet = mockTableMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(
"SELECT obj.name AS TABLE_NAME, col.name AS COLUMN_NAME,
t.name AS DATA_TYPE,"
- + " col.collation_name AS COLLATION_NAME, is_identity
AS IS_IDENTITY,"
+ + " col.collation_name AS COLLATION_NAME,
col.column_id, is_identity AS IS_IDENTITY,"
+ " (SELECT TOP 1 ind.is_primary_key FROM
sys.index_columns ic LEFT JOIN sys.indexes ind ON ic.object_id = ind.object_id"
+ " AND ic.index_id = ind.index_id AND ind.name LIKE
'PK_%' WHERE ic.object_id = obj.object_id AND ic.column_id = col.column_id) AS
IS_PRIMARY_KEY"
+ " FROM sys.objects obj INNER JOIN sys.columns col ON
obj.object_id = col.object_id LEFT JOIN sys.types t ON t.user_type_id =
col.user_type_id"
- + " WHERE obj.name IN ('tbl')")
+ + " WHERE obj.name IN ('tbl') ORDER BY col.column_id")
.executeQuery()).thenReturn(resultSet);
ResultSet indexResultSet = mockIndexMetaDataResultSet();
when(dataSource.getConnection().prepareStatement(