aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorivanmorozov <ivanmorozov@yandex-team.com>2023-05-19 18:02:33 +0300
committerivanmorozov <ivanmorozov@yandex-team.com>2023-05-19 18:02:33 +0300
commit18b646ad279f03049dbdccd87931fca890bc9437 (patch)
tree761915f7278643ae67a779a0a4c89c5a68153dc6
parent253904e00ed53deb7ba78466b41f25a78f74b6de (diff)
downloadydb-18b646ad279f03049dbdccd87931fca890bc9437.tar.gz
compression objects for alter table using
-rw-r--r--ydb/core/formats/arrow/CMakeLists.darwin-x86_64.txt1
-rw-r--r--ydb/core/formats/arrow/CMakeLists.linux-aarch64.txt1
-rw-r--r--ydb/core/formats/arrow/CMakeLists.linux-x86_64.txt1
-rw-r--r--ydb/core/formats/arrow/CMakeLists.windows-x86_64.txt1
-rw-r--r--ydb/core/formats/arrow/compression/CMakeLists.darwin-x86_64.txt23
-rw-r--r--ydb/core/formats/arrow/compression/CMakeLists.linux-aarch64.txt24
-rw-r--r--ydb/core/formats/arrow/compression/CMakeLists.linux-x86_64.txt24
-rw-r--r--ydb/core/formats/arrow/compression/CMakeLists.txt17
-rw-r--r--ydb/core/formats/arrow/compression/CMakeLists.windows-x86_64.txt23
-rw-r--r--ydb/core/formats/arrow/compression/diff.cpp54
-rw-r--r--ydb/core/formats/arrow/compression/diff.h25
-rw-r--r--ydb/core/formats/arrow/compression/object.cpp71
-rw-r--r--ydb/core/formats/arrow/compression/object.h42
-rw-r--r--ydb/core/formats/arrow/compression/parsing.cpp42
-rw-r--r--ydb/core/formats/arrow/compression/parsing.h17
-rw-r--r--ydb/core/tx/columnshard/engines/CMakeLists.darwin-x86_64.txt2
-rw-r--r--ydb/core/tx/columnshard/engines/CMakeLists.linux-aarch64.txt2
-rw-r--r--ydb/core/tx/columnshard/engines/CMakeLists.linux-x86_64.txt2
-rw-r--r--ydb/core/tx/columnshard/engines/CMakeLists.windows-x86_64.txt2
-rw-r--r--ydb/core/tx/columnshard/engines/tier_info.cpp5
-rw-r--r--ydb/core/tx/columnshard/engines/tier_info.h55
-rw-r--r--ydb/library/CMakeLists.txt1
-rw-r--r--ydb/library/conclusion/CMakeLists.darwin-x86_64.txt18
-rw-r--r--ydb/library/conclusion/CMakeLists.linux-aarch64.txt19
-rw-r--r--ydb/library/conclusion/CMakeLists.linux-x86_64.txt19
-rw-r--r--ydb/library/conclusion/CMakeLists.txt17
-rw-r--r--ydb/library/conclusion/CMakeLists.windows-x86_64.txt18
-rw-r--r--ydb/library/conclusion/result.cpp5
-rw-r--r--ydb/library/conclusion/status.cpp5
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 {
+
+}