You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by yz...@apache.org on 2017/10/13 17:43:34 UTC
[49/50] [abbrv] ignite git commit: GG-12822 Moved notNullConstraint
out of public API
GG-12822 Moved notNullConstraint out of public API
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/d9a2786d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/d9a2786d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/d9a2786d
Branch: refs/heads/ignite-2.1.5-p1
Commit: d9a2786d725d4649407b031d241c49da3c57fb79
Parents: d3a672e
Author: devozerov <pp...@gmail.com>
Authored: Wed Sep 27 17:23:48 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Wed Sep 27 17:23:48 2017 +0300
----------------------------------------------------------------------
.../org/apache/ignite/cache/QueryEntity.java | 25 +----
.../processors/query/QueryEntityEx.java | 103 +++++++++++++++++++
.../internal/processors/query/QuerySchema.java | 42 ++++++--
.../internal/processors/query/QueryUtils.java | 26 ++++-
.../resources/META-INF/classnames.properties | 10 +-
.../query/h2/ddl/DdlStatementsProcessor.java | 10 +-
.../query/IgniteSqlNotNullConstraintTest.java | 8 +-
7 files changed, 182 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/d9a2786d/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java b/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
index fe54670..b824209 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
@@ -83,9 +83,6 @@ public class QueryEntity implements Serializable {
/** Table name. */
private String tableName;
- /** Fields that must have non-null value. */
- private Set<String> notNullFields;
-
/**
* Creates an empty query entity.
*/
@@ -112,8 +109,6 @@ public class QueryEntity implements Serializable {
idxs = other.idxs != null ? new ArrayList<>(other.idxs) : null;
tableName = other.tableName;
-
- notNullFields = other.notNullFields != null ? new HashSet<>(other.notNullFields) : null;
}
/**
@@ -365,19 +360,7 @@ public class QueryEntity implements Serializable {
* @return Set of names of fields that must have non-null values.
*/
@Nullable public Set<String> getNotNullFields() {
- return notNullFields;
- }
-
- /**
- * Sets names of fields that must checked for null.
- *
- * @param notNullFields Set of names of fields that must have non-null values.
- * @return {@code this} for chaining.
- */
- public QueryEntity setNotNullFields(@Nullable Set<String> notNullFields) {
- this.notNullFields = notNullFields;
-
- return this;
+ return null;
}
/**
@@ -620,6 +603,7 @@ public class QueryEntity implements Serializable {
if (o == null || getClass() != o.getClass())
return false;
+
QueryEntity entity = (QueryEntity)o;
return F.eq(keyType, entity.keyType) &&
@@ -630,14 +614,13 @@ public class QueryEntity implements Serializable {
F.eq(keyFields, entity.keyFields) &&
F.eq(aliases, entity.aliases) &&
F.eqNotOrdered(idxs, entity.idxs) &&
- F.eq(tableName, entity.tableName) &&
- F.eq(notNullFields, entity.notNullFields);
+ F.eq(tableName, entity.tableName);
}
/** {@inheritDoc} */
@Override public int hashCode() {
return Objects.hash(keyType, valType, keyFieldName, valueFieldName, fields, keyFields, aliases, idxs,
- tableName, notNullFields);
+ tableName);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/d9a2786d/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryEntityEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryEntityEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryEntityEx.java
new file mode 100644
index 0000000..ec0d5fa
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryEntityEx.java
@@ -0,0 +1,103 @@
+/*
+ * 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 org.apache.ignite.cache.QueryEntity;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Extended query entity with not-null fields support.
+ */
+public class QueryEntityEx extends QueryEntity {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** Fields that must have non-null value. */
+ private Set<String> notNullFields;
+
+ /**
+ * Default constructor.
+ */
+ public QueryEntityEx() {
+ // No-op.
+ }
+
+ /**
+ * Copying constructor.
+ *
+ * @param other Instance to copy.
+ */
+ public QueryEntityEx(QueryEntity other) {
+ super(other);
+
+ if (other instanceof QueryEntityEx) {
+ QueryEntityEx other0 = (QueryEntityEx)other;
+
+ notNullFields = other0.notNullFields != null ? new HashSet<>(other0.notNullFields) : null;
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override @Nullable public Set<String> getNotNullFields() {
+ return notNullFields;
+ }
+
+ /**
+ * Sets names of fields that must checked for null.
+ *
+ * @param notNullFields Set of names of fields that must have non-null values.
+ * @return {@code this} for chaining.
+ */
+ public QueryEntity setNotNullFields(@Nullable Set<String> notNullFields) {
+ this.notNullFields = notNullFields;
+
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ QueryEntityEx entity = (QueryEntityEx)o;
+
+ return super.equals(entity) && F.eq(notNullFields, entity.notNullFields);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ int res = super.hashCode();
+
+ res = 31 * res + (notNullFields != null ? notNullFields.hashCode() : 0);
+
+ return res;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(QueryEntityEx.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/d9a2786d/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QuerySchema.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QuerySchema.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QuerySchema.java
index 40da780..62a9ecd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QuerySchema.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QuerySchema.java
@@ -23,6 +23,8 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
+import java.util.Set;
+
import org.apache.ignite.cache.QueryEntity;
import org.apache.ignite.cache.QueryIndex;
import org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessage;
@@ -62,7 +64,7 @@ public class QuerySchema implements Serializable {
assert entities != null;
for (QueryEntity qryEntity : entities)
- this.entities.add(new QueryEntity(qryEntity));
+ this.entities.add(QueryUtils.copy(qryEntity));
}
/**
@@ -75,7 +77,7 @@ public class QuerySchema implements Serializable {
QuerySchema res = new QuerySchema();
for (QueryEntity qryEntity : entities)
- res.entities.add(new QueryEntity(qryEntity));
+ res.entities.add(QueryUtils.copy(qryEntity));
return res;
}
@@ -151,29 +153,51 @@ public class QuerySchema implements Serializable {
SchemaAlterTableAddColumnOperation op0 = (SchemaAlterTableAddColumnOperation)op;
- QueryEntity target = null;
+ int targetIdx = -1;
+
+ for (int i = 0; i < entities.size(); i++) {
+ QueryEntity entity = ((List<QueryEntity>)entities).get(i);
- for (QueryEntity entity : entities()) {
if (F.eq(entity.getTableName(), op0.tableName())) {
- target = entity;
+ targetIdx = i;
break;
}
}
- if (target == null)
+ if (targetIdx == -1)
return;
+ boolean replaceTarget = false;
+
+ QueryEntity target = ((List<QueryEntity>)entities).get(targetIdx);
+
for (QueryField field : op0.columns()) {
target.getFields().put(field.name(), field.typeName());
if (!field.isNullable()) {
- if (target.getNotNullFields() == null)
- target.setNotNullFields(new HashSet<String>());
+ if (!(target instanceof QueryEntityEx)) {
+ target = new QueryEntityEx(target);
+
+ replaceTarget = true;
+ }
- target.getNotNullFields().add(field.name());
+ QueryEntityEx target0 = (QueryEntityEx)target;
+
+ Set<String> notNullFields = target0.getNotNullFields();
+
+ if (notNullFields == null) {
+ notNullFields = new HashSet<>();
+
+ target0.setNotNullFields(notNullFields);
+ }
+
+ notNullFields.add(field.name());
}
}
+
+ if (replaceTarget)
+ ((List<QueryEntity>)entities).set(targetIdx, target);
}
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/d9a2786d/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
index 76efb71..3e96db2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
@@ -222,7 +222,14 @@ public class QueryUtils {
normalEntity.setKeyFields(entity.getKeyFields());
normalEntity.setKeyFieldName(entity.getKeyFieldName());
normalEntity.setValueFieldName(entity.getValueFieldName());
- normalEntity.setNotNullFields(entity.getNotNullFields());
+
+ if (!F.isEmpty(entity.getNotNullFields())) {
+ QueryEntityEx normalEntity0 = new QueryEntityEx(normalEntity);
+
+ normalEntity0.setNotNullFields(entity.getNotNullFields());
+
+ normalEntity = normalEntity0;
+ }
// Normalize table name.
String normalTblName = entity.getTableName();
@@ -1187,6 +1194,23 @@ public class QueryUtils {
}
/**
+ * Copy query entity.
+ *
+ * @param entity Query entity.
+ * @return Copied entity.
+ */
+ public static QueryEntity copy(QueryEntity entity) {
+ QueryEntity res;
+
+ if (entity instanceof QueryEntityEx)
+ res = new QueryEntityEx(entity);
+ else
+ res = new QueryEntity(entity);
+
+ return res;
+ }
+
+ /**
* Private constructor.
*/
private QueryUtils() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/d9a2786d/modules/core/src/main/resources/META-INF/classnames.properties
----------------------------------------------------------------------
diff --git a/modules/core/src/main/resources/META-INF/classnames.properties b/modules/core/src/main/resources/META-INF/classnames.properties
index fd60bd4..d99a6f3 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -427,9 +427,9 @@ org.apache.ignite.internal.processors.cache.GridCacheAdapter$11
org.apache.ignite.internal.processors.cache.GridCacheAdapter$12
org.apache.ignite.internal.processors.cache.GridCacheAdapter$13
org.apache.ignite.internal.processors.cache.GridCacheAdapter$14
-org.apache.ignite.internal.processors.cache.GridCacheAdapter$15
+org.apache.ignite.internal.processors.cache.GridCacheAdapter$15$1
org.apache.ignite.internal.processors.cache.GridCacheAdapter$16
-org.apache.ignite.internal.processors.cache.GridCacheAdapter$17$1
+org.apache.ignite.internal.processors.cache.GridCacheAdapter$17
org.apache.ignite.internal.processors.cache.GridCacheAdapter$2
org.apache.ignite.internal.processors.cache.GridCacheAdapter$25$1
org.apache.ignite.internal.processors.cache.GridCacheAdapter$27
@@ -891,6 +891,7 @@ org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedM
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager$CheckpointEntryType
org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$RebalanceIteratorAdapter
org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager$1
+org.apache.ignite.internal.processors.cache.persistence.file.AsyncFileIOFactory
org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory
org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIOFactory
org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryImpl$Segment
@@ -1349,6 +1350,7 @@ org.apache.ignite.internal.processors.query.GridQueryProcessor$8
org.apache.ignite.internal.processors.query.GridQueryProcessor$9
org.apache.ignite.internal.processors.query.GridQueryProcessor$SchemaOperation$1
org.apache.ignite.internal.processors.query.IgniteSQLException
+org.apache.ignite.internal.processors.query.QueryEntityEx
org.apache.ignite.internal.processors.query.QueryField
org.apache.ignite.internal.processors.query.QueryIndexKey
org.apache.ignite.internal.processors.query.QuerySchema
@@ -2096,7 +2098,3 @@ org.apache.ignite.transactions.TransactionRollbackException
org.apache.ignite.transactions.TransactionState
org.apache.ignite.transactions.TransactionTimeoutException
org.apache.ignite.util.AttributeNodeFilter
-org.apache.ignite.internal.processors.cache.persistence.file.AsyncFileIO
-org.apache.ignite.internal.processors.cache.persistence.file.AsyncFileIOFactory
-org.apache.ignite.internal.processors.cache.persistence.file.AsyncFileIO
-org.apache.ignite.internal.processors.cache.persistence.file.AsyncFileIOFactory
http://git-wip-us.apache.org/repos/asf/ignite/blob/d9a2786d/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/ddl/DdlStatementsProcessor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/ddl/DdlStatementsProcessor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/ddl/DdlStatementsProcessor.java
index 03f4e1f..f00e28d 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/ddl/DdlStatementsProcessor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/ddl/DdlStatementsProcessor.java
@@ -37,6 +37,7 @@ import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode;
import org.apache.ignite.internal.processors.query.GridQueryProperty;
import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor;
import org.apache.ignite.internal.processors.query.IgniteSQLException;
+import org.apache.ignite.internal.processors.query.QueryEntityEx;
import org.apache.ignite.internal.processors.query.QueryField;
import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
@@ -362,7 +363,14 @@ public class DdlStatementsProcessor {
res.setKeyType(keyTypeName);
res.setKeyFields(createTbl.primaryKeyColumns());
- res.setNotNullFields(notNullFields);
+
+ if (!F.isEmpty(notNullFields)) {
+ QueryEntityEx res0 = new QueryEntityEx(res);
+
+ res0.setNotNullFields(notNullFields);
+
+ res = res0;
+ }
return res;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/d9a2786d/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlNotNullConstraintTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlNotNullConstraintTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlNotNullConstraintTest.java
index dab474e..607dea8 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlNotNullConstraintTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlNotNullConstraintTest.java
@@ -144,7 +144,7 @@ public class IgniteSqlNotNullConstraintTest extends GridCommonAbstractTest {
cfg.setAtomicityMode(atomicityMode);
cfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
- QueryEntity qe = new QueryEntity(Integer.class, Person.class);
+ QueryEntityEx qe = new QueryEntityEx(new QueryEntity(Integer.class, Person.class));
qe.setNotNullFields(Collections.singleton("name"));
@@ -188,7 +188,7 @@ public class IgniteSqlNotNullConstraintTest extends GridCommonAbstractTest {
/** */
public void testQueryEntityGetSetNotNullFields() throws Exception {
- QueryEntity qe = new QueryEntity();
+ QueryEntityEx qe = new QueryEntityEx();
assertNull(qe.getNotNullFields());
@@ -205,9 +205,9 @@ public class IgniteSqlNotNullConstraintTest extends GridCommonAbstractTest {
/** */
public void testQueryEntityEquals() throws Exception {
- QueryEntity a = new QueryEntity();
+ QueryEntityEx a = new QueryEntityEx();
- QueryEntity b = new QueryEntity();
+ QueryEntityEx b = new QueryEntityEx();
assertEquals(a, b);