File tree 6 files changed +54
-12
lines changed
6 files changed +54
-12
lines changed Original file line number Diff line number Diff line change @@ -515,17 +515,23 @@ class TxPlanSerializer {
515
515
}
516
516
517
517
TString DescribeValue (const NKikimr::NClient::TValue& value) {
518
- auto str = value.GetDataText ();
519
- switch (value.GetType ().GetData ().GetScheme ()) {
520
- case NScheme::NTypeIds::Utf8:
521
- case NScheme::NTypeIds::Json:
522
- case NScheme::NTypeIds::String:
523
- case NScheme::NTypeIds::String4k:
524
- case NScheme::NTypeIds::String2m:
525
- return " «" + str + " »" ;
526
- default :
527
- return str;
518
+ if (value.GetType ().GetKind () == NKikimrMiniKQL::ETypeKind::Data) {
519
+ auto str = value.GetDataText ();
520
+ switch (value.GetType ().GetData ().GetScheme ()) {
521
+ case NScheme::NTypeIds::Utf8:
522
+ case NScheme::NTypeIds::Json:
523
+ case NScheme::NTypeIds::String:
524
+ case NScheme::NTypeIds::String4k:
525
+ case NScheme::NTypeIds::String2m:
526
+ return " «" + str + " »" ;
527
+ default :
528
+ return str;
529
+ }
530
+ }
531
+ if (value.GetType ().GetKind () == NKikimrMiniKQL::ETypeKind::Pg) {
532
+ return value.GetPgText ();
528
533
}
534
+ Y_ENSURE (false , TStringBuilder () << " unexpected NKikimrMiniKQL::ETypeKind: " << ETypeKind_Name (value.GetType ().GetKind ()));
529
535
}
530
536
531
537
void Visit (const TKqpReadRangesSourceSettings& sourceSettings, TQueryPlanNode& planNode) {
Original file line number Diff line number Diff line change
1
+ #include < ydb/library/yql/parser/pg_wrapper/interface/type_desc.h>
2
+ #include < ydb/public/lib/value/value.h>
3
+
4
+ namespace NKikimr {
5
+ namespace NClient {
6
+
7
+ TString TValue::GetPgText () const {
8
+ Y_ASSERT (Type.GetKind () == NKikimrMiniKQL::ETypeKind::Pg);
9
+ if (Value.HasNullFlagValue ()) {
10
+ return TString (" null" );
11
+ }
12
+ if (Value.HasText ()) {
13
+ return Value.GetText ();
14
+ }
15
+ auto pgType = Type.GetPg ();
16
+ auto convertResult = NPg::PgNativeTextFromNativeBinary (Value.GetBytes (), NPg::TypeDescFromPgTypeId (pgType.Getoid ()));
17
+ Y_ENSURE (!convertResult.Error , convertResult.Error );
18
+ return convertResult.Str ;
19
+ }
20
+
21
+ }
22
+ }
Original file line number Diff line number Diff line change
1
+ LIBRARY()
2
+
3
+ SRCS(
4
+ kqp_query_plan_value.cpp
5
+ )
6
+
7
+ PEERDIR(
8
+ ydb/library/yql/parser/pg_wrapper/interface
9
+ ydb/public/lib/value
10
+ )
11
+
12
+ END()
Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ PEERDIR(
21
21
ydb/core/kqp/opt/logical
22
22
ydb/core/kqp/opt/peephole
23
23
ydb/core/kqp/opt/physical
24
+ ydb/core/kqp/opt/query_plan_value
24
25
ydb/library/yql/dq/common
25
26
ydb/library/yql/dq/opt
26
27
ydb/library/yql/dq/type_ann
Original file line number Diff line number Diff line change @@ -1653,7 +1653,6 @@ Y_UNIT_TEST_SUITE(KqpNotNullColumns) {
1653
1653
}
1654
1654
}
1655
1655
1656
- #if 0
1657
1656
// TODO: fix TxPlanSerializer with PG keys
1658
1657
Y_UNIT_TEST (SecondaryIndexWithNotNullDataColumnPg) {
1659
1658
auto settings = TKikimrSettings ()
@@ -1759,7 +1758,6 @@ Y_UNIT_TEST_SUITE(KqpNotNullColumns) {
1759
1758
result.GetIssues ().ToString ());
1760
1759
}
1761
1760
}
1762
- #endif
1763
1761
1764
1762
Y_UNIT_TEST_TWIN (JoinBothTablesWithNotNullPk, StreamLookup) {
1765
1763
NKikimrConfig::TAppConfig appConfig;
Original file line number Diff line number Diff line change @@ -89,6 +89,9 @@ class TValue {
89
89
NScheme::TTypeId GetDataType () const ;
90
90
// gets text representation of simple 'Data' types
91
91
TString GetDataText () const ;
92
+ // gets text representation of simple 'Pg' types
93
+ // You need to add ydb/core/kqp/opt/query_plan_value to PEERDIRs in order to use this function
94
+ TString GetPgText () const ;
92
95
// returns text representation of value's type
93
96
template <typename Format> TString GetTypeText (const Format& format = Format()) const ;
94
97
// returns text representation of value itself
You can’t perform that action at this time.
0 commit comments