You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by tl...@apache.org on 2020/07/01 16:28:05 UTC
[ignite] 01/01: IGNITE-13198 add test and fix prototype
This is an automated email from the ASF dual-hosted git repository.
tledkov pushed a commit to branch ignite-13200
in repository https://gitbox.apache.org/repos/asf/ignite.git
commit defad586e655221d1086ee7d2c568c1a737b0ee6
Author: tledkov <tl...@gridgain.com>
AuthorDate: Wed Jul 1 19:27:38 2020 +0300
IGNITE-13198 add test and fix prototype
---
.../processors/query/h2/CommandProcessor.java | 5 +
.../query/CreateIndexOnInvalidDataTypeTest.java | 133 +++++++++++++++++++++
2 files changed, 138 insertions(+)
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/CommandProcessor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/CommandProcessor.java
index de106eb..9e70cc0 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/CommandProcessor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/CommandProcessor.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.processors.query.h2;
+import java.sql.Date;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -1198,6 +1199,10 @@ public class CommandProcessor {
if (!handleUuidAsByte)
return UUID.class.getName();
+ case Value.DATE:
+ // "java.util.Date";
+ return java.util.Date.class.getName();
+
default:
return DataType.getTypeClassName(type);
}
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/CreateIndexOnInvalidDataTypeTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/CreateIndexOnInvalidDataTypeTest.java
new file mode 100644
index 0000000..6e5d972
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/CreateIndexOnInvalidDataTypeTest.java
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.QueryEntity;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
+import org.apache.ignite.cache.query.FieldsQueryCursor;
+import org.apache.ignite.cache.query.SqlFieldsQuery;
+import org.apache.ignite.cache.query.annotations.QuerySqlField;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.failure.StopNodeFailureHandler;
+import org.apache.ignite.internal.processors.cache.index.AbstractIndexingCommonTest;
+import org.junit.Test;
+
+/**
+ * Tests for local query execution in lazy mode.
+ */
+public class CreateIndexOnInvalidDataTypeTest extends AbstractIndexingCommonTest {
+ /** Keys count. */
+ private static final int KEY_CNT = 10;
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ return super.getConfiguration(igniteInstanceName)
+ .setFailureHandler(new StopNodeFailureHandler())
+ .setDataStorageConfiguration(new DataStorageConfiguration()
+ .setDefaultDataRegionConfiguration(new DataRegionConfiguration()
+ .setPersistenceEnabled(true)
+ )
+ );
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ super.beforeTestsStarted();
+
+ cleanPersistenceDir();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ stopAllGrids();
+
+ super.afterTest();
+ }
+
+ /**
+ *
+ */
+ @Test
+ public void testCreateIndexOnInvalidData() throws Exception {
+ startGrid();
+
+ grid().cluster().state(ClusterState.ACTIVE);
+
+ IgniteCache<Integer, Value> c = grid().createCache(new CacheConfiguration<Integer, Value>()
+ .setName("test")
+ .setSqlSchema("PUBLIC")
+ .setQueryEntities(Collections.singleton(new QueryEntity(Integer.class, Value.class)
+ .setTableName("TEST")
+ )
+ )
+ .setBackups(1)
+ .setAffinity(new RendezvousAffinityFunction(false, 10)));
+
+ for (int i = 0; i < KEY_CNT; ++i)
+ c.put(i, new Value(i));
+
+ sql("ALTER TABLE TEST ADD COLUMN (VAL_DATE DATE)");
+
+ List<List<?>> res = sql("SELECT * FROM TEST").getAll();
+
+ sql("CREATE INDEX TEST_VAL_DATE_IDX ON TEST(VAL_DATE)");
+ }
+
+ /**
+ * @param sql SQL query.
+ * @param args Query parameters.
+ * @return Results cursor.
+ */
+ private FieldsQueryCursor<List<?>> sql(String sql, Object... args) {
+ return grid().context().query().querySqlFields(new SqlFieldsQuery(sql)
+ .setLazy(true)
+ .setArgs(args), false);
+ }
+
+ /**
+ *
+ */
+ private static class Value {
+ /**
+ *
+ */
+ @QuerySqlField
+ int val_int;
+
+ /**
+ *
+ */
+ java.util.Date val_date;
+
+ /**
+ * @param val Test value.
+ */
+ public Value(int val) {
+ this.val_int = val;
+ val_date = new Date(val);
+ }
+ }
+}