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(

Reply via email to