[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.spotify.fmt:fmt-maven-plugin&package-manager=maven&previous-version=2.22.1&new-version=2.23)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brian Kroth
Co-authored-by: Brian Kroth
---
pom.xml | 2 +-
.../templated/TemplatedBenchmark.java | 2 +-
.../benchmarks/tpcc/procedures/Delivery.java | 14 ++++++-------
.../benchmarks/tpcc/procedures/NewOrder.java | 20 +++++++++----------
.../tpcc/procedures/OrderStatus.java | 8 ++++----
.../benchmarks/tpcc/procedures/Payment.java | 20 +++++++++----------
.../tpcc/procedures/StockLevel.java | 4 ++--
.../benchmarks/tpch/procedures/Q15.java | 3 ++-
8 files changed, 37 insertions(+), 36 deletions(-)
diff --git a/pom.xml b/pom.xml
index 1f5dbbfc7..c321e0ce3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -358,7 +358,7 @@
com.spotify.fmtfmt-maven-plugin
- 2.22.1
+ 2.23
diff --git a/src/main/java/com/oltpbenchmark/benchmarks/templated/TemplatedBenchmark.java b/src/main/java/com/oltpbenchmark/benchmarks/templated/TemplatedBenchmark.java
index 089c9b025..c92ccf767 100644
--- a/src/main/java/com/oltpbenchmark/benchmarks/templated/TemplatedBenchmark.java
+++ b/src/main/java/com/oltpbenchmark/benchmarks/templated/TemplatedBenchmark.java
@@ -179,7 +179,7 @@ private CustomClassLoader loadQueryTemplates(String file) {
ParsedQueryTemplate qt = b.build();
// Create and compile class.
final String s =
- """
+ """
package %s ;
public final class %s extends %s {
@Override
diff --git a/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/Delivery.java b/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/Delivery.java
index 2cf7acee7..3a9fe3a7c 100644
--- a/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/Delivery.java
+++ b/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/Delivery.java
@@ -34,7 +34,7 @@ public class Delivery extends TPCCProcedure {
public SQLStmt delivGetOrderIdSQL =
new SQLStmt(
- """
+ """
SELECT NO_O_ID FROM %s
WHERE NO_D_ID = ?
AND NO_W_ID = ?
@@ -45,7 +45,7 @@ public class Delivery extends TPCCProcedure {
public SQLStmt delivDeleteNewOrderSQL =
new SQLStmt(
- """
+ """
DELETE FROM %s
WHERE NO_O_ID = ?
AND NO_D_ID = ?
@@ -55,7 +55,7 @@ public class Delivery extends TPCCProcedure {
public SQLStmt delivGetCustIdSQL =
new SQLStmt(
- """
+ """
SELECT O_C_ID FROM %s
WHERE O_ID = ?
AND O_D_ID = ?
@@ -65,7 +65,7 @@ public class Delivery extends TPCCProcedure {
public SQLStmt delivUpdateCarrierIdSQL =
new SQLStmt(
- """
+ """
UPDATE %s
SET O_CARRIER_ID = ?
WHERE O_ID = ?
@@ -76,7 +76,7 @@ public class Delivery extends TPCCProcedure {
public SQLStmt delivUpdateDeliveryDateSQL =
new SQLStmt(
- """
+ """
UPDATE %s
SET OL_DELIVERY_D = ?
WHERE OL_O_ID = ?
@@ -87,7 +87,7 @@ public class Delivery extends TPCCProcedure {
public SQLStmt delivSumOrderAmountSQL =
new SQLStmt(
- """
+ """
SELECT SUM(OL_AMOUNT) AS OL_TOTAL
FROM %s
WHERE OL_O_ID = ?
@@ -98,7 +98,7 @@ SELECT SUM(OL_AMOUNT) AS OL_TOTAL
public SQLStmt delivUpdateCustBalDelivCntSQL =
new SQLStmt(
- """
+ """
UPDATE %s
SET C_BALANCE = C_BALANCE + ?,
C_DELIVERY_CNT = C_DELIVERY_CNT + 1
diff --git a/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/NewOrder.java b/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/NewOrder.java
index e98f9ebe1..aa6699778 100644
--- a/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/NewOrder.java
+++ b/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/NewOrder.java
@@ -34,7 +34,7 @@ public class NewOrder extends TPCCProcedure {
public final SQLStmt stmtGetCustSQL =
new SQLStmt(
- """
+ """
SELECT C_DISCOUNT, C_LAST, C_CREDIT
FROM %s
WHERE C_W_ID = ?
@@ -45,7 +45,7 @@ public class NewOrder extends TPCCProcedure {
public final SQLStmt stmtGetWhseSQL =
new SQLStmt(
- """
+ """
SELECT W_TAX
FROM %s
WHERE W_ID = ?
@@ -54,7 +54,7 @@ public class NewOrder extends TPCCProcedure {
public final SQLStmt stmtGetDistSQL =
new SQLStmt(
- """
+ """
SELECT D_NEXT_O_ID, D_TAX
FROM %s
WHERE D_W_ID = ? AND D_ID = ? FOR UPDATE
@@ -63,7 +63,7 @@ public class NewOrder extends TPCCProcedure {
public final SQLStmt stmtInsertNewOrderSQL =
new SQLStmt(
- """
+ """
INSERT INTO %s
(NO_O_ID, NO_D_ID, NO_W_ID)
VALUES ( ?, ?, ?)
@@ -72,7 +72,7 @@ public class NewOrder extends TPCCProcedure {
public final SQLStmt stmtUpdateDistSQL =
new SQLStmt(
- """
+ """
UPDATE %s
SET D_NEXT_O_ID = D_NEXT_O_ID + 1
WHERE D_W_ID = ?
@@ -82,7 +82,7 @@ public class NewOrder extends TPCCProcedure {
public final SQLStmt stmtInsertOOrderSQL =
new SQLStmt(
- """
+ """
INSERT INTO %s
(O_ID, O_D_ID, O_W_ID, O_C_ID, O_ENTRY_D, O_OL_CNT, O_ALL_LOCAL)
VALUES (?, ?, ?, ?, ?, ?, ?)
@@ -91,7 +91,7 @@ public class NewOrder extends TPCCProcedure {
public final SQLStmt stmtGetItemSQL =
new SQLStmt(
- """
+ """
SELECT I_PRICE, I_NAME , I_DATA
FROM %s
WHERE I_ID = ?
@@ -100,7 +100,7 @@ public class NewOrder extends TPCCProcedure {
public final SQLStmt stmtGetStockSQL =
new SQLStmt(
- """
+ """
SELECT S_QUANTITY, S_DATA, S_DIST_01, S_DIST_02, S_DIST_03, S_DIST_04, S_DIST_05,
S_DIST_06, S_DIST_07, S_DIST_08, S_DIST_09, S_DIST_10
FROM %s
@@ -111,7 +111,7 @@ public class NewOrder extends TPCCProcedure {
public final SQLStmt stmtUpdateStockSQL =
new SQLStmt(
- """
+ """
UPDATE %s
SET S_QUANTITY = ? ,
S_YTD = S_YTD + ?,
@@ -124,7 +124,7 @@ public class NewOrder extends TPCCProcedure {
public final SQLStmt stmtInsertOrderLineSQL =
new SQLStmt(
- """
+ """
INSERT INTO %s
(OL_O_ID, OL_D_ID, OL_W_ID, OL_NUMBER, OL_I_ID, OL_SUPPLY_W_ID, OL_QUANTITY, OL_AMOUNT, OL_DIST_INFO)
VALUES (?,?,?,?,?,?,?,?,?)
diff --git a/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/OrderStatus.java b/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/OrderStatus.java
index eeedcfd2f..3b4bbe713 100644
--- a/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/OrderStatus.java
+++ b/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/OrderStatus.java
@@ -39,7 +39,7 @@ public class OrderStatus extends TPCCProcedure {
public SQLStmt ordStatGetNewestOrdSQL =
new SQLStmt(
- """
+ """
SELECT O_ID, O_CARRIER_ID, O_ENTRY_D
FROM %s
WHERE O_W_ID = ?
@@ -51,7 +51,7 @@ public class OrderStatus extends TPCCProcedure {
public SQLStmt ordStatGetOrderLinesSQL =
new SQLStmt(
- """
+ """
SELECT OL_I_ID, OL_SUPPLY_W_ID, OL_QUANTITY, OL_AMOUNT, OL_DELIVERY_D
FROM %s
WHERE OL_O_ID = ?
@@ -62,7 +62,7 @@ public class OrderStatus extends TPCCProcedure {
public SQLStmt payGetCustSQL =
new SQLStmt(
- """
+ """
SELECT C_FIRST, C_MIDDLE, C_LAST, C_STREET_1, C_STREET_2,
C_CITY, C_STATE, C_ZIP, C_PHONE, C_CREDIT, C_CREDIT_LIM,
C_DISCOUNT, C_BALANCE, C_YTD_PAYMENT, C_PAYMENT_CNT, C_SINCE
@@ -75,7 +75,7 @@ public class OrderStatus extends TPCCProcedure {
public SQLStmt customerByNameSQL =
new SQLStmt(
- """
+ """
SELECT C_FIRST, C_MIDDLE, C_ID, C_STREET_1, C_STREET_2, C_CITY,
C_STATE, C_ZIP, C_PHONE, C_CREDIT, C_CREDIT_LIM, C_DISCOUNT,
C_BALANCE, C_YTD_PAYMENT, C_PAYMENT_CNT, C_SINCE
diff --git a/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/Payment.java b/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/Payment.java
index 7f3ea5c88..d17255d1e 100644
--- a/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/Payment.java
+++ b/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/Payment.java
@@ -38,7 +38,7 @@ public class Payment extends TPCCProcedure {
public SQLStmt payUpdateWhseSQL =
new SQLStmt(
- """
+ """
UPDATE %s
SET W_YTD = W_YTD + ?
WHERE W_ID = ?
@@ -47,7 +47,7 @@ public class Payment extends TPCCProcedure {
public SQLStmt payGetWhseSQL =
new SQLStmt(
- """
+ """
SELECT W_STREET_1, W_STREET_2, W_CITY, W_STATE, W_ZIP, W_NAME
FROM %s
WHERE W_ID = ?
@@ -56,7 +56,7 @@ public class Payment extends TPCCProcedure {
public SQLStmt payUpdateDistSQL =
new SQLStmt(
- """
+ """
UPDATE %s
SET D_YTD = D_YTD + ?
WHERE D_W_ID = ?
@@ -66,7 +66,7 @@ public class Payment extends TPCCProcedure {
public SQLStmt payGetDistSQL =
new SQLStmt(
- """
+ """
SELECT D_STREET_1, D_STREET_2, D_CITY, D_STATE, D_ZIP, D_NAME
FROM %s
WHERE D_W_ID = ?
@@ -76,7 +76,7 @@ public class Payment extends TPCCProcedure {
public SQLStmt payGetCustSQL =
new SQLStmt(
- """
+ """
SELECT C_FIRST, C_MIDDLE, C_LAST, C_STREET_1, C_STREET_2,
C_CITY, C_STATE, C_ZIP, C_PHONE, C_CREDIT, C_CREDIT_LIM,
C_DISCOUNT, C_BALANCE, C_YTD_PAYMENT, C_PAYMENT_CNT, C_SINCE
@@ -89,7 +89,7 @@ public class Payment extends TPCCProcedure {
public SQLStmt payGetCustCdataSQL =
new SQLStmt(
- """
+ """
SELECT C_DATA
FROM %s
WHERE C_W_ID = ?
@@ -100,7 +100,7 @@ public class Payment extends TPCCProcedure {
public SQLStmt payUpdateCustBalCdataSQL =
new SQLStmt(
- """
+ """
UPDATE %s
SET C_BALANCE = ?,
C_YTD_PAYMENT = ?,
@@ -114,7 +114,7 @@ public class Payment extends TPCCProcedure {
public SQLStmt payUpdateCustBalSQL =
new SQLStmt(
- """
+ """
UPDATE %s
SET C_BALANCE = ?,
C_YTD_PAYMENT = ?,
@@ -127,7 +127,7 @@ public class Payment extends TPCCProcedure {
public SQLStmt payInsertHistSQL =
new SQLStmt(
- """
+ """
INSERT INTO %s
(H_C_D_ID, H_C_W_ID, H_C_ID, H_D_ID, H_W_ID, H_DATE, H_AMOUNT, H_DATA)
VALUES (?,?,?,?,?,?,?,?)
@@ -136,7 +136,7 @@ public class Payment extends TPCCProcedure {
public SQLStmt customerByNameSQL =
new SQLStmt(
- """
+ """
SELECT C_FIRST, C_MIDDLE, C_ID, C_STREET_1, C_STREET_2, C_CITY,
C_STATE, C_ZIP, C_PHONE, C_CREDIT, C_CREDIT_LIM, C_DISCOUNT,
C_BALANCE, C_YTD_PAYMENT, C_PAYMENT_CNT, C_SINCE
diff --git a/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/StockLevel.java b/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/StockLevel.java
index 184ee7379..4ee553285 100644
--- a/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/StockLevel.java
+++ b/src/main/java/com/oltpbenchmark/benchmarks/tpcc/procedures/StockLevel.java
@@ -35,7 +35,7 @@ public class StockLevel extends TPCCProcedure {
public SQLStmt stockGetDistOrderIdSQL =
new SQLStmt(
- """
+ """
SELECT D_NEXT_O_ID
FROM %s
WHERE D_W_ID = ?
@@ -45,7 +45,7 @@ public class StockLevel extends TPCCProcedure {
public SQLStmt stockGetCountStockSQL =
new SQLStmt(
- """
+ """
SELECT COUNT(DISTINCT (S_I_ID)) AS STOCK_COUNT
FROM %s, %s
WHERE OL_W_ID = ?
diff --git a/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q15.java b/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q15.java
index 972fde693..4020aa7e8 100644
--- a/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q15.java
+++ b/src/main/java/com/oltpbenchmark/benchmarks/tpch/procedures/Q15.java
@@ -67,7 +67,8 @@ CREATE view revenue0 (supplier_no, total_revenue) AS
""");
public final SQLStmt dropview_stmt =
- new SQLStmt("""
+ new SQLStmt(
+ """
DROP VIEW revenue0
""");
From fe24fe0b7669e98b79fcf302c616b9f6112e8e00 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 15 Mar 2024 08:36:12 -0500
Subject: [PATCH 02/18] Bump org.postgresql:postgresql from 42.7.2 to 42.7.3
(#486)
Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from
42.7.2 to 42.7.3.
Changelog
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.postgresql:postgresql&package-manager=maven&previous-version=42.7.2&new-version=42.7.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index c321e0ce3..6414296d7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,7 +83,7 @@
org.postgresqlpostgresql
- 42.7.2
+ 42.7.3runtime
@@ -185,7 +185,7 @@
org.postgresqlpostgresql
- 42.7.2
+ 42.7.3runtime
From e661e7513f32710d5a3fbd98316dd6532bd639b0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 15 Mar 2024 13:46:33 +0000
Subject: [PATCH 03/18] Bump org.apache.commons:commons-configuration2 from
2.9.0 to 2.10.0 (#485)
Bumps org.apache.commons:commons-configuration2 from 2.9.0 to 2.10.0.
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.commons:commons-configuration2&package-manager=maven&previous-version=2.9.0&new-version=2.10.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brian Kroth
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 6414296d7..ac68b07d4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -249,7 +249,7 @@
org.apache.commonscommons-configuration2
- 2.9.0
+ 2.10.0
From 7f2007acc9e7089a091a096d23fa0a55a0aec636 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 15 Mar 2024 14:12:49 +0000
Subject: [PATCH 04/18] Bump jakarta.xml.bind:jakarta.xml.bind-api from 4.0.1
to 4.0.2 (#484)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps
[jakarta.xml.bind:jakarta.xml.bind-api](https://github.com/jakartaee/jaxb-api)
from 4.0.1 to 4.0.2.
Commits
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jakarta.xml.bind:jakarta.xml.bind-api&package-manager=maven&previous-version=4.0.1&new-version=4.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index ac68b07d4..33f9a4c7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -305,7 +305,7 @@
jakarta.xml.bindjakarta.xml.bind-api
- 4.0.1
+ 4.0.2
From 3ebc6b6e1bf52d0d42246fe731b6dba4384745d3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 19 Mar 2024 14:09:20 -0500
Subject: [PATCH 05/18] Bump org.xerial:sqlite-jdbc from 3.42.0.0 to 3.45.2.0
(#487)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [org.xerial:sqlite-jdbc](https://github.com/xerial/sqlite-jdbc)
from 3.42.0.0 to 3.45.2.0.
Release notes
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.xerial:sqlite-jdbc&package-manager=maven&previous-version=3.42.0.0&new-version=3.45.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 33f9a4c7b..77291b803 100644
--- a/pom.xml
+++ b/pom.xml
@@ -64,7 +64,7 @@
org.xerialsqlite-jdbc
- 3.42.0.0
+ 3.45.2.0
From 53a2410edcce238500a7c41a630160439e1a6a30 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 19 Mar 2024 19:19:17 +0000
Subject: [PATCH 06/18] Bump org.apache.maven.plugins:maven-assembly-plugin
from 3.7.0 to 3.7.1 (#488)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps
[org.apache.maven.plugins:maven-assembly-plugin](https://github.com/apache/maven-assembly-plugin)
from 3.7.0 to 3.7.1.
Release notes
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.maven.plugins:maven-assembly-plugin&package-manager=maven&previous-version=3.7.0&new-version=3.7.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brian Kroth
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 77291b803..b185a3c83 100644
--- a/pom.xml
+++ b/pom.xml
@@ -426,7 +426,7 @@
org.apache.maven.pluginsmaven-assembly-plugin
- 3.7.0
+ 3.7.1false${project.artifactId}-${classifier}
From ed8ef3ae4106e415d4123ab0607e0b7d46eb64d2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 19 Mar 2024 20:23:57 +0000
Subject: [PATCH 07/18] Bump org.apache.maven.plugins:maven-compiler-plugin
from 3.12.1 to 3.13.0 (#489)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[//]: # (dependabot-start)
⚠️ **Dependabot is rebasing this PR** ⚠️
Rebasing might not happen immediately, so don't worry if this takes some
time.
Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.
---
[//]: # (dependabot-end)
Bumps
[org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin)
from 3.12.1 to 3.13.0.
Release notes
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.maven.plugins:maven-compiler-plugin&package-manager=maven&previous-version=3.12.1&new-version=3.13.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brian Kroth
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index b185a3c83..5c6a4eaf6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -371,7 +371,7 @@
org.apache.maven.pluginsmaven-compiler-plugin
- 3.12.1
+ 3.13.0${maven.compiler.target}
From 14cb3fe06a47c73e276e312f5a941a22aac3d4f2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 21 Mar 2024 14:02:13 -0500
Subject: [PATCH 08/18] Bump org.apache.commons:commons-configuration2 from
2.10.0 to 2.10.1 (#491)
Bumps org.apache.commons:commons-configuration2 from 2.10.0 to 2.10.1.
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.commons:commons-configuration2&package-manager=maven&previous-version=2.10.0&new-version=2.10.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 5c6a4eaf6..541bb880a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -249,7 +249,7 @@
org.apache.commonscommons-configuration2
- 2.10.0
+ 2.10.1
From 9837d6749fa7313f47a939339144a4724d531582 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 25 Mar 2024 10:47:35 -0500
Subject: [PATCH 09/18] Bump com.google.cloud:google-cloud-spanner-jdbc from
2.16.0 to 2.16.1 (#492)
Bumps
[com.google.cloud:google-cloud-spanner-jdbc](https://github.com/googleapis/java-spanner-jdbc)
from 2.16.0 to 2.16.1.
Release notes
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.cloud:google-cloud-spanner-jdbc&package-manager=maven&previous-version=2.16.0&new-version=2.16.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 541bb880a..12eae60f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -165,7 +165,7 @@
com.google.cloudgoogle-cloud-spanner-jdbc
- 2.16.0
+ 2.16.1runtime
From cc2cfa5ed6d8abeec111e11be78d7508d0efa90e Mon Sep 17 00:00:00 2001
From: Eric Enzler <92583189+ETHenzlere@users.noreply.github.com>
Date: Mon, 25 Mar 2024 12:30:49 -0400
Subject: [PATCH 10/18] Feat: Support for Distributions in Templated Workloads
(#385)
PR adds support for various Numerical Distributions in templated
benchmarks
- Uniform
- Binomial
- Zipfian
- Scrambled
The distributions work not only for integers, but also different types
such as timestamps, long, float
A table of supported combinations can be found in the templated
benchmarks readme.
| Type | uniform | binomial | zipfian | scrambled (zipfian) |
|---|:---:|:---:|:---:|:---:|
| INTEGER | X | X | X | X |
| FLOAT / REAL | X | X|- | - |
| BIGINT | X | X | X | X |
| VARCHAR / STRING | X | -| -| -|
| TIMESTAMP | X | X |X |X |
| DATE | X | X| X| X|
| TIME | X |X | X| X|
Usage example:
```xml
INTEGER
```
This PR is not a breaking change - One can still use a static value in
the templated queries.
`10`
In the future, I could see a breaking change that adds the datatype
directly to the values so the TemplatedValue can do the type handling
directly. ``. This would make type
checking easier and remove the need to store the original min/max values
as strings for all datatypes.
---------
Co-authored-by: Brian Kroth
---
data/templated/example.xml | 39 ++-
.../api/templates/ObjectFactory.java | 31 +-
.../api/templates/TemplateType.java | 93 ++++--
.../api/templates/TemplatesType.java | 45 +--
.../api/templates/TypesType.java | 36 ++-
.../api/templates/ValueType.java | 140 +++++++++
.../api/templates/ValuesType.java | 44 +--
.../benchmarks/templated/README.md | 106 ++++++-
.../templated/TemplatedBenchmark.java | 99 ++++++-
.../templated/procedures/GenericQuery.java | 134 ++++++++-
.../templated/util/GenericQueryOperation.java | 6 +-
.../templated/util/TemplatedValue.java | 274 ++++++++++++++++++
.../templated/util/ValueGenerator.java | 8 +
.../oltpbenchmark/util/JDBCSupportedType.java | 22 ++
src/main/resources/templates.xsd | 18 +-
15 files changed, 971 insertions(+), 124 deletions(-)
create mode 100644 src/main/java/com/oltpbenchmark/api/templates/ValueType.java
create mode 100644 src/main/java/com/oltpbenchmark/benchmarks/templated/util/TemplatedValue.java
create mode 100644 src/main/java/com/oltpbenchmark/benchmarks/templated/util/ValueGenerator.java
create mode 100644 src/main/java/com/oltpbenchmark/util/JDBCSupportedType.java
diff --git a/data/templated/example.xml b/data/templated/example.xml
index 4051b8a7b..e4c428b14 100644
--- a/data/templated/example.xml
+++ b/data/templated/example.xml
@@ -9,12 +9,12 @@
INTEGER
- 3
- 4
+
+
- 5
- 6
+
+
@@ -33,8 +33,8 @@
INTEGER
+ 1
- 8
@@ -53,8 +53,8 @@
FLOAT
- 10
- 10.49
+
+ 10.50
@@ -64,19 +64,28 @@
- FLOAT
+ INTEGER
- 2.1
+ 2
- ?]]>
+
- FLOAT
+ TIMESTAMP
- 255.0
+
+
+
+
+
+
+
+
+
+
@@ -97,9 +106,9 @@
111
- 2022-10-10 11:30:30
- 1.0
- Test
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/oltpbenchmark/api/templates/ObjectFactory.java b/src/main/java/com/oltpbenchmark/api/templates/ObjectFactory.java
index 3fa4c965d..36634ae2b 100644
--- a/src/main/java/com/oltpbenchmark/api/templates/ObjectFactory.java
+++ b/src/main/java/com/oltpbenchmark/api/templates/ObjectFactory.java
@@ -17,10 +17,10 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference
-// Implementation, vJAXB 2.1.10
-// See http://java.sun.com/xml/jaxb
+// Implementation, v2.3.0.1
+// See https://javaee.github.io/jaxb-v2/
// Any modifications to this file will be lost upon recompilation of the source schema.
-// Generated on: 2011.12.28 at 11:42:38 PM EST
+// Generated on: 2023.11.16 at 08:29:59 AM UTC
//
package com.oltpbenchmark.api.templates;
@@ -32,7 +32,7 @@
/**
* This object contains factory methods for each Java content interface and Java element interface
- * generated in the com.oltpbenchmark.api.templates package.
+ * generated in the main.java.com.oltpbenchmark.api.templates package.
*
*
An ObjectFactory allows you to programatically construct new instances of the Java
* representation for XML content. The Java representation of XML content can consist of schema
@@ -46,10 +46,15 @@ public class ObjectFactory {
/**
* Create a new ObjectFactory that can be used to create new instances of schema derived classes
- * for package: com.oltpbenchmark.api.templates
+ * for package: main.java.com.oltpbenchmark.api.templates
*/
public ObjectFactory() {}
+ /** Create an instance of {@link TemplatesType } */
+ public TemplatesType createTemplatesType() {
+ return new TemplatesType();
+ }
+
/** Create an instance of {@link TemplateType } */
public TemplateType createTemplateType() {
return new TemplateType();
@@ -65,9 +70,19 @@ public ValuesType createValuesType() {
return new ValuesType();
}
- /** Create an instance of {@link JAXBElement }{@code <}{@link TemplatesType }{@code >}} */
+ /** Create an instance of {@link ValueType } */
+ public ValueType createValueType() {
+ return new ValueType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TemplatesType }{@code >}
+ *
+ * @param value Java instance representing xml element's value.
+ * @return the new instance of {@link JAXBElement }{@code <}{@link TemplatesType }{@code >}
+ */
@XmlElementDecl(namespace = "", name = "templates")
- public JAXBElement createDialects(TemplatesType value) {
- return new JAXBElement<>(_Templates_QNAME, TemplatesType.class, null, value);
+ public JAXBElement createTemplates(TemplatesType value) {
+ return new JAXBElement(_Templates_QNAME, TemplatesType.class, null, value);
}
}
diff --git a/src/main/java/com/oltpbenchmark/api/templates/TemplateType.java b/src/main/java/com/oltpbenchmark/api/templates/TemplateType.java
index 427180c28..d5c59d276 100644
--- a/src/main/java/com/oltpbenchmark/api/templates/TemplateType.java
+++ b/src/main/java/com/oltpbenchmark/api/templates/TemplateType.java
@@ -17,10 +17,10 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference
-// Implementation, vJAXB 2.1.10
-// See http://java.sun.com/xml/jaxb
+// Implementation, v2.3.0.1
+// See https://javaee.github.io/jaxb-v2/
// Any modifications to this file will be lost upon recompilation of the source schema.
-// Generated on: 2011.12.28 at 11:42:38 PM EST
+// Generated on: 2023.11.16 at 08:29:59 AM UTC
//
package com.oltpbenchmark.api.templates;
@@ -30,21 +30,23 @@
import java.util.List;
/**
- * Java class for dialectType complex type.
+ * Java class for templateType complex type.
*
*
The following schema fragment specifies the expected content contained within this class.
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@@ -53,9 +55,6 @@
propOrder = {"query", "types", "values"})
public class TemplateType {
- @XmlAttribute(required = true)
- protected String name;
-
@XmlElement(required = true)
protected String query;
@@ -65,24 +64,63 @@ public class TemplateType {
@XmlElement(required = true)
protected List values;
- /** Gets the value of the query property. */
+ @XmlAttribute(name = "name", required = true)
+ protected String name;
+
+ /**
+ * Gets the value of the query property.
+ *
+ * @return possible object is {@link String }
+ */
public String getQuery() {
return this.query;
}
- /** Gets the value of the types property. */
+ /**
+ * Sets the value of the query property.
+ *
+ * @param value allowed object is {@link String }
+ */
+ public void setQuery(String value) {
+ this.query = value;
+ }
+
+ /**
+ * Gets the value of the types property.
+ *
+ * @return possible object is {@link TypesType }
+ */
public TypesType getTypes() {
return this.types;
}
/**
- * Gets the value of the types property.
+ * Sets the value of the types property.
+ *
+ * @param value allowed object is {@link TypesType }
+ */
+ public void setTypes(TypesType value) {
+ this.types = value;
+ }
+
+ /**
+ * Gets the value of the values property.
+ *
+ *
This accessor method returns a reference to the live list, not a snapshot. Therefore any
+ * modification you make to the returned list will be present inside the JAXB object. This is why
+ * there is not a set method for the values property.
+ *
+ *
For example, to add a new item, do as follows:
+ *
+ *
+ * getValues().add(newItem);
+ *
*
*
Objects of the following type(s) are allowed in the list {@link ValuesType }
*/
- public List getValues() {
+ public List getValuesList() {
if (this.values == null) {
- this.values = new ArrayList<>();
+ this.values = new ArrayList();
}
return this.values;
}
@@ -93,6 +131,15 @@ public List getValues() {
* @return possible object is {@link String }
*/
public String getName() {
- return name;
+ return this.name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value allowed object is {@link String }
+ */
+ public void setName(String value) {
+ this.name = value;
}
}
diff --git a/src/main/java/com/oltpbenchmark/api/templates/TemplatesType.java b/src/main/java/com/oltpbenchmark/api/templates/TemplatesType.java
index 4773c4986..cb8ad6d28 100644
--- a/src/main/java/com/oltpbenchmark/api/templates/TemplatesType.java
+++ b/src/main/java/com/oltpbenchmark/api/templates/TemplatesType.java
@@ -17,36 +17,33 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference
-// Implementation, vJAXB 2.1.10
-// See http://java.sun.com/xml/jaxb
+// Implementation, v2.3.0.1
+// See https://javaee.github.io/jaxb-v2/
// Any modifications to this file will be lost upon recompilation of the source schema.
-// Generated on: 2011.12.28 at 11:42:38 PM EST
+// Generated on: 2023.11.16 at 08:29:59 AM UTC
//
package com.oltpbenchmark.api.templates;
-import jakarta.xml.bind.annotation.XmlAccessType;
-import jakarta.xml.bind.annotation.XmlAccessorType;
-import jakarta.xml.bind.annotation.XmlElement;
-import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
- * Java class for dialectsType complex type.
+ * Java class for templatesType complex type.
*
*
The following schema fragment specifies the expected content contained within this class.
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@@ -59,13 +56,23 @@ public class TemplatesType {
protected List template;
/**
- * Gets the value of the dialect property.
+ * Gets the value of the template property.
+ *
+ *
This accessor method returns a reference to the live list, not a snapshot. Therefore any
+ * modification you make to the returned list will be present inside the JAXB object. This is why
+ * there is not a set method for the template property.
+ *
+ *
For example, to add a new item, do as follows:
+ *
+ *
+ * getTemplate().add(newItem);
+ *
*
*
Objects of the following type(s) are allowed in the list {@link TemplateType }
*/
public List getTemplateList() {
if (this.template == null) {
- this.template = new ArrayList<>();
+ this.template = new ArrayList();
}
return this.template;
}
diff --git a/src/main/java/com/oltpbenchmark/api/templates/TypesType.java b/src/main/java/com/oltpbenchmark/api/templates/TypesType.java
index 6fec026c2..8c43e4b8e 100644
--- a/src/main/java/com/oltpbenchmark/api/templates/TypesType.java
+++ b/src/main/java/com/oltpbenchmark/api/templates/TypesType.java
@@ -17,10 +17,10 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference
-// Implementation, vJAXB 2.1.10
-// See http://java.sun.com/xml/jaxb
+// Implementation, v2.3.0.1
+// See https://javaee.github.io/jaxb-v2/
// Any modifications to this file will be lost upon recompilation of the source schema.
-// Generated on: 2011.12.28 at 11:42:38 PM EST
+// Generated on: 2023.11.16 at 08:29:59 AM UTC
//
package com.oltpbenchmark.api.templates;
@@ -30,20 +30,20 @@
import java.util.List;
/**
- * Java class for dialectType complex type.
+ * Java class for typesType complex type.
*
*
The following schema fragment specifies the expected content contained within this class.
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@@ -58,6 +58,16 @@ public class TypesType {
/**
* Gets the value of the type property.
*
+ *
This accessor method returns a reference to the live list, not a snapshot. Therefore any
+ * modification you make to the returned list will be present inside the JAXB object. This is why
+ * there is not a set method for the type property.
+ *
+ *
For example, to add a new item, do as follows:
+ *
+ *
+ * getType().add(newItem);
+ *
+ *
*
Objects of the following type(s) are allowed in the list {@link String }
*/
public List getTypeList() {
diff --git a/src/main/java/com/oltpbenchmark/api/templates/ValueType.java b/src/main/java/com/oltpbenchmark/api/templates/ValueType.java
new file mode 100644
index 000000000..07a2fa9ca
--- /dev/null
+++ b/src/main/java/com/oltpbenchmark/api/templates/ValueType.java
@@ -0,0 +1,140 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference
+// Implementation, v2.3.0.1
+// See https://javaee.github.io/jaxb-v2/
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2023.11.16 at 08:29:59 AM UTC
+//
+
+package com.oltpbenchmark.api.templates;
+
+import jakarta.xml.bind.annotation.*;
+
+/**
+ * Java class for valueType complex type.
+ *
+ *
The following schema fragment specifies the expected content contained within this class.
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(
+ name = "valueType",
+ propOrder = {"value"})
+public class ValueType {
+
+ @XmlValue protected String value;
+
+ @XmlAttribute(name = "dist")
+ protected String dist;
+
+ @XmlAttribute(name = "min")
+ protected String min;
+
+ @XmlAttribute(name = "max")
+ protected String max;
+
+ @XmlAttribute(name = "seed")
+ protected String seed;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return possible object is {@link String }
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value allowed object is {@link String }
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the dist property.
+ *
+ * @return possible object is {@link String }
+ */
+ public String getDist() {
+ return dist;
+ }
+
+ /**
+ * Sets the value of the dist property.
+ *
+ * @param value allowed object is {@link String }
+ */
+ public void setDist(String value) {
+ this.dist = value;
+ }
+
+ /**
+ * Gets the value of the min property.
+ *
+ * @return possible object is {@link String }
+ */
+ public String getMin() {
+ return min;
+ }
+
+ /**
+ * Sets the value of the min property.
+ *
+ * @param value allowed object is {@link String }
+ */
+ public void setMin(String value) {
+ this.min = value;
+ }
+
+ /**
+ * Gets the value of the max property.
+ *
+ * @return possible object is {@link String }
+ */
+ public String getMax() {
+ return max;
+ }
+
+ /**
+ * Sets the value of the max property.
+ *
+ * @param value allowed object is {@link String }
+ */
+ public void setMax(String value) {
+ this.max = value;
+ }
+
+ /**
+ * Gets the value of the seed property.
+ *
+ * @return possible object is {@link String }
+ */
+ public String getSeed() {
+ return seed;
+ }
+
+ /**
+ * Sets the value of the seed property.
+ *
+ * @param value allowed object is {@link String }
+ */
+ public void setSeed(String value) {
+ this.seed = value;
+ }
+}
diff --git a/src/main/java/com/oltpbenchmark/api/templates/ValuesType.java b/src/main/java/com/oltpbenchmark/api/templates/ValuesType.java
index 6711ff53a..ee9bf4138 100644
--- a/src/main/java/com/oltpbenchmark/api/templates/ValuesType.java
+++ b/src/main/java/com/oltpbenchmark/api/templates/ValuesType.java
@@ -17,10 +17,10 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference
-// Implementation, vJAXB 2.1.10
-// See http://java.sun.com/xml/jaxb
+// Implementation, v2.3.0.1
+// See https://javaee.github.io/jaxb-v2/
// Any modifications to this file will be lost upon recompilation of the source schema.
-// Generated on: 2011.12.28 at 11:42:38 PM EST
+// Generated on: 2023.11.16 at 08:29:59 AM UTC
//
package com.oltpbenchmark.api.templates;
@@ -30,20 +30,20 @@
import java.util.List;
/**
- * Java class for dialectType complex type.
+ * Java class for valuesType complex type.
*
*
The following schema fragment specifies the expected content contained within this class.
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@@ -53,16 +53,26 @@
public class ValuesType {
@XmlElement(required = true)
- protected List value;
+ protected List value;
/**
* Gets the value of the value property.
*
- *
Objects of the following type(s) are allowed in the list {@link String }
+ *
This accessor method returns a reference to the live list, not a snapshot. Therefore any
+ * modification you make to the returned list will be present inside the JAXB object. This is why
+ * there is not a set method for the value property.
+ *
+ *
For example, to add a new item, do as follows:
+ *
+ *
+ * getValue().add(newItem);
+ *
+ *
+ *
Objects of the following type(s) are allowed in the list {@link ValueType }
*/
- public List getValueList() {
+ public List getValueList() {
if (this.value == null) {
- this.value = new ArrayList<>();
+ this.value = new ArrayList();
}
return this.value;
}
diff --git a/src/main/java/com/oltpbenchmark/benchmarks/templated/README.md b/src/main/java/com/oltpbenchmark/benchmarks/templated/README.md
index 38d919f69..865775349 100644
--- a/src/main/java/com/oltpbenchmark/benchmarks/templated/README.md
+++ b/src/main/java/com/oltpbenchmark/benchmarks/templated/README.md
@@ -34,7 +34,8 @@ The file path for the XML template has to be defined in the workload configurati
An example configuration can be found in [`config/sqlserver/sample_template_config.xml`](../../../../../../../config/sqlserver/sample_templated_config.xml).
-> Since the templated benchmark is meant to flexibly support a myriad of different database schemas, it doesn't *currently* support the `init` and `load` phases.
+> Since the templated benchmark is meant to flexibly support a myriad of different database schemas, it doesn't _currently_ support the `init` and `load` phases.
+
The example can be executed if a loaded TPC-C instance is used as JDBC endpoint.
@@ -54,3 +55,106 @@ java -jar benchbase.jar -b templated -c config/sqlserver/sample_templated_config
```
> For additional examples, please refer to the build pipeline definition in the [`maven.yml`](../../../../../../../.github/workflows/maven.yml#L423) Github Actions workflow file.
+
+### Value selection
+
+
+The values are selected in **Round-Robin** fashion, giving the following access pattern for query 'Q1':
+
+`V1 --> V2 --> V1 --> V2 ...`
+
+```xml
+
+
+
+
+ Type1
+
+
+ V1
+
+
+ V2
+
+
+
+```
+
+For now, more fine-grained control of the access pattern can be achieved by building a new query for each value and adjusting the weight of each query in the config file.
+
+## Value Distributions
+
+In order to support more variety in templated queries, it is possible to use a whole distribution of values instead of a single static value in a templated query
+
+Each time the query is run, a different value will substitute the `?`.
+
+```xml
+
+
+
+
+ INTEGER
+
+
+
+
+
+
+
+
+
+
+```
+
+The distributions are dependent on the type of the value. Currently, the following type-distributions pairs are supported:
+| Type | uniform | binomial | zipfian | scrambled |
+| ---------------- | :-----: | :------: | :-----: | :---------------: |
+| INTEGER | X | X | X | X |
+| FLOAT / REAL | X | X | - | - |
+| BIGINT | X | X | X | X |
+| VARCHAR | X | - | - | - |
+| TIMESTAMP | X | X | X | X |
+| DATE | X | X | X | X |
+| TIME | X | X | X | X |
+
+The following properties can be set for templated distributions:
+
+| Property | description | required | default |
+| ----- | ---------------------------------------------- | :------: | :-----: |
+| dist | The distribution of the values | Yes | - |
+| min | The minimum value the generator can produce | Yes | - |
+| max | The maximum value the generator can produce | Yes | - |
+| seed | A seed for the generator to ensure consistency | No | 0 |
+
+
+### Timestamps, Dates and Time
+
+For `Timestamp`, `Date`, and `Time` types, the min and max values can be given as a Long value or string.
+- The Long value is interpreted as the milliseconds since January 1, 1970, 00:00:00 GMT/UTC.
+
+- The string value is interpreted as UTC timezone and must have the following format: (yyyy-MM-dd HH:mm:ss)
+
+#### Example
+```xml
+
+
+
+
+```
+To get the current UNIX time in milliseconds, use the following bash command:
+```bash
+date +%s%3N
+```
+or use a web services like [www.currentmillis.com](www.currentmillis.com)
+
+
diff --git a/src/main/java/com/oltpbenchmark/benchmarks/templated/TemplatedBenchmark.java b/src/main/java/com/oltpbenchmark/benchmarks/templated/TemplatedBenchmark.java
index c92ccf767..38ae2c533 100644
--- a/src/main/java/com/oltpbenchmark/benchmarks/templated/TemplatedBenchmark.java
+++ b/src/main/java/com/oltpbenchmark/benchmarks/templated/TemplatedBenchmark.java
@@ -25,18 +25,19 @@
import com.oltpbenchmark.api.Worker;
import com.oltpbenchmark.api.templates.TemplateType;
import com.oltpbenchmark.api.templates.TemplatesType;
+import com.oltpbenchmark.api.templates.ValueType;
import com.oltpbenchmark.api.templates.ValuesType;
import com.oltpbenchmark.benchmarks.templated.procedures.GenericQuery;
import com.oltpbenchmark.benchmarks.templated.procedures.GenericQuery.QueryTemplateInfo;
import com.oltpbenchmark.benchmarks.templated.util.GenericQueryOperation;
+import com.oltpbenchmark.benchmarks.templated.util.TemplatedValue;
import com.oltpbenchmark.benchmarks.templated.util.TraceTransactionGenerator;
-import com.opencsv.CSVParser;
-import com.opencsv.CSVParserBuilder;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.Unmarshaller;
import java.io.FileInputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -120,12 +121,25 @@ protected List> makeWorkersImpl() {
// list of params.
List list = new ArrayList<>();
String[] paramsTypes = info.getParamsTypes();
- CSVParser parser = new CSVParserBuilder().withQuoteChar('\'').build();
- for (String binding : info.getParamsValues()) {
- Object[] params = parser.parseLine(binding);
- assert paramsTypes.length == params.length;
+
+ TemplatedValue[] params = info.getParamsValues();
+ int paramsLen = params.length;
+ int typesLen = paramsTypes.length;
+
+ assert (paramsLen % typesLen) == 0;
+
+ if (paramsLen == typesLen) {
list.add(new GenericQueryOperation(params));
+ } else {
+ int numSplits = paramsLen / typesLen;
+ for (int j = 0; j < numSplits; j += 1) {
+ TemplatedValue[] subset =
+ Arrays.copyOfRange(params, j * typesLen, j * typesLen + typesLen);
+ assert subset.length == typesLen;
+ list.add(new GenericQueryOperation(subset));
+ }
}
+
generators.put(proc.getClass(), new TraceTransactionGenerator(list));
}
@@ -138,6 +152,7 @@ protected List> makeWorkersImpl() {
} catch (Exception e) {
throw new IllegalStateException("Unable to create workers", e);
}
+
return workers;
}
@@ -169,11 +184,31 @@ private CustomClassLoader loadQueryTemplates(String file) {
for (TemplateType template : templates.getTemplateList()) {
ImmutableParsedQueryTemplate.Builder b = ImmutableParsedQueryTemplate.builder();
+ List templateTypes = template.getTypes().getTypeList();
+
b.name(template.getName());
b.query(template.getQuery());
- b.paramsTypes(template.getTypes().getTypeList());
- for (ValuesType paramValue : template.getValues()) {
- b.addParamsValues(String.join(",", paramValue.getValueList()));
+ b.paramsTypes(templateTypes);
+
+ for (ValuesType paramValue : template.getValuesList()) {
+ int typeIndex = 0;
+ for (ValueType value : paramValue.getValueList()) {
+ /* Lightweight constructor used if no distribution is present */
+ if (value.getDist() == null
+ || value.getDist().length() < 1
+ || value.getDist().equals("null")) {
+ b.addParamsValues(new TemplatedValue(value.getValue()));
+ } else {
+ b.addParamsValues(
+ new TemplatedValue(
+ value.getDist(),
+ value.getMin(),
+ value.getMax(),
+ value.getSeed(),
+ templateTypes.get(typeIndex)));
+ }
+ typeIndex++;
+ }
}
ParsedQueryTemplate qt = b.build();
@@ -181,26 +216,28 @@ private CustomClassLoader loadQueryTemplates(String file) {
final String s =
"""
package %s ;
+ import %s ;
public final class %s extends %s {
@Override
public %s getQueryTemplateInfo() {
return ImmutableQueryTemplateInfo.builder()
.query(new %s(\"%s\"))
.paramsTypes(new String[] {%s})
- .paramsValues(new String[] {%s})
+ .paramsValues(new TemplatedValue[] {%s})
.build();
}
}
"""
.formatted(
GenericQuery.class.getPackageName(),
+ TemplatedValue.class.getCanonicalName(),
qt.getName(),
GenericQuery.class.getCanonicalName(),
QueryTemplateInfo.class.getCanonicalName(),
SQLStmt.class.getCanonicalName(),
StringEscapeUtils.escapeJava(qt.getQuery()),
getParamsString(qt.getParamsTypes()),
- getParamsString(qt.getParamsValues()));
+ buildTemplatedValueString(qt.getParamsValues()));
LOG.debug("Class definition for query template {}:\n {}", qt.getName(), s);
final String qualifiedClassName = GenericQuery.class.getPackageName() + "." + qt.getName();
final ISimpleCompiler compiler = compilerFactory.newSimpleCompiler();
@@ -224,6 +261,44 @@ private String getParamsString(List params) {
return result.isEmpty() ? "" : result.substring(0, result.length() - 1);
}
+ private String buildTemplatedValueString(List params) {
+ String result = "";
+ for (TemplatedValue param : params) {
+ if (param.getDistribution() != null) {
+ result +=
+ "new TemplatedValue("
+ + "\""
+ + param.getDistribution()
+ + "\""
+ + ","
+ + "\""
+ + param.getMin()
+ + "\""
+ + ","
+ + "\""
+ + param.getMax()
+ + "\""
+ + ","
+ + "\""
+ + param.getSeed()
+ + "\""
+ + ","
+ + "\""
+ + param.getValueType()
+ + "\""
+ + "),";
+ } else {
+ result +=
+ "new TemplatedValue("
+ + "\""
+ + StringEscapeUtils.escapeJava(param.getValue())
+ + "\""
+ + "),";
+ }
+ }
+ return result.isEmpty() ? "" : result.substring(0, result.length() - 1);
+ }
+
private static class CustomClassLoader extends ClassLoader {
private final Map> classes = new HashMap<>();
@@ -271,7 +346,7 @@ default List getParamsTypes() {
/** Potential query parameter values. */
@Value.Default
- default List getParamsValues() {
+ default List getParamsValues() {
return List.of();
}
}
diff --git a/src/main/java/com/oltpbenchmark/benchmarks/templated/procedures/GenericQuery.java b/src/main/java/com/oltpbenchmark/benchmarks/templated/procedures/GenericQuery.java
index e4ab9a2b1..9c5ea67d0 100644
--- a/src/main/java/com/oltpbenchmark/benchmarks/templated/procedures/GenericQuery.java
+++ b/src/main/java/com/oltpbenchmark/benchmarks/templated/procedures/GenericQuery.java
@@ -18,10 +18,16 @@
import com.oltpbenchmark.api.Procedure;
import com.oltpbenchmark.api.SQLStmt;
+import com.oltpbenchmark.benchmarks.templated.util.TemplatedValue;
+import com.oltpbenchmark.benchmarks.templated.util.ValueGenerator;
+import com.oltpbenchmark.util.JDBCSupportedType;
import java.sql.Connection;
+import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Time;
+import java.sql.Timestamp;
import java.sql.Types;
import java.util.List;
import org.immutables.value.Value;
@@ -33,7 +39,7 @@ public abstract class GenericQuery extends Procedure {
protected static final Logger LOG = LoggerFactory.getLogger(GenericQuery.class);
/** Execution method with parameters. */
- public void run(Connection conn, List