This is an automated email from the ASF dual-hosted git repository.
shishkovilja 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 64fa8a9504b IGNITE-27559 Use MessageSerializer for
SchemaAbstractOperation and successors (#12881)
64fa8a9504b is described below
commit 64fa8a9504b51b036a6be9e67c4f1923a576a12d
Author: Ilya Shishkov <[email protected]>
AuthorDate: Tue Mar 17 15:12:55 2026 +0300
IGNITE-27559 Use MessageSerializer for SchemaAbstractOperation and
successors (#12881)
---
.../discovery/DiscoveryMessageFactory.java | 23 +++++++
.../internal/processors/query/QueryField.java | 74 ++++++++++++++++------
.../message/SchemaAbstractDiscoveryMessage.java | 44 ++-----------
.../SchemaAbstractAlterTableOperation.java | 39 ------------
.../schema/operation/SchemaAbstractOperation.java | 18 ++++--
.../operation/SchemaAddQueryEntityOperation.java | 42 ++++++++++--
.../SchemaAlterTableAddColumnOperation.java | 23 +++++--
.../SchemaAlterTableDropColumnOperation.java | 23 +++++--
.../operation/SchemaIndexAbstractOperation.java | 5 +-
.../operation/SchemaIndexCreateOperation.java | 45 +++++++++++--
.../schema/operation/SchemaIndexDropOperation.java | 15 ++++-
.../main/resources/META-INF/classnames.properties | 1 -
12 files changed, 228 insertions(+), 124 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java
index 58eede617e8..f289b84f4a9 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryMessageFactory.java
@@ -65,10 +65,22 @@ import
org.apache.ignite.internal.processors.metastorage.persistence.Distributed
import
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateAckMessageSerializer;
import
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateMessage;
import
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateMessageSerializer;
+import org.apache.ignite.internal.processors.query.QueryField;
+import
org.apache.ignite.internal.processors.query.QueryFieldMarshallableSerializer;
import
org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessage;
import
org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessageSerializer;
import
org.apache.ignite.internal.processors.query.schema.message.SchemaProposeDiscoveryMessage;
import
org.apache.ignite.internal.processors.query.schema.message.SchemaProposeDiscoveryMessageSerializer;
+import
org.apache.ignite.internal.processors.query.schema.operation.SchemaAddQueryEntityOperation;
+import
org.apache.ignite.internal.processors.query.schema.operation.SchemaAddQueryEntityOperationMarshallableSerializer;
+import
org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperation;
+import
org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperationSerializer;
+import
org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableDropColumnOperation;
+import
org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableDropColumnOperationSerializer;
+import
org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperation;
+import
org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexCreateOperationMarshallableSerializer;
+import
org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperation;
+import
org.apache.ignite.internal.processors.query.schema.operation.SchemaIndexDropOperationSerializer;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
import
org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider;
@@ -158,6 +170,17 @@ public class DiscoveryMessageFactory implements
MessageFactoryProvider {
/** {@inheritDoc} */
@Override public void registerAll(MessageFactory factory) {
+ factory.register((short)-115, SchemaAlterTableAddColumnOperation::new,
+ new SchemaAlterTableAddColumnOperationSerializer());
+ factory.register((short)-114, SchemaIndexCreateOperation::new,
+ new
SchemaIndexCreateOperationMarshallableSerializer(cstDataMarshall,
cstDataMarshallClsLdr));
+ factory.register((short)-113, SchemaIndexDropOperation::new, new
SchemaIndexDropOperationSerializer());
+ factory.register((short)-112, SchemaAlterTableDropColumnOperation::new,
+ new SchemaAlterTableDropColumnOperationSerializer());
+ factory.register((short)-111, SchemaAddQueryEntityOperation::new,
+ new
SchemaAddQueryEntityOperationMarshallableSerializer(cstDataMarshall,
cstDataMarshallClsLdr));
+ factory.register((short)-110, QueryField::new, new
QueryFieldMarshallableSerializer(cstDataMarshall,
+ cstDataMarshallClsLdr));
factory.register((short)-109, User::new, new UserSerializer());
factory.register((short)-108, UserManagementOperation::new, new
UserManagementOperationSerializer());
factory.register((short)-107, NodeSpecificData::new, new
NodeSpecificDataSerializer());
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryField.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryField.java
index fb490529e24..a1e725df9b5 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryField.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryField.java
@@ -18,35 +18,53 @@
package org.apache.ignite.internal.processors.query;
import java.io.Serializable;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.plugin.extensions.communication.MarshallableMessage;
/**
* Query field metadata.
*/
-public class QueryField implements Serializable {
+public class QueryField implements Serializable, MarshallableMessage {
/** */
private static final long serialVersionUID = 0L;
/** Field name. */
- private final String name;
+ @Order(0)
+ String name;
/** Alias. */
- private final String alias;
+ @Order(1)
+ String alias;
/** Class name for this field's values. */
- private final String typeName;
+ @Order(2)
+ String typeName;
/** Nullable flag. */
- private final boolean nullable;
+ @Order(3)
+ boolean nullable;
/** Default value. */
- private final Object dfltValue;
+ private Object dfltVal;
+
+ /** Serialized form of 'default value'. */
+ @Order(4)
+ transient byte[] dfltValBytes;
/** Precision. */
- private final int precision;
+ @Order(5)
+ int precision;
/** Scale. */
- private final int scale;
+ @Order(6)
+ int scale;
+
+ /** */
+ public QueryField() { }
/**
* @param name Field name.
@@ -61,22 +79,22 @@ public class QueryField implements Serializable {
* @param name Field name.
* @param typeName Class name for this field's values.
* @param nullable Nullable flag.
- * @param dfltValue Default value.
+ * @param dfltVal Default value.
*/
- public QueryField(String name, String typeName, boolean nullable, Object
dfltValue) {
- this(name, typeName, nullable, dfltValue, -1, -1);
+ public QueryField(String name, String typeName, boolean nullable, Object
dfltVal) {
+ this(name, typeName, nullable, dfltVal, -1, -1);
}
/**
* @param name Field name.
* @param typeName Class name for this field's values.
* @param nullable Nullable flag.
- * @param dfltValue Default value.
+ * @param dfltVal Default value.
* @param precision Precision.
* @param scale Scale.
*/
- public QueryField(String name, String typeName, boolean nullable, Object
dfltValue, int precision, int scale) {
- this(name, typeName, null, nullable, dfltValue, precision, scale);
+ public QueryField(String name, String typeName, boolean nullable, Object
dfltVal, int precision, int scale) {
+ this(name, typeName, null, nullable, dfltVal, precision, scale);
}
/**
@@ -84,16 +102,16 @@ public class QueryField implements Serializable {
* @param typeName Class name for this field's values.
* @param alias Alias.
* @param nullable Nullable flag.
- * @param dfltValue Default value.
+ * @param dfltVal Default value.
* @param precision Precision.
* @param scale Scale.
*/
- public QueryField(String name, String typeName, String alias, boolean
nullable, Object dfltValue, int precision, int scale) {
+ public QueryField(String name, String typeName, String alias, boolean
nullable, Object dfltVal, int precision, int scale) {
this.name = name;
this.typeName = typeName;
this.alias = alias;
this.nullable = nullable;
- this.dfltValue = dfltValue;
+ this.dfltVal = dfltVal;
this.precision = precision;
this.scale = scale;
}
@@ -130,7 +148,7 @@ public class QueryField implements Serializable {
* @return Default value.
*/
public Object defaultValue() {
- return dfltValue;
+ return dfltVal;
}
/**
@@ -147,8 +165,28 @@ public class QueryField implements Serializable {
return scale;
}
+ /** {@inheritDoc} */
+ @Override public void prepareMarshal(Marshaller marsh) throws
IgniteCheckedException {
+ if (dfltVal != null)
+ dfltValBytes = U.marshal(marsh, dfltVal);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void finishUnmarshal(Marshaller marsh, ClassLoader
clsLdr) throws IgniteCheckedException {
+ if (dfltValBytes != null) {
+ dfltVal = U.unmarshal(marsh, dfltValBytes, clsLdr);
+
+ dfltValBytes = null;
+ }
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(QueryField.class, this);
}
+
+ /** {@inheritDoc} */
+ @Override public short directType() {
+ return -110;
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
index d4b7ef01a44..34367a1d4f3 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
@@ -17,17 +17,13 @@
package org.apache.ignite.internal.processors.query.schema.message;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
import
org.apache.ignite.internal.processors.query.schema.SchemaOperationException;
import
org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractOperation;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteUuid;
-import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.plugin.extensions.communication.Message;
import org.jetbrains.annotations.Nullable;
@@ -44,22 +40,16 @@ public abstract class SchemaAbstractDiscoveryMessage
implements DiscoveryCustomM
/** Operation. */
@GridToStringInclude
- private SchemaAbstractOperation op;
-
- /**
- * Operation bytes. Serialized reprezentation of schema operation.
- * TODO Should be removed in IGNITE-27559
- */
- @Order(value = 1, method = "operationBytes")
- byte[] opBytes;
+ @Order(1)
+ SchemaAbstractOperation op;
/** Error message. */
@Order(2)
- String errMsg;
+ transient String errMsg;
/** Error code. */
@Order(3)
- int errCode;
+ transient int errCode;
/** Error. */
SchemaOperationException err;
@@ -92,31 +82,7 @@ public abstract class SchemaAbstractDiscoveryMessage
implements DiscoveryCustomM
* @return Operation.
*/
public SchemaAbstractOperation operation() {
- try {
- return op != null ? op : U.unmarshal(Marshallers.jdk(), opBytes,
null);
- }
- catch (IgniteCheckedException e) {
- throw new IgniteException("Failed to unmarshal schema operation",
e);
- }
- }
-
- /**
- * @return Operation bytes.
- */
- public byte[] operationBytes() {
- try {
- return opBytes != null ? opBytes : U.marshal(Marshallers.jdk(),
op);
- }
- catch (IgniteCheckedException e) {
- throw new IgniteException("Failed to marshal schema operation", e);
- }
- }
-
- /**
- * @param opBytes Operation bytes.
- */
- public void operationBytes(byte[] opBytes) {
- this.opBytes = opBytes;
+ return op;
}
/**
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractAlterTableOperation.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractAlterTableOperation.java
deleted file mode 100644
index a33bc082365..00000000000
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractAlterTableOperation.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.schema.operation;
-
-import java.util.UUID;
-
-/**
- * Parent class for ALTER TABLE command variants.
- */
-public class SchemaAbstractAlterTableOperation extends SchemaAbstractOperation
{
- /** */
- private static final long serialVersionUID = 0L;
-
- /**
- * Constructor.
- *
- * @param opId Operation ID.
- * @param cacheName Cache name.
- * @param schemaName Schema name.
- */
- public SchemaAbstractAlterTableOperation(UUID opId, String cacheName,
String schemaName) {
- super(opId, cacheName, schemaName);
- }
-}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractOperation.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractOperation.java
index c5499bb6785..5264fbe2c6a 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractOperation.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractOperation.java
@@ -19,23 +19,31 @@ package
org.apache.ignite.internal.processors.query.schema.operation;
import java.io.Serializable;
import java.util.UUID;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.plugin.extensions.communication.Message;
/**
* Abstract operation on schema.
*/
-public abstract class SchemaAbstractOperation implements Serializable {
+public abstract class SchemaAbstractOperation implements Serializable, Message
{
/** */
private static final long serialVersionUID = 0L;
/** Operation ID. */
- private final UUID opId;
+ @Order(0)
+ UUID opId;
/** Cache name. */
- private final String cacheName;
+ @Order(1)
+ String cacheName;
/** Schema name. */
- private final String schemaName;
+ @Order(2)
+ String schemaName;
+
+ /** */
+ protected SchemaAbstractOperation() {}
/**
* Constructor.
@@ -43,7 +51,7 @@ public abstract class SchemaAbstractOperation implements
Serializable {
* @param opId Operation ID.
* @param schemaName Schema name.
*/
- public SchemaAbstractOperation(UUID opId, String cacheName, String
schemaName) {
+ protected SchemaAbstractOperation(UUID opId, String cacheName, String
schemaName) {
this.opId = opId;
this.cacheName = cacheName;
this.schemaName = schemaName;
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAddQueryEntityOperation.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAddQueryEntityOperation.java
index feace59166d..0e5610d8e32 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAddQueryEntityOperation.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAddQueryEntityOperation.java
@@ -19,23 +19,37 @@ package
org.apache.ignite.internal.processors.query.schema.operation;
import java.util.Collection;
import java.util.UUID;
+import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cache.QueryEntity;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.plugin.extensions.communication.MarshallableMessage;
/**
* Enabling indexing on cache operation.
*/
-public class SchemaAddQueryEntityOperation extends SchemaAbstractOperation {
+public class SchemaAddQueryEntityOperation extends SchemaAbstractOperation
implements MarshallableMessage {
/** */
private static final long serialVersionUID = 0L;
/** */
- private final Collection<QueryEntity> entities;
+ private Collection<QueryEntity> entities;
+
+ /** Serialized form of query entities. */
+ @Order(0)
+ transient byte[] qryEntitiesBytes;
+
+ /** */
+ @Order(1)
+ int qryParallelism;
/** */
- private final int qryParallelism;
+ @Order(2)
+ boolean sqlEscape;
/** */
- private final boolean sqlEscape;
+ public SchemaAddQueryEntityOperation() {}
/**
* @param opId Operation ID.
@@ -79,4 +93,24 @@ public class SchemaAddQueryEntityOperation extends
SchemaAbstractOperation {
public boolean isSqlEscape() {
return sqlEscape;
}
+
+ /** {@inheritDoc} */
+ @Override public void prepareMarshal(Marshaller marsh) throws
IgniteCheckedException {
+ if (entities != null)
+ qryEntitiesBytes = U.marshal(marsh, entities);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void finishUnmarshal(Marshaller marsh, ClassLoader
clsLdr) throws IgniteCheckedException {
+ if (qryEntitiesBytes != null) {
+ entities = U.unmarshal(marsh, qryEntitiesBytes, clsLdr);
+
+ qryEntitiesBytes = null;
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public short directType() {
+ return -111;
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableAddColumnOperation.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableAddColumnOperation.java
index 9bd109fc74f..819d8c7a628 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableAddColumnOperation.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableAddColumnOperation.java
@@ -19,27 +19,32 @@ package
org.apache.ignite.internal.processors.query.schema.operation;
import java.util.List;
import java.util.UUID;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.processors.query.QueryField;
import org.apache.ignite.internal.util.typedef.internal.S;
/**
* Schema index drop operation.
*/
-public class SchemaAlterTableAddColumnOperation extends
SchemaAbstractAlterTableOperation {
+public class SchemaAlterTableAddColumnOperation extends
SchemaAbstractOperation {
/** */
private static final long serialVersionUID = 0L;
/** Target table name. */
- private final String tblName;
+ @Order(0)
+ String tblName;
/** Columns to add. */
- private final List<QueryField> cols;
+ @Order(1)
+ List<QueryField> cols;
/** Ignore operation if target table doesn't exist. */
- private final boolean ifTblExists;
+ @Order(2)
+ boolean ifTblExists;
/** Ignore operation if column exists. */
- private final boolean ifNotExists;
+ @Order(3)
+ boolean ifNotExists;
/**
* Constructor.
@@ -61,6 +66,9 @@ public class SchemaAlterTableAddColumnOperation extends
SchemaAbstractAlterTable
this.ifNotExists = ifNotExists;
}
+ /** */
+ public SchemaAlterTableAddColumnOperation() {}
+
/**
* @return Ignore operation if table doesn't exist.
*/
@@ -93,4 +101,9 @@ public class SchemaAlterTableAddColumnOperation extends
SchemaAbstractAlterTable
@Override public String toString() {
return S.toString(SchemaAlterTableAddColumnOperation.class, this,
"parent", super.toString());
}
+
+ /** {@inheritDoc} */
+ @Override public short directType() {
+ return -115;
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableDropColumnOperation.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableDropColumnOperation.java
index 043754828f4..83da2b300f0 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableDropColumnOperation.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableDropColumnOperation.java
@@ -19,26 +19,31 @@ package
org.apache.ignite.internal.processors.query.schema.operation;
import java.util.List;
import java.util.UUID;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.typedef.internal.S;
/**
* Schema alter table drop column operation.
*/
-public class SchemaAlterTableDropColumnOperation extends
SchemaAbstractAlterTableOperation {
+public class SchemaAlterTableDropColumnOperation extends
SchemaAbstractOperation {
/** */
private static final long serialVersionUID = 0L;
/** Target table name. */
- private final String tblName;
+ @Order(0)
+ String tblName;
/** Columns to drop. */
- private final List<String> cols;
+ @Order(1)
+ List<String> cols;
/** Ignore operation if target table doesn't exist. */
- private final boolean ifTblExists;
+ @Order(2)
+ boolean ifTblExists;
/** Ignore operation if column does not exist. */
- private final boolean ifExists;
+ @Order(3)
+ boolean ifExists;
/**
* Constructor.
@@ -60,6 +65,9 @@ public class SchemaAlterTableDropColumnOperation extends
SchemaAbstractAlterTabl
this.ifExists = ifExists;
}
+ /** */
+ public SchemaAlterTableDropColumnOperation() {}
+
/**
* @return Ignore operation if table doesn't exist.
*/
@@ -92,4 +100,9 @@ public class SchemaAlterTableDropColumnOperation extends
SchemaAbstractAlterTabl
@Override public String toString() {
return S.toString(SchemaAlterTableDropColumnOperation.class, this,
"parent", super.toString());
}
+
+ /** {@inheritDoc} */
+ @Override public short directType() {
+ return -112;
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexAbstractOperation.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexAbstractOperation.java
index 31badd048b3..2cec795c3a8 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexAbstractOperation.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexAbstractOperation.java
@@ -23,6 +23,9 @@ import java.util.UUID;
* Schema index abstract operation.
*/
public abstract class SchemaIndexAbstractOperation extends
SchemaAbstractOperation {
+ /** */
+ protected SchemaIndexAbstractOperation() {}
+
/**
* Constructor.
*
@@ -30,7 +33,7 @@ public abstract class SchemaIndexAbstractOperation extends
SchemaAbstractOperati
* @param cacheName Cache name.
* @param schemaName Schema name.
*/
- public SchemaIndexAbstractOperation(UUID opId, String cacheName, String
schemaName) {
+ protected SchemaIndexAbstractOperation(UUID opId, String cacheName, String
schemaName) {
super(opId, cacheName, schemaName);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexCreateOperation.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexCreateOperation.java
index ce9069b1d85..5f97647050b 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexCreateOperation.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexCreateOperation.java
@@ -18,30 +18,45 @@
package org.apache.ignite.internal.processors.query.schema.operation;
import java.util.UUID;
+import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cache.QueryIndex;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.plugin.extensions.communication.MarshallableMessage;
/**
* Schema index create operation.
*/
-public class SchemaIndexCreateOperation extends SchemaIndexAbstractOperation {
+public class SchemaIndexCreateOperation extends SchemaIndexAbstractOperation
implements MarshallableMessage {
/** */
private static final long serialVersionUID = 0L;
/** Table name. */
- private final String tblName;
+ @Order(0)
+ String tblName;
/** Index. */
@GridToStringInclude
- private final QueryIndex idx;
+ private QueryIndex idx;
+
+ /** Serialized form of 'query index'. */
+ @Order(1)
+ transient byte[] qryIdxBytes;
/** Ignore operation if index exists. */
- private final boolean ifNotExists;
+ @Order(2)
+ boolean ifNotExists;
/** Index creation parallelism level */
- private final int parallel;
+ @Order(3)
+ int parallel;
+
+ /** */
+ public SchemaIndexCreateOperation() {}
/**
* Constructor.
@@ -99,8 +114,28 @@ public class SchemaIndexCreateOperation extends
SchemaIndexAbstractOperation {
return parallel;
}
+ /** {@inheritDoc} */
+ @Override public void prepareMarshal(Marshaller marsh) throws
IgniteCheckedException {
+ if (idx != null)
+ qryIdxBytes = U.marshal(marsh, idx);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void finishUnmarshal(Marshaller marsh, ClassLoader
clsLdr) throws IgniteCheckedException {
+ if (qryIdxBytes != null) {
+ idx = U.unmarshal(marsh, qryIdxBytes, clsLdr);
+
+ qryIdxBytes = null;
+ }
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(SchemaIndexCreateOperation.class, this, "parent",
super.toString());
}
+
+ /** {@inheritDoc} */
+ @Override public short directType() {
+ return -114;
+ }
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexDropOperation.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexDropOperation.java
index 5573bb19e45..09e396efded 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexDropOperation.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexDropOperation.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.processors.query.schema.operation;
import java.util.UUID;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.typedef.internal.S;
/**
@@ -28,10 +29,15 @@ public class SchemaIndexDropOperation extends
SchemaIndexAbstractOperation {
private static final long serialVersionUID = 0L;
/** Index name. */
- private final String idxName;
+ @Order(0)
+ String idxName;
/** Ignore operation if index doesn't exist. */
- private final boolean ifExists;
+ @Order(1)
+ boolean ifExists;
+
+ /** */
+ public SchemaIndexDropOperation() {}
/**
* Constructor.
@@ -65,4 +71,9 @@ public class SchemaIndexDropOperation extends
SchemaIndexAbstractOperation {
@Override public String toString() {
return S.toString(SchemaIndexDropOperation.class, this, "parent",
super.toString());
}
+
+ /** {@inheritDoc} */
+ @Override public short directType() {
+ return -113;
+ }
}
diff --git a/modules/core/src/main/resources/META-INF/classnames.properties
b/modules/core/src/main/resources/META-INF/classnames.properties
index 501daa170d1..5f22afc2a72 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -1755,7 +1755,6 @@
org.apache.ignite.internal.processors.query.schema.message.SchemaAbstractDiscove
org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessage
org.apache.ignite.internal.processors.query.schema.message.SchemaOperationStatusMessage
org.apache.ignite.internal.processors.query.schema.message.SchemaProposeDiscoveryMessage
-org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractAlterTableOperation
org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractOperation
org.apache.ignite.internal.processors.query.schema.operation.SchemaAddQueryEntityOperation
org.apache.ignite.internal.processors.query.schema.operation.SchemaAlterTableAddColumnOperation