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