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;
