ignite-sql-tests

Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/323af75a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/323af75a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/323af75a

Branch: refs/heads/ignite-sql-tests
Commit: 323af75a5ec1537b30fc8208b7d71de747011351
Parents: abfa555
Author: S.Vladykin <svlady...@gridgain.com>
Authored: Tue Feb 24 02:06:21 2015 +0300
Committer: S.Vladykin <svlady...@gridgain.com>
Committed: Tue Feb 24 02:06:21 2015 +0300

----------------------------------------------------------------------
 .../processors/query/GridQueryProcessor.java    | 38 +++++++++-------
 .../processors/query/h2/IgniteH2Indexing.java   | 48 ++++++++------------
 .../query/h2/sql/GridQueryParsingTest.java      |  6 ++-
 3 files changed, 45 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/323af75a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index b57ff27..3baba76 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@ -111,13 +111,9 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
     public void initializeCache(CacheConfiguration<?, ?> ccfg) throws 
IgniteCheckedException {
         Map<TypeName,CacheTypeMetadata> declaredTypes = new HashMap<>();
 
-        boolean cacheRegistered = false;
+        idx.registerCache(ccfg);
 
         if (!F.isEmpty(ccfg.getTypeMetadata())) {
-            idx.registerCache(ccfg);
-
-            cacheRegistered = true;
-
             for (CacheTypeMetadata meta : ccfg.getTypeMetadata()) {
                 declaredTypes.put(new TypeName(ccfg.getName(), 
meta.getValueType()), meta);
 
@@ -125,7 +121,7 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
 
                 portableIds.put(valTypeId, meta.getValueType());
 
-                TypeDescriptor desc = processPortableMeta(meta);
+                TypeDescriptor desc = processPortableMeta(ccfg, meta);
 
                 desc.registered(idx.registerType(ccfg.getName(), desc));
 
@@ -135,11 +131,8 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
         }
 
         if (!F.isEmpty(ccfg.getIndexedTypes())) {
-            if (!cacheRegistered)
-                idx.registerCache(ccfg);
-
             for (IgniteBiTuple<Class<?>,Class<?>> types : 
ccfg.getIndexedTypes()) {
-                TypeDescriptor desc = processKeyAndValue(ccfg.getName(), 
types.getKey(), types.getValue(),
+                TypeDescriptor desc = processKeyAndValue(ccfg, types.getKey(), 
types.getValue(),
                     declaredTypes);
 
                 desc.registered(idx.registerType(ccfg.getName(), desc));
@@ -150,22 +143,22 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
     }
 
     /**
-     * @param space Space.
+     * @param ccfg Cache configuration.
      * @param keyCls Key class.
      * @param valCls Value class.
      * @param declaredTypes Knows types.
      * @return Type descriptor.
      * @throws IgniteCheckedException If failed.
      */
-    private TypeDescriptor processKeyAndValue(String space, Class<?> keyCls, 
Class<?> valCls,
+    private TypeDescriptor processKeyAndValue(CacheConfiguration<?,?> ccfg, 
Class<?> keyCls, Class<?> valCls,
         Map<TypeName,CacheTypeMetadata> declaredTypes)
         throws IgniteCheckedException {
-        TypeDescriptor d = new TypeDescriptor();
+        TypeDescriptor d = new TypeDescriptor(ccfg);
 
         d.keyClass(keyCls);
         d.valueClass(valCls);
 
-        CacheTypeMetadata keyMeta = declaredTypes.get(new TypeName(space, 
keyCls.getName()));
+        CacheTypeMetadata keyMeta = declaredTypes.get(new 
TypeName(ccfg.getName(), keyCls.getName()));
 
         if (keyMeta == null)
             processAnnotationsInClass(true, d.keyCls, d, null);
@@ -176,7 +169,7 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
 
         d.name(valTypeName);
 
-        CacheTypeMetadata typeMeta = declaredTypes.get(new TypeName(space, 
valCls.getName()));
+        CacheTypeMetadata typeMeta = declaredTypes.get(new 
TypeName(ccfg.getName(), valCls.getName()));
 
         if (typeMeta == null)
             processAnnotationsInClass(false, d.valCls, d, null);
@@ -973,13 +966,14 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
     /**
      * Processes declarative metadata for portable object.
      *
+     * @param ccfg Cache configuration.
      * @param meta Declared metadata.
      * @return Type descriptor.
      * @throws IgniteCheckedException If failed.
      */
-    private TypeDescriptor processPortableMeta(CacheTypeMetadata meta)
+    private TypeDescriptor processPortableMeta(CacheConfiguration<?,?> ccfg, 
CacheTypeMetadata meta)
         throws IgniteCheckedException {
-        TypeDescriptor d = new TypeDescriptor();
+        TypeDescriptor d = new TypeDescriptor(ccfg);
 
         for (Map.Entry<String, Class<?>> entry : 
meta.getAscendingFields().entrySet()) {
             PortableProperty prop = buildPortableProperty(entry.getKey(), 
entry.getValue());
@@ -1386,6 +1380,9 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
      */
     private static class TypeDescriptor implements GridQueryTypeDescriptor {
         /** */
+        private CacheConfiguration<?,?> ccfg;
+
+        /** */
         private String name;
 
         /** Value field names and types with preserved order. */
@@ -1416,6 +1413,13 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
         private boolean registered;
 
         /**
+         * @param ccfg Cache configuration.
+         */
+        private TypeDescriptor(CacheConfiguration<?,?> ccfg) {
+            this.ccfg = ccfg;
+        }
+
+        /**
          * @return {@code True} if type registration in SPI was finished and 
type was not rejected.
          */
         boolean registered() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/323af75a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
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 0c4bfde..b45a2ef 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
@@ -249,7 +249,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
      * @throws IgniteCheckedException If failed to create db schema.
      */
     private void createSchema(String schema) throws IgniteCheckedException {
-        executeStatement(schema(null), "CREATE SCHEMA \"" + schema + '"');
+        executeStatement("INFORMATION_SCHEMA", "CREATE SCHEMA IF NOT EXISTS 
\"" + schema + '"');
 
         if (log.isDebugEnabled())
             log.debug("Created H2 schema for index database: " + schema);
@@ -855,10 +855,6 @@ public class IgniteH2Indexing implements GridQueryIndexing 
{
                 throw new IgniteCheckedException(MessageFormat.format(ptrn, 
name));
         }
 
-        Schema s = schemas.get(spaceName);
-
-
-
         return true;
     }
 
@@ -913,7 +909,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
         assert schema != null;
         assert tbl != null;
 
-        boolean escapeAll = isEscapeAll(schema.spaceName);
+        boolean escapeAll = schema.escapeAll;
 
         String keyType = dbTypeFromClass(tbl.type().keyClass());
         String valTypeStr = dbTypeFromClass(tbl.type().valueClass());
@@ -997,8 +993,8 @@ public class IgniteH2Indexing implements GridQueryIndexing {
      * @return Schema name.
      */
     private static String schema(@Nullable String space) {
-        if (F.isEmpty(space))
-            return "PUBLIC";
+        if (space == null)
+            return "";
 
         return space;
     }
@@ -1007,12 +1003,12 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
     @Override public void rebuildIndexes(@Nullable String spaceName, 
GridQueryTypeDescriptor type) {
         TableDescriptor tbl = tableDescriptor(spaceName, type);
 
-        if (tbl.schema.offheap != null)
-            throw new UnsupportedOperationException("Index rebuilding is not 
supported when off-heap memory is used");
-
         if (tbl == null)
             return;
 
+        if (tbl.schema.offheap != null)
+            throw new UnsupportedOperationException("Index rebuilding is not 
supported when off-heap memory is used");
+
         tbl.tbl.rebuildIndexes();
     }
 
@@ -1068,12 +1064,7 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
 
         dbUrl = "jdbc:h2:mem:" + dbName + DB_OPTIONS;
 
-        try {
-            Class.forName("org.h2.Driver");
-        }
-        catch (ClassNotFoundException e) {
-            throw new IgniteCheckedException("Failed to find org.h2.Driver 
class", e);
-        }
+        org.h2.Driver.load();
 
         try {
             if (getString(IGNITE_H2_DEBUG_CONSOLE) != null) {
@@ -1267,19 +1258,14 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
     }
 
     /** {@inheritDoc} */
-    public boolean isEscapeAll(String spaceName) {
-        return ctx.cache().cache(spaceName).configuration().isSqlEscapeAll();
-    }
-
-    /** {@inheritDoc} */
     public void registerCache(CacheConfiguration<?,?> ccfg) throws 
IgniteCheckedException {
         String schema = schema(ccfg.getName());
 
-        createSchema(schema);
-
-        schemas.put(schema, new Schema(schema, ccfg.getOffHeapMaxMemory() >= 0 
? new GridUnsafeMemory(0) : null,
-            ccfg.getSqlOnheapRowCacheSize()));
+        if (schemas.putIfAbsent(schema, new Schema(ccfg.getName(), 
ccfg.getOffHeapMaxMemory() >= 0 ?
+            new GridUnsafeMemory(0) : null, ccfg.getSqlOnheapRowCacheSize(), 
ccfg.isSqlEscapeAll())) != null)
+            throw new IgniteCheckedException("Cache already registered: " + 
ccfg.getName());
 
+        createSchema(schema);
         createSqlFunctions(schema, ccfg.getSqlFunctionClasses());
     }
 
@@ -1509,7 +1495,7 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
             this.schema = schema;
 
             fullTblName = '\"' + IgniteH2Indexing.schema(schema.spaceName) + 
"\"." +
-                escapeName(type.name(), isEscapeAll(schema.spaceName));
+                escapeName(type.name(), schema.escapeAll);
         }
 
         /**
@@ -1579,7 +1565,7 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
 
                     int i = 0;
 
-                    boolean escapeAll = isEscapeAll(schema.spaceName);
+                    boolean escapeAll = schema.escapeAll;
 
                     for (String field : idx.fields()) {
                         // H2 reserved keywords used as column name is case 
sensitive.
@@ -1791,13 +1777,17 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
         /** Cache for deserialized offheap rows. */
         private final CacheLongKeyLIRS<GridH2KeyValueRowOffheap> rowCache;
 
+        /** */
+        private final boolean escapeAll;
+
         /**
          * @param spaceName Space name.
          * @param offheap Offheap memory.
          */
-        private Schema(@Nullable String spaceName, GridUnsafeMemory offheap, 
int onheapCacheSize) {
+        private Schema(@Nullable String spaceName, GridUnsafeMemory offheap, 
int onheapCacheSize, boolean escapeAll) {
             this.spaceName = spaceName;
             this.offheap = offheap;
+            this.escapeAll = escapeAll;
 
             if (offheap != null)
                 rowCache = new CacheLongKeyLIRS<>(onheapCacheSize, 1, 128, 
256);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/323af75a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
index 7748d6c..ffd23dd 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
@@ -24,6 +24,7 @@ import org.apache.ignite.configuration.*;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.processors.query.*;
 import org.apache.ignite.internal.processors.query.h2.*;
+import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.marshaller.optimized.*;
 import org.apache.ignite.spi.discovery.tcp.*;
@@ -75,6 +76,9 @@ public class GridQueryParsingTest extends 
GridCommonAbstractTest {
         cc.setPreloadMode(SYNC);
         cc.setSwapEnabled(false);
         cc.setSqlFunctionClasses(GridQueryParsingTest.class);
+        cc.setIndexedTypes(
+            F.<Class<?>,Class<?>>t(String.class, Address.class),
+            F.<Class<?>,Class<?>>t(String.class, Person.class));
 
         c.setCacheConfiguration(cc);
 
@@ -198,7 +202,7 @@ public class GridQueryParsingTest extends 
GridCommonAbstractTest {
         checkQuery("select street from Person p, (select a.street from Address 
a where a.street is not null) ");
         checkQuery("select addr.street from Person p, (select a.street from 
Address a where a.street is not null) addr");
 
-        checkQuery("select p.name n from PUBLIC.Person p order by p.old + 10");
+        checkQuery("select p.name n from \"\".Person p order by p.old + 10");
     }
 
     /**

Reply via email to