support for single repartition join mode

query-gen-support-single-shard
aykutbozkurt 2023-06-07 19:53:19 +03:00
parent ad3b6ed164
commit 103c4e61f3
4 changed files with 17 additions and 2 deletions

View File

@ -89,6 +89,8 @@ Schema for Query configuration:
```yaml ```yaml
queryCount: <int> queryCount: <int>
queryOutFile: <string> queryOutFile: <string>
repartitionJoin: <bool>
singleRepartitionJoin: <bool>
semiAntiJoin: <bool> semiAntiJoin: <bool>
cartesianProduct: <bool> cartesianProduct: <bool>
limit: <bool> limit: <bool>
@ -116,6 +118,8 @@ Explanation:
```yaml ```yaml
queryCount: "number of queries to generate" queryCount: "number of queries to generate"
queryOutFile: "file to write generated queries" queryOutFile: "file to write generated queries"
repartitionJoin: "should we enable repartition join"
singleRepartitionJoin: "should we make default repartition join mode as single repartition join (default is dual)"
semiAntiJoin: "should we support semi joins (WHERE col IN (Subquery))" semiAntiJoin: "should we support semi joins (WHERE col IN (Subquery))"
cartesianProduct: "should we support cartesian joins" cartesianProduct: "should we support cartesian joins"
limit: "should we support limit clause" limit: "should we support limit clause"

View File

@ -28,6 +28,8 @@ class Config:
self.targetRteCount = configObj["targetRteCount"] self.targetRteCount = configObj["targetRteCount"]
self.targetCteCount = configObj["targetCteCount"] self.targetCteCount = configObj["targetCteCount"]
self.targetCteRteCount = configObj["targetCteRteCount"] self.targetCteRteCount = configObj["targetCteRteCount"]
self.repartitionJoin = configObj["repartitionJoin"]
self.singleRepartitionJoin = configObj["singleRepartitionJoin"]
self.semiAntiJoin = configObj["semiAntiJoin"] self.semiAntiJoin = configObj["semiAntiJoin"]
self.cartesianProduct = configObj["cartesianProduct"] self.cartesianProduct = configObj["cartesianProduct"]
self.limit = configObj["limit"] self.limit = configObj["limit"]

View File

@ -2,6 +2,8 @@ interactiveMode: false
queryCount: 250 queryCount: 250
queryOutFile: queries.sql queryOutFile: queries.sql
ddlOutFile: ddls.sql ddlOutFile: ddls.sql
repartitionJoin: true
singleRepartitionJoin: false
semiAntiJoin: true semiAntiJoin: true
cartesianProduct: false cartesianProduct: false
limit: true limit: true

View File

@ -55,8 +55,15 @@ def _fileMode(ddls, data):
) )
with open(fileName, "w") as f: with open(fileName, "w") as f:
# enable repartition joins due to https://github.com/citusdata/citus/issues/6865 # enable repartition joins due to https://github.com/citusdata/citus/issues/6865
queryLines = []
if getConfig().repartitionJoin:
enableRepartitionJoinCommand = "SET citus.enable_repartition_joins TO on;\n" enableRepartitionJoinCommand = "SET citus.enable_repartition_joins TO on;\n"
queryLines = [enableRepartitionJoinCommand] queryLines.append(enableRepartitionJoinCommand)
if getConfig().singleRepartitionJoin:
singleRepartitionJoinCommand = (
"SET citus.enable_single_hash_repartition_joins TO on;\n"
)
queryLines.append(singleRepartitionJoinCommand)
queryId = 1 queryId = 1
for _ in range(queryCount): for _ in range(queryCount):
query = newQuery() query = newQuery()