From c043c88c49fb7c10e509590667fe6492553e4184 Mon Sep 17 00:00:00 2001 From: Ekaterina Dimitrova Date: Tue, 22 Jul 2025 10:26:03 -0400 Subject: [PATCH] CNDB-14199: Expose methods containsDateRangeTypeColumn --- .../org/apache/cassandra/cql3/CQL3Type.java | 18 +++++++++++++++--- .../statements/schema/AlterTableStatement.java | 18 ++++++++++++++++++ .../schema/CreateTableStatement.java | 11 +++++++++++ 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/java/org/apache/cassandra/cql3/CQL3Type.java b/src/java/org/apache/cassandra/cql3/CQL3Type.java index 43660c8f3e9a..46d8c2169f94 100644 --- a/src/java/org/apache/cassandra/cql3/CQL3Type.java +++ b/src/java/org/apache/cassandra/cql3/CQL3Type.java @@ -137,7 +137,7 @@ default String toSchemaString() return toString(false, true); } - public enum Native implements CQL3Type + enum Native implements CQL3Type { ASCII (AsciiType.instance), BIGINT (LongType.instance), @@ -393,7 +393,7 @@ public String toString() class UserDefined implements CQL3Type { - // Keeping this separatly from type just to simplify toString() + // Keeping this separately from type just to simplify toString() private final String name; private final UserType type; @@ -608,7 +608,7 @@ public String toString() } } - public static class Vector implements CQL3Type + class Vector implements CQL3Type { private final VectorType type; @@ -701,6 +701,11 @@ public boolean isCounter() return false; } + public boolean isDateRange() + { + return false; + } + public boolean isUDT() { return false; @@ -916,6 +921,13 @@ public void forEachUserType(Consumer userTypeNameConsumer) // no-op } + @Override + public boolean isDateRange() + { + return "DateRangeType".equals(className) || + "org.apache.cassandra.db.marshal.DateRangeType".equals(className); + } + @Override public String toString() { diff --git a/src/java/org/apache/cassandra/cql3/statements/schema/AlterTableStatement.java b/src/java/org/apache/cassandra/cql3/statements/schema/AlterTableStatement.java index bafce1931b27..ce3e68b4b199 100644 --- a/src/java/org/apache/cassandra/cql3/statements/schema/AlterTableStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/schema/AlterTableStatement.java @@ -102,6 +102,12 @@ public Keyspaces apply(Keyspaces schema) return schema.withAddedOrUpdated(apply(keyspace, table)); } + public boolean containsDateRangeTypeColumn() + { + // Classes that need this method exposed have to override it + return false; + } + public ResultMessage execute(QueryState state, boolean locally) { return super.execute(state, locally); @@ -264,6 +270,18 @@ private void addColumn(KeyspaceMetadata keyspace, } } } + + @Override + public boolean containsDateRangeTypeColumn() + { + for (AddColumns.Column column : newColumns) + { + if (column.type.isDateRange()) + return true; + } + + return false; + } } /** diff --git a/src/java/org/apache/cassandra/cql3/statements/schema/CreateTableStatement.java b/src/java/org/apache/cassandra/cql3/statements/schema/CreateTableStatement.java index ce8b651a70ca..3b5685d1742e 100644 --- a/src/java/org/apache/cassandra/cql3/statements/schema/CreateTableStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/schema/CreateTableStatement.java @@ -104,6 +104,17 @@ public boolean isCompactStorage() return useCompactStorage; } + public boolean containsDateRangeTypeColumn() + { + for (CQL3Type.Raw columnType : rawColumns.values()) + { + if (columnType.isDateRange()) + return true; + } + + return false; + } + @Override public void validate(QueryState state) {