You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2019/02/04 19:42:17 UTC

[metamodel] branch master updated: METAMODEL-156: Fixed selection of default schema

This is an automated email from the ASF dual-hosted git repository.

kaspersor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metamodel.git


The following commit(s) were added to refs/heads/master by this push:
     new 4fb4772  METAMODEL-156: Fixed selection of default schema
4fb4772 is described below

commit 4fb47726523f98f2f7f274a3d016157480edd77d
Author: Ratish Bansal <ra...@gmail.com>
AuthorDate: Mon Feb 4 11:41:24 2019 -0800

    METAMODEL-156: Fixed selection of default schema
---
 CHANGES.md                                                   |  1 +
 .../main/java/org/apache/metamodel/jdbc/JdbcDataContext.java | 12 ++++++++++++
 2 files changed, 13 insertions(+)

diff --git a/CHANGES.md b/CHANGES.md
index 4c12dbf..badb3bf 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,7 @@
 ### Apache MetaModel 5.2.1 (WIP)
 
  * [METAMODEL-1208] - Fixed closing of JDBC ResultSets when getting certain metadata.
+ * [METAMODEL-156] - Fixed issue in selection of default schema when multiple schema names match substring of connection string.
 
 ### Apache MetaModel 5.2.0
 
diff --git a/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java b/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java
index 1668438..a6b285c 100644
--- a/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java
+++ b/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java
@@ -25,6 +25,8 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -669,7 +671,17 @@ public class JdbcDataContext extends AbstractDataContext implements UpdateableDa
                                     st.nextToken();
                                 }
                                 String lastToken = st.nextToken();
+                                if (lastToken.indexOf("?") != -1) {
+                                    lastToken = lastToken.substring(0, lastToken.indexOf("?"));
+                                }
+                                // Sorting schema names in order of decreasing length
 
+                                Collections.sort(schemaNames, new Comparator<String>() {
+                                    @Override
+                                    public int compare(String s1, String s2) {
+                                        return s2.length() - s1.length();
+                                    }
+                                });
                                 for (int i = 0; i < schemaNames.size() && !found; i++) {
                                     String schemaName = schemaNames.get(i);
                                     if (lastToken.indexOf(schemaName) != -1) {