1414 options :
1515 - tpch
1616 system_under_test :
17- description : ' System under test (spice_cloud via spidapter docker image, or local databricks adapter modes)'
17+ description : ' System under test (spice_cloud via spidapter docker image, local databricks adapter modes, or postgres via spidapter local backend )'
1818 required : true
1919 default : spice_cloud
2020 type : choice
2121 options :
2222 - spice_cloud
2323 - databricks-sql
2424 - databricks-lakebase
25+ - postgres
2526 etl_type :
2627 description : ' ETL type'
2728 required : true
@@ -64,15 +65,15 @@ jobs:
6465 client-secret : ${{ secrets.SPICE_MANAGEMENT_CLIENT_SECRET_PROD }}
6566
6667 - name : Log in to GHCR
67- if : ${{ env.SYSTEM_UNDER_TEST == 'spice_cloud' }}
68+ if : ${{ env.SYSTEM_UNDER_TEST == 'spice_cloud' || env.SYSTEM_UNDER_TEST == 'postgres' }}
6869 uses : docker/login-action@v3
6970 with :
7071 registry : ghcr.io
7172 username : ${{ github.actor }}
7273 password : ${{ secrets.GITHUB_TOKEN }}
7374
7475 - name : pull spidapter image
75- if : ${{ env.SYSTEM_UNDER_TEST == 'spice_cloud' }}
76+ if : ${{ env.SYSTEM_UNDER_TEST == 'spice_cloud' || env.SYSTEM_UNDER_TEST == 'postgres' }}
7677 run : docker pull ghcr.io/spiceai/spidapter:latest
7778
7879 - uses : ./.github/actions/build-spicebench
@@ -112,6 +113,9 @@ jobs:
112113 DATABRICKS_SQL_WAREHOUSE_ID : ${{ secrets.DATABRICKS_SQL_WAREHOUSE_ID }}
113114 DATABRICKS_CATALOG : ${{ secrets.DATABRICKS_CATALOG }}
114115 DATABRICKS_SCHEMA : ${{ secrets.DATABRICKS_SCHEMA }}
116+ PG_HOST : ${{ secrets.POSTGRES_PG_HOST }}
117+ PG_USER : ${{ secrets.POSTGRES_PG_USER }}
118+ PG_DATABASE : ${{ vars.POSTGRES_PG_DATABASE }}
115119 run : |
116120 set -euo pipefail
117121 SYSTEM_UNDER_TEST_PREFIX="${SYSTEM_UNDER_TEST%%-*}"
@@ -165,6 +169,25 @@ jobs:
165169 "${HOME}/.spice/bin/databricks-system-adapter" --help >/dev/null
166170 ;;
167171
172+ postgres)
173+ for required_var in PG_HOST PG_USER PG_DATABASE; do
174+ if [ -z "${!required_var:-}" ]; then
175+ echo "${required_var} must be set for postgres adapter mode"
176+ exit 1
177+ fi
178+ done
179+
180+ if ! command -v docker >/dev/null 2>&1; then
181+ echo "docker is required for postgres mode"
182+ exit 1
183+ fi
184+
185+ docker image inspect ghcr.io/spiceai/spidapter:latest >/dev/null 2>&1 || {
186+ echo "spidapter docker image not found locally; pull step may have failed"
187+ exit 1
188+ }
189+ ;;
190+
168191 *)
169192 echo "Unsupported system_under_test value: ${SYSTEM_UNDER_TEST}"
170193 exit 1
@@ -196,7 +219,7 @@ jobs:
196219 sudo ldconfig
197220
198221 - name : Install ADBC Postgres driver
199- if : ${{ startsWith(env.SYSTEM_UNDER_TEST, 'databricks-') }}
222+ if : ${{ startsWith(env.SYSTEM_UNDER_TEST, 'databricks-') || env.SYSTEM_UNDER_TEST == 'postgres' }}
200223 uses : columnar-tech/setup-dbc@v1
201224 with :
202225 drivers : postgresql
@@ -239,6 +262,11 @@ jobs:
239262 LAKEBASE_PG_SCHEMA : ${{ vars.LAKEBASE_PG_SCHEMA }}
240263 LAKEBASE_PROJECT : ${{ vars.LAKEBASE_PROJECT }}
241264 LAKEBASE_BRANCH : ${{ vars.LAKEBASE_BRANCH }}
265+ PG_HOST : ${{ vars.POSTGRES_PG_HOST }}
266+ PG_PORT : ${{ vars.POSTGRES_PG_PORT || '5432' }}
267+ PG_USER : ${{ secrets.POSTGRES_PG_USER }}
268+ PG_PASSWORD : ${{ secrets.POSTGRES_PG_PASSWORD }}
269+ PG_DATABASE : ${{ vars.POSTGRES_PG_DATABASE }}
242270 SPIDAPTER_ICEBERG_REGION : us-west-1
243271 SPIDAPTER_ICEBERG_CATALOG_FROM : iceberg:https://glue.us-west-1.amazonaws.com/iceberg/v1/catalogs/211125479522/namespaces
244272 SPIDAPTER_APP_MEMORY_LIMIT : ' 62Gi'
@@ -307,6 +335,20 @@ jobs:
307335 if [ -n "${DATABRICKS_STAGING_VOLUME_PATH:-}" ]; then
308336 ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env DATABRICKS_STAGING_VOLUME_PATH=${DATABRICKS_STAGING_VOLUME_PATH}"
309337 fi
338+
339+ if [ "${SYSTEM_UNDER_TEST}" = "databricks-lakebase" ]; then
340+ ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env DATABRICKS_COMPUTE_MODE=lakebase"
341+ ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env LAKEBASE_PG_HOST=${LAKEBASE_PG_HOST}"
342+ ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env LAKEBASE_PG_USER=${LAKEBASE_PG_USER}"
343+ ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env LAKEBASE_PG_SCHEMA=${LAKEBASE_PG_SCHEMA}"
344+ ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env LAKEBASE_PROJECT=${LAKEBASE_PROJECT}"
345+ ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env LAKEBASE_BRANCH=${LAKEBASE_BRANCH}"
346+ fi
347+ elif [ "${SYSTEM_UNDER_TEST_PREFIX}" = "postgres" ]; then
348+ export SPICEBENCH_ADBC_UPDATE_STRATEGY=statement
349+ ADAPTER_CMD="docker"
350+ ADAPTER_ARGS="run -i -e PG_HOST=${PG_HOST} -e PG_PORT=${PG_PORT} -e PG_USER=${PG_USER} -e PG_PASSWORD=${PG_PASSWORD} -e PG_DATABASE=${PG_DATABASE} ghcr.io/spiceai/spidapter:latest stdio --backend local --deployment-mode single-node"
351+ ADAPTER_ENVS=""
310352 else
311353 export SPICEBENCH_ADBC_UPDATE_STRATEGY=bulk_ingest_upsert
312354 export SPICEBENCH_ADBC_FLUSH_STREAM_BEFORE_UPSERT=true
@@ -326,15 +368,6 @@ jobs:
326368 ADAPTER_ENVS=""
327369 fi
328370
329- if [ "${SYSTEM_UNDER_TEST}" = "databricks-lakebase" ]; then
330- ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env DATABRICKS_COMPUTE_MODE=lakebase"
331- ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env LAKEBASE_PG_HOST=${LAKEBASE_PG_HOST}"
332- ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env LAKEBASE_PG_USER=${LAKEBASE_PG_USER}"
333- ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env LAKEBASE_PG_SCHEMA=${LAKEBASE_PG_SCHEMA}"
334- ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env LAKEBASE_PROJECT=${LAKEBASE_PROJECT}"
335- ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env LAKEBASE_BRANCH=${LAKEBASE_BRANCH}"
336- fi
337-
338371 ~/.spice/bin/spicebench run \
339372 --concurrency "${NUM_QUERY_CLIENTS}" \
340373 --scenario "${SCENARIO}" \
0 commit comments