|
name: ci |
|
|
|
on: |
|
push: |
|
branches: |
|
- main |
|
paths: |
|
- 'src/**' |
|
- 'test/**' |
|
- '.github/workflows/*.yml' |
|
- 'pom.xml' |
|
pull_request: |
|
branches: |
|
- main |
|
paths: |
|
- 'src/**' |
|
- 'test/**' |
|
- '.github/workflows/*.yml' |
|
- 'pom.xml' |
|
|
|
jobs: |
|
misc: |
|
name: General tests |
|
runs-on: ubuntu-latest |
|
|
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Verify |
|
run: mvn -B verify -DskipTests=true |
|
- name: Misc Tests |
|
run: mvn -Djacoco.skip=true -B '-Dtest=!sqlancer.dbms.**,!sqlancer.qpg.**' test |
|
- name: Set up Python |
|
uses: actions/setup-python@v4 |
|
with: |
|
python-version: '3.10' |
|
- name: Naming Convention Tests |
|
run: python src/check_names.py |
|
|
|
citus: |
|
name: DBMS Tests (Citus) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Set up Citus |
|
run: | |
|
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list |
|
curl https://install.citusdata.com/community/deb.sh | sudo bash |
|
sudo sed -i 's/noble/jammy/g' /etc/apt/sources.list.d/citusdata_community.list # https://github.com/citusdata/citus/issues/7692 |
|
sudo apt-get update |
|
sudo apt-get -y install postgresql-17-citus-13.0 |
|
sudo chown -R $USER:$USER /var/run/postgresql |
|
export PATH=/usr/lib/postgresql/17/bin:$PATH |
|
cd ~ |
|
mkdir -p citus/coordinator citus/worker1 citus/worker2 |
|
initdb -D citus/coordinator |
|
initdb -D citus/worker1 |
|
initdb -D citus/worker2 |
|
echo "shared_preload_libraries = 'citus'" >> citus/coordinator/postgresql.conf |
|
echo "shared_preload_libraries = 'citus'" >> citus/worker1/postgresql.conf |
|
echo "shared_preload_libraries = 'citus'" >> citus/worker2/postgresql.conf |
|
pg_ctl -D citus/coordinator -o "-p 9700" -l coordinator_logfile start || cat coordinator_logfile || cat citus/coordinator/coordinator_logfile |
|
pg_ctl -D citus/worker1 -o "-p 9701" -l worker1_logfile start |
|
ls citus/worker1 |
|
pg_ctl -D citus/worker2 -o "-p 9702" -l worker2_logfile start |
|
psql -c "CREATE ROLE sqlancer SUPERUSER LOGIN CREATEDB PASSWORD 'sqlancer';" -p 9700 -d postgres -U $USER |
|
createdb test -p 9700 -U $USER |
|
psql -c "CREATE ROLE sqlancer SUPERUSER LOGIN CREATEDB PASSWORD 'sqlancer';" -p 9701 -d postgres -U $USER |
|
createdb test -p 9701 -U $USER |
|
psql -c "CREATE ROLE sqlancer SUPERUSER LOGIN CREATEDB PASSWORD 'sqlancer';" -p 9702 -d postgres -U $USER |
|
createdb test -p 9702 -U $USER |
|
psql -c "CREATE EXTENSION citus;" -p 9700 -U $USER -d test |
|
psql -c "CREATE EXTENSION citus;" -p 9701 -U $USER -d test |
|
psql -c "CREATE EXTENSION citus;" -p 9702 -U $USER -d test |
|
psql -c "SELECT * from citus_add_node('localhost', 9701);" -p 9700 -U $USER -d test |
|
psql -c "SELECT * from citus_add_node('localhost', 9702);" -p 9700 -U $USER -d test |
|
- name: Run Tests |
|
run: CITUS_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestCitus test |
|
|
|
clickhouse: |
|
name: DBMS Tests (ClickHouse) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Set up ClickHouse |
|
run: | |
|
docker pull clickhouse/clickhouse-server:24.3.1.2672 |
|
docker run --ulimit nofile=262144:262144 --name clickhouse-server -p8123:8123 -d clickhouse/clickhouse-server:24.3.1.2672 |
|
until curl -sf http://127.0.0.1:8123/ping 2>/dev/null; do sleep 1; done |
|
- name: Run Tests |
|
run: CLICKHOUSE_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=ClickHouseBinaryComparisonOperationTest,TestClickHouse,ClickHouseOperatorsVisitorTest,ClickHouseToStringVisitorTest test |
|
- name: Show fatal errors |
|
run: docker exec clickhouse-server grep Fatal /var/log/clickhouse-server/clickhouse-server.log || echo No Fatal Errors found |
|
- name: Teardown ClickHouse server |
|
run: | |
|
docker stop clickhouse-server |
|
docker rm clickhouse-server |
|
|
|
cockroachdb: |
|
name: DBMS Tests (CockroachDB) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Set up CockroachDB |
|
run: | |
|
wget -qO- https://binaries.cockroachdb.com/cockroach-v24.2.0.linux-amd64.tgz | tar xvz |
|
cd cockroach-v24.2.0.linux-amd64/ && ./cockroach start-single-node --insecure & |
|
until cockroach-v24.2.0.linux-amd64/cockroach sql --insecure -e "SELECT 1" 2>/dev/null; do sleep 2; done |
|
- name: Create SQLancer user |
|
run: cd cockroach-v24.2.0.linux-amd64/ && ./cockroach sql --insecure -e "CREATE USER sqlancer; GRANT admin to sqlancer" && cd .. |
|
- name: Run Tests |
|
run: | |
|
COCKROACHDB_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestCockroachDBNoREC test |
|
COCKROACHDB_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestCockroachDBTLP test |
|
COCKROACHDB_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestCockroachDBCERT test |
|
|
|
cockroachdb-qpg: |
|
name: QPG Tests (CockroachDB) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Set up CockroachDB |
|
run: | |
|
wget -qO- https://binaries.cockroachdb.com/cockroach-v24.2.0.linux-amd64.tgz | tar xvz |
|
cd cockroach-v24.2.0.linux-amd64/ && ./cockroach start-single-node --insecure & |
|
until cockroach-v24.2.0.linux-amd64/cockroach sql --insecure -e "SELECT 1" 2>/dev/null; do sleep 2; done |
|
- name: Create SQLancer user |
|
run: cd cockroach-v24.2.0.linux-amd64/ && ./cockroach sql --insecure -e "CREATE USER sqlancer; GRANT admin to sqlancer" && cd .. |
|
- name: Run Tests |
|
run: COCKROACHDB_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestCockroachDBQPG test |
|
|
|
databend: |
|
name: DBMS Tests (Databend) |
|
runs-on: ubuntu-latest |
|
services: |
|
databend: |
|
image: datafuselabs/databend:v1.2.900-nightly |
|
env: |
|
QUERY_DEFAULT_USER: sqlancer |
|
QUERY_DEFAULT_PASSWORD: sqlancer |
|
ports: |
|
- 8000:8000 |
|
- 3307:3307 |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Run Tests |
|
run: | |
|
DATABEND_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestDatabendTLP test |
|
DATABEND_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestDatabendNoREC test |
|
DATABEND_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestDatabendPQS test |
|
|
|
datafusion: |
|
name: DBMS Tests (DataFusion) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up Rust |
|
uses: actions-rs/toolchain@v1 |
|
with: |
|
toolchain: stable |
|
override: true |
|
- name: Cache Rust build |
|
uses: Swatinem/rust-cache@v2 |
|
with: |
|
workspaces: src/sqlancer/datafusion/server/datafusion_server |
|
- name: Build DataFusion Server |
|
run: | |
|
cd src/sqlancer/datafusion/server/datafusion_server |
|
cargo build |
|
- name: Start DataFusion Server |
|
run: | |
|
cd src/sqlancer/datafusion/server/datafusion_server |
|
cargo run & |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Wait for DataFusion Server |
|
run: | |
|
for i in $(seq 1 30); do |
|
if nc -z 127.0.0.1 50051 2>/dev/null; then |
|
echo "DataFusion server is ready" |
|
exit 0 |
|
fi |
|
echo "Waiting for DataFusion server... ($i/30)" |
|
sleep 10 |
|
done |
|
echo "DataFusion server failed to start within 300s" |
|
exit 1 |
|
- name: Run Tests |
|
run: | |
|
DATAFUSION_AVAILABLE=true mvn -Djacoco.skip=true test -Pdatafusion-tests |
|
|
|
duckdb: |
|
name: DBMS Tests (DuckDB) |
|
runs-on: ubuntu-latest |
|
|
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build |
|
run: mvn -B package -DskipTests=true |
|
- name: DuckDB Tests |
|
run: | |
|
mvn -Djacoco.skip=true -Dtest=TestDuckDBTLP test |
|
mvn -Djacoco.skip=true -Dtest=TestDuckDBNoREC test |
|
|
|
h2: |
|
name: DBMS Tests (H2) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Run Tests |
|
run: mvn -Djacoco.skip=true -Dtest=TestH2 test |
|
|
|
hive: |
|
name: DBMS Tests (Hive) |
|
runs-on: ubuntu-latest |
|
services: |
|
metastore: |
|
image: apache/hive:4.0.1 |
|
env: |
|
SERVICE_NAME: 'metastore' |
|
ports: |
|
- 9083:9083 |
|
volumes: |
|
- warehouse:/opt/hive/data/warehouse |
|
hiveserver2: |
|
image: apache/hive:4.0.1 |
|
env: |
|
SERVICE_NAME: 'hiveserver2' |
|
ports: |
|
- 10000:10000 |
|
- 10002:10002 |
|
volumes: |
|
- warehouse:/opt/hive/data/warehouse |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Run Tests |
|
run: HIVE_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestHiveTLP test |
|
|
|
spark: |
|
name: DBMS Tests (Spark) |
|
runs-on: ubuntu-latest |
|
|
|
services: |
|
spark: |
|
image: apache/spark:3.5.1 |
|
ports: |
|
- 10000:10000 |
|
|
|
command: >- |
|
/opt/spark/bin/spark-submit |
|
--class org.apache.spark.sql.hive.thriftserver.HiveThriftServer2 |
|
--name "Thrift JDBC/ODBC Server" |
|
--master local[*] |
|
--driver-memory 4g |
|
--conf spark.hive.server2.thrift.port=10000 |
|
--conf spark.sql.warehouse.dir=/tmp/spark-warehouse |
|
spark-internal |
|
|
|
steps: |
|
- uses: actions/checkout@v3 |
|
with: |
|
fetch-depth: 0 |
|
|
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v3 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
|
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
|
|
- name: Run Tests |
|
run: SPARK_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestSparkTLP test |
|
|
|
hsqldb: |
|
name: DBMS Tests (HSQLDB) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Run Tests |
|
run: | |
|
mvn -Djacoco.skip=true -Dtest=TestHSQLDBNoREC test |
|
mvn -Djacoco.skip=true -Dtest=TestHSQLDBTLP test |
|
|
|
mariadb: |
|
name: DBMS Tests (MariaDB) |
|
runs-on: ubuntu-latest |
|
services: |
|
mysql: |
|
image: mariadb:11.7.2 |
|
env: |
|
MYSQL_ROOT_PASSWORD: root |
|
ports: |
|
- 3306:3306 |
|
options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=10 |
|
|
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Create SQLancer User |
|
run: sudo mysql -h 127.0.0.1 -uroot -proot -e "CREATE USER 'sqlancer'@'%' IDENTIFIED BY 'sqlancer'; GRANT ALL PRIVILEGES ON * . * TO 'sqlancer'@'%';" |
|
- name: Run Tests |
|
run: MARIADB_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestMariaDB test |
|
|
|
materialize: |
|
name: DBMS Tests (Materialize) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up Materialize |
|
run: | |
|
docker pull materialize/materialized:latest |
|
docker run -d -p6875:6875 -p6877:6877 materialize/materialized:latest |
|
until pg_isready -h localhost -p 6875 -U materialize; do sleep 1; done |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Run Tests |
|
run: | |
|
MATERIALIZE_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestMaterializeNoREC |
|
MATERIALIZE_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestMaterializeTLP |
|
MATERIALIZE_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestMaterializePQS |
|
|
|
materialize-qpg: |
|
name: QPG Tests (Materialize) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up Materialize |
|
run: | |
|
docker pull materialize/materialized:latest |
|
docker run -d -p6875:6875 -p6877:6877 materialize/materialized:latest |
|
until pg_isready -h localhost -p 6875 -U materialize; do sleep 1; done |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Run Tests |
|
run: | |
|
MATERIALIZE_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestMaterializeQPG |
|
MATERIALIZE_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestMaterializeQueryPlan |
|
|
|
mysql: |
|
name: DBMS Tests (MySQL, CERT creation only) |
|
runs-on: ubuntu-latest |
|
services: |
|
mysql: |
|
image: mysql:9.7.0 |
|
env: |
|
MYSQL_ROOT_PASSWORD: root |
|
ports: |
|
- 3306:3306 |
|
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=10 |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Create SQLancer user |
|
run: mysql -h 127.0.0.1 -uroot -proot -e "CREATE USER 'sqlancer'@'%' IDENTIFIED BY 'sqlancer'; GRANT ALL PRIVILEGES ON * . * TO 'sqlancer'@'%';" |
|
- name: Run Tests |
|
run: | |
|
MYSQL_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestMySQLPQS |
|
MYSQL_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestMySQLTLP |
|
MYSQL_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestMySQLCERT |
|
MYSQL_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestMySQLDQE |
|
|
|
oceanbase: |
|
name: DBMS Tests (OceanBase) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Set up OceanBase |
|
run: | |
|
docker run -p 2881:2881 --name oceanbase-ce -e MODE=mini -d oceanbase/oceanbase-ce:4.2.1-lts |
|
until mysql -h127.1 -uroot@test -P2881 --connect-timeout=3 -Doceanbase -A -e "SELECT 1" 2>/dev/null; do sleep 5; done |
|
mysql -h127.1 -uroot@test -P2881 -Doceanbase -A -e"CREATE USER 'sqlancer'@'%' IDENTIFIED BY 'sqlancer'; GRANT ALL PRIVILEGES ON * . * TO 'sqlancer'@'%';" |
|
- name: Run Tests |
|
run: | |
|
OCEANBASE_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestOceanBaseNoREC |
|
OCEANBASE_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestOceanBasePQS |
|
OCEANBASE_AVAILABLE=true mvn -Djacoco.skip=true test -Dtest=TestOceanBaseTLP |
|
postgres: |
|
name: DBMS Tests (PostgreSQL) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up PostgreSQL |
|
uses: harmon758/postgresql-action@v1.0.0 |
|
with: |
|
postgresql version: '18' |
|
postgresql user: 'sqlancer' |
|
postgresql password: 'sqlancer' |
|
postgresql db: 'test' |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Run Tests |
|
run: | |
|
POSTGRES_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestPostgresPQS test |
|
POSTGRES_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestPostgresTLP test |
|
POSTGRES_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestPostgresNoREC test |
|
POSTGRES_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestPostgresCERT test |
|
|
|
presto: |
|
name: DBMS Tests (Presto) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Set up Presto |
|
run: | |
|
docker pull prestodb/presto:latest |
|
echo "connector.name=memory" >> memory.properties |
|
docker run -p 8080:8080 -d -v ./memory.properties:/opt/presto-server/etc/catalog/memory.properties --name presto prestodb/presto:latest |
|
until curl -sf http://127.0.0.1:8080/v1/info 2>/dev/null; do sleep 2; done |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Run Tests |
|
run: | |
|
PRESTO_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestPrestoNoREC test |
|
docker restart presto && until curl -sf http://127.0.0.1:8080/v1/info 2>/dev/null; do sleep 2; done |
|
PRESTO_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestPrestoTLP test |
|
sqlite: |
|
name: DBMS Tests (SQLite) |
|
runs-on: ubuntu-latest |
|
|
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build |
|
run: mvn -B package -DskipTests=true |
|
- name: SQLite Tests |
|
run: | |
|
mvn -Djacoco.skip=true -Dtest=TestSQLitePQS test |
|
mvn -Djacoco.skip=true -Dtest=TestSQLiteTLP test |
|
mvn -Djacoco.skip=true -Dtest=TestSQLiteNoREC test |
|
mvn -Djacoco.skip=true -Dtest=TestSQLiteCODDTest test |
|
|
|
sqlite-qpg: |
|
name: QPG Tests (SQLite) |
|
runs-on: ubuntu-latest |
|
|
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build |
|
run: mvn -B package -DskipTests=true |
|
- name: SQLite Tests for QPG |
|
run: | |
|
mvn -Djacoco.skip=true -Dtest=TestSQLiteQPG test |
|
|
|
tidb: |
|
name: DBMS Tests (TiDB, TLP creation only) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Set up TiDB |
|
run: | |
|
docker pull hawkingrei/tidb-playground:nightly-2025-09-16 |
|
docker run --name tidb-server -d -p 4000:4000 hawkingrei/tidb-playground:nightly-2025-09-16 |
|
until mysql -h 127.0.0.1 -P 4000 -u root --connect-timeout=3 -e "SELECT 1" 2>/dev/null; do sleep 3; done |
|
- name: Create SQLancer user |
|
run: mysql -h 127.0.0.1 -P 4000 -u root -D test -e "CREATE USER 'sqlancer'@'%' IDENTIFIED WITH mysql_native_password BY 'sqlancer'; GRANT ALL PRIVILEGES ON *.* TO 'sqlancer'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;" |
|
- name: Run Tests |
|
run: | |
|
TIDB_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestTiDBTLP test |
|
TIDB_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestTiDBCERT test |
|
|
|
tidb-qpg: |
|
name: QPG Tests (TiDB) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Set up TiDB |
|
run: | |
|
docker pull hawkingrei/tidb-playground:nightly-2025-09-16 |
|
docker run --name tidb-server -d -p 4000:4000 hawkingrei/tidb-playground:nightly-2025-09-16 |
|
until mysql -h 127.0.0.1 -P 4000 -u root --connect-timeout=3 -e "SELECT 1" 2>/dev/null; do sleep 3; done |
|
- name: Create SQLancer user |
|
run: mysql -h 127.0.0.1 -P 4000 -u root -D test -e "CREATE USER 'sqlancer'@'%' IDENTIFIED WITH mysql_native_password BY 'sqlancer'; GRANT ALL PRIVILEGES ON *.* TO 'sqlancer'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;" |
|
- name: Run Tests |
|
run: TIDB_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestTiDBQPG test |
|
|
|
yugabyte: |
|
name: DBMS Tests (YugabyteDB) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Set up Yugabyte |
|
run: | |
|
docker pull yugabytedb/yugabyte:latest |
|
docker run -d --name yugabyte -p7000:7000 -p9000:9000 -p5433:5433 -p9042:9042 yugabytedb/yugabyte:latest bin/yugabyted start --daemon=false --tserver_flags="ysql_yb_enable_listen_notify=true" --master_flags="ysql_yb_enable_listen_notify=true" |
|
until pg_isready -h localhost -p 5433; do sleep 1; done |
|
until nc -z localhost 9042; do sleep 1; done |
|
- name: Run Tests |
|
run: | |
|
YUGABYTE_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestYSQLNoREC test |
|
YUGABYTE_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestYSQLTLP test |
|
YUGABYTE_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestYSQLPQS test |
|
YUGABYTE_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestYCQL test |
|
|
|
doris: |
|
name: DBMS Tests (Apache Doris) |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
- name: Set up JDK 11 |
|
uses: actions/setup-java@v4 |
|
with: |
|
distribution: 'temurin' |
|
java-version: '11' |
|
cache: 'maven' |
|
- name: install mysql client |
|
run: | |
|
sudo apt update |
|
sudo apt install mysql-client --assume-yes |
|
- name: Cache Apache Doris tarball |
|
uses: actions/cache@v4 |
|
with: |
|
path: apache-doris-2.1.4-bin-x64.tar.gz |
|
key: apache-doris-2.1.4-bin-x64-tarball |
|
- name: Set up Apache Doris |
|
run: | |
|
sudo sysctl -w vm.max_map_count=2000000 |
|
[ -f apache-doris-2.1.4-bin-x64.tar.gz ] || wget -q https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.1.4-bin-x64.tar.gz |
|
tar zxf apache-doris-2.1.4-bin-x64.tar.gz |
|
mv apache-doris-2.1.4-bin-x64 apache-doris |
|
sudo swapoff -a |
|
cd apache-doris/fe |
|
./bin/start_fe.sh --daemon |
|
cd ../be |
|
./bin/start_be.sh --daemon |
|
|
|
until mysql -u root -h 127.0.0.1 --port 9030 --connect-timeout=3 -e "SELECT 1" 2>/dev/null; do sleep 3; done |
|
IP=$(hostname -I | awk '{print $1}') |
|
mysql -u root -h 127.0.0.1 --port 9030 -e "ALTER SYSTEM ADD BACKEND '${IP}:9050';" |
|
mysql -u root -h 127.0.0.1 --port 9030 -e "CREATE USER 'sqlancer' IDENTIFIED BY 'sqlancer'; GRANT ALL ON *.* TO sqlancer;" |
|
- name: Build SQLancer |
|
run: mvn -B package -DskipTests=true |
|
- name: Run Tests |
|
run: | |
|
DORIS_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestDorisNoREC test |
|
DORIS_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestDorisPQS test |
|
DORIS_AVAILABLE=true mvn -Djacoco.skip=true -Dtest=TestDorisTLP test |