This is an automated email from the ASF dual-hosted git repository.

amashenkov pushed a commit to branch ignite-21732
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit 73209f0a8cd5dd882ba87883f993b304a78dad3f
Author: amashenkov <andrey.mashen...@gmail.com>
AuthorDate: Tue Apr 30 13:14:26 2024 +0300

    wip.
---
 ...pl.java => ProjectedTableRowConverterImpl.java} | 53 +++++-------------
 .../engine/exec/TableRowConverterFactoryImpl.java  |  6 +--
 .../sql/engine/exec/TableRowConverterImpl.java     | 62 +++++-----------------
 .../sql/engine/exec/TableRowConverterSelfTest.java |  9 +---
 4 files changed, 28 insertions(+), 102 deletions(-)

diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterImpl.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ProjectedTableRowConverterImpl.java
similarity index 62%
copy from 
modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterImpl.java
copy to 
modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ProjectedTableRowConverterImpl.java
index 288e5e4e1c..a136b9de3c 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterImpl.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ProjectedTableRowConverterImpl.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.sql.engine.exec;
 import java.util.BitSet;
 import org.apache.ignite.internal.lang.InternalTuple;
 import org.apache.ignite.internal.schema.BinaryRow;
-import org.apache.ignite.internal.schema.BinaryRowEx;
 import org.apache.ignite.internal.schema.BinaryTuple;
 import org.apache.ignite.internal.schema.BinaryTupleSchema;
 import org.apache.ignite.internal.schema.Column;
@@ -28,75 +27,48 @@ import org.apache.ignite.internal.schema.SchemaDescriptor;
 import org.apache.ignite.internal.schema.SchemaRegistry;
 import 
org.apache.ignite.internal.sql.engine.util.FieldDeserializingProjectedTuple;
 import org.apache.ignite.internal.sql.engine.util.FormatAwareProjectedTuple;
-import org.jetbrains.annotations.Nullable;
 
 /**
  * Converts rows to execution engine representation.
  */
