aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitaly Stoyan <vvvv@ydb.tech>2024-02-02 18:24:30 +0300
committerGitHub <noreply@github.com>2024-02-02 18:24:30 +0300
commitd1edd186c248a102c4253c79370a4cd5fd33abd3 (patch)
tree0633606b8a12994a65041f9e7b1bebaa1e90e356
parentb7657690c8d10cadbfbf2018cf19b9a1523eabd8 (diff)
downloadydb-d1edd186c248a102c4253c79370a4cd5fd33abd3.tar.gz
YQL-17725 docs for unicode literals (#1547)
* init * fix * tune gitignore
-rw-r--r--.gitignore4
-rw-r--r--ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/lexer.md5
-rw-r--r--ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/pragma/global.md22
-rw-r--r--ydb/library/yql/sql/v1/sql_query.cpp2
-rw-r--r--ydb/library/yql/tests/sql/dq_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Analyze_/extracted15
-rw-r--r--ydb/library/yql/tests/sql/dq_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Results_/extracted15
-rw-r--r--ydb/library/yql/tests/sql/yt_native_file/part14/canondata/test.test_expr-unicode_literals-default.txt-Results_/extracted5
7 files changed, 64 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore
index 1ca86c20ec..a4b64d12e8 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 e402623639..bcc3038047 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 452fb51c41..013355ae1a 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 9689e8beea..1b450cc640 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 0000000000..a7947fe4b5
--- /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 @@
+<tmp_path>/program.sql:<main>: Warning: Parse Sql
+
+ <tmp_path>/program.sql:<main>:9:6: Warning: Please add suffix u or t for Utf8 strings or s or b for arbitrary binary strings
+ "e");
+ ^
+<tmp_path>/program.sql:<main>: Warning: Parse Sql
+
+ <tmp_path>/program.sql:<main>:9:6: Warning: Please add suffix u or t for Utf8 strings or s or b for arbitrary binary strings
+ "e");
+ ^
+<tmp_path>/program.sql:<main>: Warning: Parse Sql
+
+ <tmp_path>/program.sql:<main>: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 0000000000..a7947fe4b5
--- /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 @@
+<tmp_path>/program.sql:<main>: Warning: Parse Sql
+
+ <tmp_path>/program.sql:<main>:9:6: Warning: Please add suffix u or t for Utf8 strings or s or b for arbitrary binary strings
+ "e");
+ ^
+<tmp_path>/program.sql:<main>: Warning: Parse Sql
+
+ <tmp_path>/program.sql:<main>:9:6: Warning: Please add suffix u or t for Utf8 strings or s or b for arbitrary binary strings
+ "e");
+ ^
+<tmp_path>/program.sql:<main>: Warning: Parse Sql
+
+ <tmp_path>/program.sql:<main>: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 0000000000..e1547d9f46
--- /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 @@
+<tmp_path>/program.sql:<main>: Warning: Parse Sql
+
+ <tmp_path>/program.sql:<main>: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