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.