diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 088a8cf21..8f7667d3b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -12,7 +12,7 @@ on:
jobs:
build:
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
name: checkout nosqlbench
@@ -25,6 +25,9 @@ jobs:
java-package: jdk
java-version: '21'
+ - name: install fuse2
+ run: sudo apt install libfuse2
+
- name: Cache Maven packages
uses: actions/cache@v4
with:
@@ -74,7 +77,7 @@ jobs:
builddocs:
needs: build
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
if: ${{ github.repository == 'nosqlbench/nosqlbench' && github.event_name == 'push' && github.ref_name == 'main' }}
steps:
diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml
index 428b1ace5..d96180381 100644
--- a/.github/workflows/preview.yml
+++ b/.github/workflows/preview.yml
@@ -15,7 +15,7 @@ on:
jobs:
preview-build:
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
outputs:
preview_version: ${{ steps.versions.outputs.PREVIEW_VERSION }}
docker_tags: ${{ steps.versions.outputs.DOCKER_TAGS }}
@@ -46,6 +46,9 @@ jobs:
docker rmi $(docker image ls -aq)
df -h
+ - name: install fuse2
+ run: sudo apt install libfuse2
+
- name: Cache Maven packages
uses: actions/cache@v4
with:
@@ -204,7 +207,7 @@ jobs:
preview-docs:
needs: preview-build
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- name: import env vars
run: |
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ab5ed6d59..12992e8e7 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -15,7 +15,7 @@ on:
jobs:
release-build:
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- name: checkout repo
@@ -43,6 +43,9 @@ jobs:
docker rmi $(docker image ls -aq)
df -h
+ - name: install fuse2
+ run: sudo apt install libfuse2
+
- name: Cache Maven packages
uses: actions/cache@v4
with:
@@ -186,7 +189,7 @@ jobs:
# javadocs:
# needs: release
-# runs-on: ubuntu-20.04
+# runs-on: ubuntu-22.04
# steps:
# - name: set git username
# run: git config --global user.email "${{ secrets.NBDROID_EMAIL }}"
@@ -210,7 +213,7 @@ jobs:
#
# docs:
# needs: release
-# runs-on: ubuntu-20.04
+# runs-on: ubuntu-22.04
# steps:
#
# - name: set git username
diff --git a/mvn-defaults/pom.xml b/mvn-defaults/pom.xml
index e7fe6f394..9650dd581 100644
--- a/mvn-defaults/pom.xml
+++ b/mvn-defaults/pom.xml
@@ -573,6 +573,9 @@
false
+
+ value
+
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 0a4ec8cde..4f7efcea8 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
@@ -72,6 +72,7 @@ public class CGWorkloadExporter implements BundledApp {
private String namingTemplate;
private double partitionMultiplier;
private int quantizerDigits;
+ private boolean enableIfExists = true;
private Map> blockplan = Map.of();
private final Map timeouts = new HashMap(Map.of(
@@ -163,6 +164,9 @@ public class CGWorkloadExporter implements BundledApp {
configureTimeouts(cfgmap.get("timeouts"));
configureBlocks(cfgmap.get("blockplan"));
configureQuantizerDigits(cfgmap.get("quantizer_digits"));
+ if (cfgmap.get("enable_if_exists").equals(false)) {
+ enableIfExists = false;
+ }
this.model = CqlModelParser.parse(ddl, srcpath);
List errorlist = model.getReferenceErrors();
@@ -639,7 +643,7 @@ public class CGWorkloadExporter implements BundledApp {
ops.put(
namer.nameFor(table, "optype", "drop", "blockname", blockname),
Map.of(
- "simple", "drop table if exists " + table.getFullName() + ";",
+ "simple", (enableIfExists ? "drop table if exists " : "drop table ") + table.getFullName() + ";",
"timeout", timeouts.get("drop")
)
);
@@ -655,7 +659,7 @@ public class CGWorkloadExporter implements BundledApp {
ops.put(
namer.nameFor(type, "optype", "drop-type", "blockname", blockname),
Map.of(
- "simple", "drop type if exists " + type.getKeyspace() + "." + type.getName() + ";",
+ "simple", (enableIfExists ? "drop type if exists " : "drop type ") + "." + type.getName() + ";",
"timeout", timeouts.get("drop")
)
);
@@ -671,7 +675,7 @@ public class CGWorkloadExporter implements BundledApp {
ops.put(
namer.nameFor(type, "optype", "drop-keyspace", "blockname", blockname),
Map.of(
- "simple", "drop keyspace if exists " + type.getKeyspace() + ";",
+ "simple", (enableIfExists ? "drop keyspace if exists " : "drop keyspace ") + type.getKeyspace() + ";",
"timeout", timeouts.get("drop")
)
);
@@ -736,9 +740,10 @@ public class CGWorkloadExporter implements BundledApp {
private String genKeyspaceDDL(CqlKeyspaceDef keyspace) {
return """
- create keyspace KEYSPACE
+ create keyspace IF_NOT_EXISTS KEYSPACE
with replication = {REPLICATION}DURABLEWRITES?;
"""
+ .replace("IF_NOT_EXISTS", enableIfExists ? "if not exists" : "")
.replace("KEYSPACE", keyspace.getName())
.replace("REPLICATION", keyspace.getReplicationData())
.replace("DURABLEWRITES?", keyspace.isDurableWrites() ? "" : "\n and durable writes = false")
@@ -766,10 +771,11 @@ public class CGWorkloadExporter implements BundledApp {
private String genTypeDDL(CqlType type) {
return """
- create type KEYSPACE.TYPENAME (
+ create type IF_NOT_EXISTS KEYSPACE.TYPENAME (
TYPEDEF
);
"""
+ .replace("IF_NOT_EXISTS", enableIfExists ? "if not exists" : "")
.replace("KEYSPACE", type.getKeyspace().getName())
.replace("TYPENAME", type.getName())
.replace("TYPEDEF", type.getColumnDefs().stream()
@@ -782,11 +788,12 @@ public class CGWorkloadExporter implements BundledApp {
}
return """
- create table if not exists KEYSPACE.TABLE (
+ create table IF_NOT_EXISTS KEYSPACE.TABLE (
COLUMN_DEFS,
primary key (PRIMARYKEY)
)CLUSTERING;
"""
+ .replace("IF_NOT_EXISTS", enableIfExists ? "if not exists" : "")
.replace("KEYSPACE", cqltable.getKeyspace().getName())
.replace("TABLE", cqltable.getName())
.replace("COLUMN_DEFS", genTableColumnDDL(cqltable))
diff --git a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_iot.yaml b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_iot.yaml
index 5c98d3535..fe55e33a0 100644
--- a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_iot.yaml
+++ b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_iot.yaml
@@ -10,7 +10,7 @@ scenarios:
rampup: run driver=cql tags==block:rampup cycles===TEMPLATE(rampup-cycles,10000000) threads=auto
main: run driver=cql tags==block:"main.*" cycles===TEMPLATE(main-cycles,10000000) threads=auto
astra:
- schema: run driver=cql tags==block:schema-astra threads==1 cycles==UNDEF
+ schema: run driver=cql tags==block:schema_astra threads==1 cycles==UNDEF
rampup: run driver=cql tags==block:rampup cycles===TEMPLATE(rampup-cycles,10000000) threads=auto
main: run driver=cql tags==block:"main.*" cycles===TEMPLATE(main-cycles,10000000) threads=auto
basic_check:
diff --git a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_keyvalue.yaml b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_keyvalue.yaml
index 9d8851c69..fd5979f36 100644
--- a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_keyvalue.yaml
+++ b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_keyvalue.yaml
@@ -14,7 +14,7 @@ scenarios:
rampup: run driver=cql tags==block:rampup cycles===TEMPLATE(rampup-cycles,10000000) threads=auto
main: run driver=cql tags=='block:main-.*' cycles===TEMPLATE(main-cycles,10000000) threads=auto
astra:
- schema: run driver=cql tags==block:schema-astra threads==1 cycles==UNDEF
+ schema: run driver=cql tags==block:schema_astra threads==1 cycles==UNDEF
rampup: run driver=cql tags==block:rampup cycles===TEMPLATE(rampup-cycles,10000000) threads=auto
main: run driver=cql tags=='block:main-.*' cycles===TEMPLATE(main-cycles,10000000) threads=auto
basic_check:
diff --git a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_starter.yaml b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_starter.yaml
index f58d45184..52a600938 100644
--- a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_starter.yaml
+++ b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_starter.yaml
@@ -11,7 +11,7 @@ scenarios:
main: run driver=cql tags==block:"main.*" cycles===TEMPLATE(main-cycles,10) threads=auto
# rampdown: run driver=cql tags==block:rampdown threads==1 cycles==UNDEF
astra:
- schema: run driver=cql tags==block:schema-astra threads==1 cycles==UNDEF
+ schema: run driver=cql tags==block:schema_astra threads==1 cycles==UNDEF
rampup: run driver=cql tags==block:rampup cycles===TEMPLATE(rampup-cycles,10) threads=auto
main: run driver=cql tags==block:"main.*" cycles===TEMPLATE(main-cycles,10) threads=auto
basic_check:
diff --git a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_tabular.yaml b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_tabular.yaml
index a8fba2a17..7e63cd2e6 100644
--- a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_tabular.yaml
+++ b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselines/cql_tabular.yaml
@@ -7,7 +7,7 @@ scenarios:
rampup: run driver=cql tags==block:rampup cycles===TEMPLATE(rampup-cycles,10000000) threads=auto
main: run driver=cql tags==block:main-*.* cycles===TEMPLATE(main-cycles,10000000) threads=auto
astra:
- schema: run driver=cql tags==block:schema-astra threads==1 cycles==UNDEF
+ schema: run driver=cql tags==block:schema_astra threads==1 cycles==UNDEF
rampup: run driver=cql tags==block:rampup cycles===TEMPLATE(rampup-cycles,10000000) threads=auto
main: run driver=cql tags==block:main-*.* cycles===TEMPLATE(main-cycles,10000000) threads=auto
basic_check:
diff --git a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselinesv2/cql_tabular2.yaml b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselinesv2/cql_tabular2.yaml
index 686d02a0a..39b82299a 100644
--- a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselinesv2/cql_tabular2.yaml
+++ b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselinesv2/cql_tabular2.yaml
@@ -31,7 +31,7 @@ scenarios:
rampup: run driver=cql tags==block:rampup cycles===TEMPLATE(rampup-cycles,100) threads=auto
main: run driver=cql tags==block:"main.*" cycles===TEMPLATE(main-cycles,100) threads=auto
astra:
- schema: run driver=cql tags==block:schema-astra threads==1 cycles==UNDEF
+ schema: run driver=cql tags==block:schema_astra threads==1 cycles==UNDEF
rampup: run driver=cql tags==block:rampup cycles===TEMPLATE(rampup-cycles,100) threads=auto
main: run driver=cql tags==block:"main.*" cycles===TEMPLATE(main-cycles,100) threads=auto
basic_check:
diff --git a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselinesv2/cql_timeseries2.yaml b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselinesv2/cql_timeseries2.yaml
index 20ead290b..f4b87fa24 100644
--- a/nb-adapters/adapter-cqld4/src/main/resources/activities/baselinesv2/cql_timeseries2.yaml
+++ b/nb-adapters/adapter-cqld4/src/main/resources/activities/baselinesv2/cql_timeseries2.yaml
@@ -10,7 +10,7 @@ scenarios:
rampup: run driver=cql tags==block:rampup cycles===TEMPLATE(rampup-cycles,10000000) threads=auto
main: run driver=cql tags==block:"main.*" cycles===TEMPLATE(main-cycles,10000000) threads=auto
astra:
- schema: run driver=cql tags==block:schema-astra threads==1 cycles==UNDEF
+ schema: run driver=cql tags==block:schema_astra threads==1 cycles==UNDEF
rampup: run driver=cql tags==block:rampup cycles===TEMPLATE(rampup-cycles,10000000) threads=auto
main: run driver=cql tags==block:"main.*" cycles===TEMPLATE(main-cycles,10000000) threads=auto
basic_check:
diff --git a/nb-adapters/adapter-cqld4/src/main/resources/cqlgen/cqlgen.conf b/nb-adapters/adapter-cqld4/src/main/resources/cqlgen/cqlgen.conf
index 0aab9c35c..494fb4424 100644
--- a/nb-adapters/adapter-cqld4/src/main/resources/cqlgen/cqlgen.conf
+++ b/nb-adapters/adapter-cqld4/src/main/resources/cqlgen/cqlgen.conf
@@ -145,6 +145,6 @@ blockplan:
# not needed when tags=block:'main.*'
# main: insert, select, scan-10, update
-
-
+# Configuration option for adding 'IF NOT EXISTS' or 'IF EXISTS' in all generated DDL statements
+enable_if_exists: true
diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java
index b095bb825..7af86c603 100644
--- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java
+++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java
@@ -66,7 +66,10 @@ public class DataApiDeleteOneOpDispenser extends DataApiOpDispenser {
}
private float[] getVectorFromOp(ParsedOp op, long l) {
- return getVectorValues(op.get("vector", l));
+ if (op.isDefined("vector")) {
+ return getVectorValues(op.get("vector", l));
+ }
+ return null;
}
@Override
diff --git a/nb-adapters/adapter-dataapi/src/main/resources/activities/find_one_and_update.yaml b/nb-adapters/adapter-dataapi/src/main/resources/activities/find_one_and_update.yaml
index e69de29bb..edff96902 100644
--- a/nb-adapters/adapter-dataapi/src/main/resources/activities/find_one_and_update.yaml
+++ b/nb-adapters/adapter-dataapi/src/main/resources/activities/find_one_and_update.yaml
@@ -0,0 +1,4 @@
+min_version: "5.21.0"
+
+description: |
+ TBD, similar to find_one_and_delete.yaml
diff --git a/nb-adapters/adapter-dataapi/src/main/resources/activities/list_collection_names.yaml b/nb-adapters/adapter-dataapi/src/main/resources/activities/list_collection_names.yaml
index abb0f4091..4234ccc58 100644
--- a/nb-adapters/adapter-dataapi/src/main/resources/activities/list_collection_names.yaml
+++ b/nb-adapters/adapter-dataapi/src/main/resources/activities/list_collection_names.yaml
@@ -6,4 +6,4 @@ blocks:
list_collection_names:
ops:
op1:
- list_collection_names:
+ list_collection_names: TBD
diff --git a/nb-adapters/adapter-dataapi/src/main/resources/activities/list_collections.yaml b/nb-adapters/adapter-dataapi/src/main/resources/activities/list_collections.yaml
index 421e2c1dd..87d2b9ac8 100644
--- a/nb-adapters/adapter-dataapi/src/main/resources/activities/list_collections.yaml
+++ b/nb-adapters/adapter-dataapi/src/main/resources/activities/list_collections.yaml
@@ -6,4 +6,4 @@ blocks:
list_collections:
ops:
op1:
- list_collections:
+ list_collections: TBD
diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpDef.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpDef.java
index f59717466..a8b7acb30 100644
--- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpDef.java
+++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpDef.java
@@ -140,7 +140,7 @@ public class RawOpDef extends RawOpFields {
if (v == null) {
throw new OpConfigError("A map key '" + k.toString() + "' with a null value was encountered. This is not" +
" allowed, and may be the result of using an unquoted binding, like {" + k + "}. You can simply wrap this in quotes" +
- " like \"{"+ k +"\"} to avoid interpreting this as a JSON map." +
+ " like \"{"+ k +"}\" to avoid interpreting this as a JSON map." +
(path.size()>0 ? String.join(".",path):""));
} else {
if (v instanceof Map) {
diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/fieldmappers/FieldDestructuringMapper.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/fieldmappers/FieldDestructuringMapper.java
index 9e46f7163..5cfee65f8 100644
--- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/fieldmappers/FieldDestructuringMapper.java
+++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/fieldmappers/FieldDestructuringMapper.java
@@ -53,7 +53,7 @@ public class FieldDestructuringMapper implements Function