diff --git a/.gitignore b/.gitignore index 1ca86c20ec89..a4b64d12e83d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,9 @@ # Unignore all dirs !*/ # Unignore all files inside canondata dir -!*/canondata/* +!**/canondata/** + +/canonization_show_res.log # C libraries *.so diff --git a/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/lexer.md b/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/lexer.md index e40262363955..bcc3038047e5 100644 --- a/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/lexer.md +++ b/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/lexer.md @@ -169,9 +169,10 @@ SELECT $text; ### Типизированные строковые литералы {#typed-string-literals} -* Для строкового литерала, включая [многострочный](#multiline-string-literals), по умолчанию используется тип `String`. +* Для строкового литерала, включая [многострочный](#multiline-string-literals), по умолчанию используется тип `String` (см. также [PRAGMA UnicodeLiterals](../pragma.md#UnicodeLiterals)). * С помощью следующих суффиксов можно явно управлять типом литерала: - * `u` — `Utf8`; + * `s` или `b` - `String`; + * `u` или `t` — `Utf8`; * `y` — `Yson`; * `j` — `Json`. diff --git a/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/pragma/global.md b/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/pragma/global.md index 452fb51c419e..013355ae1a7d 100644 --- a/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/pragma/global.md +++ b/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/pragma/global.md @@ -207,6 +207,28 @@ ClassicDivision является [scoped](#pragmascope) настройкой. Не влияет на операции с числами с плавающей точкой или `Decimal`. CheckedOps является [scoped](#pragmascope) настройкой. +### UnicodeLiterals + +`UnicodeLiterals`/`DisableUnicodeLiterals` + +| Тип значения | По умолчанию | +| --- | --- | +| Флаг | false | + +При включенном режиме строковые литералы без суффиксов вида "foo"/'bar'/@@multiline@@ будут иметь тип `Utf8`, при выключенном - `String`. +UnicodeLiterals является [scoped](#pragmascope) настройкой. + +### WarnUntypedStringLiterals + +`WarnUntypedStringLiterals`/`DisableWarnUntypedStringLiterals` + +| Тип значения | По умолчанию | +| --- | --- | +| Флаг | false | + +При включенном режиме для строковых литералов без суффиксов вида "foo"/'bar'/@@multiline@@ будет генерироваться предупреждение. Его можно подавить, если явно выбрать суффикс `s` или `b` для типа `String`, либо `u` или `t` для типа `Utf8`. +WarnUntypedStringLiterals является [scoped](#pragmascope) настройкой. + ### AllowDotInAlias | Тип значения | По умолчанию | diff --git a/ydb/library/yql/sql/v1/sql_query.cpp b/ydb/library/yql/sql/v1/sql_query.cpp index 9689e8beeab4..1b450cc64018 100644 --- a/ydb/library/yql/sql/v1/sql_query.cpp +++ b/ydb/library/yql/sql/v1/sql_query.cpp @@ -1628,7 +1628,7 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success "unicodeliterals", "disableunicodeliterals", "warnuntypedstringliterals", - "disableuntypedstringliterals", + "disablewarnuntypedstringliterals", }; const bool hasLexicalScope = withConfigure || lexicalScopePragmas.contains(normalizedPragma); const bool withFileAlias = normalizedPragma == "file" || normalizedPragma == "folder" || normalizedPragma == "library" || normalizedPragma == "udf"; diff --git a/ydb/library/yql/tests/sql/dq_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Analyze_/extracted b/ydb/library/yql/tests/sql/dq_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Analyze_/extracted new file mode 100644 index 000000000000..a7947fe4b5f9 --- /dev/null +++ b/ydb/library/yql/tests/sql/dq_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Analyze_/extracted @@ -0,0 +1,15 @@ +/program.sql:
: Warning: Parse Sql + + /program.sql:
:9:6: Warning: Please add suffix u or t for Utf8 strings or s or b for arbitrary binary strings + "e"); + ^ +/program.sql:
: Warning: Parse Sql + + /program.sql:
:9:6: Warning: Please add suffix u or t for Utf8 strings or s or b for arbitrary binary strings + "e"); + ^ +/program.sql:
: Warning: Parse Sql + + /program.sql:
:9:6: Warning: Please add suffix u or t for Utf8 strings or s or b for arbitrary binary strings + "e"); + ^ \ No newline at end of file diff --git a/ydb/library/yql/tests/sql/dq_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Results_/extracted b/ydb/library/yql/tests/sql/dq_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Results_/extracted new file mode 100644 index 000000000000..a7947fe4b5f9 --- /dev/null +++ b/ydb/library/yql/tests/sql/dq_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Results_/extracted @@ -0,0 +1,15 @@ +/program.sql:
: Warning: Parse Sql + + /program.sql:
:9:6: Warning: Please add suffix u or t for Utf8 strings or s or b for arbitrary binary strings + "e"); + ^ +/program.sql:
: Warning: Parse Sql + + /program.sql:
:9:6: Warning: Please add suffix u or t for Utf8 strings or s or b for arbitrary binary strings + "e"); + ^ +/program.sql:
: Warning: Parse Sql + + /program.sql:
:9:6: Warning: Please add suffix u or t for Utf8 strings or s or b for arbitrary binary strings + "e"); + ^ \ No newline at end of file diff --git a/ydb/library/yql/tests/sql/yt_native_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Results_/extracted b/ydb/library/yql/tests/sql/yt_native_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Results_/extracted new file mode 100644 index 000000000000..e1547d9f4683 --- /dev/null +++ b/ydb/library/yql/tests/sql/yt_native_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Results_/extracted @@ -0,0 +1,5 @@ +/program.sql:
: Warning: Parse Sql + + /program.sql:
:9:6: Warning: Please add suffix u or t for Utf8 strings or s or b for arbitrary binary strings + "e"); + ^ \ No newline at end of file