You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2019/03/26 13:20:47 UTC

[ignite] branch master updated: IGNITE-11428: SQL: Schemas are now shown through JDBC drivers. This closes #6236.

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 6b5658b  IGNITE-11428: SQL: Schemas are now shown through JDBC drivers. This closes #6236.
6b5658b is described below

commit 6b5658b2e303782c61752c93ccf7f1b99ceaf280
Author: Yuriy Gerzhedovich <yg...@gridgain.com>
AuthorDate: Tue Mar 26 16:20:13 2019 +0300

    IGNITE-11428: SQL: Schemas are now shown through JDBC drivers. This closes #6236.
---
 modules/clients/src/test/config/jdbc-config.xml              |  6 ++++++
 .../apache/ignite/internal/jdbc2/JdbcMetadataSelfTest.java   |  5 ++++-
 .../apache/ignite/jdbc/thin/JdbcThinAbstractSelfTest.java    |  2 +-
 .../apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java    |  9 ++++++++-
 .../internal/processors/odbc/jdbc/JdbcMetadataInfo.java      | 10 ++++------
 .../ignite/internal/processors/query/GridQueryIndexing.java  |  8 ++++++++
 .../cache/IgniteClientCacheInitializationFailTest.java       |  5 +++++
 .../internal/processors/query/h2/IgniteH2Indexing.java       |  6 ++++++
 .../ignite/internal/processors/query/h2/SchemaManager.java   | 12 +++++++++++-
 9 files changed, 53 insertions(+), 10 deletions(-)

diff --git a/modules/clients/src/test/config/jdbc-config.xml b/modules/clients/src/test/config/jdbc-config.xml
index 38535a1..c9b61f9 100644
--- a/modules/clients/src/test/config/jdbc-config.xml
+++ b/modules/clients/src/test/config/jdbc-config.xml
@@ -46,6 +46,12 @@
             </bean>
         </property>
 
+        <property name="sqlSchemas">
+            <array>
+                <value>PREDEFINED_CLIENT_SCHEMA</value>
+            </array>
+        </property>
+
         <property name="peerClassLoadingEnabled" value="true"/>
     </bean>
 </beans>
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcMetadataSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcMetadataSelfTest.java
index 5172cf7..7cb59d0 100755
--- a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcMetadataSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcMetadataSelfTest.java
@@ -96,6 +96,9 @@ public class JdbcMetadataSelfTest extends GridCommonAbstractTest {
 
         cfg.setConnectorConfiguration(new ConnectorConfiguration());
 
+        cfg.setSqlSchemas("PREDEFINED_SCHEMAS_1", "PREDEFINED_SCHEMAS_2");
+
+
         return cfg;
     }
 
