#!/bin/bash # ============================================================================= # clickhouse-init.sh — Pre-process shared SQL files for integration testing # # Copies SQL from /initdb-src/ to /tmp, patches credentials, then executes. # ============================================================================= set -e SRC_DIR="/initdb-src" TMP_DIR="/tmp/initdb-patched" USER_FILES="/var/lib/clickhouse/user_files" mkdir -p "$TMP_DIR" # Copier les CSV de référence dans user_files (dictionnaires navigateurs) for csv in "$SRC_DIR"/*.csv; do [ -f "$csv" ] || continue fname=$(basename "$csv") if [ ! -f "$USER_FILES/$fname" ]; then cp "$csv" "$USER_FILES/$fname" echo "[init] CSV copié : $fname" fi done for f in "$SRC_DIR"/*.sql; do [ -f "$f" ] || continue base=$(basename "$f") echo "[init] Patching $base" sed \ -e "s/USER 'admin'/USER 'default'/g" \ -e "s/PASSWORD 'CHANGE_ME'/PASSWORD ''/g" \ -e "s/PASSWORD 'ChangeMe'/PASSWORD ''/g" \ "$f" > "$TMP_DIR/$base" done for f in "$TMP_DIR"/*.sql; do [ -f "$f" ] || continue base=$(basename "$f") echo "[init] Executing $base" # 10_perf_indexes.sql uses ALTER TABLE ADD INDEX which may fail if index # already exists — allow non-zero exit for migration/perf scripts if [[ "$base" == 10_* ]]; then clickhouse-client --multiquery < "$f" || echo "[init] WARNING: $base had errors (expected for duplicate indexes)" else clickhouse-client --multiquery < "$f" fi done echo "[init] All SQL files executed successfully"