diff options
author | robot-piglet <[email protected]> | 2025-04-14 12:57:31 +0300 |
---|---|---|
committer | robot-piglet <[email protected]> | 2025-04-14 13:17:30 +0300 |
commit | 0a3f7c36d20990ff22167d8af3ea54798cdb9d73 (patch) | |
tree | b42dabb1d603409ad86974f6737506341ffd9740 | |
parent | e11dfa5f63fe4c15672ffbe1e7974c39b6d2ac59 (diff) |
Intermediate changes
commit_hash:b6187f8eba6e8debc23f1928b2e44a396f3511ad
-rw-r--r-- | yql/essentials/docs/ru/syntax/pragma.md | 95 | ||||
-rw-r--r-- | yql/essentials/sql/v1/lexer/lexer_ut.cpp | 39 | ||||
-rw-r--r-- | yql/essentials/sql/v1/lexer/regex/lexer.cpp | 10 | ||||
-rw-r--r-- | yql/essentials/sql/v1/lexer/regex/regex.cpp | 2 | ||||
-rw-r--r-- | yql/essentials/sql/v1/lexer/regex/regex_ut.cpp | 2 | ||||
-rw-r--r-- | yt/yt/core/logging/unittests/logging_ut.cpp | 86 |
6 files changed, 142 insertions, 92 deletions
diff --git a/yql/essentials/docs/ru/syntax/pragma.md b/yql/essentials/docs/ru/syntax/pragma.md index 6c9584fc58b..4b380de4a1a 100644 --- a/yql/essentials/docs/ru/syntax/pragma.md +++ b/yql/essentials/docs/ru/syntax/pragma.md @@ -15,6 +15,8 @@ * `Kb`, `Mb`, `Gb` — для объема информации. * `sec`, `min`, `h`, `d` — для временных значений. +За некоторым исключением, значение настроек можно вернуть в состояние по умолчанию с помощью `PRAGMA my_pragma = default;`. + ### Примеры ```yql @@ -29,16 +31,15 @@ PRAGMA TablePathPrefix = "home/yql"; PRAGMA Warning("disable", "1101"); ``` -За некоторым исключением, значение настроек можно вернуть в состояние по умолчанию с помощью `PRAGMA my_pragma = default;`. - Полный список доступных настроек [см. в таблице ниже](#pragmas). ### Область действия {#pragmascope} -Если не указано иное, прагма влияет на все идущие следом выражения вплоть до конца модуля, в котором она встречается. -При необходимости и логической возможности допустимо менять значение настройки несколько раз в одном запросе, чтобы оно было разным на разных этапах выполнения. +Если не указано иное, прагма влияет на все идущие следом выражения вплоть до конца модуля, в котором она встречается. При необходимости и логической возможности можно менять значение настройки несколько раз в одном запросе, чтобы оно было разным на разных этапах выполнения. + Существуют также специальные scoped прагмы, область действия которых определяется по тем же правилам, что и область видимости [именованных выражений](expressions.md#named-nodes). -В отличие от scoped прагм, обычные прагмы могут использоваться только в глобальной области видимости (не внутри лямбда-функций, ACTION, SUBQUERY и т.п.). + +В отличие от scoped прагм, обычные прагмы могут использоваться только в глобальной области видимости (не внутри [DEFINE ACTION](action.md#define-action) и [DEFINE SUBQUERY](subquery.md#define-subquery)). ## Глобальные {#pragmas} @@ -70,11 +71,11 @@ SELECT * FROM test; | Тип значения | По умолчанию | Статическая /<br/>динамическая | | --- | --- | --- | | Строка | — | Статическая | -| Строка - имя префикса, добавляемого ко всем модулям | "" | Статическая | +| Строка — имя префикса, добавляемого ко всем модулям | "" | Статическая | + +Импорт всех UDF из указанной библиотеки. Чтобы прагма сработала, библиотеку необходимо приложить к запросу. Обратите внимание: библиотека должна быть разделяемой (.so) и она должна быть скомпилирована под Linux x64. -Импорт всех UDF из указанной приложенной к запросу скомпилированной под Linux x64 разделяемой библиотеки (.so). -При указании префикса, он добавляется перед названием всех загруженных модулей, например, CustomPrefixIp::IsIPv4 вместо Ip::IsIPv4. -Указание префикса позволяет подгрузить одну и ту же UDF разных версий. +При указании префикса, он добавляется перед названием всех загруженных модулей, например, CustomPrefixIp::IsIPv4 вместо Ip::IsIPv4. Указание префикса позволяет подгрузить одну и ту же UDF разных версий. ### RuntimeLogLevel {#runtime-log-level} @@ -112,9 +113,7 @@ SELECT * FROM test; `PRAGMA Warning("disable", "1101");` `PRAGMA Warning("default", "4503");` -В данном случае все предупреждения будут считаться ошибками, за исключением предупреждение с кодом `1101`, которое будет отключено, и `4503`, которое будет обрабатываться по умолчанию (то есть останется предупреждением). Поскольку предупреждения могут добавляться в новых релизах YQL, следует с осторожностью пользоваться конструкцией `PRAGMA Warning("error", "*");` (как минимум покрывать такие запросы автотестами). - - +В данном случае все предупреждения будут считаться ошибками, за исключением предупреждения с кодом `1101`, которое будет отключено, и `4503`, которое будет обрабатываться по умолчанию (то есть останется предупреждением). Поскольку предупреждения могут добавляться в новых релизах YQL, следует с осторожностью пользоваться конструкцией `PRAGMA Warning("error", "*");` (как минимум покрывать такие запросы автотестами). ### Greetings {#greetings} @@ -124,8 +123,7 @@ SELECT * FROM test; Выдать указанный текст в качестве Info сообщения запроса. -Пример: -`PRAGMA Greetings("It's a good day!");` +Пример: `PRAGMA Greetings("It's a good day!");` ### WarningMsg {#warningmsg} @@ -158,7 +156,7 @@ SELECT * FROM test; | --- | --- | | Флаг | true | -Управляет неявным Coalesce для ключевых колонок `JOIN` в режиме SimpleColumns. Если флаг установлен, то Coalesce ключевых колонок происходит при наличии хотя бы одного выражения вида `foo.*` или `*` в SELECT - например `SELECT a.* FROM T1 AS a JOIN T2 AS b USING(key)`. Если флаг сброшен, то Coalesce ключей JOIN происходит только при наличии '*' после `SELECT` +Управляет неявным Coalesce для ключевых колонок `JOIN` в режиме SimpleColumns. Если флаг установлен, то Coalesce ключевых колонок происходит при наличии хотя бы одного выражения вида `foo.*` или `*` в SELECT — например `SELECT a.* FROM T1 AS a JOIN T2 AS b USING(key)`. Если флаг сброшен, то Coalesce ключей JOIN происходит только при наличии '*' после `SELECT`. ### StrictJoinKeyTypes @@ -170,8 +168,10 @@ SELECT * FROM test; Если флаг установлен, то [JOIN](join.md) будет требовать строгого совпадения типов ключей. По умолчанию JOIN предварительно конвертирует ключи к общему типу, что может быть нежелательно с точки зрения производительности. + StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. + ### AnsiInForEmptyOrNullableItemsCollections | Тип значения | По умолчанию | @@ -184,7 +184,7 @@ StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. `NULL IN () = Just(False) (было NULL)` `(1, null) IN ((2, 2), (3, 3)) = Just(False) (было NULL)` -Подробнее про поведение `IN` при наличии `NULL`ов в операндах можно почитать [здесь](expressions.md#in). Явным образом выбрать старое поведение можно указав прагму `DisableAnsiInForEmptyOrNullableItemsCollections`. Если никакой прагмы не задано, то выдается предупреждение и работает старый вариант. +Подробнее про поведение `IN` при наличии NULL-ов в операндах можно почитать [здесь](expressions.md#in). Явным образом выбрать старое поведение можно, указав прагму `DisableAnsiInForEmptyOrNullableItemsCollections`. Если никакой прагмы не задано, то выдается предупреждение и работает старый вариант. ### AnsiRankForNullableKeys @@ -197,7 +197,7 @@ StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. * типом результата всегда является Uint64, а не Uint64?; * null-ы в ключах считаются равными друг другу (текущая реализация возвращает NULL). -Явным образом выбрать старое поведению можно указав прагму `DisableAnsiRankForNullableKeys`. Если никакой прагмы не задано, то выдается предупреждение и работает старый вариант. +Явным образом выбрать старое поведение можно, указав прагму `DisableAnsiRankForNullableKeys`. Если никакой прагмы не задано, то выдается предупреждение и работает старый вариант. ### AnsiCurrentRow @@ -205,9 +205,10 @@ StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. | --- | --- | | Флаг | false | -Приводит неявное задание рамки окна при наличии ORDER BY в соответствие со стандартом. -Если AnsiCurrentRow не установлен, то окно `(ORDER BY key)` эквивалентно `(ORDER BY key ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)`. -Стандарт же требует, чтобы такое окно вело себя как `(ORDER BY key RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)`. +Приводит неявное задание рамки окна при наличии [ORDER BY](select/order_by.md) в соответствие со стандартом. + +Если AnsiCurrentRow не установлен, то окно `(ORDER BY key)` эквивалентно `(ORDER BY key ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)`. Стандарт же требует, чтобы такое окно вело себя как `(ORDER BY key RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)`. + Разница состоит в трактовке `CURRENT ROW`. В режиме `ROWS` `CURRENT ROW` трактуется буквально – текущая строка в партиции. А в режиме `RANGE` конец рамки `CURRENT ROW` означает "последняя строка в партиции с ключом сортировки, равным текущей строке". @@ -219,8 +220,7 @@ StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. ### PositionalUnionAll {#positionalunionall} -Включить соответствующий стандарту поколоночный режим выполнения [UNION ALL](select/index.md#unionall). При этом автоматически включается -[упорядоченность колонок](#orderedcolumns). +Включить соответствующий стандарту поколоночный режим выполнения [UNION ALL](select/index.md#unionall). При этом автоматически включается [упорядоченность колонок](#orderedcolumns). ### RegexUseRe2 @@ -236,9 +236,9 @@ StrictJoinKeyTypes является [scoped](#pragmascope) настройкой. | --- | --- | | Флаг | true | -В классическом варианте результат целочисленного деления остаётся целочисленным (по умолчанию). -Если отключить — результат всегда становится Double. -ClassicDivision является [scoped](#pragmascope) настройкой. +В классическом варианте результат целочисленного деления остается целочисленным (по умолчанию). Если отключить — результат всегда становится Double. + +`ClassicDivision` является [scoped](#pragmascope) настройкой. ### CheckedOps @@ -246,10 +246,11 @@ ClassicDivision является [scoped](#pragmascope) настройкой. | --- | --- | | Флаг | false | -При включенном режиме если в результате выполнения агрегационных функций SUM/SUM_IF, бинарных операций `+`,`-`,`*`,`/`,`%` или унарной операции `-` над целыми числами происходит выход за границы целевого типа аргументов или результата, то возвращается `NULL`. -Если отключить - переполнение не проверяется. +При включенном режиме: если в результате выполнения агрегационных функций SUM/SUM_IF, бинарных операций `+`,`-`,`*`,`/`,`%` или унарной операции `-` над целыми числами происходит выход за границы целевого типа аргументов или результата, то возвращается `NULL`. Если отключить — переполнение не проверяется. + Не влияет на операции с числами с плавающей точкой или `Decimal`. -CheckedOps является [scoped](#pragmascope) настройкой. + +`CheckedOps` является [scoped](#pragmascope) настройкой. ### UnicodeLiterals @@ -259,8 +260,9 @@ CheckedOps является [scoped](#pragmascope) настройкой. | --- | --- | | Флаг | false | -При включенном режиме строковые литералы без суффиксов вида "foo"/'bar'/@@multiline@@ будут иметь тип `Utf8`, при выключенном - `String`. -UnicodeLiterals является [scoped](#pragmascope) настройкой. +При включенном режиме строковые литералы без суффиксов вида "foo"/'bar'/@@multiline@@ будут иметь тип `Utf8`, при выключенном — `String`. + +`UnicodeLiterals` является [scoped](#pragmascope) настройкой. ### WarnUntypedStringLiterals @@ -271,7 +273,8 @@ UnicodeLiterals является [scoped](#pragmascope) настройкой. | Флаг | false | При включенном режиме для строковых литералов без суффиксов вида "foo"/'bar'/@@multiline@@ будет генерироваться предупреждение. Его можно подавить, если явно выбрать суффикс `s` для типа `String`, либо `u` для типа `Utf8`. -WarnUntypedStringLiterals является [scoped](#pragmascope) настройкой. + +`WarnUntypedStringLiterals` является [scoped](#pragmascope) настройкой. ### AllowDotInAlias @@ -279,7 +282,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Флаг | false | -Разрешить использовать точку в именах результирующих колонок. По умолчанию отключено, т.к. дальнейшее использование таких колонок в JOIN полностью не реализовано. +Разрешить использовать точку в именах результирующих колонок. По умолчанию отключено, т. к. дальнейшее использование таких колонок в JOIN полностью не реализовано. ### WarnUnnamedColumns @@ -287,7 +290,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Флаг | false | -Генерировать предупреждение если для безымянного выражения в `SELECT` было автоматически сгенерировано имя колонки (вида `column[0-9]+`). +Генерировать предупреждение, если для безымянного выражения в `SELECT` было автоматически сгенерировано имя колонки (вида `column[0-9]+`). ### GroupByLimit @@ -295,7 +298,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Положительное число | 32 | -Увеличение лимита на число группировок в [GROUP BY](group_by.md). +Увеличение лимита на число группировок в [GROUP BY](group_by.md). ### GroupByCubeLimit @@ -310,7 +313,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой ## Yson -Управление поведением Yson UDF по умолчанию, подробнее см. в [документации по ней](../udf/list/yson.md) и в частности [Yson::Options](../udf/list/yson.md#ysonoptions). +Управление поведением Yson UDF по умолчанию, подробнее см. в [документации](../udf/list/yson.md) и в частности [Yson::Options](../udf/list/yson.md#ysonoptions). ### `yson.AutoConvert` @@ -318,7 +321,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Флаг | false | -Автоматическое конвертация значений в требуемый тип данных во всех вызовах Yson UDF, в том числе и неявных. +Автоматическая конвертация значений в требуемый тип данных во всех вызовах Yson UDF, в том числе и неявных. ### `yson.Strict` @@ -326,7 +329,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Флаг | true | -Управление строгим режимом во всех вызовах Yson UDF, в том числе и неявных. Без значения или при значении `"true"` - включает строгий режим. Со значением `"false"` - отключает. +Управление строгим режимом во всех вызовах Yson UDF, в том числе и неявных. Без значения или при значении `"true"` — включает строгий режим. Со значением `"false"` — отключает. ### `yson.DisableStrict` @@ -334,7 +337,8 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | --- | --- | | Флаг | false | -Инвертированная версия `yson.Strict`. Без значения или при значении `"true"` - отключает строгий режим. Со значением `"false"` - включает. +Инвертированная версия `yson.Strict`. Без значения или при значении `"true"` — отключает строгий режим. Со значением `"false"` — включает. + ## Работа с файлами @@ -354,8 +358,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой |-------------------------------------------------|--------------|--------------------------------| | Три строковых аргумента — алиас, ключ, значение | — | Статическая | -Установить у указанного файла опцию по заданному ключу в заданное значение. Файл с этим алиасом уже должен быть объявлен -через [PRAGMA File](#file) или приложен к запросу. +Установить для указанного файла опцию по заданному ключу в заданное значение. Файл с этим алиасом уже должен быть объявлен через [PRAGMA File](#file) или приложен к запросу. @@ -373,7 +376,7 @@ WarnUntypedStringLiterals является [scoped](#pragmascope) настрой | Тип значения | По умолчанию | Статическая /<br/>динамическая | | --- | --- | --- | -| Один или два аргумента - имя файла и опциональный URL | — | Статическая | +| Один или два аргумента — имя файла и опциональный URL | — | Статическая | Интерпретировать указанный приложенный файл как библиотеку, из которой можно делать [IMPORT](export_import.md). Тип синтаксиса библиотеки определяется по расширению файла: * `.sql` для YQL диалекта SQL <span style="color: green;">(рекомендуется)</span>; @@ -408,13 +411,13 @@ SELECT $x; | Тип значения | По умолчанию | Статическая /<br/>динамическая | | --- | --- | --- | -| Два или три аргумента - имя пакета, URL и опциональный токен | — | Статическая | +| Два или три аргумента — имя пакета, URL и опциональный токен | — | Статическая | -Приложить иерархический набор файлов к запросу по URL, интерпретируя их в качестве пакета с указанным именем - взаимосвязанного набора библиотек. +Приложить иерархический набор файлов к запросу по URL, интерпретируя их в качестве пакета с указанным именем — взаимосвязанного набора библиотек. -Имя пакета ожидается в формате ``project_name.package_name``; из библиотек пакета в дальнейшнем можно делать [IMPORT](export_import.md) с именем модуля вида ``pkg.project_name.package_name.maybe.nested.module.name``. +Имя пакета ожидается в формате ``project_name.package_name``; из библиотек пакета в дальнейшем можно делать [IMPORT](export_import.md) с именем модуля вида ``pkg.project_name.package_name.maybe.nested.module.name``. -Пример для пакета с плоской иерархией, состоящего из двух библиотек - foo.sql и bar.sql: +Пример для пакета с плоской иерархией, состоящего из двух библиотек — foo.sql и bar.sql: ```yql PRAGMA package("project.package", "http://intranet.site/path/to/package"); @@ -437,7 +440,7 @@ SELECT $foo, $bar; | Тип значения | По умолчанию | Статическая /<br/>динамическая | | --- | --- | --- | -| Один аргумент - имя файла | — | Статическая | +| Один аргумент — имя файла | — | Статическая | Интерпретировать указанный приложенный файл как библиотеку и перекрыть ей одну из библиотек пакета. diff --git a/yql/essentials/sql/v1/lexer/lexer_ut.cpp b/yql/essentials/sql/v1/lexer/lexer_ut.cpp index 92395f5237b..c59089efd63 100644 --- a/yql/essentials/sql/v1/lexer/lexer_ut.cpp +++ b/yql/essentials/sql/v1/lexer/lexer_ut.cpp @@ -484,4 +484,43 @@ SELECT "SEMICOLON(;) EOF"); } + Y_UNIT_TEST_ON_EACH_LEXER(AsciiEscape) { + auto lexer = MakeLexer(Lexers, ANSI, ANTLR4, FLAVOR); + UNIT_ASSERT_TOKENIZED(lexer, "\0", "EOF"); // Null character + UNIT_ASSERT_TOKENIZED(lexer, "\t", "WS(\t) EOF"); // Horizontal Tab + UNIT_ASSERT_TOKENIZED(lexer, "\n", "WS(\n) EOF"); // Line Feed + UNIT_ASSERT_TOKENIZED(lexer, "\v", "[INVALID] EOF"); // Vertical Tabulation + UNIT_ASSERT_TOKENIZED(lexer, "\f", "WS(\x0C) EOF"); // Form Feed + UNIT_ASSERT_TOKENIZED(lexer, "\r", "WS(\r) EOF"); // Carriage Return + UNIT_ASSERT_TOKENIZED(lexer, "\r\n", "WS(\r) WS(\n) EOF"); + } + + Y_UNIT_TEST_ON_EACH_LEXER(AsciiEscapeCanon) { + static THashMap<char, TString> canon; + + auto lexer = MakeLexer(Lexers, ANSI, ANTLR4, FLAVOR); + + for (char c = 0; c < std::numeric_limits<char>::max(); ++c) { + TString input; + input += c; + + TString& expected = canon[c]; + if (expected.empty()) { + expected = Tokenized(lexer, input); + } + + UNIT_ASSERT_TOKENIZED(lexer, input, expected); + } + } + + Y_UNIT_TEST_ON_EACH_LEXER(Utf8BOM) { + auto lexer = MakeLexer(Lexers, ANSI, ANTLR4, FLAVOR); + if (ANTLR4 || FLAVOR == ELexerFlavor::Regex) { + UNIT_ASSERT_TOKENIZED(lexer, "\xEF\xBB\xBF 1", "WS( ) DIGITS(1) EOF"); + UNIT_ASSERT_TOKENIZED(lexer, "\xEF\xBB\xBF \xEF\xBB\xBF", "[INVALID] WS( ) EOF"); + } else { + UNIT_ASSERT_TOKENIZED(lexer, "\xEF\xBB\xBF 1", "[INVALID] WS( ) DIGITS(1) EOF"); + } + } + } // Y_UNIT_TEST_SUITE(SQLv1Lexer) diff --git a/yql/essentials/sql/v1/lexer/regex/lexer.cpp b/yql/essentials/sql/v1/lexer/regex/lexer.cpp index 820cbebf235..a1d96253bf7 100644 --- a/yql/essentials/sql/v1/lexer/regex/lexer.cpp +++ b/yql/essentials/sql/v1/lexer/regex/lexer.cpp @@ -21,6 +21,8 @@ namespace NSQLTranslationV1 { static constexpr const char* CommentTokenName = "COMMENT"; static constexpr const char* StringValueName = "STRING_VALUE"; + static constexpr const TStringBuf Utf8BOM = "\xEF\xBB\xBF"; + public: TRegexLexer( bool ansi, @@ -51,7 +53,13 @@ namespace NSQLTranslationV1 { NYql::TIssues& issues, size_t maxErrors) override { size_t errors = 0; - for (size_t pos = 0; pos < query.size();) { + + size_t pos = 0; + if (query.StartsWith(Utf8BOM)) { + pos += Utf8BOM.size(); + } + + while (pos < query.size()) { TParsedToken matched = Match(TStringBuf(query, pos)); if (matched.Name.empty() && maxErrors == errors) { diff --git a/yql/essentials/sql/v1/lexer/regex/regex.cpp b/yql/essentials/sql/v1/lexer/regex/regex.cpp index 937d21572fc..e634ff009a7 100644 --- a/yql/essentials/sql/v1/lexer/regex/regex.cpp +++ b/yql/essentials/sql/v1/lexer/regex/regex.cpp @@ -135,7 +135,7 @@ namespace NSQLTranslationV1 { R"(\bEOF\b)", R"($)")); rules.emplace_back(RegexRewriteRule( - R"('\\u000C' \|)", "")); + R"('\\u000C' \|)", R"('\\f' |)")); } void Finalize(TString& text) { diff --git a/yql/essentials/sql/v1/lexer/regex/regex_ut.cpp b/yql/essentials/sql/v1/lexer/regex/regex_ut.cpp index 8f22bda5886..e62bb0e609f 100644 --- a/yql/essentials/sql/v1/lexer/regex/regex_ut.cpp +++ b/yql/essentials/sql/v1/lexer/regex/regex_ut.cpp @@ -76,7 +76,7 @@ Y_UNIT_TEST_SUITE(SqlRegexTests) { CheckRegex( /* ansi = */ false, "WS", - R"(( |\r|\t|\n))"); + R"(( |\r|\t|\f|\n))"); } Y_UNIT_TEST(Comment) { diff --git a/yt/yt/core/logging/unittests/logging_ut.cpp b/yt/yt/core/logging/unittests/logging_ut.cpp index 4aaa9c73124..556b7f3192c 100644 --- a/yt/yt/core/logging/unittests/logging_ut.cpp +++ b/yt/yt/core/logging/unittests/logging_ut.cpp @@ -452,7 +452,7 @@ TEST_F(TLoggingTest, LogManager) }; ]; writers = { - "error" = { + error = { file_name = "%v"; type = "file"; }; @@ -487,14 +487,14 @@ TEST_F(TLoggingTest, ThreadMinLogLevel) Configure(Format(R"({ rules = [ { - min_level = "debug"; - writers = [ "debug" ]; + min_level = debug; + writers = [ debug ]; }; ]; writers = { - "debug" = { + debug = { file_name = "%v"; - type = "file"; + type = file; }; }; })", debugFile.Name())); @@ -614,12 +614,12 @@ TEST_F(TLoggingTest, SlogMacroLogging) rules = [ { min_level = info; - writers = [ "test" ]; + writers = [ test ]; }; ]; writers = { - "test" = { - "format" = "%v"; + test = { + format = "%v"; file_name = "%v"; type = "file"; }; @@ -656,8 +656,8 @@ TEST_F(TLoggingTest, SlogMacroConstexprLogging) }; ]; writers = { - "test" = { - "format" = "%v"; + test = { + format = "%v"; file_name = "%v"; type = "file"; }; @@ -776,19 +776,19 @@ TEST_F(TLoggingTest, StructuredLoggingWithValidator) Configure(Format(R"({ rules = [ { - "family" = "structured"; + family = structured; min_level = info; - writers = [ "test" ]; + writers = [ test ]; }; ]; writers = { - "test" = { - "format" = "structured"; + test = { + format = structured; file_name = "%v"; - type = "file"; + type = file; }; }; - "structured_validation_sampling_rate" = 1.0; + structured_validation_sampling_rate = 1.0; })", logFile.Name())); auto logger = Logger().WithStructuredValidator([] (const TYsonString& yson) { @@ -826,19 +826,19 @@ TEST_F(TLoggingTest, StructuredValidationWithSamplingRate) Configure(Format(R"({ rules = [ { - "family" = "structured"; + family = structured; min_level = info; - writers = [ "test" ]; + writers = [ test ]; }; ]; writers = { - "test" = { + test = { file_name = "%v"; - "format" = "structured"; - type = "file"; + format = structured; + type = file; } }; - "structured_validation_sampling_rate" = 0.5; + structured_validation_sampling_rate = 0.5; })", logFile.Name())); EXPECT_NEAR(TLogManager::Get()->GetCategory("Test")->StructuredValidationSamplingRate, 0.5, 0.001); @@ -922,12 +922,12 @@ TEST_P(TBuiltinRotationTest, All) writers = { info = { file_name = "%v"; - "use_timestamp_suffix" = %v; - "use_logrotate_compatible_timestamp_suffix" = %v; + use_timestamp_suffix = %v; + use_logrotate_compatible_timestamp_suffix = %v; type = "file"; - "rotation_policy" = { - "max_segment_count_to_keep" = %v; - "max_segment_size" = 10; + rotation_policy = { + max_segment_count_to_keep = %v; + max_segment_size = 10; }; }; }; @@ -1155,7 +1155,7 @@ TEST_F(TLoggingTest, DISABLED_LogFatal) writers = { info = { file_name = "%v"; - type = "file"; + type = file; }; }; })", logFile.Name())); @@ -1184,10 +1184,10 @@ TEST_F(TLoggingTest, SupressedRequests) writers = { info = { file_name = "%v"; - type = "file"; + type = file; }; }; - "request_suppression_timeout" = 100; + request_suppression_timeout = 100; })", logFile.Name())); { @@ -1225,7 +1225,7 @@ TEST_F(TLoggingTest, SuppressedMessages) writers = { info = { file_name = "%v"; - type = "file"; + type = file; }; }; suppressed_messages = ["Suppressed message"]; @@ -1256,7 +1256,7 @@ TEST_F(TLoggingTest, MessageLevelOverride) writers = { info = { file_name = "%v"; - type = "file"; + type = file; }; }; message_level_overrides = { @@ -1352,14 +1352,14 @@ protected: rules = [ { min_level = info; - "max_level" = info; + max_level = info; writers = [ info ]; }; ]; writers = { info = { file_name = "%v"; - type = "file"; + type = file; }; }; })", fileName)); @@ -1539,10 +1539,10 @@ TEST_F(TCustomWriterTest, UnknownWriterType) EXPECT_THROW_WITH_SUBSTRING( { Configure(R"({ - "rules" = []; + rules = []; writers = { - "custom" = { - type = "unknown"; + custom = { + type = unknown; }; }; })"); @@ -1555,11 +1555,11 @@ TEST_F(TCustomWriterTest, WriterConfigValidation) EXPECT_THROW_WITH_SUBSTRING( { Configure(Format(R"({ - "rules" = []; + rules = []; writers = { - "custom" = { + custom = { type = "%v"; - "padding" = -10; + padding = -10; }; }; })", CustomWriterType)); @@ -1573,13 +1573,13 @@ TEST_F(TCustomWriterTest, Write) "rules" = [ { min_level = info; - writers = [ "custom" ]; + writers = [ custom ]; } ]; writers = { - "custom" = { + custom = { type = "%v"; - "padding" = 2; + padding = 2; }; }; })", CustomWriterType)); |