2023-06-14 13:11:43 +00:00
|
|
|
#!/usr/bin/env bash
|
2023-06-30 16:20:59 +00:00
|
|
|
# Tags: no-fasttest, no-parallel, no-random-settings, no-random-merge-tree-settings
|
2023-06-14 13:11:43 +00:00
|
|
|
|
|
|
|
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
|
|
# shellcheck source=../shell_config.sh
|
|
|
|
. "$CURDIR"/../shell_config.sh
|
|
|
|
|
|
|
|
$CLICKHOUSE_CLIENT -nm -q "
|
|
|
|
DROP TABLE IF EXISTS test;
|
|
|
|
CREATE TABLE test (a Int32, b String)
|
|
|
|
ENGINE = MergeTree()
|
|
|
|
ORDER BY a
|
|
|
|
SETTINGS disk = disk(type = cache,
|
|
|
|
max_size = '1Gi',
|
|
|
|
max_file_segment_size = '40Mi',
|
|
|
|
boundary_alignment = '20Mi',
|
|
|
|
path = '$CLICKHOUSE_TEST_UNIQUE_NAME',
|
2023-06-14 21:13:09 +00:00
|
|
|
disk = 's3_disk');
|
2023-06-14 13:11:43 +00:00
|
|
|
|
|
|
|
INSERT INTO test SELECT number, randomString(100) FROM numbers(1000000);
|
|
|
|
"
|
|
|
|
|
|
|
|
QUERY_ID=$RANDOM
|
|
|
|
$CLICKHOUSE_CLIENT --query_id "$QUERY_ID" -nm -q "
|
|
|
|
SET enable_filesystem_cache_log = 1;
|
|
|
|
SYSTEM DROP FILESYSTEM CACHE;
|
|
|
|
SELECT * FROM test WHERE NOT ignore() LIMIT 1 FORMAT Null;
|
|
|
|
SYSTEM FLUSH LOGS;
|
|
|
|
"
|
|
|
|
|
|
|
|
query="
|
|
|
|
SELECT cache_path, file_size,
|
|
|
|
tupleElement(file_segment_range, 2) - tupleElement(file_segment_range, 1) + 1 as file_segment_size,
|
|
|
|
formatReadableSize(file_size) as formatted_file_size,
|
|
|
|
formatReadableSize(file_segment_size) as formatted_file_segment_size,
|
|
|
|
tupleElement(file_segment_range, 2) as end_offset
|
|
|
|
FROM (
|
|
|
|
SELECT arrayJoin(cache_paths) AS cache_path,
|
|
|
|
local_path,
|
|
|
|
remote_path,
|
|
|
|
size as file_size
|
|
|
|
FROM system.remote_data_paths
|
|
|
|
WHERE endsWith(local_path, '.bin')
|
|
|
|
) AS data_paths
|
|
|
|
INNER JOIN system.filesystem_cache_log AS cache_log
|
|
|
|
ON data_paths.remote_path = cache_log.source_file_path
|
|
|
|
WHERE query_id = '$QUERY_ID' "
|
|
|
|
|
|
|
|
# File segments cannot be less that 20Mi,
|
|
|
|
# except for last file segment in a file or if file size is less.
|
|
|
|
$CLICKHOUSE_CLIENT -nm -q "
|
|
|
|
SELECT count() FROM ($query)
|
|
|
|
WHERE file_segment_size < file_size
|
|
|
|
AND end_offset + 1 != file_size
|
|
|
|
AND file_segment_size < 20 * 1024 * 1024;
|
|
|
|
"
|
|
|
|
|
|
|
|
all=$($CLICKHOUSE_CLIENT -nm -q "
|
|
|
|
SELECT count() FROM ($query)
|
|
|
|
WHERE file_segment_size < file_size AND end_offset + 1 != file_size;
|
|
|
|
")
|
|
|
|
#echo $all
|
|
|
|
|
2023-07-03 11:49:56 +00:00
|
|
|
if [ "$all" -gt "1" ]; then
|
2023-06-14 13:11:43 +00:00
|
|
|
echo "OK"
|
|
|
|
else
|
|
|
|
echo "FAIL"
|
|
|
|
fi
|
|
|
|
|
|
|
|
count=$($CLICKHOUSE_CLIENT -nm -q "
|
|
|
|
SELECT count() FROM ($query)
|
|
|
|
WHERE file_segment_size < file_size
|
|
|
|
AND end_offset + 1 != file_size
|
|
|
|
AND formatted_file_segment_size in ('20.00 MiB', '40.00 MiB')
|
|
|
|
")
|
|
|
|
|
|
|
|
if [ "$count" = "$all" ]; then
|
|
|
|
echo "OK"
|
|
|
|
else
|
|
|
|
echo "FAIL"
|
|
|
|
fi
|
|
|
|
|
|
|
|
query2="
|
|
|
|
SELECT *
|
|
|
|
FROM (SELECT * FROM ($query)) AS cache_log
|
|
|
|
INNER JOIN system.filesystem_cache AS cache
|
|
|
|
ON cache_log.cache_path = cache.cache_path "
|
|
|
|
|
|
|
|
$CLICKHOUSE_CLIENT -nm -q "
|
|
|
|
SELECT count() FROM ($query2)
|
|
|
|
WHERE file_segment_range_begin - file_segment_range_end + 1 < file_size
|
|
|
|
AND file_segment_range_end + 1 != file_size
|
|
|
|
AND downloaded_size < 20 * 1024 * 1024;
|
|
|
|
"
|
|
|
|
|
|
|
|
$CLICKHOUSE_CLIENT -nm -q "
|
|
|
|
SELECT count() FROM ($query2)
|
|
|
|
WHERE file_segment_range_begin - file_segment_range_end + 1 < file_size
|
|
|
|
AND file_segment_range_end + 1 != file_size
|
|
|
|
AND formatReadableSize(downloaded_size) not in ('20.00 MiB', '40.00 MiB');
|
|
|
|
"
|
|
|
|
|
|
|
|
all=$($CLICKHOUSE_CLIENT -nm -q "
|
|
|
|
SELECT count() FROM ($query2)
|
|
|
|
WHERE file_segment_size < file_size AND file_segment_range_end + 1 != file_size;
|
|
|
|
")
|
|
|
|
|
2023-07-03 11:49:56 +00:00
|
|
|
if [ "$all" -gt "1" ]; then
|
2023-06-14 13:11:43 +00:00
|
|
|
echo "OK"
|
|
|
|
else
|
|
|
|
echo "FAIL"
|
|
|
|
fi
|
|
|
|
|
|
|
|
count2=$($CLICKHOUSE_CLIENT -nm -q "
|
|
|
|
SELECT count() FROM ($query2)
|
|
|
|
WHERE file_segment_range_begin - file_segment_range_end + 1 < file_size
|
|
|
|
AND file_segment_range_end + 1 != file_size
|
|
|
|
AND formatReadableSize(downloaded_size) in ('20.00 MiB', '40.00 MiB');
|
|
|
|
")
|
|
|
|
|
|
|
|
if [ "$count2" = "$all" ]; then
|
|
|
|
echo "OK"
|
|
|
|
else
|
|
|
|
echo "FAIL"
|
|
|
|
fi
|