-public class TableRowConverterImpl implements TableRowConverter {
-
-    private final SchemaRegistry schemaRegistry;
-
-    private final SchemaDescriptor schemaDescriptor;
-
-    private final BinaryTupleSchema fullTupleSchema;
-
+public class ProjectedTableRowConverterImpl extends TableRowConverterImpl {
     /**
      * Mapping of required columns to their indexes in physical schema.
      */
     private final int[] requiredColumnsMapping;
 
-    private final boolean skipTrimming;
+    private final BinaryTupleSchema fullTupleSchema;
 
     /** Constructor. */
-    TableRowConverterImpl(
+    ProjectedTableRowConverterImpl(
             SchemaRegistry schemaRegistry,
             BinaryTupleSchema fullTupleSchema,
             SchemaDescriptor schemaDescriptor,
-            @Nullable BitSet requiredColumns
+            BitSet requiredColumns
     ) {
-        this.schemaRegistry = schemaRegistry;
-        this.schemaDescriptor = schemaDescriptor;
-        this.fullTupleSchema = fullTupleSchema;
+        super(schemaRegistry, schemaDescriptor);
 
-        this.skipTrimming = requiredColumns == null;
+        this.fullTupleSchema = fullTupleSchema;
 
-        int size = requiredColumns == null
-                ? schemaDescriptor.length()
-                : requiredColumns.cardinality();
+        int size = requiredColumns.cardinality();
 
         requiredColumnsMapping = new int[size];
 
         int requiredIndex = 0;
         for (Column column : schemaDescriptor.columns()) {
-            if (requiredColumns == null || 
requiredColumns.get(column.positionInRow())) {
+            if (requiredColumns.get(column.positionInRow())) {
                 requiredColumnsMapping[requiredIndex++] = 
column.positionInRow();
             }
         }
     }
 
-    /** {@inheritDoc} */
     @Override
-    public <RowT> BinaryRowEx toBinaryRow(ExecutionContext<RowT> ectx, RowT 
row, boolean key) {
-        BinaryTuple binaryTuple = ectx.rowHandler().toBinaryTuple(row);
-
-        return SqlOutputBinaryRow.newRow(schemaDescriptor, key, binaryTuple);
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <RowT> RowT toRow(
-            ExecutionContext<RowT> ectx,
-            BinaryRow tableRow,
-            RowHandler.RowFactory<RowT> factory
-    ) {
+    protected InternalTuple asInternalTuple(BinaryRow tableRow) {
         InternalTuple tuple;
         if (tableRow.schemaVersion() == schemaDescriptor.version()) {
-            InternalTuple tableTuple = new 
BinaryTuple(schemaDescriptor.length(), tableRow.tupleSlice());
+            BinaryTuple tableTuple = new 
BinaryTuple(schemaDescriptor.length(), tableRow.tupleSlice());
 
-            tuple = skipTrimming
-                    ? tableTuple
-                    : new FormatAwareProjectedTuple(tableTuple, 
requiredColumnsMapping);
+            tuple = new FormatAwareProjectedTuple(tableTuple, 
requiredColumnsMapping);
         } else {
             InternalTuple tableTuple = schemaRegistry.resolve(tableRow, 
schemaDescriptor);
 
@@ -106,7 +78,6 @@ public class TableRowConverterImpl implements 
TableRowConverter {
                     requiredColumnsMapping
             );
         }
-
-        return factory.create(tuple);
+        return tuple;
     }
 }
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterFactoryImpl.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterFactoryImpl.java
index fa9e932f32..8ce0c7ab28 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterFactoryImpl.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterFactoryImpl.java
@@ -54,9 +54,7 @@ public class TableRowConverterFactoryImpl implements 
TableRowConverterFactory {
 
         fullRowConverter = new TableRowConverterImpl(
                 schemaRegistry,
-                fullTupleSchema,
-                schemaDescriptor,
-                null
+                schemaDescriptor
         );
     }
 
@@ -66,7 +64,7 @@ public class TableRowConverterFactoryImpl implements 
TableRowConverterFactory {
             return fullRowConverter;
         }
 
-        return new TableRowConverterImpl(
+        return new ProjectedTableRowConverterImpl(
                 schemaRegistry,
                 fullTupleSchema,
                 schemaDescriptor,
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterImpl.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterImpl.java
index 288e5e4e1c..c2d7178f8b 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterImpl.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterImpl.java
@@ -17,62 +17,29 @@
 
 package org.apache.ignite.internal.sql.engine.exec;
 
-import java.util.BitSet;
 import org.apache.ignite.internal.lang.InternalTuple;
 import org.apache.ignite.internal.schema.BinaryRow;
 import org.apache.ignite.internal.schema.BinaryRowEx;
 import org.apache.ignite.internal.schema.BinaryTuple;
-import org.apache.ignite.internal.schema.BinaryTupleSchema;
-import org.apache.ignite.internal.schema.Column;
 import org.apache.ignite.internal.schema.SchemaDescriptor;
 import org.apache.ignite.internal.schema.SchemaRegistry;
-import 
org.apache.ignite.internal.sql.engine.util.FieldDeserializingProjectedTuple;
-import org.apache.ignite.internal.sql.engine.util.FormatAwareProjectedTuple;
-import org.jetbrains.annotations.Nullable;
 
 /**
  * Converts rows to execution engine representation.
  */
 public class TableRowConverterImpl implements TableRowConverter {
 
-    private final SchemaRegistry schemaRegistry;
+    protected final SchemaRegistry schemaRegistry;
 
-    private final SchemaDescriptor schemaDescriptor;
-
-    private final BinaryTupleSchema fullTupleSchema;
-
-    /**
-     * Mapping of required columns to their indexes in physical schema.
-     */
-    private final int[] requiredColumnsMapping;
-
-    private final boolean skipTrimming;
+    protected final SchemaDescriptor schemaDescriptor;
 
     /** Constructor. */
     TableRowConverterImpl(
             SchemaRegistry schemaRegistry,
-            BinaryTupleSchema fullTupleSchema,
-            SchemaDescriptor schemaDescriptor,
-            @Nullable BitSet requiredColumns
+            SchemaDescriptor schemaDescriptor
     ) {
         this.schemaRegistry = schemaRegistry;
         this.schemaDescriptor = schemaDescriptor;
-        this.fullTupleSchema = fullTupleSchema;
-
-        this.skipTrimming = requiredColumns == null;
-
-        int size = requiredColumns == null
-                ? schemaDescriptor.length()
-                : requiredColumns.cardinality();
-
-        requiredColumnsMapping = new int[size];
-
-        int requiredIndex = 0;
-        for (Column column : schemaDescriptor.columns()) {
-            if (requiredColumns == null || 
requiredColumns.get(column.positionInRow())) {
-                requiredColumnsMapping[requiredIndex++] = 
column.positionInRow();
-            }
-        }
     }
 
     /** {@inheritDoc} */
@@ -90,23 +57,18 @@ public class TableRowConverterImpl implements 
TableRowConverter {
             BinaryRow tableRow,
             RowHandler.RowFactory<RowT> factory
     ) {
+        InternalTuple tuple = asInternalTuple(tableRow);
+
+        return factory.create(tuple);
+    }
+
+    protected InternalTuple asInternalTuple(BinaryRow tableRow) {
         InternalTuple tuple;
         if (tableRow.schemaVersion() == schemaDescriptor.version()) {
-            InternalTuple tableTuple = new 
BinaryTuple(schemaDescriptor.length(), tableRow.tupleSlice());
-
-            tuple = skipTrimming
-                    ? tableTuple
-                    : new FormatAwareProjectedTuple(tableTuple, 
requiredColumnsMapping);
+            tuple = new BinaryTuple(schemaDescriptor.length(), 
tableRow.tupleSlice());
         } else {
-            InternalTuple tableTuple = schemaRegistry.resolve(tableRow, 
schemaDescriptor);
-
-            tuple = new FieldDeserializingProjectedTuple(
-                    fullTupleSchema,
-                    tableTuple,
-                    requiredColumnsMapping
-            );
+            tuple= schemaRegistry.resolve(tableRow, schemaDescriptor);
         }
-
-        return factory.create(tuple);
+        return tuple;
     }
 }
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterSelfTest.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterSelfTest.java
index 4715f4b3f9..966da6efad 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterSelfTest.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/TableRowConverterSelfTest.java
@@ -33,7 +33,6 @@ import org.apache.ignite.internal.schema.BinaryRow;
 import org.apache.ignite.internal.schema.BinaryRowEx;
 import org.apache.ignite.internal.schema.BinaryRowImpl;
 import org.apache.ignite.internal.schema.BinaryTuple;
-import org.apache.ignite.internal.schema.BinaryTupleSchema;
 import org.apache.ignite.internal.schema.Column;
 import org.apache.ignite.internal.schema.SchemaDescriptor;
 import org.apache.ignite.internal.schema.SchemaRegistry;
@@ -94,9 +93,7 @@ public class TableRowConverterSelfTest extends 
BaseIgniteAbstractTest {
 
         TableRowConverterImpl converter = new TableRowConverterImpl(
                 schemaRegistry,
-                BinaryTupleSchema.createRowSchema(schema),
-                schema,
-                null
+                schema
         );
 
         RowWrapper row = converter.toRow(executionContext, binaryRow, 
rowFactory);
@@ -134,9 +131,7 @@ public class TableRowConverterSelfTest extends 
BaseIgniteAbstractTest {
 
         TableRowConverterImpl converter = new TableRowConverterImpl(
                 schemaRegistry,
-                BinaryTupleSchema.createRowSchema(schema),
-                schema,
-                null
+                schema
         );
         BinaryRowEx convertedRow = converter.toBinaryRow(executionContext, 
wrapper, false);
 

Reply via email to