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

Reply via email to