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) {