From e02d827a94aaf95d30eb67787397b770b3b0fcf3 Mon Sep 17 00:00:00 2001 From: brfrn169 Date: Fri, 19 Sep 2025 13:14:12 +0900 Subject: [PATCH] Use CoreError for message of UnsupportedOperationException in Cassandra adapter --- core/src/main/java/com/scalar/db/common/CoreError.java | 6 ++++++ .../com/scalar/db/storage/cassandra/CassandraAdmin.java | 4 ++-- .../com/scalar/db/storage/cassandra/ResultInterpreter.java | 3 ++- .../java/com/scalar/db/storage/cassandra/ValueBinder.java | 4 +++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/scalar/db/common/CoreError.java b/core/src/main/java/com/scalar/db/common/CoreError.java index 4137040b22..f42c362717 100644 --- a/core/src/main/java/com/scalar/db/common/CoreError.java +++ b/core/src/main/java/com/scalar/db/common/CoreError.java @@ -736,6 +736,12 @@ public enum CoreError implements ScalarDbError { "The BOOLEAN type is not supported for index columns in DynamoDB. Column: %s", "", ""), + CASSANDRA_TIMESTAMP_TYPE_NOT_SUPPORTED( + Category.USER_ERROR, + "0227", + "The TIMESTAMP type is not supported in Cassandra. Column: %s", + "", + ""), // // Errors for the concurrency error category diff --git a/core/src/main/java/com/scalar/db/storage/cassandra/CassandraAdmin.java b/core/src/main/java/com/scalar/db/storage/cassandra/CassandraAdmin.java index 63f7383fbf..04d268b86c 100644 --- a/core/src/main/java/com/scalar/db/storage/cassandra/CassandraAdmin.java +++ b/core/src/main/java/com/scalar/db/storage/cassandra/CassandraAdmin.java @@ -77,7 +77,7 @@ public void createTable( for (String column : metadata.getColumnNames()) { if (metadata.getColumnDataTypes().get(column).equals(DataType.TIMESTAMP)) { throw new UnsupportedOperationException( - "The TIMESTAMP data type is not supported in Cassandra. column: " + column); + CoreError.CASSANDRA_TIMESTAMP_TYPE_NOT_SUPPORTED.buildMessage(column)); } } try { @@ -394,7 +394,7 @@ public void addNewColumnToTable( throws ExecutionException { if (columnType == DataType.TIMESTAMP) { throw new UnsupportedOperationException( - "The TIMESTAMP data type is not supported in Cassandra. column: " + columnName); + CoreError.CASSANDRA_TIMESTAMP_TYPE_NOT_SUPPORTED.buildMessage(columnName)); } try { String alterTableQuery = diff --git a/core/src/main/java/com/scalar/db/storage/cassandra/ResultInterpreter.java b/core/src/main/java/com/scalar/db/storage/cassandra/ResultInterpreter.java index 9ad7948ecb..fb7316af50 100644 --- a/core/src/main/java/com/scalar/db/storage/cassandra/ResultInterpreter.java +++ b/core/src/main/java/com/scalar/db/storage/cassandra/ResultInterpreter.java @@ -3,6 +3,7 @@ import com.datastax.driver.core.Row; import com.scalar.db.api.Result; import com.scalar.db.api.TableMetadata; +import com.scalar.db.common.CoreError; import com.scalar.db.common.ResultImpl; import com.scalar.db.io.BigIntColumn; import com.scalar.db.io.BlobColumn; @@ -86,7 +87,7 @@ private Column convert(Row row, String name, DataType type) { : TimeColumn.of(name, LocalTime.ofNanoOfDay(row.getTime(name))); case TIMESTAMP: throw new UnsupportedOperationException( - "The TIMESTAMP type is not supported with Cassandra."); + CoreError.CASSANDRA_TIMESTAMP_TYPE_NOT_SUPPORTED.buildMessage(name)); case TIMESTAMPTZ: return row.isNull(name) ? TimestampTZColumn.ofNull(name) diff --git a/core/src/main/java/com/scalar/db/storage/cassandra/ValueBinder.java b/core/src/main/java/com/scalar/db/storage/cassandra/ValueBinder.java index 04a39763cc..3c19644571 100644 --- a/core/src/main/java/com/scalar/db/storage/cassandra/ValueBinder.java +++ b/core/src/main/java/com/scalar/db/storage/cassandra/ValueBinder.java @@ -3,6 +3,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.datastax.driver.core.BoundStatement; +import com.scalar.db.common.CoreError; import com.scalar.db.io.BigIntColumn; import com.scalar.db.io.BlobColumn; import com.scalar.db.io.BooleanColumn; @@ -134,7 +135,8 @@ public void visit(TimeColumn column) { @Override public void visit(TimestampColumn column) { - throw new UnsupportedOperationException("The TIMESTAMP type is not supported with Cassandra"); + throw new UnsupportedOperationException( + CoreError.CASSANDRA_TIMESTAMP_TYPE_NOT_SUPPORTED.buildMessage(column.getName())); } @Override