IGNITE-15362 Integration tests fixes. (#354)

diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITLiveSchemaChangeKVViewTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITLiveSchemaChangeKVViewTest.java
index 17c35cd..d10db1b 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITLiveSchemaChangeKVViewTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITLiveSchemaChangeKVViewTest.java
@@ -19,14 +19,13 @@
 
 import java.util.List;
 import org.apache.ignite.app.Ignite;
-import org.apache.ignite.internal.schema.SchemaAware;
 import org.apache.ignite.internal.schema.SchemaDescriptor;
+import org.apache.ignite.internal.table.SchemaMismatchException;
 import org.apache.ignite.internal.table.TableImpl;
 import org.apache.ignite.schema.SchemaMode;
 import org.apache.ignite.table.KeyValueBinaryView;
 import org.apache.ignite.table.Table;
 import org.apache.ignite.table.Tuple;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -36,7 +35,6 @@
 /**
  * Live schema tests for KV View.
  */
-@Disabled("https://issues.apache.org/jira/browse/IGNITE-14581")
 class ITLiveSchemaChangeKVViewTest extends AbstractSchemaChangeTest {
     /**
      * Check exception for unknown column when STRICT_SCHEMA is enabled.
@@ -47,9 +45,9 @@
 
         createTable(grid);
 
-        KeyValueBinaryView view = grid.get(1).tables().table(TABLE).kvView();
+        KeyValueBinaryView view = grid.get(0).tables().table(TABLE).kvView();
 
-        assertThrows(IllegalArgumentException.class, () -> Tuple.create().set("key", 1L).set("unknownColumn", 10));
+        assertThrows(SchemaMismatchException.class, () -> view.put(Tuple.create().set("key", 1L), Tuple.create().set("unknownColumn", 10)));
     }
 
     /**
@@ -86,7 +84,7 @@
 
         createTable(grid);
 
-        Table tbl = grid.get(1).tables().table(TABLE);
+        Table tbl = grid.get(0).tables().table(TABLE);
 
         ((TableImpl)tbl).schemaType(SchemaMode.LIVE_SCHEMA);
 
@@ -113,7 +111,7 @@
         assertEquals("111", newRes.value("valStrNew"));
         assertEquals(Integer.valueOf(333), newRes.value("valIntNew"));
 
-        assertThrows(IllegalArgumentException.class, () -> Tuple.create().set("key", 1L).set("unknownColumn", 10));
+        assertThrows(SchemaMismatchException.class, () -> kvBinaryView.put(Tuple.create().set("key", 1L), Tuple.create().set("unknownColumn", 10)));
     }
 
     /**
@@ -187,7 +185,7 @@
 
         createTable(grid);
 
-        Table tbl = grid.get(1).tables().table(TABLE);
+        Table tbl = grid.get(0).tables().table(TABLE);
 
         ((TableImpl)tbl).schemaType(SchemaMode.LIVE_SCHEMA);
 
@@ -207,9 +205,7 @@
         assertEquals("111", res.value("valStrNew"));
         assertEquals(Integer.valueOf(333), res.value("valIntNew"));
 
-        Tuple newVerBuilder = Tuple.create();
-
-        SchemaDescriptor schema = ((SchemaAware)newVerBuilder).schema();
+        SchemaDescriptor schema = ((TableImpl)tbl).schemaView().schema();
 
         assertTrue(schema.columnNames().contains("valStrNew"));
         assertTrue(schema.columnNames().contains("valIntNew"));
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITLiveSchemaChangeTableTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITLiveSchemaChangeTableTest.java
index 2ca4904..8b7641d 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITLiveSchemaChangeTableTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITLiveSchemaChangeTableTest.java
@@ -20,16 +20,15 @@
 import java.util.List;
 import java.util.UUID;
 import org.apache.ignite.app.Ignite;
-import org.apache.ignite.internal.schema.SchemaAware;
+import org.apache.ignite.internal.schema.InvalidTypeException;
 import org.apache.ignite.internal.schema.SchemaDescriptor;
+import org.apache.ignite.internal.table.SchemaMismatchException;
 import org.apache.ignite.internal.table.TableImpl;
 import org.apache.ignite.schema.SchemaMode;
 import org.apache.ignite.table.Table;
 import org.apache.ignite.table.Tuple;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -38,7 +37,6 @@
 /**
  * Live schema tests.
  */
-@Disabled("https://issues.apache.org/jira/browse/IGNITE-14581")
 class ITLiveSchemaChangeTableTest extends AbstractSchemaChangeTest {
     /**
      * Check exception for unknown column when STRICT_SCHEMA is enabled.
@@ -49,9 +47,9 @@
 
         createTable(grid);
 
-        Table tbl = grid.get(1).tables().table(TABLE);
+        Table tbl = grid.get(0).tables().table(TABLE);
 
-        assertThrows(IllegalArgumentException.class, () -> Tuple.create().set("key", 1L).set("unknownColumn", 10));
+        assertThrows(SchemaMismatchException.class, () -> tbl.insert(Tuple.create().set("key", 1L).set("unknownColumn", 10)));
     }
 
     /**
@@ -63,7 +61,7 @@
 
         createTable(grid);
 
-        Table tbl = grid.get(1).tables().table(TABLE);
+        Table tbl = grid.get(0).tables().table(TABLE);
 
         ((TableImpl)tbl).schemaType(SchemaMode.LIVE_SCHEMA);
 
@@ -71,7 +69,7 @@
 
         tbl.insert(row);
 
-        Tuple res = tbl.get(row);
+        Tuple res = tbl.get(Tuple.create().set("key", 1L));
 
         assertEquals("111", res.value("valStrNew"));
         assertEquals(Integer.valueOf(333), res.value("valIntNew"));
@@ -86,7 +84,7 @@
 
         createTable(grid);
 
-        Table tbl = grid.get(1).tables().table(TABLE);
+        Table tbl = grid.get(0).tables().table(TABLE);
 
         Tuple oldSchemaTuple = Tuple.create().set("key", 32L).set("valInt", 111).set("valStr", "str");
 
@@ -98,7 +96,7 @@
 
         tbl.upsert(upsertOldSchemaTuple);
 
-        Tuple oldSchemaRes = tbl.get(upsertOldSchemaTuple);
+        Tuple oldSchemaRes = tbl.get(Tuple.create().set("key", 32L));
 
         assertEquals("111", oldSchemaRes.value("valStrNew"));
         assertEquals(Integer.valueOf(333), oldSchemaRes.value("valIntNew"));
@@ -113,7 +111,7 @@
 
         createTable(grid);
 
-        Table tbl = grid.get(1).tables().table(TABLE);
+        Table tbl = grid.get(0).tables().table(TABLE);
 
         Tuple oldSchemaTuple = Tuple.create().set("key", 32L).set("valInt", 111).set("valStr", "str");
 
@@ -124,14 +122,12 @@
         tbl.insert(row);
         tbl.insert(oldSchemaTuple);
 
-        Tuple res = tbl.get(row);
+        Tuple res = tbl.get(Tuple.create().set("key", 1L));
 
         assertEquals("111", res.value("valStrNew"));
         assertEquals(Integer.valueOf(333), res.value("valIntNew"));
 
-        Tuple newVerBuilder = Tuple.create();
-
-        SchemaDescriptor schema = ((SchemaAware)newVerBuilder).schema();
+        SchemaDescriptor schema = ((TableImpl)tbl).schemaView().schema();
 
         assertTrue(schema.columnNames().contains("valStrNew"));
         assertTrue(schema.columnNames().contains("valIntNew"));
@@ -146,7 +142,7 @@
 
         createTable(grid);
 
-        Table tbl = grid.get(1).tables().table(TABLE);
+        Table tbl = grid.get(0).tables().table(TABLE);
 
         ((TableImpl)tbl).schemaType(SchemaMode.LIVE_SCHEMA);
 
@@ -154,7 +150,7 @@
 
         tbl.insert(val);
 
-        Tuple res = tbl.get(val);
+        Tuple res = tbl.get(Tuple.create().set("key", 1L));
         assertEquals("111", res.value("valStrNew"));
         assertEquals(Integer.valueOf(333), res.value("valIntNew"));
 
@@ -164,12 +160,12 @@
 
         tbl.insert(anotherKey);
 
-        Tuple newRes = tbl.get(anotherKey);
+        Tuple newRes = tbl.get(Tuple.create().set("key", 2L));
 
         assertEquals("111", newRes.value("valStrNew"));
         assertEquals(Integer.valueOf(333), newRes.value("valIntNew"));
 
-        assertThrows(IllegalArgumentException.class, () -> Tuple.create().set("key", 1L).set("unknownColumn", 10));
+        assertThrows(SchemaMismatchException.class, () -> tbl.insert(Tuple.create().set("key", 1L).set("unknownColumn", 10)));
     }
 
     /**
@@ -181,7 +177,7 @@
 
         createTable(grid);
 
-        Table tbl = grid.get(1).tables().table(TABLE);
+        Table tbl = grid.get(0).tables().table(TABLE);
 
         ((TableImpl)tbl).schemaType(SchemaMode.LIVE_SCHEMA);
 
@@ -193,7 +189,7 @@
         tbl.upsert(upsertOldSchemaVal);
         tbl.upsert(secondUpsertOldSchemaVal);
 
-        Tuple oldSchemaRes = tbl.get(secondUpsertOldSchemaVal);
+        Tuple oldSchemaRes = tbl.get(Tuple.create().set("key", 32L));
 
         assertEquals("111", oldSchemaRes.value("valStrNew"));
         assertEquals(Integer.valueOf(333), oldSchemaRes.value("valIntNew"));
@@ -209,7 +205,7 @@
 
         createTable(grid);
 
-        Table tbl = grid.get(1).tables().table(TABLE);
+        Table tbl = grid.get(0).tables().table(TABLE);
 
         ((TableImpl)tbl).schemaType(SchemaMode.LIVE_SCHEMA);
 
@@ -228,7 +224,7 @@
 
         tbl.insert(row);
 
-        Tuple res = tbl.get(row);
+        Tuple res = tbl.get(Tuple.create().set("key", 1L));
 
         assertEquals(Byte.valueOf((byte)10), res.value("valByteNew"));
         assertEquals(Short.valueOf((short)48), res.value("valShortNew"));
@@ -253,8 +249,7 @@
         assertNull(nullRes.value("valFloatNew"));
         assertNull(nullRes.value("valDoubleNew"));
         assertNull(nullRes.value("valUUIDNew"));
-
-        assertEquals("", nullRes.value("valStrNew"));
+        assertNull(nullRes.value("valStrNew"));
     }
 
     /**
@@ -266,7 +261,7 @@
 
         createTable(grid);
 
-        Table tbl = grid.get(1).tables().table(TABLE);
+        Table tbl = grid.get(0).tables().table(TABLE);
 
         ((TableImpl)tbl).schemaType(SchemaMode.LIVE_SCHEMA);
 
@@ -285,9 +280,7 @@
 
         tbl.insert(row);
 
-        Tuple newVerBuilder = Tuple.create();
-
-        SchemaDescriptor schema = ((SchemaAware)newVerBuilder).schema();
+        SchemaDescriptor schema = ((TableImpl)tbl).schemaView().schema();
 
         assertEquals(2, schema.version());
     }
@@ -301,20 +294,16 @@
 
         createTable(grid);
 
-        Table tbl = grid.get(1).tables().table(TABLE);
+        Table tbl = grid.get(0).tables().table(TABLE);
 
         ((TableImpl)tbl).schemaType(SchemaMode.LIVE_SCHEMA);
 
-        assertDoesNotThrow(() -> Tuple.create().set("newBrokenColumn", new Object()));
-        assertThrows(UnsupportedOperationException.class, () -> Tuple.create().set("newBrokenColumn", new Object()));
+        Tuple rowWithObject = Tuple.create().set("key", 1L).set("newBrokenColumn", new Object());
 
-        Tuple row = Tuple.create().set("key", 1L).set("valStrNew", null).set("valIntNew", 333);
+        assertThrows(InvalidTypeException.class, () -> tbl.insert(rowWithObject));
 
-        tbl.insert(row);
+        Tuple rowWithNull = Tuple.create().set("key", 1L).set("valStrNew", null).set("valIntNew", 333);
 
-        Tuple res = tbl.get(Tuple.create().set("key", 1L));
-
-        assertThrows(IllegalArgumentException.class, () -> res.value("valStrNew"));
-        assertEquals(Integer.valueOf(333), res.value("valIntNew"));
+        assertThrows(InvalidTypeException.class, () -> tbl.insert(rowWithNull));
     }
 }
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITSchemaChangeKVViewTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITSchemaChangeKVViewTest.java
index 7853459..ad981ff 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITSchemaChangeKVViewTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITSchemaChangeKVViewTest.java
@@ -21,12 +21,12 @@
 import java.util.List;
 import java.util.function.Supplier;
 import org.apache.ignite.app.Ignite;
+import org.apache.ignite.internal.table.SchemaMismatchException;
 import org.apache.ignite.schema.Column;
 import org.apache.ignite.schema.ColumnType;
 import org.apache.ignite.schema.SchemaBuilders;
 import org.apache.ignite.table.KeyValueBinaryView;
 import org.apache.ignite.table.Tuple;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -36,7 +36,6 @@
 /**
  * Ignition interface tests.
  */
-@Disabled("https://issues.apache.org/jira/browse/IGNITE-14581")
 class ITSchemaChangeKVViewTest extends AbstractSchemaChangeTest {
     /**
      * Check add a new column to table schema.
@@ -47,7 +46,7 @@
 
         createTable(grid);
 
-        KeyValueBinaryView kvView = grid.get(1).tables().table(TABLE).kvView();
+        KeyValueBinaryView kvView = grid.get(0).tables().table(TABLE).kvView();
 
         {
             kvView.put(
@@ -66,7 +65,7 @@
             assertThrows(IllegalArgumentException.class, () -> kvView.get(keyTuple).value("valStr"));
 
             // Check tuple of outdated schema.
-            assertThrows(IllegalArgumentException.class, () -> kvView.put(
+            assertThrows(SchemaMismatchException.class, () -> kvView.put(
                 Tuple.create().set("key", 2L),
                 Tuple.create().set("valInt", -222).set("valStr", "str"))
             );
@@ -91,12 +90,12 @@
 
         createTable(grid);
 
-        KeyValueBinaryView kvView = grid.get(1).tables().table(TABLE).kvView();
+        KeyValueBinaryView kvView = grid.get(0).tables().table(TABLE).kvView();
 
         {
             kvView.put(Tuple.create().set("key", 1L), Tuple.create().set("valInt", 111));
 
-            assertThrows(IllegalArgumentException.class, () -> kvView.put(
+            assertThrows(SchemaMismatchException.class, () -> kvView.put(
                 Tuple.create().set("key", 1L),
                 Tuple.create().set("valInt", -111).set("valStrNew", "str"))
             );
@@ -133,12 +132,12 @@
 
         createTable(grid);
 
-        KeyValueBinaryView kvView = grid.get(1).tables().table(TABLE).kvView();
+        KeyValueBinaryView kvView = grid.get(0).tables().table(TABLE).kvView();
 
         {
             kvView.put(Tuple.create().set("key", 1L), Tuple.create().set("valInt", 111));
 
-            assertThrows(IllegalArgumentException.class, () -> kvView.put(
+            assertThrows(SchemaMismatchException.class, () -> kvView.put(
                 Tuple.create().set("key", 2L),
                 Tuple.create().set("valRenamed", 222))
             );
@@ -156,7 +155,7 @@
             assertThrows(IllegalArgumentException.class, () -> kvView.get(keyTuple1).value("valInt"));
 
             // Check tuple of correct schema.
-            assertThrows(IllegalArgumentException.class, () -> kvView.put(
+            assertThrows(SchemaMismatchException.class, () -> kvView.put(
                 Tuple.create().set("key", 2L),
                 Tuple.create().set("valInt", -222))
             );
@@ -184,12 +183,12 @@
 
         final Column column = SchemaBuilders.column("val", ColumnType.string()).asNullable().withDefaultValue("default").build();
 
-        KeyValueBinaryView kvView = grid.get(1).tables().table(TABLE).kvView();
+        KeyValueBinaryView kvView = grid.get(0).tables().table(TABLE).kvView();
 
         {
             kvView.put(Tuple.create().set("key", 1L), Tuple.create().set("valInt", 111));
 
-            assertThrows(IllegalArgumentException.class, () -> kvView.put(
+            assertThrows(SchemaMismatchException.class, () -> kvView.put(
                 Tuple.create().set("key", 2L),
                 Tuple.create().set("val", "I'not exists"))
             );
@@ -214,7 +213,7 @@
             kvView.put(Tuple.create().set("key", 4L),
                 Tuple.create().set("valInt", 444));
 
-            assertThrows(IllegalArgumentException.class, () -> kvView.put(
+            assertThrows(SchemaMismatchException.class, () -> kvView.put(
                 Tuple.create().set("key", 4L),
                 Tuple.create().set("val", "I'm not exist"))
             );
@@ -263,7 +262,7 @@
 
         createTable(grid);
 
-        KeyValueBinaryView kvView = grid.get(1).tables().table(TABLE).kvView();
+        KeyValueBinaryView kvView = grid.get(0).tables().table(TABLE).kvView();
 
         final String colName = "valStr";
 
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITSchemaChangeTableViewTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITSchemaChangeTableViewTest.java
index 924c843..a42b877 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITSchemaChangeTableViewTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ITSchemaChangeTableViewTest.java
@@ -21,12 +21,12 @@
 import java.util.List;
 import java.util.function.Supplier;
 import org.apache.ignite.app.Ignite;
+import org.apache.ignite.internal.table.SchemaMismatchException;
 import org.apache.ignite.schema.Column;
 import org.apache.ignite.schema.ColumnType;
 import org.apache.ignite.schema.SchemaBuilders;
 import org.apache.ignite.table.Table;
 import org.apache.ignite.table.Tuple;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -36,7 +36,6 @@
 /**
  * Ignition interface tests.
  */
-@Disabled("https://issues.apache.org/jira/browse/IGNITE-14581")
 class ITSchemaChangeTableViewTest extends AbstractSchemaChangeTest {
     /**
      * Check add a new column to table schema.
@@ -64,7 +63,7 @@
             assertThrows(IllegalArgumentException.class, () -> tbl.get(keyTuple).value("valStr"));
 
             // Check tuple of outdated schema.
-            assertThrows(IllegalArgumentException.class,
+            assertThrows(SchemaMismatchException.class,
                 () -> tbl.insert(Tuple.create().set("key", 2L).set("valInt", -222).set("valStr", "str"))
             );
 
@@ -93,7 +92,7 @@
         {
             tbl.insert(Tuple.create().set("key", 1L).set("valInt", 111));
 
-            assertThrows(IllegalArgumentException.class,
+            assertThrows(SchemaMismatchException.class,
                 () -> tbl.insert(Tuple.create().set("key", 1L).set("valInt", -111).set("valStrNew", "str"))
             );
         }
@@ -131,7 +130,7 @@
         {
             tbl.insert(Tuple.create().set("key", 1L).set("valInt", 111));
 
-            assertThrows(IllegalArgumentException.class,
+            assertThrows(SchemaMismatchException.class,
                     () -> tbl.insert(Tuple.create().set("key", 2L).set("valRenamed", -222))
             );
         }
@@ -147,7 +146,7 @@
             assertThrows(IllegalArgumentException.class, () -> tbl.get(keyTuple1).value("valInt"));
 
             // Check tuple of outdated schema.
-            assertThrows(IllegalArgumentException.class,
+            assertThrows(SchemaMismatchException.class,
                     () -> tbl.insert(Tuple.create().set("key", 2L).set("valInt", -222))
             );
 
@@ -176,7 +175,7 @@
         {
             tbl.insert(Tuple.create().set("key", 1L).set("valInt", 111));
 
-            assertThrows(IllegalArgumentException.class,
+            assertThrows(SchemaMismatchException.class,
                 () -> tbl.insert(Tuple.create().set("key", 2L).set("val2", -222))
             );
         }
@@ -222,7 +221,7 @@
         {
             tbl.insert(Tuple.create().set("key", 1L).set("valInt", 111));
 
-            assertThrows(IllegalArgumentException.class, () -> tbl.insert(
+            assertThrows(SchemaMismatchException.class, () -> tbl.insert(
                 Tuple.create().set("key", 2L).set("val", "I'not exists"))
             );
         }
@@ -242,7 +241,7 @@
         {
             tbl.insert(Tuple.create().set("key", 4L).set("valInt", 444));
 
-            assertThrows(IllegalArgumentException.class, () -> tbl.insert(
+            assertThrows(SchemaMismatchException.class, () -> tbl.insert(
                 Tuple.create().set("key", 4L).set("val", "I'm not exist"))
             );
         }
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaUtils.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaUtils.java
index b99d0db..7d1e35d 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaUtils.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaUtils.java
@@ -65,7 +65,7 @@
             final ColumnView newColView = newTbl.columns().get(s);
             final ColumnView oldColView = oldTbl.columns().get(s);
 
-            if (oldColView == null) {
+            if (oldColView == null && newColView != null) {
                 final Column newCol = newDesc.column(newColView.name());
 
                 assert !newDesc.isKeyColumn(newCol.schemaIndex());
@@ -75,7 +75,7 @@
 
                 mapper.add(newCol); // New column added.
             }
-            else {
+            else if (newColView != null) {
                 final Column newCol = newDesc.column(newColView.name());
                 final Column oldCol = oldDesc.column(oldColView.name());
 
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverter.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverter.java
index 9b0c5ca..134e0a2 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverter.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverter.java
@@ -463,9 +463,12 @@
 
         for (String key : colsView.namedListKeys()) {
             ColumnView colView = colsView.get(key);
-            Column col = convert(colView);
 
-            columns.put(Integer.valueOf(key), col);
+            if (colView != null) {
+                Column col = convert(colView);
+
+                columns.put(Integer.valueOf(key), col);
+            }
         }
 
         NamedListView<? extends TableIndexView> idxsView = tblView.indices();
diff --git a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
index a9d1720..313cb45 100644
--- a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
+++ b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
@@ -534,7 +534,7 @@
                                             );
 
                                             descriptor.columnMapping(SchemaUtils.columnMapper(
-                                                tablesById.get(tblId).schemaRegistry().schema(currTableView.schemas().size() - 1),
+                                                tablesById.get(tblId).schemaRegistry().schema(currTableView.schemas().size()),
                                                 currTableView,
                                                 descriptor,
                                                 tblCh