Files
datastore/utils/auto-bisect/tests/test_analyzer_ranges.sh
Nikita Fomichev a78bcc708e utils: add auto-bisect script for ClickHouse regression bisection
Adds `utils/auto-bisect/` — a shell-based bisection framework that
downloads pre-built CI binaries and runs a user-supplied test script
to find the first bad commit.

Key features:
- Downloads public CI binaries from S3 by default; private CloudFront
  builds with `--private` (credentials via `CH_CI_BASIC_AUTH` env var,
  `CH_CI_USER`/`CH_CI_PASSWORD`, or `/etc/netrc`)
- Three environment modes: `single` (one server), `replicateddb` (two
  nodes + Keeper, Replicated database), `sharedcatalog` (two nodes +
  Keeper, SharedCatalog)
- Uses `git bisect --no-checkout` by default so the work tree is not
  modified during bisection
- Walker mode (`--walker`) for linear commit-by-commit testing
- Example test scripts in `tests/`

Tested locally: `--env nothing`, `--env single`, and `--env replicateddb`
all verified working.
2026-03-28 10:39:03 +01:00

31 lines
894 B
Bash
Executable File

#!/bin/bash
set -e
echo "$PWD"
$CH_PATH client -q "SELECT version()";
cat << EOF > /tmp/query.sql
drop table if exists tab;
create table tab (a String, b String, c String, d String) engine=MergeTree order by (a, b, c, d) ;
insert into tab select intDiv(number, 1e7), intDiv(number, 1e7), 0, number % 1000000 from numbers_mt(1e7 + 10);
select count() from tab where a = '0' and b = '0' and (c, d) in ('0', '12345');
EOF
result=$($CH_PATH client --queries-file /tmp/query.sql)
echo $result
result=$(echo "$result" | xargs)
# Check if the 'result' variable is not numerically equal to 10.
# We use -ne for a numerical "not equal" comparison.
if [[ "$result" -ne 10 ]]; then
# If the condition is true, print an error message to standard error (>&2).
echo "Error: Expected result 10, but got '$result'." >&2
# Exit the script with a status code of 1 to indicate failure.
exit 1
fi