ClickHouse/tests/queries/0_stateless/02530_dictionaries_update_field.sh

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

74 lines
2.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# Tags: long
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# shellcheck source=../shell_config.sh
. "$CUR_DIR"/../shell_config.sh
$CLICKHOUSE_CLIENT -q "
CREATE TABLE table_for_update_field_dictionary
(
key UInt64,
value String,
last_insert_time DateTime
)
ENGINE = TinyLog
"
layouts=(
flat
hashed
complex_key_hashed
)
for layout in "${layouts[@]}"; do
for custom_query in "" "custom"; do
if [[ $custom_query == custom ]]; then
dictionary_name="dict_${layout}_custom"
dictionary_source="query \$doc\$SELECT key, value, last_insert_time FROM $CLICKHOUSE_DATABASE.table_for_update_field_dictionary WHERE {condition};\$doc\$ update_field 'last_insert_time'"
echo "$layout/custom"
else
dictionary_name="dict_${layout}"
dictionary_source="table 'table_for_update_field_dictionary' update_field 'last_insert_time'"
echo "$layout"
fi
$CLICKHOUSE_CLIENT -nm -q "
TRUNCATE TABLE table_for_update_field_dictionary;
CREATE DICTIONARY $dictionary_name
(
key UInt64,
value String,
last_insert_time DateTime
)
PRIMARY KEY key
SOURCE(CLICKHOUSE($dictionary_source))
LAYOUT($layout())
LIFETIME(1);
-- { echoOn }
INSERT INTO table_for_update_field_dictionary VALUES (1, 'First', now());
SELECT key, value FROM $dictionary_name ORDER BY key ASC;
INSERT INTO table_for_update_field_dictionary VALUES (2, 'Second', now());
SELECT sleepEachRow(1) FROM numbers(10) FORMAT Null;
SELECT key, value FROM $dictionary_name ORDER BY key ASC;
INSERT INTO table_for_update_field_dictionary VALUES (2, 'SecondUpdated', now());
INSERT INTO table_for_update_field_dictionary VALUES (3, 'Third', now());
SELECT sleepEachRow(1) FROM numbers(10) FORMAT Null;
SELECT key, value FROM $dictionary_name ORDER BY key ASC;
-- { echoOff }
DROP DICTIONARY $dictionary_name;
"
done
done
$CLICKHOUSE_CLIENT -q "DROP TABLE IF EXISTS table_for_update_field_dictionary"