diff options
author | a-romanov <Anton.Romanov@ydb.tech> | 2022-09-30 14:08:30 +0300 |
---|---|---|
committer | a-romanov <Anton.Romanov@ydb.tech> | 2022-09-30 14:08:30 +0300 |
commit | 4357e0a46b8634256f4df757ba44ad2a9a220825 (patch) | |
tree | 75364f6e0cfb15abe6796554847dbda99d99e51d | |
parent | 023556a55d19c731976a6fa77349c847ad5abc09 (diff) | |
download | ydb-4357e0a46b8634256f4df757ba44ad2a9a220825.tar.gz |
StablePickle if presort is not supported.
-rw-r--r-- | ydb/library/yql/ast/yql_expr.cpp | 17 | ||||
-rw-r--r-- | ydb/library/yql/ast/yql_expr.h | 7 |
2 files changed, 23 insertions, 1 deletions
diff --git a/ydb/library/yql/ast/yql_expr.cpp b/ydb/library/yql/ast/yql_expr.cpp index 2f6b8e1b5d6..d3c077308f5 100644 --- a/ydb/library/yql/ast/yql_expr.cpp +++ b/ydb/library/yql/ast/yql_expr.cpp @@ -2996,6 +2996,23 @@ ui32 TPgExprType::GetFlags(ui32 typeId) { ret |= TypeNonHashable; } + static const std::unordered_set<std::string_view> PgSupportedPresort = { + "bool"sv, + "int2"sv, + "int4"sv, + "int8"sv, + "float4"sv, + "float8"sv, + "bytea"sv, + "varchar"sv, + "text"sv, + "cstring"sv + }; + + if (!PgSupportedPresort.contains(descPtr->Name)) { + ret |= TypeNonPresortable; + } + return ret; } diff --git a/ydb/library/yql/ast/yql_expr.h b/ydb/library/yql/ast/yql_expr.h index 73888cab265..3f7e00a7065 100644 --- a/ydb/library/yql/ast/yql_expr.h +++ b/ydb/library/yql/ast/yql_expr.h @@ -117,7 +117,7 @@ struct TTypeAnnotationVisitor { virtual void Visit(const TScalarExprType& type) = 0; }; -enum ETypeAnnotationFlags { +enum ETypeAnnotationFlags : ui32 { TypeNonComposable = 0x01, TypeNonPersistable = 0x02, TypeNonComputable = 0x04, @@ -130,6 +130,7 @@ enum ETypeAnnotationFlags { TypeHasManyValues = 0x200, TypeHasBareYson = 0x400, TypeHasNestedOptional = 0x800, + TypeNonPresortable = 0x1000 }; const ui64 TypeHashMagic = 0x10000; @@ -240,6 +241,10 @@ public: return (GetFlags() & TypeHasBareYson) != 0; } + bool IsPresortSupported() const { + return (GetFlags() & TypeNonPresortable) == 0; + } + ui32 GetFlags() const { return Flags; } |