diff options
author | Sergei Puchin <s.puchin@gmail.com> | 2022-06-29 01:50:11 +0300 |
---|---|---|
committer | Sergei Puchin <s.puchin@gmail.com> | 2022-06-29 01:50:11 +0300 |
commit | 7fd5a8abdd58a65c76a3fde443a7d4a35376471e (patch) | |
tree | 8dc0f8d04faaaa09e2c23cbfeec8c3e5a2ae355d | |
parent | 0428e57c1a8f2857147e13b08833eded565a66c0 (diff) | |
download | ydb-7fd5a8abdd58a65c76a3fde443a7d4a35376471e.tar.gz |
Enable FlexibleTypes for YDB queries. (KIKIMR-14783)
ref:803098560ad5eb41e82b8fe2fd4fbbab9fc1aa79
-rw-r--r-- | ydb/core/kqp/host/kqp_host.cpp | 1 | ||||
-rw-r--r-- | ydb/core/kqp/ut/kqp_yql_ut.cpp | 22 |
2 files changed, 23 insertions, 0 deletions
diff --git a/ydb/core/kqp/host/kqp_host.cpp b/ydb/core/kqp/host/kqp_host.cpp index ee6183d30a6..c3077bd597b 100644 --- a/ydb/core/kqp/host/kqp_host.cpp +++ b/ydb/core/kqp/host/kqp_host.cpp @@ -1456,6 +1456,7 @@ private: } settings.EndOfQueryCommit = sqlAutoCommit; settings.Flags.insert("DisableEmitStartsWith"); + settings.Flags.insert("FlexibleTypes"); ui16 actualSyntaxVersion = 0; astRes = NSQLTranslation::SqlToYql(query, settings, nullptr, &actualSyntaxVersion); diff --git a/ydb/core/kqp/ut/kqp_yql_ut.cpp b/ydb/core/kqp/ut/kqp_yql_ut.cpp index 616fc91aa7f..04926b24109 100644 --- a/ydb/core/kqp/ut/kqp_yql_ut.cpp +++ b/ydb/core/kqp/ut/kqp_yql_ut.cpp @@ -335,6 +335,28 @@ Y_UNIT_TEST_SUITE(KqpYql) { UNIT_ASSERT_VALUES_EQUAL(req.GetStatus(), EStatus::GENERIC_ERROR); UNIT_ASSERT_STRING_CONTAINS(req.GetIssues().ToString(), "Failed to convert 'Value': Uint64 to Optional<String>"); } + + Y_UNIT_TEST_NEW_ENGINE(FlexibleTypes) { + TKikimrRunner kikimr; + auto db = kikimr.GetTableClient(); + auto session = db.CreateSession().GetValueSync().GetSession(); + + auto params = TParamsBuilder() + .AddParam("$text").Utf8("Some text").Build() + .AddParam("$data").String("Some bytes").Build() + .Build(); + + auto result = session.ExecuteDataQuery(Q1_(R"( + DECLARE $text AS Text; + DECLARE $data AS Bytes; + + SELECT $text, $data; + )"), TTxControl::BeginTx().CommitTx(), params).ExtractValueSync(); + + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + + CompareYson(R"([["Some text";"Some bytes"]])", FormatResultSetYson(result.GetResultSet(0))); + } } } // namespace NKqp |