Fix tests after session_timezone randomization

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
This commit is contained in:
Azat Khuzhin 2023-07-19 13:22:31 +02:00
parent bc167dfde8
commit 6ae4d29180
6 changed files with 27 additions and 9 deletions

View File

@ -5,4 +5,5 @@ CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# shellcheck source=../shell_config.sh # shellcheck source=../shell_config.sh
. "$CURDIR"/../shell_config.sh . "$CURDIR"/../shell_config.sh
env TZ=UTC ${CLICKHOUSE_CLIENT} --use_client_time_zone=1 --query="SELECT toDateTime(1000000000)" # NOTE: session_timezone overrides use_client_time_zone, disable it randomization
env TZ=UTC ${CLICKHOUSE_CLIENT} --session_timezone '' --use_client_time_zone=1 --query="SELECT toDateTime(1000000000)"

View File

@ -7,11 +7,12 @@ CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
function perform() function perform()
{ {
local query=$1 local query=$1
TZ=UTC $CLICKHOUSE_CLIENT \ local settings=(
--allow_deprecated_syntax_for_merge_tree=1 \ --allow_deprecated_syntax_for_merge_tree 1
--use_client_time_zone=1 \ --session_timezone UTC
--input_format_values_interpret_expressions=0 \ --input_format_values_interpret_expressions 0
--query "$query" 2>/dev/null )
TZ=UTC $CLICKHOUSE_CLIENT "${settings[@]}" --query "$query" 2>/dev/null
if [ "$?" -ne 0 ]; then if [ "$?" -ne 0 ]; then
echo "query failed" echo "query failed"
fi fi

View File

@ -1,3 +1,15 @@
-- disable timezone randomization since otherwise TTL may fail at particular datetime, i.e.:
--
-- SELECT
-- now(),
-- toDate(toTimeZone(now(), 'America/Mazatlan')),
-- today()
--
-- ┌───────────────now()─┬─toDate(toTimeZone(now(), 'America/Mazatlan'))─┬────today()─┐
-- │ 2023-07-24 06:24:06 │ 2023-07-23 │ 2023-07-24 │
-- └─────────────────────┴───────────────────────────────────────────────┴────────────┘
set session_timezone = '';
drop table if exists ttl_00933_1; drop table if exists ttl_00933_1;
-- Column TTL works only with wide parts, because it's very expensive to apply it for compact parts -- Column TTL works only with wide parts, because it's very expensive to apply it for compact parts

View File

@ -7,8 +7,8 @@ CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
set -e -o pipefail set -e -o pipefail
# Run the client. # NOTE: dictionaries TTLs works with server timezone, so session_timeout cannot be used
$CLICKHOUSE_CLIENT --multiquery <<'EOF' $CLICKHOUSE_CLIENT --session_timezone '' --multiquery <<'EOF'
DROP DATABASE IF EXISTS dictdb_01042; DROP DATABASE IF EXISTS dictdb_01042;
CREATE DATABASE dictdb_01042; CREATE DATABASE dictdb_01042;
CREATE TABLE dictdb_01042.table(x Int64, y Int64, insert_time DateTime) ENGINE = MergeTree ORDER BY tuple(); CREATE TABLE dictdb_01042.table(x Int64, y Int64, insert_time DateTime) ENGINE = MergeTree ORDER BY tuple();

View File

@ -2,6 +2,9 @@
set mutations_sync = 2; set mutations_sync = 2;
-- system.parts has server default, timezone cannot be randomized
set session_timezone = '';
drop table if exists ttl; drop table if exists ttl;
create table ttl (d Date, a Int) engine = MergeTree order by a partition by toDayOfMonth(d) create table ttl (d Date, a Int) engine = MergeTree order by a partition by toDayOfMonth(d)

View File

@ -5,7 +5,8 @@ CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# shellcheck source=../shell_config.sh # shellcheck source=../shell_config.sh
. "$CUR_DIR"/../shell_config.sh . "$CUR_DIR"/../shell_config.sh
$CLICKHOUSE_CLIENT -q " # NOTE: dictionaries will be updated according to server TZ, not session, so prohibit it's randomization
$CLICKHOUSE_CLIENT --session_timezone '' -q "
CREATE TABLE table_for_update_field_dictionary CREATE TABLE table_for_update_field_dictionary
( (
key UInt64, key UInt64,