Skip to content

Commit 40ed371

Browse files
authored
CDC supported types test (#8664)
1 parent d28c13e commit 40ed371

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

ydb/core/tx/datashard/datashard_ut_change_exchange.cpp

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <library/cpp/digest/md5/md5.h>
1616
#include <library/cpp/json/json_reader.h>
1717
#include <library/cpp/json/json_writer.h>
18+
#include <library/cpp/string_utils/base64/base64.h>
1819

1920
#include <util/generic/algorithm.h>
2021
#include <util/generic/size_literals.h>
@@ -1928,6 +1929,85 @@ Y_UNIT_TEST_SUITE(Cdc) {
19281929
}
19291930
}
19301931

1932+
Y_UNIT_TEST(SupportedTypes) {
1933+
const auto table = TShardedTableOptions()
1934+
.Columns({
1935+
{"key", "Uint32", true, false},
1936+
{"int32_value", "Int32", false, false},
1937+
{"uint32_value", "Uint32", false, false},
1938+
{"int64_value", "Int64", false, false},
1939+
{"uint64_value", "Uint64", false, false},
1940+
{"uint8_value", "Uint8", false, false},
1941+
{"bool_value", "Bool", false, false},
1942+
{"double_value", "Double", false, false},
1943+
{"float_value", "Float", false, false},
1944+
{"date_value", "Date", false, false},
1945+
{"datetime_value", "Datetime", false, false},
1946+
{"timestamp_value", "Timestamp", false, false},
1947+
{"interval_value", "Interval", false, false},
1948+
{"decimal_value", "Decimal", false, false},
1949+
{"dynumber_value", "DyNumber", false, false},
1950+
{"string_value", "String", false, false},
1951+
{"utf8_value", "Utf8", false, false},
1952+
{"json_value", "Json", false, false},
1953+
{"jsondoc_value", "JsonDocument", false, false},
1954+
{"uuid_value", "Uuid", false, false},
1955+
{"date32_value", "Date32", false, false},
1956+
{"datetime64_value", "Datetime64", false, false},
1957+
{"timestamp64_value", "Timestamp64", false, false},
1958+
{"interval64_value", "Interval64", false, false},
1959+
});
1960+
TopicRunner::Read(table, Updates(NKikimrSchemeOp::ECdcStreamFormatJson), {
1961+
R"(UPSERT INTO `/Root/Table` (key, int32_value) VALUES (1, -100500);)",
1962+
R"(UPSERT INTO `/Root/Table` (key, uint32_value) VALUES (2, 100500);)",
1963+
R"(UPSERT INTO `/Root/Table` (key, int64_value) VALUES (3, -200500);)",
1964+
R"(UPSERT INTO `/Root/Table` (key, uint64_value) VALUES (4, 200500);)",
1965+
R"(UPSERT INTO `/Root/Table` (key, uint8_value) VALUES (5, 255);)",
1966+
R"(UPSERT INTO `/Root/Table` (key, bool_value) VALUES (6, true);)",
1967+
R"(UPSERT INTO `/Root/Table` (key, double_value) VALUES (7, 1.1234);)",
1968+
R"(UPSERT INTO `/Root/Table` (key, float_value) VALUES (8, -1.123f);)",
1969+
R"(UPSERT INTO `/Root/Table` (key, date_value) VALUES (9, CAST("2020-08-12" AS Date));)",
1970+
R"(UPSERT INTO `/Root/Table` (key, datetime_value) VALUES (10, CAST("2020-08-12T12:34:56Z" AS Datetime));)",
1971+
R"(UPSERT INTO `/Root/Table` (key, timestamp_value) VALUES (11, CAST("2020-08-12T12:34:56.123456Z" AS Timestamp));)",
1972+
R"(UPSERT INTO `/Root/Table` (key, interval_value) VALUES (12, CAST(-300500 AS Interval));)",
1973+
R"(UPSERT INTO `/Root/Table` (key, decimal_value) VALUES (13, CAST("3.321" AS Decimal(22, 9)));)",
1974+
R"(UPSERT INTO `/Root/Table` (key, dynumber_value) VALUES (14, CAST(".3321e1" AS DyNumber));)",
1975+
R"(UPSERT INTO `/Root/Table` (key, string_value) VALUES (15, CAST("lorem ipsum" AS String));)",
1976+
R"(UPSERT INTO `/Root/Table` (key, utf8_value) VALUES (16, CAST("lorem ipsum" AS Utf8));)",
1977+
R"(UPSERT INTO `/Root/Table` (key, json_value) VALUES (17, CAST(@@{"key": "value"}@@ AS Json));)",
1978+
R"(UPSERT INTO `/Root/Table` (key, jsondoc_value) VALUES (18, CAST(@@{"key": "value"}@@ AS JsonDocument));)",
1979+
R"(UPSERT INTO `/Root/Table` (key, uuid_value) VALUES (19, CAST("65df1ec1-a97d-47b2-ae56-3c023da6ee8c" AS Uuid));)",
1980+
R"(UPSERT INTO `/Root/Table` (key, date32_value) VALUES (20, CAST(18486 AS Date32));)",
1981+
R"(UPSERT INTO `/Root/Table` (key, datetime64_value) VALUES (21, CAST(1597235696 AS Datetime64));)",
1982+
R"(UPSERT INTO `/Root/Table` (key, timestamp64_value) VALUES (22, CAST(1597235696123456 AS Timestamp64));)",
1983+
R"(UPSERT INTO `/Root/Table` (key, interval64_value) VALUES (23, CAST(-300500 AS Interval64));)",
1984+
}, {
1985+
R"({"key":[1],"update":{"int32_value":-100500}})",
1986+
R"({"key":[2],"update":{"uint32_value":100500}})",
1987+
R"({"key":[3],"update":{"int64_value":-200500}})",
1988+
R"({"key":[4],"update":{"uint64_value":200500}})",
1989+
R"({"key":[5],"update":{"uint8_value":255}})",
1990+
R"({"key":[6],"update":{"bool_value":true}})",
1991+
R"({"key":[7],"update":{"double_value":1.1234}})",
1992+
R"({"key":[8],"update":{"float_value":-1.123}})",
1993+
R"({"key":[9],"update":{"date_value":"2020-08-12T00:00:00.000000Z"}})",
1994+
R"({"key":[10],"update":{"datetime_value":"2020-08-12T12:34:56.000000Z"}})",
1995+
R"({"key":[11],"update":{"timestamp_value":"2020-08-12T12:34:56.123456Z"}})",
1996+
R"({"key":[12],"update":{"interval_value":-300500}})",
1997+
R"({"key":[13],"update":{"decimal_value":"3.321"}})",
1998+
R"({"key":[14],"update":{"dynumber_value":".3321e1"}})",
1999+
Sprintf(R"({"key":[15],"update":{"string_value":"%s"}})", Base64Encode("lorem ipsum").c_str()),
2000+
R"({"key":[16],"update":{"utf8_value":"lorem ipsum"}})",
2001+
R"({"key":[17],"update":{"json_value":{"key": "value"}}})",
2002+
R"({"key":[18],"update":{"jsondoc_value":{"key": "value"}}})",
2003+
R"({"key":[19],"update":{"uuid_value":"65df1ec1-a97d-47b2-ae56-3c023da6ee8c"}})",
2004+
R"({"key":[20],"update":{"date32_value":18486}})",
2005+
R"({"key":[21],"update":{"datetime64_value":1597235696}})",
2006+
R"({"key":[22],"update":{"timestamp64_value":1597235696123456}})",
2007+
R"({"key":[23],"update":{"interval64_value":-300500}})",
2008+
});
2009+
}
2010+
19312011
// Schema snapshots
19322012
using TActionFunc = std::function<ui64(TServer::TPtr)>;
19332013

0 commit comments

Comments
 (0)