korlov42 commented on a change in pull request #452:
URL: https://github.com/apache/ignite-3/pull/452#discussion_r751074276



##########
File path: 
modules/schema/src/main/java/org/apache/ignite/internal/schema/Column.java
##########
@@ -178,6 +181,15 @@ public Object defaultValue() {
         return defValSup.get();
     }
 
+    /**
+     * Get no default value flag: {@code true} if column hasn't default value, 
{@code false} - otherwise.
+     *
+     * @return {@code true} if column hasn't default value, {@code false} - 
otherwise.

Review comment:
       I don't quite understand what is actually "no default value" means. 
Could you please clarify? What is difference between an implicit NULL value 
supplier and explicit one?

##########
File path: 
modules/schema/src/test/java/org/apache/ignite/internal/schema/serializer/AbstractSerializerTest.java
##########
@@ -88,14 +88,14 @@ public void columnOrderSerializeTest() {
         AbstractSchemaSerializer assembler = SchemaSerializerImpl.INSTANCE;
 
         Column[] keyCols = {
-            new Column(0, "A", NativeTypes.UUID, false, () -> null),
-            new Column(1, "B", NativeTypes.INT64, false, () -> null),
-            new Column(2, "C", NativeTypes.INT8, false, () -> null),
+            new Column(0, "A", NativeTypes.UUID, false, null),

Review comment:
       Why did you change that?

##########
File path: 
modules/schema/src/test/java/org/apache/ignite/internal/schema/marshaller/RecordMarshallerTest.java
##########
@@ -424,9 +424,9 @@ public void ensureAllTypesChecked() {
                 new Column("primitiveByteCol", INT8, false, () -> (byte) 0x42),
                 new Column("primitiveShortCol", INT16, false, () -> (short) 
0x4242),
                 new Column("primitiveIntCol", INT32, false, () -> 0x42424242),
-                new Column("primitiveFloatCol", FLOAT, false),
-                new Column("primitiveDoubleCol", DOUBLE, false),
-                
+                new Column("primitiveFloatCol", FLOAT, false, () -> 100.100),

Review comment:
       Why did you change that?

##########
File path: 
modules/schema/src/main/java/org/apache/ignite/internal/schema/Column.java
##########
@@ -96,16 +99,16 @@ public Column(
      * @param name        Column name.
      * @param type        An instance of column data type.
      * @param nullable    If {@code false}, null values will not be allowed 
for this column.
-     * @param defValSup   Default value supplier.
+     * @param defValSup   Default value supplier or {@code null} - if there is 
no default value supplier specified.
      */
     public Column(
             int columnOrder,
             String name,
             NativeType type,
             boolean nullable,
-            @NotNull Supplier<Object> defValSup
+            Supplier<Object> defValSup

Review comment:
       I'm not sure if removing annotations here is a good idea. There is 
already a constructor in which a similar parameter is required, so the same 
should be done here.

##########
File path: 
modules/schema/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/Marshaller.java
##########
@@ -215,6 +232,10 @@ public Object readObject(Row reader) throws 
MarshallerException {
         @Override
         public void writeObject(Object obj, RowAssembler writer)
                 throws MarshallerException {
+            if (readOnly) {

Review comment:
       Furthermore the current behaviour will be changed in case the user 
provide a null value supplier explicitly. 

##########
File path: 
modules/schema/src/test/java/org/apache/ignite/internal/schema/SchemaDescriptorTest.java
##########
@@ -63,15 +63,15 @@ public void columnIndexedAccess() {
     @Test
     public void columnOrder() {
         Column[] keyColumns = {
-                new Column(0, "columnA", NativeTypes.INT8, false, () -> null),
-                new Column(1, "columnB", NativeTypes.UUID, false, () -> null),
-                new Column(2, "columnC", NativeTypes.INT32, false, () -> null),
+                new Column(0, "columnA", NativeTypes.INT8, false, null),

Review comment:
       Why did you change that?

##########
File path: 
modules/schema/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/Marshaller.java
##########
@@ -215,6 +232,10 @@ public Object readObject(Row reader) throws 
MarshallerException {
         @Override
         public void writeObject(Object obj, RowAssembler writer)
                 throws MarshallerException {
+            if (readOnly) {

Review comment:
       Why do we need such a limitation? To me the previous behaviour is much 
better, because you got here an exception describing a root cause of the issue 
(setting null to a non-null field). Instead we now got here an abstract "Can't 
assemple row by object".
   
   BTW there is a typo in "assemble".




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to