From 3579368491893ed946d33d79b5fe20e62d6fc885 Mon Sep 17 00:00:00 2001 From: CelestaLiu Date: Thu, 7 Aug 2025 15:01:45 +0000 Subject: [PATCH 1/4] add support for cockroachdb by docker pulling --- cockroachdb/__init__.py | 0 cockroachdb/config.json | 17 +++++++++++++++++ config.json | 2 +- test.py | 4 +++- 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 cockroachdb/__init__.py create mode 100644 cockroachdb/config.json diff --git a/cockroachdb/__init__.py b/cockroachdb/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/cockroachdb/config.json b/cockroachdb/config.json new file mode 100644 index 0000000..cb3df00 --- /dev/null +++ b/cockroachdb/config.json @@ -0,0 +1,17 @@ +{ + "embedded": "no", + "dbms": "cockroachdb", + "image": "cockroachdb/cockroach:v24.1.0", + "container_name": "cockroachdb-sqlancer", + "port": 26257, + "startup_cmd": [ + "start-single-node", + "--insecure" + ], + "username": "root", + "password": "", + "oracle": "CERT", + "num_threads": 4, + "timeout_seconds": 60 + } + \ No newline at end of file diff --git a/config.json b/config.json index 4a8cc01..dc2b8f7 100644 --- a/config.json +++ b/config.json @@ -1,5 +1,5 @@ { - "dbms_list": ["mysql", "postgres", "sqlite", "tidb"], + "dbms_list": ["mysql", "postgres", "sqlite", "tidb", "cockroachdb"], "dbms": "mysql", "container_name": "mysql-custom", "image": "mysql-custom", diff --git a/test.py b/test.py index e78b96f..75407f5 100644 --- a/test.py +++ b/test.py @@ -18,6 +18,7 @@ def start_db_container(dbms, cfg, script_log, docker_log): image = cfg.get("image") container_name = cfg.get("container_name", f"{dbms}-sqlancer") env_dict = cfg.get("env", {}) + startup_cmd = cfg.get("startup_cmd", []) if not image: script_log.error( "Missing 'image' field in config.json") @@ -36,7 +37,8 @@ def start_db_container(dbms, cfg, script_log, docker_log): "--name", container_name, "--network", "sqlancer-net", *env_vars, - image + image, + *startup_cmd ], docker_log) script_log.info("Starting DBMS container: %s ...", container_name) From c04c6f1a696b6142b3ff73d165f8cf333e7c19c5 Mon Sep 17 00:00:00 2001 From: CelestaLiu Date: Mon, 11 Aug 2025 03:54:09 +0000 Subject: [PATCH 2/4] adjust sqlancer dockerfile to adapt the latest version of cockrachdb --- cockroachdb/config.json | 2 +- sqlancer/Dockerfile | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/cockroachdb/config.json b/cockroachdb/config.json index cb3df00..61e3247 100644 --- a/cockroachdb/config.json +++ b/cockroachdb/config.json @@ -1,7 +1,7 @@ { "embedded": "no", "dbms": "cockroachdb", - "image": "cockroachdb/cockroach:v24.1.0", + "image": "cockroachdb/cockroach:latest", "container_name": "cockroachdb-sqlancer", "port": 26257, "startup_cmd": [ diff --git a/sqlancer/Dockerfile b/sqlancer/Dockerfile index 7891414..cde5673 100644 --- a/sqlancer/Dockerfile +++ b/sqlancer/Dockerfile @@ -1,15 +1,47 @@ +# FROM ubuntu:20.04 + +# ENV DEBIAN_FRONTEND=noninteractive + +# RUN apt-get update && \ +# apt-get install -y openjdk-17-jdk maven git jq netcat mysql-client && \ +# rm -rf /var/lib/apt/lists/* + +# WORKDIR /root/sqlancer + +# RUN git clone https://github.com/sqlancer/sqlancer.git . && \ +# mvn clean package -DskipTests + +# COPY entrypoint.sh /root/entrypoint.sh +# RUN chmod +x /root/entrypoint.sh + +# CMD ["/root/entrypoint.sh"] + FROM ubuntu:20.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ - apt-get install -y openjdk-17-jdk maven git jq netcat mysql-client && \ + apt-get install -y --no-install-recommends \ + openjdk-17-jdk maven git jq netcat mysql-client \ + curl ca-certificates bash grep sed && \ rm -rf /var/lib/apt/lists/* WORKDIR /root/sqlancer +ARG SQLANCER_REF=main + RUN git clone https://github.com/sqlancer/sqlancer.git . && \ - mvn clean package -DskipTests + git checkout "${SQLANCER_REF}" && \ + echo ">>> scanning for deprecated CockroachDB settings..." && \ + PC_ENABLED_FILES="$(grep -RIl 'sql.metrics.statement_details.plan_collection.enabled' || true)" && \ + if [ -n "$PC_ENABLED_FILES" ]; then \ + echo "$PC_ENABLED_FILES" | xargs -r sed -i "/sql.metrics.statement_details.plan_collection.enabled/d"; \ + fi && \ + PC_PERIOD_FILES="$(grep -RIl 'sql.metrics.statement_details.plan_collection.period' || true)" && \ + if [ -n "$PC_PERIOD_FILES" ]; then \ + echo "$PC_PERIOD_FILES" | xargs -r sed -i "/sql.metrics.statement_details.plan_collection.period/d"; \ + fi && \ + mvn -q -DskipTests clean package COPY entrypoint.sh /root/entrypoint.sh RUN chmod +x /root/entrypoint.sh From 2b031f6e087d722ac1db8a93665d49d3b9a35234 Mon Sep 17 00:00:00 2001 From: CelestaLiu Date: Mon, 11 Aug 2025 04:30:50 +0000 Subject: [PATCH 3/4] Revert "adjust sqlancer dockerfile to adapt the latest version of cockrachdb" This reverts commit c04c6f1a696b6142b3ff73d165f8cf333e7c19c5. --- cockroachdb/config.json | 2 +- sqlancer/Dockerfile | 36 ++---------------------------------- 2 files changed, 3 insertions(+), 35 deletions(-) diff --git a/cockroachdb/config.json b/cockroachdb/config.json index 61e3247..cb3df00 100644 --- a/cockroachdb/config.json +++ b/cockroachdb/config.json @@ -1,7 +1,7 @@ { "embedded": "no", "dbms": "cockroachdb", - "image": "cockroachdb/cockroach:latest", + "image": "cockroachdb/cockroach:v24.1.0", "container_name": "cockroachdb-sqlancer", "port": 26257, "startup_cmd": [ diff --git a/sqlancer/Dockerfile b/sqlancer/Dockerfile index cde5673..7891414 100644 --- a/sqlancer/Dockerfile +++ b/sqlancer/Dockerfile @@ -1,47 +1,15 @@ -# FROM ubuntu:20.04 - -# ENV DEBIAN_FRONTEND=noninteractive - -# RUN apt-get update && \ -# apt-get install -y openjdk-17-jdk maven git jq netcat mysql-client && \ -# rm -rf /var/lib/apt/lists/* - -# WORKDIR /root/sqlancer - -# RUN git clone https://github.com/sqlancer/sqlancer.git . && \ -# mvn clean package -DskipTests - -# COPY entrypoint.sh /root/entrypoint.sh -# RUN chmod +x /root/entrypoint.sh - -# CMD ["/root/entrypoint.sh"] - FROM ubuntu:20.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - openjdk-17-jdk maven git jq netcat mysql-client \ - curl ca-certificates bash grep sed && \ + apt-get install -y openjdk-17-jdk maven git jq netcat mysql-client && \ rm -rf /var/lib/apt/lists/* WORKDIR /root/sqlancer -ARG SQLANCER_REF=main - RUN git clone https://github.com/sqlancer/sqlancer.git . && \ - git checkout "${SQLANCER_REF}" && \ - echo ">>> scanning for deprecated CockroachDB settings..." && \ - PC_ENABLED_FILES="$(grep -RIl 'sql.metrics.statement_details.plan_collection.enabled' || true)" && \ - if [ -n "$PC_ENABLED_FILES" ]; then \ - echo "$PC_ENABLED_FILES" | xargs -r sed -i "/sql.metrics.statement_details.plan_collection.enabled/d"; \ - fi && \ - PC_PERIOD_FILES="$(grep -RIl 'sql.metrics.statement_details.plan_collection.period' || true)" && \ - if [ -n "$PC_PERIOD_FILES" ]; then \ - echo "$PC_PERIOD_FILES" | xargs -r sed -i "/sql.metrics.statement_details.plan_collection.period/d"; \ - fi && \ - mvn -q -DskipTests clean package + mvn clean package -DskipTests COPY entrypoint.sh /root/entrypoint.sh RUN chmod +x /root/entrypoint.sh From 2e1ad4ef7a5b9fdab1a7eb242e7769f17616fde5 Mon Sep 17 00:00:00 2001 From: CelestaLiu Date: Mon, 11 Aug 2025 05:10:24 +0000 Subject: [PATCH 4/4] set default miracle to NoREC --- cockroachdb/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cockroachdb/config.json b/cockroachdb/config.json index cb3df00..3ed5fa5 100644 --- a/cockroachdb/config.json +++ b/cockroachdb/config.json @@ -10,7 +10,7 @@ ], "username": "root", "password": "", - "oracle": "CERT", + "oracle": "NOREC", "num_threads": 4, "timeout_seconds": 60 }