mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-21 09:10:48 +00:00
Improve the test clarity
This commit is contained in:
parent
f19e473482
commit
5c34585a00
@ -2280,7 +2280,7 @@ namespace
|
||||
{
|
||||
bool is_group = (parent_field_descriptor->type() == FieldTypeId::TYPE_GROUP);
|
||||
writer->endNestedMessage(parent_field_descriptor->number(), is_group,
|
||||
should_skip_if_empty || nullGoogleWrapper(row_num));
|
||||
should_skip_if_empty || (google_wrappers_special_treatment && nullGoogleWrapper(row_num)));
|
||||
}
|
||||
else if (has_envelope_as_parent)
|
||||
{
|
||||
@ -2418,16 +2418,6 @@ namespace
|
||||
bool nullGoogleWrapper(size_t row_num)
|
||||
{
|
||||
return isGoogleWrapperField(parent_field_descriptor) && mutable_columns[0].get()->isNullAt(row_num);
|
||||
// if (isGoogleWrapperField(parent_field_descriptor)) {
|
||||
// // auto column = mutable_columns[0].get();
|
||||
// // if (column->isNullable()) {
|
||||
// // const auto & column_nullable = assert_cast<const ColumnNullable &>(*column);
|
||||
// // const auto & null_map = column_nullable.getNullMapData();
|
||||
// // return null_map[row_num];
|
||||
// // }
|
||||
// return mutable_columns[0].get()->isNullAt(row_num);
|
||||
// }
|
||||
// return false;
|
||||
}
|
||||
|
||||
struct FieldInfo
|
||||
|
@ -1,4 +1,4 @@
|
||||
Table (Nullable(String), Int32):
|
||||
Insert ('str1',1),('',2),('str2',3) into table (Nullable(String), Int32):
|
||||
str1 1
|
||||
2
|
||||
str2 3
|
||||
@ -7,7 +7,7 @@ Protobuf representation of the second row:
|
||||
00000000 0a 00 10 02 |....|
|
||||
00000004
|
||||
|
||||
Decoded:
|
||||
Decoded with protoc:
|
||||
str {
|
||||
}
|
||||
ref: 2
|
||||
@ -17,7 +17,7 @@ Proto message with (NULL, 1), ('', 2), ('str', 3):
|
||||
00000010 10 03 |..|
|
||||
00000012
|
||||
|
||||
Initial table after putting the message in:
|
||||
Insert proto message into table (Nullable(String), Int32):
|
||||
\N 1
|
||||
2
|
||||
str 3
|
||||
@ -31,7 +31,7 @@ Proto output of the table without using Google wrappers:
|
||||
00000000 02 10 01 02 10 02 07 0a 03 73 74 72 10 03 |.........str..|
|
||||
0000000e
|
||||
|
||||
Inserting message into table (Tuple(String), Int32)
|
||||
Insert proto message into table (Tuple(String), Int32)
|
||||
with disabled format_protobuf_google_wrappers_special_treatment:
|
||||
('') 1
|
||||
('') 2
|
||||
|
@ -3,46 +3,63 @@
|
||||
|
||||
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||
SCHEMADIR=$CURDIR/format_schemas
|
||||
# shellcheck source=../shell_config.sh
|
||||
. "$CURDIR"/../shell_config.sh
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
BINARY_FILE_PATH=$(mktemp "$CURDIR/02266_protobuf_format_google_wrappers.XXXXXX.binary")
|
||||
MESSAGE_FILE_PATH=$(mktemp "$CURDIR/02266_protobuf_format_google_wrappers_message.XXXXXX.binary")
|
||||
PROTOBUF_FILE_NAME="02266_protobuf_format_google_wrappers"
|
||||
PROTOBUF_FILE_PATH="$SCHEMADIR/$PROTOBUF_FILE_NAME"
|
||||
|
||||
echo "Table (Nullable(String), Int32):"
|
||||
$CLICKHOUSE_CLIENT --multiquery <<EOF
|
||||
DROP TABLE IF EXISTS google_wrappers_02266;
|
||||
DROP TABLE IF EXISTS roundtrip_google_wrappers_02266;
|
||||
DROP TABLE IF EXISTS before_google_wrappers_02266;
|
||||
BINARY_FILE_PATH=$(mktemp "$CURDIR/${PROTOBUF_FILE_NAME}.XXXXXX.binary")
|
||||
MESSAGE_FILE_PATH=$(mktemp "$CURDIR/${PROTOBUF_FILE_NAME}_message.XXXXXX.binary")
|
||||
|
||||
CREATE TABLE google_wrappers_02266
|
||||
(
|
||||
str Nullable(String),
|
||||
ref Int32
|
||||
) ENGINE = MergeTree ORDER BY tuple();
|
||||
MAIN_TABLE="google_wrappers_02266"
|
||||
ROUNDTRIP_TABLE="roundtrip_google_wrappers_02266"
|
||||
COMPATIBILITY_TABLE="compatibility_google_wrappers_02266"
|
||||
|
||||
INSERT INTO google_wrappers_02266 VALUES ('str1', 1), ('', 2), ('str2', 3);
|
||||
SELECT * FROM google_wrappers_02266;
|
||||
# takes ClickHouse format and protobuf class as arguments
|
||||
format_settings() {
|
||||
clickhouse_format="$1"
|
||||
protobuf_class="$2"
|
||||
echo "FORMAT $clickhouse_format SETTINGS format_schema = '$PROTOBUF_FILE_PATH:$protobuf_class'"
|
||||
}
|
||||
|
||||
CREATE TABLE before_google_wrappers_02266
|
||||
(
|
||||
str Tuple(value String),
|
||||
ref Int32
|
||||
) ENGINE = MergeTree ORDER BY tuple();
|
||||
$CLICKHOUSE_CLIENT -n --query "
|
||||
DROP TABLE IF EXISTS $MAIN_TABLE;
|
||||
DROP TABLE IF EXISTS $ROUNDTRIP_TABLE;
|
||||
DROP TABLE IF EXISTS $COMPATIBILITY_TABLE;
|
||||
|
||||
CREATE TABLE roundtrip_google_wrappers_02266 AS google_wrappers_02266
|
||||
EOF
|
||||
CREATE TABLE $MAIN_TABLE
|
||||
(
|
||||
str Nullable(String),
|
||||
ref Int32
|
||||
) ENGINE = MergeTree ORDER BY tuple();
|
||||
|
||||
$CLICKHOUSE_CLIENT --query "SELECT * FROM google_wrappers_02266 WHERE ref = 2 LIMIT 1 FORMAT ProtobufSingle SETTINGS format_schema = '$SCHEMADIR/02266_protobuf_format_google_wrappers:Message'" > "$BINARY_FILE_PATH"
|
||||
CREATE TABLE $ROUNDTRIP_TABLE AS $MAIN_TABLE;
|
||||
|
||||
CREATE TABLE $COMPATIBILITY_TABLE
|
||||
(
|
||||
str Tuple(value String),
|
||||
ref Int32
|
||||
) ENGINE = MergeTree ORDER BY tuple();
|
||||
"
|
||||
|
||||
INITIAL_INSERT_VALUES="('str1',1),('',2),('str2',3)"
|
||||
echo "Insert $INITIAL_INSERT_VALUES into table (Nullable(String), Int32):"
|
||||
$CLICKHOUSE_CLIENT -n --query "
|
||||
INSERT INTO $MAIN_TABLE VALUES $INITIAL_INSERT_VALUES;
|
||||
SELECT * FROM $MAIN_TABLE;
|
||||
"
|
||||
|
||||
echo
|
||||
echo "Protobuf representation of the second row:"
|
||||
$CLICKHOUSE_CLIENT --query "SELECT * FROM $MAIN_TABLE WHERE ref = 2 LIMIT 1 $(format_settings ProtobufSingle Message)" > "$BINARY_FILE_PATH"
|
||||
hexdump -C $BINARY_FILE_PATH
|
||||
|
||||
echo
|
||||
echo "Decoded:"
|
||||
(cd $SCHEMADIR && $PROTOC_BINARY --decode Message 02266_protobuf_format_google_wrappers.proto) < $BINARY_FILE_PATH
|
||||
echo "Decoded with protoc:"
|
||||
(cd $SCHEMADIR && $PROTOC_BINARY --decode Message "$PROTOBUF_FILE_NAME".proto) < $BINARY_FILE_PATH
|
||||
|
||||
echo
|
||||
echo "Proto message with (NULL, 1), ('', 2), ('str', 3):"
|
||||
@ -52,31 +69,35 @@ printf '\x09\x0A\x05\x0A\x03\x73\x74\x72\x10\x03' >> "$MESSAGE_FILE_PATH" # ('st
|
||||
hexdump -C $MESSAGE_FILE_PATH
|
||||
|
||||
echo
|
||||
echo "Initial table after putting the message in:"
|
||||
$CLICKHOUSE_CLIENT --query "INSERT INTO roundtrip_google_wrappers_02266 FORMAT Protobuf SETTINGS format_schema='$SCHEMADIR/02266_protobuf_format_google_wrappers:Message'" < "$MESSAGE_FILE_PATH"
|
||||
$CLICKHOUSE_CLIENT --query "SELECT * FROM roundtrip_google_wrappers_02266"
|
||||
echo "Insert proto message into table (Nullable(String), Int32):"
|
||||
$CLICKHOUSE_CLIENT --query "INSERT INTO $ROUNDTRIP_TABLE $(format_settings Protobuf Message)" < "$MESSAGE_FILE_PATH"
|
||||
$CLICKHOUSE_CLIENT --query "SELECT * FROM $ROUNDTRIP_TABLE"
|
||||
|
||||
$CLICKHOUSE_CLIENT --query "SELECT * FROM roundtrip_google_wrappers_02266 FORMAT Protobuf SETTINGS format_schema = '$SCHEMADIR/02266_protobuf_format_google_wrappers:Message'" > "$BINARY_FILE_PATH"
|
||||
echo
|
||||
echo "Proto output of the table:"
|
||||
$CLICKHOUSE_CLIENT --query "SELECT * FROM $ROUNDTRIP_TABLE $(format_settings Protobuf Message)" > "$BINARY_FILE_PATH"
|
||||
hexdump -C $BINARY_FILE_PATH
|
||||
|
||||
$CLICKHOUSE_CLIENT --query "SELECT * FROM roundtrip_google_wrappers_02266 FORMAT Protobuf SETTINGS format_schema = '$SCHEMADIR/02266_protobuf_format_google_wrappers:MessageNoWrapper'" > "$BINARY_FILE_PATH"
|
||||
echo
|
||||
echo "Proto output of the table without using Google wrappers:"
|
||||
$CLICKHOUSE_CLIENT --query "SELECT * FROM $ROUNDTRIP_TABLE $(format_settings Protobuf MessageNoWrapper)" > "$BINARY_FILE_PATH"
|
||||
hexdump -C $BINARY_FILE_PATH
|
||||
|
||||
SETTING_NAME="format_protobuf_google_wrappers_special_treatment"
|
||||
echo
|
||||
echo "Inserting message into table (Tuple(String), Int32)"
|
||||
echo "with disabled format_protobuf_google_wrappers_special_treatment:"
|
||||
$CLICKHOUSE_CLIENT -n --query "SET format_protobuf_google_wrappers_special_treatment = false; INSERT INTO before_google_wrappers_02266 FORMAT Protobuf SETTINGS format_schema='$SCHEMADIR/02266_protobuf_format_google_wrappers:Message'" < "$MESSAGE_FILE_PATH"
|
||||
$CLICKHOUSE_CLIENT --query "SELECT * FROM before_google_wrappers_02266"
|
||||
echo "Insert proto message into table (Tuple(String), Int32)"
|
||||
echo "with disabled $SETTING_NAME:"
|
||||
$CLICKHOUSE_CLIENT -n --query "
|
||||
SET $SETTING_NAME = false;
|
||||
INSERT INTO $COMPATIBILITY_TABLE $(format_settings Protobuf Message)
|
||||
" < "$MESSAGE_FILE_PATH"
|
||||
$CLICKHOUSE_CLIENT --query "SELECT * FROM $COMPATIBILITY_TABLE"
|
||||
|
||||
rm "$BINARY_FILE_PATH"
|
||||
rm "$MESSAGE_FILE_PATH"
|
||||
|
||||
$CLICKHOUSE_CLIENT --multiquery <<EOF
|
||||
DROP TABLE google_wrappers_02266;
|
||||
DROP TABLE roundtrip_google_wrappers_02266;
|
||||
DROP TABLE before_google_wrappers_02266;
|
||||
EOF
|
||||
$CLICKHOUSE_CLIENT -n --query "
|
||||
DROP TABLE $MAIN_TABLE;
|
||||
DROP TABLE $ROUNDTRIP_TABLE;
|
||||
DROP TABLE $COMPATIBILITY_TABLE;
|
||||
"
|
||||
|
Loading…
Reference in New Issue
Block a user