This is an automated email from the ASF dual-hosted git repository.
absurdfarce pushed a commit to branch 4.x
in repository https://gitbox.apache.org/repos/asf/cassandra-java-driver.git
The following commit(s) were added to refs/heads/4.x by this push:
new 72c729b1b CASSANDRA-19932: Allow to define extensions while creating
table patch by Lukasz Antoniak; reviewed by Bret McGuire and Chris Lohfink
72c729b1b is described below
commit 72c729b1ba95695fed467ca3734de7a39a2b3201
Author: Lukasz Antoniak <[email protected]>
AuthorDate: Thu Oct 3 09:32:17 2024 +0200
CASSANDRA-19932: Allow to define extensions while creating table
patch by Lukasz Antoniak; reviewed by Bret McGuire and Chris Lohfink
---
.../schema/CreateTableWithOptions.java | 11 ++++++++
.../querybuilder/schema/RawOptionsWrapper.java} | 32 ++++++++++++++++------
.../api/querybuilder/schema/CreateTableTest.java | 9 +++++-
3 files changed, 43 insertions(+), 9 deletions(-)
diff --git
a/query-builder/src/main/java/com/datastax/oss/driver/api/querybuilder/schema/CreateTableWithOptions.java
b/query-builder/src/main/java/com/datastax/oss/driver/api/querybuilder/schema/CreateTableWithOptions.java
index 4dd3193da..c7bddf575 100644
---
a/query-builder/src/main/java/com/datastax/oss/driver/api/querybuilder/schema/CreateTableWithOptions.java
+++
b/query-builder/src/main/java/com/datastax/oss/driver/api/querybuilder/schema/CreateTableWithOptions.java
@@ -18,7 +18,11 @@
package com.datastax.oss.driver.api.querybuilder.schema;
import com.datastax.oss.driver.api.querybuilder.BuildableQuery;
+import com.datastax.oss.driver.internal.querybuilder.schema.RawOptionsWrapper;
+import com.datastax.oss.driver.shaded.guava.common.collect.Maps;
+import edu.umd.cs.findbugs.annotations.CheckReturnValue;
import edu.umd.cs.findbugs.annotations.NonNull;
+import java.util.Map;
public interface CreateTableWithOptions
extends BuildableQuery, RelationStructure<CreateTableWithOptions> {
@@ -26,4 +30,11 @@ public interface CreateTableWithOptions
/** Enables COMPACT STORAGE in the CREATE TABLE statement. */
@NonNull
CreateTableWithOptions withCompactStorage();
+
+ /** Attaches custom metadata to CQL table definition. */
+ @NonNull
+ @CheckReturnValue
+ default CreateTableWithOptions withExtensions(@NonNull Map<String, byte[]>
extensions) {
+ return withOption("extensions", Maps.transformValues(extensions,
RawOptionsWrapper::of));
+ }
}
diff --git
a/query-builder/src/main/java/com/datastax/oss/driver/api/querybuilder/schema/CreateTableWithOptions.java
b/query-builder/src/main/java/com/datastax/oss/driver/internal/querybuilder/schema/RawOptionsWrapper.java
similarity index 53%
copy from
query-builder/src/main/java/com/datastax/oss/driver/api/querybuilder/schema/CreateTableWithOptions.java
copy to
query-builder/src/main/java/com/datastax/oss/driver/internal/querybuilder/schema/RawOptionsWrapper.java
index 4dd3193da..64cdb50f8 100644
---
a/query-builder/src/main/java/com/datastax/oss/driver/api/querybuilder/schema/CreateTableWithOptions.java
+++
b/query-builder/src/main/java/com/datastax/oss/driver/internal/querybuilder/schema/RawOptionsWrapper.java
@@ -15,15 +15,31 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.datastax.oss.driver.api.querybuilder.schema;
+package com.datastax.oss.driver.internal.querybuilder.schema;
-import com.datastax.oss.driver.api.querybuilder.BuildableQuery;
-import edu.umd.cs.findbugs.annotations.NonNull;
+import com.datastax.oss.driver.api.core.data.ByteUtils;
-public interface CreateTableWithOptions
- extends BuildableQuery, RelationStructure<CreateTableWithOptions> {
+/**
+ * Wrapper class to indicate that the contained String value should be
understood to represent a CQL
+ * literal that can be included directly in a CQL statement (i.e. without
escaping).
+ */
+public class RawOptionsWrapper {
+ private final String val;
+
+ private RawOptionsWrapper(String val) {
+ this.val = val;
+ }
+
+ public static RawOptionsWrapper of(String val) {
+ return new RawOptionsWrapper(val);
+ }
+
+ public static RawOptionsWrapper of(byte[] val) {
+ return new RawOptionsWrapper(ByteUtils.toHexString(val));
+ }
- /** Enables COMPACT STORAGE in the CREATE TABLE statement. */
- @NonNull
- CreateTableWithOptions withCompactStorage();
+ @Override
+ public String toString() {
+ return this.val;
+ }
}
diff --git
a/query-builder/src/test/java/com/datastax/oss/driver/api/querybuilder/schema/CreateTableTest.java
b/query-builder/src/test/java/com/datastax/oss/driver/api/querybuilder/schema/CreateTableTest.java
index d32c66f62..7a5542c51 100644
---
a/query-builder/src/test/java/com/datastax/oss/driver/api/querybuilder/schema/CreateTableTest.java
+++
b/query-builder/src/test/java/com/datastax/oss/driver/api/querybuilder/schema/CreateTableTest.java
@@ -28,6 +28,7 @@ import
com.datastax.oss.driver.api.querybuilder.SchemaBuilder.RowsPerPartition;
import
com.datastax.oss.driver.api.querybuilder.schema.compaction.TimeWindowCompactionStrategy.CompactionWindowUnit;
import
com.datastax.oss.driver.api.querybuilder.schema.compaction.TimeWindowCompactionStrategy.TimestampResolution;
import com.datastax.oss.driver.shaded.guava.common.collect.ImmutableMap;
+import java.nio.charset.StandardCharsets;
import org.junit.Test;
public class CreateTableTest {
@@ -169,6 +170,12 @@ public class CreateTableTest {
.withComment("Hello world")
.withDcLocalReadRepairChance(0.54)
.withDefaultTimeToLiveSeconds(86400)
+ .withExtensions(
+ ImmutableMap.of(
+ "key1",
+ "apache".getBytes(StandardCharsets.UTF_8),
+ "key2",
+ "cassandra".getBytes(StandardCharsets.UTF_8)))
.withGcGraceSeconds(864000)
.withMemtableFlushPeriodInMs(10000)
.withMinIndexInterval(1024)
@@ -176,7 +183,7 @@ public class CreateTableTest {
.withReadRepairChance(0.55)
.withSpeculativeRetry("99percentile"))
.hasCql(
- "CREATE TABLE bar (k int PRIMARY KEY,v text) WITH
bloom_filter_fp_chance=0.42 AND cdc=false AND comment='Hello world' AND
dclocal_read_repair_chance=0.54 AND default_time_to_live=86400 AND
gc_grace_seconds=864000 AND memtable_flush_period_in_ms=10000 AND
min_index_interval=1024 AND max_index_interval=4096 AND read_repair_chance=0.55
AND speculative_retry='99percentile'");
+ "CREATE TABLE bar (k int PRIMARY KEY,v text) WITH
bloom_filter_fp_chance=0.42 AND cdc=false AND comment='Hello world' AND
dclocal_read_repair_chance=0.54 AND default_time_to_live=86400 AND
extensions={'key1':0x617061636865,'key2':0x63617373616e647261} AND
gc_grace_seconds=864000 AND memtable_flush_period_in_ms=10000 AND
min_index_interval=1024 AND max_index_interval=4096 AND read_repair_chance=0.55
AND speculative_retry='99percentile'");
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]