diff options
author | ivanmorozov <ivanmorozov@yandex-team.com> | 2023-05-19 18:02:33 +0300 |
---|---|---|
committer | ivanmorozov <ivanmorozov@yandex-team.com> | 2023-05-19 18:02:33 +0300 |
commit | 18b646ad279f03049dbdccd87931fca890bc9437 (patch) | |
tree | 761915f7278643ae67a779a0a4c89c5a68153dc6 | |
parent | 253904e00ed53deb7ba78466b41f25a78f74b6de (diff) | |
download | ydb-18b646ad279f03049dbdccd87931fca890bc9437.tar.gz |
compression objects for alter table using
29 files changed, 483 insertions, 53 deletions
diff --git a/ydb/core/formats/arrow/CMakeLists.darwin-x86_64.txt b/ydb/core/formats/arrow/CMakeLists.darwin-x86_64.txt index 5487526b14f..23f2cc9ccdf 100644 --- a/ydb/core/formats/arrow/CMakeLists.darwin-x86_64.txt +++ b/ydb/core/formats/arrow/CMakeLists.darwin-x86_64.txt @@ -7,6 +7,7 @@ add_subdirectory(common) +add_subdirectory(compression) add_subdirectory(dictionary) add_subdirectory(serializer) add_subdirectory(simple_builder) diff --git a/ydb/core/formats/arrow/CMakeLists.linux-aarch64.txt b/ydb/core/formats/arrow/CMakeLists.linux-aarch64.txt index f24e05a3ca8..893660a4589 100644 --- a/ydb/core/formats/arrow/CMakeLists.linux-aarch64.txt +++ b/ydb/core/formats/arrow/CMakeLists.linux-aarch64.txt @@ -7,6 +7,7 @@ add_subdirectory(common) +add_subdirectory(compression) add_subdirectory(dictionary) add_subdirectory(serializer) add_subdirectory(simple_builder) diff --git a/ydb/core/formats/arrow/CMakeLists.linux-x86_64.txt b/ydb/core/formats/arrow/CMakeLists.linux-x86_64.txt index f24e05a3ca8..893660a4589 100644 --- a/ydb/core/formats/arrow/CMakeLists.linux-x86_64.txt +++ b/ydb/core/formats/arrow/CMakeLists.linux-x86_64.txt @@ -7,6 +7,7 @@ add_subdirectory(common) +add_subdirectory(compression) add_subdirectory(dictionary) add_subdirectory(serializer) add_subdirectory(simple_builder) diff --git a/ydb/core/formats/arrow/CMakeLists.windows-x86_64.txt b/ydb/core/formats/arrow/CMakeLists.windows-x86_64.txt index cf9b3b8f00a..cafd5476745 100644 --- a/ydb/core/formats/arrow/CMakeLists.windows-x86_64.txt +++ b/ydb/core/formats/arrow/CMakeLists.windows-x86_64.txt @@ -7,6 +7,7 @@ add_subdirectory(common) +add_subdirectory(compression) add_subdirectory(dictionary) add_subdirectory(serializer) add_subdirectory(simple_builder) diff --git a/ydb/core/formats/arrow/compression/CMakeLists.darwin-x86_64.txt b/ydb/core/formats/arrow/compression/CMakeLists.darwin-x86_64.txt new file mode 100644 index 00000000000..0f1b4b72adc --- /dev/null +++ b/ydb/core/formats/arrow/compression/CMakeLists.darwin-x86_64.txt @@ -0,0 +1,23 @@ + +# This file was generated by the build system used internally in the Yandex monorepo. +# Only simple modifications are allowed (adding source-files to targets, adding simple properties +# like target_include_directories). These modifications will be ported to original +# ya.make files by maintainers. Any complex modifications which can't be ported back to the +# original buildsystem will not be accepted. + + + +add_library(formats-arrow-compression) +target_link_libraries(formats-arrow-compression PUBLIC + contrib-libs-cxxsupp + yutil + libs-apache-arrow + ydb-core-protos + core-formats-arrow + ydb-library-conclusion +) +target_sources(formats-arrow-compression PRIVATE + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/diff.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/object.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/parsing.cpp +) diff --git a/ydb/core/formats/arrow/compression/CMakeLists.linux-aarch64.txt b/ydb/core/formats/arrow/compression/CMakeLists.linux-aarch64.txt new file mode 100644 index 00000000000..80620e94bb4 --- /dev/null +++ b/ydb/core/formats/arrow/compression/CMakeLists.linux-aarch64.txt @@ -0,0 +1,24 @@ + +# This file was generated by the build system used internally in the Yandex monorepo. +# Only simple modifications are allowed (adding source-files to targets, adding simple properties +# like target_include_directories). These modifications will be ported to original +# ya.make files by maintainers. Any complex modifications which can't be ported back to the +# original buildsystem will not be accepted. + + + +add_library(formats-arrow-compression) +target_link_libraries(formats-arrow-compression PUBLIC + contrib-libs-linux-headers + contrib-libs-cxxsupp + yutil + libs-apache-arrow + ydb-core-protos + core-formats-arrow + ydb-library-conclusion +) +target_sources(formats-arrow-compression PRIVATE + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/diff.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/object.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/parsing.cpp +) diff --git a/ydb/core/formats/arrow/compression/CMakeLists.linux-x86_64.txt b/ydb/core/formats/arrow/compression/CMakeLists.linux-x86_64.txt new file mode 100644 index 00000000000..80620e94bb4 --- /dev/null +++ b/ydb/core/formats/arrow/compression/CMakeLists.linux-x86_64.txt @@ -0,0 +1,24 @@ + +# This file was generated by the build system used internally in the Yandex monorepo. +# Only simple modifications are allowed (adding source-files to targets, adding simple properties +# like target_include_directories). These modifications will be ported to original +# ya.make files by maintainers. Any complex modifications which can't be ported back to the +# original buildsystem will not be accepted. + + + +add_library(formats-arrow-compression) +target_link_libraries(formats-arrow-compression PUBLIC + contrib-libs-linux-headers + contrib-libs-cxxsupp + yutil + libs-apache-arrow + ydb-core-protos + core-formats-arrow + ydb-library-conclusion +) +target_sources(formats-arrow-compression PRIVATE + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/diff.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/object.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/parsing.cpp +) diff --git a/ydb/core/formats/arrow/compression/CMakeLists.txt b/ydb/core/formats/arrow/compression/CMakeLists.txt new file mode 100644 index 00000000000..f8b31df0c11 --- /dev/null +++ b/ydb/core/formats/arrow/compression/CMakeLists.txt @@ -0,0 +1,17 @@ + +# This file was generated by the build system used internally in the Yandex monorepo. +# Only simple modifications are allowed (adding source-files to targets, adding simple properties +# like target_include_directories). These modifications will be ported to original +# ya.make files by maintainers. Any complex modifications which can't be ported back to the +# original buildsystem will not be accepted. + + +if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" AND NOT HAVE_CUDA) + include(CMakeLists.linux-aarch64.txt) +elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + include(CMakeLists.darwin-x86_64.txt) +elseif (WIN32 AND CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" AND NOT HAVE_CUDA) + include(CMakeLists.windows-x86_64.txt) +elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND NOT HAVE_CUDA) + include(CMakeLists.linux-x86_64.txt) +endif() diff --git a/ydb/core/formats/arrow/compression/CMakeLists.windows-x86_64.txt b/ydb/core/formats/arrow/compression/CMakeLists.windows-x86_64.txt new file mode 100644 index 00000000000..0f1b4b72adc --- /dev/null +++ b/ydb/core/formats/arrow/compression/CMakeLists.windows-x86_64.txt @@ -0,0 +1,23 @@ + +# This file was generated by the build system used internally in the Yandex monorepo. +# Only simple modifications are allowed (adding source-files to targets, adding simple properties +# like target_include_directories). These modifications will be ported to original +# ya.make files by maintainers. Any complex modifications which can't be ported back to the +# original buildsystem will not be accepted. + + + +add_library(formats-arrow-compression) +target_link_libraries(formats-arrow-compression PUBLIC + contrib-libs-cxxsupp + yutil + libs-apache-arrow + ydb-core-protos + core-formats-arrow + ydb-library-conclusion +) +target_sources(formats-arrow-compression PRIVATE + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/diff.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/object.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/formats/arrow/compression/parsing.cpp +) diff --git a/ydb/core/formats/arrow/compression/diff.cpp b/ydb/core/formats/arrow/compression/diff.cpp new file mode 100644 index 00000000000..a3eb9a51f79 --- /dev/null +++ b/ydb/core/formats/arrow/compression/diff.cpp @@ -0,0 +1,54 @@ +#include "diff.h" +#include "parsing.h" +#include <util/string/cast.h> + +namespace NKikimr::NArrow { + +NKikimrSchemeOp::TCompressionOptions TCompressionDiff::SerializeToProto() const { + NKikimrSchemeOp::TCompressionOptions result; + if (Level) { + result.SetCompressionLevel(*Level); + } + if (Codec) { + result.SetCompressionCodec(CompressionToProto(*Codec)); + } + return result; +} + +TConclusionStatus TCompressionDiff::DeserializeFromRequestFeatures(const std::map<TString, TString>& features) { + { + auto it = features.find("COMPRESSION.TYPE"); + if (it != features.end()) { + Codec = NArrow::CompressionFromString(it->second); + if (!Codec) { + return TConclusionStatus::Fail("cannot parse COMPRESSION.TYPE as arrow::Compression"); + } + } + } + { + auto it = features.find("COMPRESSION.LEVEL"); + if (it != features.end()) { + ui32 level; + if (!TryFromString<ui32>(it->second, level)) { + return TConclusionStatus::Fail("cannot parse COMPRESSION.LEVEL as ui32"); + } + Level = level; + } + } + return TConclusionStatus::Success(); +} + +bool TCompressionDiff::DeserializeFromProto(const NKikimrSchemeOp::TCompressionOptions& proto) { + if (proto.HasCompressionLevel()) { + Level = proto.GetCompressionLevel(); + } + if (proto.HasCompressionCodec()) { + Codec = CompressionFromProto(proto.GetCompressionCodec()); + if (!Codec) { + return false; + } + } + return true; +} + +} diff --git a/ydb/core/formats/arrow/compression/diff.h b/ydb/core/formats/arrow/compression/diff.h new file mode 100644 index 00000000000..95cbd68212e --- /dev/null +++ b/ydb/core/formats/arrow/compression/diff.h @@ -0,0 +1,25 @@ +#pragma once + +#include <ydb/library/conclusion/status.h> +#include <ydb/library/conclusion/result.h> +#include <ydb/library/accessor/accessor.h> +#include <ydb/core/protos/flat_scheme_op.pb.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/util/compression.h> +#include <optional> +#include <map> + +namespace NKikimr::NArrow { + +class TCompressionDiff { +private: + YDB_READONLY_DEF(std::optional<arrow::Compression::type>, Codec); + YDB_READONLY_DEF(std::optional<int>, Level); +public: + bool IsEmpty() const { + return !Level && !Codec; + } + NKikimrSchemeOp::TCompressionOptions SerializeToProto() const; + bool DeserializeFromProto(const NKikimrSchemeOp::TCompressionOptions& proto); + TConclusionStatus DeserializeFromRequestFeatures(const std::map<TString, TString>& features); +}; +} diff --git a/ydb/core/formats/arrow/compression/object.cpp b/ydb/core/formats/arrow/compression/object.cpp new file mode 100644 index 00000000000..17753c833f2 --- /dev/null +++ b/ydb/core/formats/arrow/compression/object.cpp @@ -0,0 +1,71 @@ +#include "object.h" +#include "parsing.h" +#include <ydb/core/formats/arrow/common/validation.h> +#include <util/string/builder.h> + +namespace NKikimr::NArrow { + +TConclusionStatus NKikimr::NArrow::TCompression::Validate() const { + if (Level) { + auto codec = TStatusValidator::GetValid(arrow::util::Codec::Create(Codec)); + const int levelMin = codec->minimum_compression_level(); + const int levelMax = codec->maximum_compression_level(); + if (Level && (*Level < levelMin || levelMax < *Level)) { + return TConclusionStatus::Fail("incorrect level for codec"); + } + } + return TConclusionStatus::Success(); +} + +TConclusionStatus NKikimr::NArrow::TCompression::ApplyDiff(const TCompressionDiff& diff) { + TCompression merged = *this; + if (diff.GetCodec()) { + merged.Codec = *diff.GetCodec(); + } + if (diff.GetLevel()) { + merged.Level = *diff.GetLevel(); + } + auto validation = merged.Validate(); + if (!validation) { + return validation; + } + std::swap(*this, merged); + return TConclusionStatus::Success(); +} + +TConclusionStatus TCompression::DeserializeFromProto(const NKikimrSchemeOp::TCompressionOptions& compression) { + if (compression.HasCompressionCodec()) { + auto codecOpt = NArrow::CompressionFromProto(compression.GetCompressionCodec()); + if (!codecOpt) { + return TConclusionStatus::Fail("cannot parse codec type from proto"); + } + Codec = *codecOpt; + } + if (compression.HasCompressionLevel()) { + Level = compression.GetCompressionLevel(); + } + return Validate(); +} + +NKikimrSchemeOp::TCompressionOptions TCompression::SerializeToProto() const { + NKikimrSchemeOp::TCompressionOptions result; + result.SetCompressionCodec(NArrow::CompressionToProto(Codec)); + if (Level) { + result.SetCompressionLevel(*Level); + } + return result; +} + +TString TCompression::DebugString() const { + TStringBuilder sb; + sb << arrow::util::Codec::GetCodecAsString(Codec) << ":" << Level.value_or(arrow::util::kUseDefaultCompressionLevel); + return sb; +} + +std::unique_ptr<arrow::util::Codec> TCompression::BuildArrowCodec() const { + return NArrow::TStatusValidator::GetValid( + arrow::util::Codec::Create( + Codec, Level.value_or(arrow::util::kUseDefaultCompressionLevel))); +} + +} diff --git a/ydb/core/formats/arrow/compression/object.h b/ydb/core/formats/arrow/compression/object.h new file mode 100644 index 00000000000..cdb955c986b --- /dev/null +++ b/ydb/core/formats/arrow/compression/object.h @@ -0,0 +1,42 @@ +#pragma once + +#include <ydb/library/conclusion/status.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/util/compression.h> +#include "diff.h" + +namespace NKikimr::NArrow { + +struct TCompression { +private: + arrow::Compression::type Codec = arrow::Compression::LZ4_FRAME; + std::optional<int> Level; + TCompression() = default; + + TConclusionStatus Validate() const; + +public: + + TConclusionStatus ApplyDiff(const TCompressionDiff& diff); + + TConclusionStatus DeserializeFromProto(const NKikimrSchemeOp::TCompressionOptions& compression); + + NKikimrSchemeOp::TCompressionOptions SerializeToProto() const; + + static const TCompression& Default() { + static TCompression result; + return result; + } + + explicit TCompression(const arrow::Compression::type codec, std::optional<int> level = {}) + : Codec(codec) + , Level(level) + { + + } + + TString DebugString() const; + std::unique_ptr<arrow::util::Codec> BuildArrowCodec() const; + +}; + +} diff --git a/ydb/core/formats/arrow/compression/parsing.cpp b/ydb/core/formats/arrow/compression/parsing.cpp new file mode 100644 index 00000000000..8a394073bdd --- /dev/null +++ b/ydb/core/formats/arrow/compression/parsing.cpp @@ -0,0 +1,42 @@ +#include "parsing.h" +#include <contrib/libs/apache/arrow/cpp/src/arrow/util/compression.h> + +namespace NKikimr::NArrow { + +std::string CompressionToString(const arrow::Compression::type compression) { + return arrow::util::Codec::GetCodecAsString(compression); +} + +std::optional<arrow::Compression::type> CompressionFromString(const std::string& compressionStr) { + auto result = arrow::util::Codec::GetCompressionType(compressionStr); + if (!result.ok()) { + return {}; + } + return *result; +} + +NKikimrSchemeOp::EColumnCodec CompressionToProto(const arrow::Compression::type compression) { + switch (compression) { + case arrow::Compression::UNCOMPRESSED: + return NKikimrSchemeOp::EColumnCodec::ColumnCodecPlain; + case arrow::Compression::LZ4_FRAME: + return NKikimrSchemeOp::EColumnCodec::ColumnCodecLZ4; + case arrow::Compression::ZSTD: + return NKikimrSchemeOp::EColumnCodec::ColumnCodecZSTD; + default: + return NKikimrSchemeOp::EColumnCodec::ColumnCodecLZ4; + } +} + +std::optional<arrow::Compression::type> CompressionFromProto(const NKikimrSchemeOp::EColumnCodec compression) { + switch (compression) { + case NKikimrSchemeOp::EColumnCodec::ColumnCodecPlain: + return arrow::Compression::UNCOMPRESSED; + case NKikimrSchemeOp::EColumnCodec::ColumnCodecZSTD: + return arrow::Compression::ZSTD; + case NKikimrSchemeOp::EColumnCodec::ColumnCodecLZ4: + return arrow::Compression::LZ4_FRAME; + } +} + +} diff --git a/ydb/core/formats/arrow/compression/parsing.h b/ydb/core/formats/arrow/compression/parsing.h new file mode 100644 index 00000000000..e1dbbf9badd --- /dev/null +++ b/ydb/core/formats/arrow/compression/parsing.h @@ -0,0 +1,17 @@ +#pragma once + +#include <util/system/yassert.h> +#include <ydb/core/protos/flat_scheme_op.pb.h> +#include <contrib/libs/apache/arrow/cpp/src/arrow/util/type_fwd.h> +#include <optional> +#include <string> + +namespace NKikimr::NArrow { + +std::string CompressionToString(const arrow::Compression::type compression); +std::optional<arrow::Compression::type> CompressionFromString(const std::string& compressionStr); + +NKikimrSchemeOp::EColumnCodec CompressionToProto(const arrow::Compression::type compression); +std::optional<arrow::Compression::type> CompressionFromProto(const NKikimrSchemeOp::EColumnCodec compression); + +} diff --git a/ydb/core/tx/columnshard/engines/CMakeLists.darwin-x86_64.txt b/ydb/core/tx/columnshard/engines/CMakeLists.darwin-x86_64.txt index 27b30276865..ec1b3d94102 100644 --- a/ydb/core/tx/columnshard/engines/CMakeLists.darwin-x86_64.txt +++ b/ydb/core/tx/columnshard/engines/CMakeLists.darwin-x86_64.txt @@ -26,6 +26,7 @@ target_link_libraries(tx-columnshard-engines PUBLIC ydb-core-tablet_flat columnshard-engines-reader columnshard-engines-predicate + formats-arrow-compression udf-service-exception_policy ) target_sources(tx-columnshard-engines PRIVATE @@ -39,4 +40,5 @@ target_sources(tx-columnshard-engines PRIVATE ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/filter.cpp ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/portion_info.cpp ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/scalars.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/tier_info.cpp ) diff --git a/ydb/core/tx/columnshard/engines/CMakeLists.linux-aarch64.txt b/ydb/core/tx/columnshard/engines/CMakeLists.linux-aarch64.txt index cb47e22ffae..08bdf355517 100644 --- a/ydb/core/tx/columnshard/engines/CMakeLists.linux-aarch64.txt +++ b/ydb/core/tx/columnshard/engines/CMakeLists.linux-aarch64.txt @@ -27,6 +27,7 @@ target_link_libraries(tx-columnshard-engines PUBLIC ydb-core-tablet_flat columnshard-engines-reader columnshard-engines-predicate + formats-arrow-compression udf-service-exception_policy ) target_sources(tx-columnshard-engines PRIVATE @@ -40,4 +41,5 @@ target_sources(tx-columnshard-engines PRIVATE ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/filter.cpp ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/portion_info.cpp ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/scalars.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/tier_info.cpp ) diff --git a/ydb/core/tx/columnshard/engines/CMakeLists.linux-x86_64.txt b/ydb/core/tx/columnshard/engines/CMakeLists.linux-x86_64.txt index cb47e22ffae..08bdf355517 100644 --- a/ydb/core/tx/columnshard/engines/CMakeLists.linux-x86_64.txt +++ b/ydb/core/tx/columnshard/engines/CMakeLists.linux-x86_64.txt @@ -27,6 +27,7 @@ target_link_libraries(tx-columnshard-engines PUBLIC ydb-core-tablet_flat columnshard-engines-reader columnshard-engines-predicate + formats-arrow-compression udf-service-exception_policy ) target_sources(tx-columnshard-engines PRIVATE @@ -40,4 +41,5 @@ target_sources(tx-columnshard-engines PRIVATE ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/filter.cpp ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/portion_info.cpp ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/scalars.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/tier_info.cpp ) diff --git a/ydb/core/tx/columnshard/engines/CMakeLists.windows-x86_64.txt b/ydb/core/tx/columnshard/engines/CMakeLists.windows-x86_64.txt index 27b30276865..ec1b3d94102 100644 --- a/ydb/core/tx/columnshard/engines/CMakeLists.windows-x86_64.txt +++ b/ydb/core/tx/columnshard/engines/CMakeLists.windows-x86_64.txt @@ -26,6 +26,7 @@ target_link_libraries(tx-columnshard-engines PUBLIC ydb-core-tablet_flat columnshard-engines-reader columnshard-engines-predicate + formats-arrow-compression udf-service-exception_policy ) target_sources(tx-columnshard-engines PRIVATE @@ -39,4 +40,5 @@ target_sources(tx-columnshard-engines PRIVATE ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/filter.cpp ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/portion_info.cpp ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/scalars.cpp + ${CMAKE_SOURCE_DIR}/ydb/core/tx/columnshard/engines/tier_info.cpp ) diff --git a/ydb/core/tx/columnshard/engines/tier_info.cpp b/ydb/core/tx/columnshard/engines/tier_info.cpp new file mode 100644 index 00000000000..8114b5f11af --- /dev/null +++ b/ydb/core/tx/columnshard/engines/tier_info.cpp @@ -0,0 +1,5 @@ +#include "tier_info.h" + +namespace NKikimr::NOlap { + +} diff --git a/ydb/core/tx/columnshard/engines/tier_info.h b/ydb/core/tx/columnshard/engines/tier_info.h index cb84cd8c681..4416299630e 100644 --- a/ydb/core/tx/columnshard/engines/tier_info.h +++ b/ydb/core/tx/columnshard/engines/tier_info.h @@ -6,63 +6,12 @@ #include <ydb/core/formats/arrow/arrow_helpers.h> #include <ydb/core/formats/arrow/common/validation.h> #include <ydb/core/formats/arrow/serializer/abstract.h> +#include <ydb/core/formats/arrow/compression/object.h> #include <contrib/libs/apache/arrow/cpp/src/arrow/util/compression.h> namespace NKikimr::NOlap { -struct TCompression { -private: - arrow::Compression::type Codec = arrow::Compression::LZ4_FRAME; - std::optional<int> Level; - TCompression() = default; -public: - - bool DeserializeFromProto(const NKikimrSchemeOp::TCompressionOptions& compression) { - if (compression.HasCompressionCodec()) { - switch (compression.GetCompressionCodec()) { - case NKikimrSchemeOp::EColumnCodec::ColumnCodecPlain: - Codec = arrow::Compression::UNCOMPRESSED; - break; - case NKikimrSchemeOp::EColumnCodec::ColumnCodecLZ4: - Codec = arrow::Compression::LZ4_FRAME; - break; - case NKikimrSchemeOp::EColumnCodec::ColumnCodecZSTD: - Codec = arrow::Compression::ZSTD; - break; - } - } - - if (compression.HasCompressionLevel()) { - Level = compression.GetCompressionLevel(); - } - return true; - } - - static const TCompression& Default() { - static TCompression result; - return result; - } - - explicit TCompression(const arrow::Compression::type codec, std::optional<int> level = {}) - : Codec(codec) - , Level(level) - { - - } - - TString DebugString() const { - TStringBuilder sb; - sb << arrow::util::Codec::GetCodecAsString(Codec) << ":" << Level.value_or(arrow::util::kUseDefaultCompressionLevel); - return sb; - } - - std::unique_ptr<arrow::util::Codec> BuildArrowCodec() const { - return NArrow::TStatusValidator::GetValid( - arrow::util::Codec::Create( - Codec, Level.value_or(arrow::util::kUseDefaultCompressionLevel))); - } - -}; +using TCompression = NArrow::TCompression; class TTierInfo { private: diff --git a/ydb/library/CMakeLists.txt b/ydb/library/CMakeLists.txt index 9728b506560..9e9f3b76c4c 100644 --- a/ydb/library/CMakeLists.txt +++ b/ydb/library/CMakeLists.txt @@ -13,6 +13,7 @@ add_subdirectory(arrow_kernels) add_subdirectory(backup) add_subdirectory(binary_json) add_subdirectory(chunks_limiter) +add_subdirectory(conclusion) add_subdirectory(db_pool) add_subdirectory(dynumber) add_subdirectory(folder_service) diff --git a/ydb/library/conclusion/CMakeLists.darwin-x86_64.txt b/ydb/library/conclusion/CMakeLists.darwin-x86_64.txt new file mode 100644 index 00000000000..ee4f4c3fa29 --- /dev/null +++ b/ydb/library/conclusion/CMakeLists.darwin-x86_64.txt @@ -0,0 +1,18 @@ + +# This file was generated by the build system used internally in the Yandex monorepo. +# Only simple modifications are allowed (adding source-files to targets, adding simple properties +# like target_include_directories). These modifications will be ported to original +# ya.make files by maintainers. Any complex modifications which can't be ported back to the +# original buildsystem will not be accepted. + + + +add_library(ydb-library-conclusion) +target_link_libraries(ydb-library-conclusion PUBLIC + contrib-libs-cxxsupp + yutil +) +target_sources(ydb-library-conclusion PRIVATE + ${CMAKE_SOURCE_DIR}/ydb/library/conclusion/result.cpp + ${CMAKE_SOURCE_DIR}/ydb/library/conclusion/status.cpp +) diff --git a/ydb/library/conclusion/CMakeLists.linux-aarch64.txt b/ydb/library/conclusion/CMakeLists.linux-aarch64.txt new file mode 100644 index 00000000000..64c5c16ee3a --- /dev/null +++ b/ydb/library/conclusion/CMakeLists.linux-aarch64.txt @@ -0,0 +1,19 @@ + +# This file was generated by the build system used internally in the Yandex monorepo. +# Only simple modifications are allowed (adding source-files to targets, adding simple properties +# like target_include_directories). These modifications will be ported to original +# ya.make files by maintainers. Any complex modifications which can't be ported back to the +# original buildsystem will not be accepted. + + + +add_library(ydb-library-conclusion) +target_link_libraries(ydb-library-conclusion PUBLIC + contrib-libs-linux-headers + contrib-libs-cxxsupp + yutil +) +target_sources(ydb-library-conclusion PRIVATE + ${CMAKE_SOURCE_DIR}/ydb/library/conclusion/result.cpp + ${CMAKE_SOURCE_DIR}/ydb/library/conclusion/status.cpp +) diff --git a/ydb/library/conclusion/CMakeLists.linux-x86_64.txt b/ydb/library/conclusion/CMakeLists.linux-x86_64.txt new file mode 100644 index 00000000000..64c5c16ee3a --- /dev/null +++ b/ydb/library/conclusion/CMakeLists.linux-x86_64.txt @@ -0,0 +1,19 @@ + +# This file was generated by the build system used internally in the Yandex monorepo. +# Only simple modifications are allowed (adding source-files to targets, adding simple properties +# like target_include_directories). These modifications will be ported to original +# ya.make files by maintainers. Any complex modifications which can't be ported back to the +# original buildsystem will not be accepted. + + + +add_library(ydb-library-conclusion) +target_link_libraries(ydb-library-conclusion PUBLIC + contrib-libs-linux-headers + contrib-libs-cxxsupp + yutil +) +target_sources(ydb-library-conclusion PRIVATE + ${CMAKE_SOURCE_DIR}/ydb/library/conclusion/result.cpp + ${CMAKE_SOURCE_DIR}/ydb/library/conclusion/status.cpp +) diff --git a/ydb/library/conclusion/CMakeLists.txt b/ydb/library/conclusion/CMakeLists.txt new file mode 100644 index 00000000000..f8b31df0c11 --- /dev/null +++ b/ydb/library/conclusion/CMakeLists.txt @@ -0,0 +1,17 @@ + +# This file was generated by the build system used internally in the Yandex monorepo. +# Only simple modifications are allowed (adding source-files to targets, adding simple properties +# like target_include_directories). These modifications will be ported to original +# ya.make files by maintainers. Any complex modifications which can't be ported back to the +# original buildsystem will not be accepted. + + +if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" AND NOT HAVE_CUDA) + include(CMakeLists.linux-aarch64.txt) +elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + include(CMakeLists.darwin-x86_64.txt) +elseif (WIN32 AND CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" AND NOT HAVE_CUDA) + include(CMakeLists.windows-x86_64.txt) +elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND NOT HAVE_CUDA) + include(CMakeLists.linux-x86_64.txt) +endif() diff --git a/ydb/library/conclusion/CMakeLists.windows-x86_64.txt b/ydb/library/conclusion/CMakeLists.windows-x86_64.txt new file mode 100644 index 00000000000..ee4f4c3fa29 --- /dev/null +++ b/ydb/library/conclusion/CMakeLists.windows-x86_64.txt @@ -0,0 +1,18 @@ + +# This file was generated by the build system used internally in the Yandex monorepo. +# Only simple modifications are allowed (adding source-files to targets, adding simple properties +# like target_include_directories). These modifications will be ported to original +# ya.make files by maintainers. Any complex modifications which can't be ported back to the +# original buildsystem will not be accepted. + + + +add_library(ydb-library-conclusion) +target_link_libraries(ydb-library-conclusion PUBLIC + contrib-libs-cxxsupp + yutil +) +target_sources(ydb-library-conclusion PRIVATE + ${CMAKE_SOURCE_DIR}/ydb/library/conclusion/result.cpp + ${CMAKE_SOURCE_DIR}/ydb/library/conclusion/status.cpp +) diff --git a/ydb/library/conclusion/result.cpp b/ydb/library/conclusion/result.cpp new file mode 100644 index 00000000000..3115222e5ab --- /dev/null +++ b/ydb/library/conclusion/result.cpp @@ -0,0 +1,5 @@ +#include "result.h" + +namespace NKikimr { + +} diff --git a/ydb/library/conclusion/status.cpp b/ydb/library/conclusion/status.cpp new file mode 100644 index 00000000000..e946a122914 --- /dev/null +++ b/ydb/library/conclusion/status.cpp @@ -0,0 +1,5 @@ +#include "status.h" + +namespace NKikimr { + +} |