diff options
| author | dcherednik <[email protected]> | 2023-03-10 19:02:09 +0300 |
|---|---|---|
| committer | dcherednik <[email protected]> | 2023-03-10 19:02:09 +0300 |
| commit | 2785c5b6edb6c5579e99cdb0e60c14e3f989757d (patch) | |
| tree | baed235594d24642b15536ae0b85523bd9f45398 | |
| parent | cf307609f2783ffa591d781c73257b9492020714 (diff) | |
Do not use TOperationId to format queryId string.
| -rw-r--r-- | ydb/core/grpc_services/rpc_execute_data_query.cpp | 6 | ||||
| -rw-r--r-- | ydb/core/grpc_services/rpc_prepare_data_query.cpp | 7 | ||||
| -rw-r--r-- | ydb/public/lib/operation_id/operation_id.cpp | 5 | ||||
| -rw-r--r-- | ydb/public/lib/operation_id/operation_id.h | 2 | ||||
| -rw-r--r-- | ydb/public/lib/operation_id/operation_id_ut.cpp | 31 |
5 files changed, 41 insertions, 10 deletions
diff --git a/ydb/core/grpc_services/rpc_execute_data_query.cpp b/ydb/core/grpc_services/rpc_execute_data_query.cpp index b87e7e1934c..1f9cd9b5ee6 100644 --- a/ydb/core/grpc_services/rpc_execute_data_query.cpp +++ b/ydb/core/grpc_services/rpc_execute_data_query.cpp @@ -186,10 +186,8 @@ public: } if (!kqpResponse.GetPreparedQuery().empty()) { auto& queryMeta = *queryResult->mutable_query_meta(); - Ydb::TOperationId opId; - opId.SetKind(TOperationId::PREPARED_QUERY_ID); - AddOptionalValue(opId, "id", kqpResponse.GetPreparedQuery()); - queryMeta.set_id(ProtoToString(opId)); + + queryMeta.set_id(FormatPreparedQueryIdCompat(kqpResponse.GetPreparedQuery())); const auto& queryParameters = kqpResponse.GetQueryParameters(); for (const auto& queryParameter: queryParameters) { diff --git a/ydb/core/grpc_services/rpc_prepare_data_query.cpp b/ydb/core/grpc_services/rpc_prepare_data_query.cpp index 042b1af2cca..44bef062c7a 100644 --- a/ydb/core/grpc_services/rpc_prepare_data_query.cpp +++ b/ydb/core/grpc_services/rpc_prepare_data_query.cpp @@ -91,13 +91,8 @@ public: const auto& issueMessage = kqpResponse.GetQueryIssues(); const auto& queryParameters = kqpResponse.GetQueryParameters(); - Ydb::TOperationId opId; - opId.SetKind(TOperationId::PREPARED_QUERY_ID); - - AddOptionalValue(opId, "id", queryId); - Ydb::Table::PrepareQueryResult queryResult; - queryResult.set_query_id(ProtoToString(opId)); + queryResult.set_query_id(FormatPreparedQueryIdCompat(queryId)); for (const auto& queryParameter: queryParameters) { Ydb::Type parameterType; try { diff --git a/ydb/public/lib/operation_id/operation_id.cpp b/ydb/public/lib/operation_id/operation_id.cpp index 9d488114e2c..ca6547c63b2 100644 --- a/ydb/public/lib/operation_id/operation_id.cpp +++ b/ydb/public/lib/operation_id/operation_id.cpp @@ -13,6 +13,11 @@ namespace NOperationId { using namespace NUri; +TString FormatPreparedQueryIdCompat(const TString& in) { + static const TString prefix = "ydb://preparedqueryid/4?id="; + return prefix + in; +} + TString ProtoToString(const Ydb::TOperationId& proto) { using namespace ::google::protobuf; const Reflection& reflection = *proto.GetReflection(); diff --git a/ydb/public/lib/operation_id/operation_id.h b/ydb/public/lib/operation_id/operation_id.h index 23f91140d16..5a2032ef306 100644 --- a/ydb/public/lib/operation_id/operation_id.h +++ b/ydb/public/lib/operation_id/operation_id.h @@ -25,5 +25,7 @@ void AddOptionalValue(Ydb::TOperationId& proto, const TString& key, const TStrin void AddOptionalValue(Ydb::TOperationId& proto, const TString& key, const char* value, size_t size); Ydb::TOperationId::EKind ParseKind(const TStringBuf value); +TString FormatPreparedQueryIdCompat(const TString& str); + } // namespace NOperationId } // namespace NKikimr diff --git a/ydb/public/lib/operation_id/operation_id_ut.cpp b/ydb/public/lib/operation_id/operation_id_ut.cpp index 64fbedce4bf..4c5978a37af 100644 --- a/ydb/public/lib/operation_id/operation_id_ut.cpp +++ b/ydb/public/lib/operation_id/operation_id_ut.cpp @@ -7,6 +7,8 @@ namespace NKikimr { namespace NOperationId { Y_UNIT_TEST_SUITE(OperationIdTest) { + const TString PreparedQueryId = "9d629c27-2c3036b3-4b180476-64435bca"; + Y_UNIT_TEST(ConvertKindOnly) { Ydb::TOperationId proto; proto.SetKind(Ydb::TOperationId::OPERATION_DDL); @@ -17,6 +19,35 @@ Y_UNIT_TEST_SUITE(OperationIdTest) { UNIT_ASSERT_EQUAL(newProto.DataSize(), 0); } + Y_UNIT_TEST(PreparedQueryIdCompatibleFormatter) { + Ydb::TOperationId opId; + opId.SetKind(Ydb::TOperationId::PREPARED_QUERY_ID); + AddOptionalValue(opId, "id", PreparedQueryId); + auto result = ProtoToString(opId); + UNIT_ASSERT_VALUES_EQUAL(FormatPreparedQueryIdCompat(PreparedQueryId), result); + } +#if 0 + Y_UNIT_TEST(PreparedQueryIdCompatibleFormatterPerf) { + ui64 x = 0; + for (int i = 0; i < 10000000; i++) { + auto result = FormatPreparedQueryIdCompat(PreparedQueryId); + x += result.size(); + } + Cerr << x << Endl; + } + + Y_UNIT_TEST(PreparedQueryIdOldFormatterPerf) { + ui64 x = 0; + for (int i = 0; i < 10000000; i++) { + Ydb::TOperationId opId; + opId.SetKind(Ydb::TOperationId::PREPARED_QUERY_ID); + AddOptionalValue(opId, "id", PreparedQueryId); + auto result = ProtoToString(opId); + x += result.size(); + } + Cerr << x << Endl; + } +#endif Y_UNIT_TEST(ConvertKindAndValues) { Ydb::TOperationId proto; proto.SetKind(Ydb::TOperationId::OPERATION_DDL); |
