|
15 | 15 | #include <library/cpp/digest/md5/md5.h>
|
16 | 16 | #include <library/cpp/json/json_reader.h>
|
17 | 17 | #include <library/cpp/json/json_writer.h>
|
| 18 | +#include <library/cpp/string_utils/base64/base64.h> |
18 | 19 |
|
19 | 20 | #include <util/generic/algorithm.h>
|
20 | 21 | #include <util/generic/size_literals.h>
|
@@ -1928,6 +1929,85 @@ Y_UNIT_TEST_SUITE(Cdc) {
|
1928 | 1929 | }
|
1929 | 1930 | }
|
1930 | 1931 |
|
| 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 | + |
1931 | 2011 | // Schema snapshots
|
1932 | 2012 | using TActionFunc = std::function<ui64(TServer::TPtr)>;
|
1933 | 2013 |
|
|
0 commit comments