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

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

commit 87999a1673c4254137e6a1b835d446cbc195da49
Author: amashenkov <[email protected]>
AuthorDate: Thu Jun 13 15:36:11 2024 +0300

    Add system column flag.
---
 .../ignite/internal/sql/engine/schema/ColumnDescriptor.java    |  5 +++++
 .../internal/sql/engine/schema/ColumnDescriptorImpl.java       | 10 ++++++++++
 .../internal/sql/engine/schema/SqlSchemaManagerImpl.java       |  2 ++
 .../org/apache/ignite/internal/sql/engine/util/Commons.java    |  1 +
 .../ignite/internal/sql/engine/framework/TestBuilders.java     |  6 +++---
 5 files changed, 21 insertions(+), 3 deletions(-)

diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/ColumnDescriptor.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/ColumnDescriptor.java
index ff6b2e3fc7..593bf6de01 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/ColumnDescriptor.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/ColumnDescriptor.java
@@ -33,6 +33,11 @@ public interface ColumnDescriptor {
     /** Returns {@code true} if this column should not be expanded in query 
until user explicitly specify it as part of the statement. */
     boolean hidden();
 
+    /** Returns {@code true} if this column should not be stored. */
+    default boolean system() {
+        return false;
+    };
+
     /** Returns the strategy to follow when generating value for column not 
specified in the INSERT statement. */
     DefaultValueStrategy defaultStrategy();
 
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/ColumnDescriptorImpl.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/ColumnDescriptorImpl.java
index 5e5c36e5a4..2a7659a312 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/ColumnDescriptorImpl.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/ColumnDescriptorImpl.java
@@ -32,6 +32,7 @@ public class ColumnDescriptorImpl implements ColumnDescriptor 
{
 
     private final boolean key;
     private final boolean hidden;
+    private final boolean system;
 
     private final String name;
 
@@ -49,6 +50,7 @@ public class ColumnDescriptorImpl implements ColumnDescriptor 
{
      * @param name The name of the column.
      * @param key If {@code true}, this column will be considered as a part of 
PK.
      * @param hidden If {@code true}, this column will not be expanded until 
explicitly mentioned.
+     * @param system If {@code true}, this column will not be stored.
      * @param nullable If {@code true}, this column will be considered as a 
nullable.
      * @param logicalIndex A 0-based index in a schema defined by a user.
      * @param type Type of the value in the underlying storage.
@@ -61,6 +63,7 @@ public class ColumnDescriptorImpl implements ColumnDescriptor 
{
             String name,
             boolean key,
             boolean hidden,
+            boolean system,
             boolean nullable,
             int logicalIndex,
             NativeType type,
@@ -69,6 +72,7 @@ public class ColumnDescriptorImpl implements ColumnDescriptor 
{
     ) {
         this.key = key;
         this.hidden = hidden;
+        this.system = system;
         this.nullable = nullable;
         this.name = name;
         this.defaultStrategy = defaultStrategy;
@@ -86,6 +90,12 @@ public class ColumnDescriptorImpl implements 
ColumnDescriptor {
         return hidden;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    public boolean system() {
+        return system;
+    }
+
     /** {@inheritDoc} */
     @Override
     public boolean nullable() {
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java
index f2357c911f..548c4b6bb2 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java
@@ -56,6 +56,7 @@ import 
org.apache.ignite.internal.sql.engine.trait.IgniteDistributions;
 import org.apache.ignite.internal.sql.engine.util.Commons;
 import org.apache.ignite.internal.sql.engine.util.cache.Cache;
 import org.apache.ignite.internal.sql.engine.util.cache.CacheFactory;
+import org.apache.ignite.internal.type.NativeTypes;
 import org.apache.ignite.lang.ErrorGroups.Common;
 
 /**
@@ -257,6 +258,7 @@ public class SqlSchemaManagerImpl implements 
SqlSchemaManager {
                 desc.name(),
                 desc.key(),
                 true,
+                false,
                 desc.nullable(),
                 desc.logicalIndex(),
                 desc.physicalType(),
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java
index b63180efc5..c8e5e2ffd5 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java
@@ -129,6 +129,7 @@ import org.jetbrains.annotations.Nullable;
  */
 public final class Commons {
     public static final String IMPLICIT_PK_COL_NAME = "__p_key";
+    public static final String PART_COL_NAME = "__part".toUpperCase();
 
     public static final int IN_BUFFER_SIZE = 512;
 
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java
index 02493459c8..2f5ecd3295 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java
@@ -842,7 +842,7 @@ public class TestBuilders {
         @Override
         public TableBuilder addColumn(String name, NativeType type, boolean 
nullable) {
             columns.add(new ColumnDescriptorImpl(
-                    name, false, false, nullable, columns.size(), type, 
DefaultValueStrategy.DEFAULT_NULL, null
+                    name, false, false, false, nullable, columns.size(), type, 
DefaultValueStrategy.DEFAULT_NULL, null
             ));
 
             return this;
@@ -861,7 +861,7 @@ public class TestBuilders {
                 return addColumn(name, type);
             } else {
                 ColumnDescriptorImpl desc = new ColumnDescriptorImpl(
-                        name, false, false, true, columns.size(), type, 
DefaultValueStrategy.DEFAULT_CONSTANT, () -> defaultValue
+                        name, false, false, false, true, columns.size(), type, 
DefaultValueStrategy.DEFAULT_CONSTANT, () -> defaultValue
                 );
                 columns.add(desc);
             }
@@ -873,7 +873,7 @@ public class TestBuilders {
         @Override
         public TableBuilder addKeyColumn(String name, NativeType type) {
             columns.add(new ColumnDescriptorImpl(
-                    name, true, false, false, columns.size(), type, 
DefaultValueStrategy.DEFAULT_NULL, null
+                    name, true, false, false, false, columns.size(), type, 
DefaultValueStrategy.DEFAULT_NULL, null
             ));
 
             return this;

Reply via email to