arrow.h 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include <yql/essentials/providers/common/codec/yt_arrow_converter_interface/yt_arrow_converter.h>
  3. #include <yql/essentials/providers/common/codec/yt_arrow_converter_interface/yt_arrow_converter_details.h>
  4. #include <yql/essentials/minikql/mkql_node.h>
  5. #include <yql/essentials/public/udf/arrow/block_item.h>
  6. #include <yql/essentials/public/udf/arrow/block_builder.h>
  7. #include <arrow/datum.h>
  8. namespace NYql {
  9. arrow::Datum MakePgScalar(NKikimr::NMiniKQL::TPgType* type, const NKikimr::NUdf::TUnboxedValuePod& value, arrow::MemoryPool& pool);
  10. arrow::Datum MakePgScalar(NKikimr::NMiniKQL::TPgType* type, const NUdf::TBlockItem& value, arrow::MemoryPool& pool);
  11. using TColumnConverter = std::function<std::shared_ptr<arrow::Array>(const std::shared_ptr<arrow::Array>&)>;
  12. TColumnConverter BuildPgColumnConverter(const std::shared_ptr<arrow::DataType>& originalType, NKikimr::NMiniKQL::TPgType* targetType);
  13. std::unique_ptr<IYsonComplexTypeReader> BuildPgYsonColumnReader(const NUdf::TPgTypeDescription& desc);
  14. std::unique_ptr<IYtColumnConverter> BuildPgTopLevelColumnReader(std::unique_ptr<NKikimr::NUdf::IArrayBuilder>&& builder, const NKikimr::NMiniKQL::TPgType* targetType);
  15. } // NYql
  16. namespace NKikimr {
  17. namespace NMiniKQL {
  18. class IBlockAggregatorFactory;
  19. void RegisterPgBlockAggs(THashMap<TString, std::unique_ptr<IBlockAggregatorFactory>>& registry);
  20. }
  21. }