diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/core/CGWorkloadExporter.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/core/CGWorkloadExporter.java index 0e4e36404..0a4ec8cde 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/core/CGWorkloadExporter.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/core/CGWorkloadExporter.java @@ -829,7 +829,7 @@ public class CGWorkloadExporter implements BundledApp { private String genTableColumnDDL(CqlTable cqltable) { return cqltable.getColumnDefs().stream() - .map(cd -> cd.getName() + " " + cd.getTrimmedTypedef()) + .map(cd -> cd.getName() + " " + cd.getTrimmedTypedef() + (cd.isStatic() ? " STATIC" : "")) .collect(Collectors.joining(",\n")); } diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/grammars/CqlParser.g4 b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/grammars/CqlParser.g4 index e4b3ab6e5..8436dae45 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/grammars/CqlParser.g4 +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/grammars/CqlParser.g4 @@ -430,7 +430,7 @@ columnDefinitionList // columnDefinition - : column dataType primaryKeyColumn? + : column dataType (primaryKeyColumn | kwStatic)? ; // @@ -1013,6 +1013,10 @@ kwFinalfunc : K_FINALFUNC ; +kwStatic + : K_STATIC + ; + kwFrom : K_FROM ; diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java index f08dc4c68..c14edee26 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java @@ -25,10 +25,12 @@ public abstract class CqlColumnBase implements NBNamedElement, NBLabeledElement private String name; private String typedef; private ColumnPosition position=ColumnPosition.NonKey; + private boolean isStatic; - protected CqlColumnBase(String colname, String typedef) { + protected CqlColumnBase(String colname, String typedef, boolean isStatic) { this.typedef = typedef; this.name = colname; + this.isStatic = isStatic; } public void setPosition(ColumnPosition position) { @@ -62,7 +64,7 @@ public abstract class CqlColumnBase implements NBNamedElement, NBLabeledElement @Override public NBLabels getLabels() { - return NBLabels.forKV("name", name, "type", "column"); + return NBLabels.forKV("name", name, "type", "column", "is_static", isStatic); } public boolean isCounter() { @@ -83,4 +85,11 @@ public abstract class CqlColumnBase implements NBNamedElement, NBLabeledElement protected abstract String getParentFullName(); + public boolean isStatic() { + return isStatic; + } + + public void setStatic(boolean isStatic) { + this.isStatic = isStatic; + } } diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlModelBuilder.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlModelBuilder.java index 7d7bd1a59..1c8a93281 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlModelBuilder.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlModelBuilder.java @@ -235,6 +235,7 @@ public class CqlModelBuilder extends CqlParserBaseListener { CqlTableColumn coldef = new CqlTableColumn( ctx.column().getText(), ctx.dataType().getText(), + ctx.kwStatic() != null, table ); table.addcolumnDef(coldef); diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTableColumn.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTableColumn.java index 1a39209b9..6ec41e720 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTableColumn.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTableColumn.java @@ -22,8 +22,8 @@ public class CqlTableColumn extends CqlColumnBase { private CqlTable table; - public CqlTableColumn(final String colname, final String typedef, final CqlTable table) { - super(colname, typedef); + public CqlTableColumn(final String colname, final String typedef, final boolean isStatic, final CqlTable table) { + super(colname, typedef, isStatic); this.table = table; } diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTypeColumn.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTypeColumn.java index 479c24484..09e974d7d 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTypeColumn.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTypeColumn.java @@ -23,7 +23,7 @@ public class CqlTypeColumn extends CqlColumnBase { CqlType type; public CqlTypeColumn(final String colname, final String typedef, final CqlType usertype) { - super(colname, typedef); + super(colname, typedef, false); type = usertype; } diff --git a/nb-adapters/adapter-cqld4/src/test/resources/cql3_examples/createTable.cql b/nb-adapters/adapter-cqld4/src/test/resources/cql3_examples/createTable.cql index ab98b7cf5..1508595f7 100644 --- a/nb-adapters/adapter-cqld4/src/test/resources/cql3_examples/createTable.cql +++ b/nb-adapters/adapter-cqld4/src/test/resources/cql3_examples/createTable.cql @@ -1,5 +1,6 @@ CREATE TABLE cycling.race_winners ( - race_name text, - race_position int, - cyclist_name FROZEN, + race_name text, + race_position int, + flag int STATIC, + cyclist_name FROZEN, PRIMARY KEY (race_name, race_position)); diff --git a/nb-adapters/adapter-cqld4/src/test/resources/testschemas/cql_alltypes.cql b/nb-adapters/adapter-cqld4/src/test/resources/testschemas/cql_alltypes.cql index c71aac1f0..cb10364d5 100644 --- a/nb-adapters/adapter-cqld4/src/test/resources/testschemas/cql_alltypes.cql +++ b/nb-adapters/adapter-cqld4/src/test/resources/testschemas/cql_alltypes.cql @@ -49,7 +49,8 @@ CREATE TABLE baselines.alltypes a_varint varint, an_ascii ascii, an_inet inet, - an_int int + an_int int, + a_static_int int STATIC ) WITH additional_write_policy = '99PERCENTILE' AND bloom_filter_fp_chance = 0.01 AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}