@@ -522,7 +525,7 @@ public class JdbcMetadataSelfTest extends GridCommonAbstractTest {
         try (Connection conn = DriverManager.getConnection(BASE_URL)) {
             ResultSet rs = conn.getMetaData().getSchemas();
 
-            Set<String> expectedSchemas = new HashSet<>(Arrays.asList("pers", "org", "metaTest", "dep", "PUBLIC"));
+            Set<String> expectedSchemas = new HashSet<>(Arrays.asList("pers", "org", "metaTest", "dep", "PUBLIC", "IGNITE", "PREDEFINED_CLIENT_SCHEMA"));
 
             Set<String> schemas = new HashSet<>();
 
diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinAbstractSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinAbstractSelfTest.java
index 6d5f59a..37f7f21 100644
--- a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinAbstractSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinAbstractSelfTest.java
@@ -170,4 +170,4 @@ public class JdbcThinAbstractSelfTest extends GridCommonAbstractTest {
                 return Collections.emptyList();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
index 13ae776..0b16646 100644
--- a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
@@ -43,6 +43,7 @@ import org.apache.ignite.cache.QueryIndex;
 import org.apache.ignite.cache.affinity.AffinityKey;
 import org.apache.ignite.cache.query.annotations.QuerySqlField;
 import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteVersionUtils;
 import org.apache.ignite.internal.jdbc2.JdbcUtils;
 import org.apache.ignite.internal.processors.query.QueryEntityEx;
@@ -64,6 +65,11 @@ public class JdbcThinMetadataSelfTest extends JdbcThinAbstractSelfTest {
     /** URL. */
     private static final String URL = "jdbc:ignite:thin://127.0.0.1/";
 
+    /** {@inheritDoc} */
+    @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+        return super.getConfiguration(igniteInstanceName).setSqlSchemas("PREDEFINED_SCHEMAS_1", "PREDEFINED_SCHEMAS_2");
+    }
+
     /**
      * @param qryEntity Query entity.
      * @return Cache configuration.
@@ -649,7 +655,8 @@ public class JdbcThinMetadataSelfTest extends JdbcThinAbstractSelfTest {
         try (Connection conn = DriverManager.getConnection(URL)) {
             ResultSet rs = conn.getMetaData().getSchemas();
 
-            Set<String> expectedSchemas = new HashSet<>(Arrays.asList("PUBLIC", "pers", "org", "dep"));
+            Set<String> expectedSchemas = new HashSet<>(Arrays.asList("IGNITE", "PUBLIC", "pers",
+                "org", "dep", "PREDEFINED_SCHEMAS_1", "PREDEFINED_SCHEMAS_2"));
 
             Set<String> schemas = new HashSet<>();
 
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/jdbc/JdbcMetadataInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/jdbc/JdbcMetadataInfo.java
index 77d61f7..a9ce8a8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/jdbc/JdbcMetadataInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/jdbc/JdbcMetadataInfo.java
@@ -224,11 +224,9 @@ public class JdbcMetadataInfo {
     public SortedSet<String> getSchemasMeta(String schemaNamePtrn) {
         SortedSet<String> schemas = new TreeSet<>(); // to have values sorted.
 
-        for (String cacheName : ctx.cache().publicCacheNames()) {
-            for (GridQueryTypeDescriptor table : ctx.query().types(cacheName)) {
-                if (matches(table.schemaName(), schemaNamePtrn))
-                    schemas.add(table.schemaName());
-            }
+        for (String schema : ctx.query().getIndexing().schemasNames()) {
+            if (matches(schema, schemaNamePtrn))
+                schemas.add(schema);
         }
 
         return schemas;
@@ -266,4 +264,4 @@ public class JdbcMetadataInfo {
 
         return meta;
     }
-}
\ No newline at end of file
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java
index 557e3ec..c36af42 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java
@@ -21,6 +21,7 @@ import java.sql.PreparedStatement;
 import java.sql.SQLException;
 import java.util.Collection;
 import java.util.List;
+import java.util.Set;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteDataStreamer;
 import org.apache.ignite.cache.query.FieldsQueryCursor;
@@ -339,6 +340,13 @@ public interface GridQueryIndexing {
     public String schema(String cacheName);
 
     /**
+     * Gets database schemas names.
+     *
+     * @return Schema names.
+     */
+    public Set<String> schemasNames();
+
+    /**
      * Check if passed statement is insert statement eligible for streaming, throw an {@link IgniteSQLException} if not.
      *
      * @param nativeStmt Native statement.
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java
index f755e1c..9afb0e4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java
@@ -416,6 +416,11 @@ public class IgniteClientCacheInitializationFailTest extends GridCommonAbstractT
         }
 
         /** {@inheritDoc} */
+        @Override public Set<String> schemasNames() {
+            return null;
+        }
+
+        /** {@inheritDoc} */
         @Override public void checkStatementStreamable(PreparedStatement nativeStmt) {
             // No-op.
         }
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index 467dd15..4286e5a 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -31,6 +31,7 @@ import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 import org.apache.ignite.IgniteCheckedException;
@@ -1777,6 +1778,11 @@ public class IgniteH2Indexing implements GridQueryIndexing {
     }
 
     /** {@inheritDoc} */
+    @Override public Set<String> schemasNames(){
+        return schemaMgr.schemaNames();
+    }
+
+    /** {@inheritDoc} */
     @Override public void checkStatementStreamable(PreparedStatement nativeStmt) {
         if (!GridSqlQueryParser.isStreamableInsertStatement(nativeStmt))
             throw new IgniteSQLException("Streaming mode supports only INSERT commands without subqueries.",
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/SchemaManager.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/SchemaManager.java
index 646d99b..7bc78b7 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/SchemaManager.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/SchemaManager.java
@@ -29,6 +29,7 @@ import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import org.apache.ignite.IgniteCheckedException;
@@ -143,7 +144,7 @@ public class SchemaManager {
 
         try {
             synchronized (schemaMux) {
-                createSchema0(QueryUtils.SCHEMA_SYS);
+                createSchema(QueryUtils.SCHEMA_SYS, true);
             }
 
             try (Connection c = connMgr.connectionNoCache(QueryUtils.SCHEMA_SYS)) {
@@ -418,6 +419,15 @@ public class SchemaManager {
     }
 
     /**
+     * Get schemas names.
+     *
+     * @return Schemas names.
+     */
+    public Set<String> schemaNames(){
+        return new HashSet<>(schemas.keySet());
+    }
+
+    /**
      * Get schema by name.
      *
      * @param schemaName Schema name.