mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-19 04:42:37 +00:00
Add SQL query tests by script shell
This commit is contained in:
parent
66841d064c
commit
88c0b86aab
@ -0,0 +1,32 @@
|
|||||||
|
Running iteration: 1
|
||||||
|
Integer Test: Passed
|
||||||
|
String Test: Passed
|
||||||
|
Nested Array Test: Passed
|
||||||
|
Higher Sample Number Test: Passed
|
||||||
|
Running iteration: 2
|
||||||
|
Integer Test: Passed
|
||||||
|
String Test: Passed
|
||||||
|
Nested Array Test: Passed
|
||||||
|
Higher Sample Number Test: Passed
|
||||||
|
Running iteration: 3
|
||||||
|
Integer Test: Passed
|
||||||
|
String Test: Passed
|
||||||
|
Nested Array Test: Passed
|
||||||
|
Higher Sample Number Test: Passed
|
||||||
|
Running iteration: 4
|
||||||
|
Integer Test: Passed
|
||||||
|
String Test: Passed
|
||||||
|
Nested Array Test: Passed
|
||||||
|
Higher Sample Number Test: Passed
|
||||||
|
Running iteration: 5
|
||||||
|
Integer Test: Passed
|
||||||
|
String Test: Passed
|
||||||
|
Nested Array Test: Passed
|
||||||
|
Higher Sample Number Test: Passed
|
||||||
|
Integer Test with K=0: Passed
|
||||||
|
Empty Array with K > 0 Test: Passed
|
||||||
|
Non-Unsigned-Integer K Test (Negative Integer): Passed
|
||||||
|
Non-Unsigned-Integer K Test (String): Passed
|
||||||
|
Non-Unsigned-Integer K Test (Floating-Point): Passed
|
||||||
|
Total tests: 25
|
||||||
|
Passed tests: 25
|
125
tests/queries/0_stateless/02874_array_random_sample.sh
Executable file
125
tests/queries/0_stateless/02874_array_random_sample.sh
Executable file
@ -0,0 +1,125 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||||
|
# shellcheck source=../shell_config.sh
|
||||||
|
. "$CUR_DIR"/../shell_config.sh
|
||||||
|
|
||||||
|
# Initialize variables
|
||||||
|
total_tests=0
|
||||||
|
passed_tests=0
|
||||||
|
|
||||||
|
|
||||||
|
# Test Function for Integer Arrays
|
||||||
|
run_integer_test() {
|
||||||
|
query_result=$(clickhouse-client -q "SELECT randomSampleFromArray([1,2,3], 2)")
|
||||||
|
mapfile -t sorted_result < <(echo "$query_result" | tr -d '[]' | tr ',' '\n' | sort -n)
|
||||||
|
declare -A expected_outcomes
|
||||||
|
expected_outcomes["1 2"]=1
|
||||||
|
expected_outcomes["1 3"]=1
|
||||||
|
expected_outcomes["2 3"]=1
|
||||||
|
expected_outcomes["2 1"]=1
|
||||||
|
expected_outcomes["3 1"]=1
|
||||||
|
expected_outcomes["3 2"]=1
|
||||||
|
|
||||||
|
sorted_result_str=$(echo "${sorted_result[*]}" | tr ' ' '\n' | sort -n | tr '\n' ' ' | sed 's/ $//')
|
||||||
|
if [[ -n "${expected_outcomes[$sorted_result_str]}" ]]; then
|
||||||
|
echo "Integer Test: Passed"
|
||||||
|
((passed_tests++))
|
||||||
|
else
|
||||||
|
echo "Integer Test: Failed"
|
||||||
|
echo "Output: $query_result"
|
||||||
|
fi
|
||||||
|
((total_tests++))
|
||||||
|
}
|
||||||
|
|
||||||
|
# Test Function for String Arrays
|
||||||
|
run_string_test() {
|
||||||
|
query_result=$(clickhouse-client -q "SELECT randomSampleFromArray(['a','b','c'], 2)")
|
||||||
|
mapfile -t sorted_result < <(echo "$query_result" | tr -d "[]'" | tr ',' '\n' | sort)
|
||||||
|
declare -A expected_outcomes
|
||||||
|
expected_outcomes["a b"]=1
|
||||||
|
expected_outcomes["a c"]=1
|
||||||
|
expected_outcomes["b c"]=1
|
||||||
|
expected_outcomes["b a"]=1
|
||||||
|
expected_outcomes["c a"]=1
|
||||||
|
expected_outcomes["c b"]=1
|
||||||
|
|
||||||
|
sorted_result_str=$(echo "${sorted_result[*]}" | tr ' ' '\n' | sort | tr '\n' ' ' | sed 's/ $//')
|
||||||
|
if [[ -n "${expected_outcomes[$sorted_result_str]}" ]]; then
|
||||||
|
echo "String Test: Passed"
|
||||||
|
((passed_tests++))
|
||||||
|
else
|
||||||
|
echo "String Test: Failed"
|
||||||
|
echo "Output: $query_result"
|
||||||
|
fi
|
||||||
|
((total_tests++))
|
||||||
|
}
|
||||||
|
|
||||||
|
# Test Function for Nested Arrays
|
||||||
|
run_nested_array_test() {
|
||||||
|
query_result=$(clickhouse-client -q "SELECT randomSampleFromArray([[7,2],[3,4],[7,6]], 2)")
|
||||||
|
# Convert to a space-separated string for easy sorting.
|
||||||
|
converted_result=$(echo "$query_result" | tr -d '[]' | tr ',' ' ')
|
||||||
|
|
||||||
|
# Sort the string.
|
||||||
|
sorted_result_str=$(echo "$converted_result" | tr ' ' '\n' | xargs -n2 | sort | tr '\n' ' ' | sed 's/ $//')
|
||||||
|
|
||||||
|
# Define all possible expected outcomes, sorted
|
||||||
|
declare -A expected_outcomes
|
||||||
|
expected_outcomes["7 2 3 4"]=1
|
||||||
|
expected_outcomes["7 2 7 6"]=1
|
||||||
|
expected_outcomes["3 4 7 6"]=1
|
||||||
|
expected_outcomes["3 4 7 2"]=1
|
||||||
|
expected_outcomes["7 6 7 2"]=1
|
||||||
|
expected_outcomes["7 6 3 4"]=1
|
||||||
|
|
||||||
|
if [[ -n "${expected_outcomes[$sorted_result_str]}" ]]; then
|
||||||
|
echo "Nested Array Test: Passed"
|
||||||
|
((passed_tests++))
|
||||||
|
else
|
||||||
|
echo "Nested Array Test: Failed"
|
||||||
|
echo "Output: $query_result"
|
||||||
|
echo "Processed Output: ${sorted_result_str}"
|
||||||
|
fi
|
||||||
|
((total_tests++))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Test Function for K > array.size
|
||||||
|
run_higher_k_test() {
|
||||||
|
query_result=$(clickhouse-client -q "SELECT randomSampleFromArray([1,2,3], 5)")
|
||||||
|
mapfile -t sorted_result < <(echo "$query_result" | tr -d '[]' | tr ',' '\n' | sort -n)
|
||||||
|
sorted_original=("1" "2" "3")
|
||||||
|
|
||||||
|
are_arrays_equal=true
|
||||||
|
for i in "${!sorted_result[@]}"; do
|
||||||
|
if [[ "${sorted_result[$i]}" != "${sorted_original[$i]}" ]]; then
|
||||||
|
are_arrays_equal=false
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if $are_arrays_equal; then
|
||||||
|
echo "Higher Sample Number Test: Passed"
|
||||||
|
((passed_tests++))
|
||||||
|
else
|
||||||
|
echo "Higher Sample Number Test: Failed"
|
||||||
|
echo "Output: $query_result"
|
||||||
|
fi
|
||||||
|
((total_tests++))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Run test multiple times
|
||||||
|
for i in {1..5}; do
|
||||||
|
echo "Running iteration: $i"
|
||||||
|
run_integer_test
|
||||||
|
run_string_test
|
||||||
|
run_nested_array_test
|
||||||
|
run_higher_k_test
|
||||||
|
done
|
||||||
|
|
||||||
|
# Print overall test results
|
||||||
|
echo "Total tests: $total_tests"
|
||||||
|
echo "Passed tests: $passed_tests"
|
Loading…
Reference in New Issue
Block a user