aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergei Puchin <s.puchin@gmail.com>2022-06-29 01:50:11 +0300
committerSergei Puchin <s.puchin@gmail.com>2022-06-29 01:50:11 +0300
commit7fd5a8abdd58a65c76a3fde443a7d4a35376471e (patch)
tree8dc0f8d04faaaa09e2c23cbfeec8c3e5a2ae355d
parent0428e57c1a8f2857147e13b08833eded565a66c0 (diff)
downloadydb-7fd5a8abdd58a65c76a3fde443a7d4a35376471e.tar.gz
Enable FlexibleTypes for YDB queries. (KIKIMR-14783)
ref:803098560ad5eb41e82b8fe2fd4fbbab9fc1aa79
-rw-r--r--ydb/core/kqp/host/kqp_host.cpp1
-rw-r--r--ydb/core/kqp/ut/kqp_yql_ut.cpp22
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