mkql_block_reader.h 962 B

123456789101112131415161718192021222324252627282930313233
  1. #pragma once
  2. #include "mkql_block_item.h"
  3. #include "mkql_computation_node_holders.h"
  4. #include <yql/essentials/minikql/mkql_node.h>
  5. #include <yql/essentials/public/udf/udf_types.h>
  6. #include <yql/essentials/public/udf/arrow/block_reader.h>
  7. #include <arrow/datum.h>
  8. namespace NKikimr::NMiniKQL {
  9. using NYql::NUdf::IBlockReader;
  10. using NYql::NUdf::TOutputBuffer;
  11. class IBlockItemConverter {
  12. public:
  13. virtual ~IBlockItemConverter() = default;
  14. virtual NUdf::TUnboxedValuePod MakeValue(TBlockItem item, const THolderFactory& holderFactory) const = 0;
  15. virtual TBlockItem MakeItem(const NUdf::TUnboxedValuePod& value) const = 0;
  16. };
  17. using NYql::NUdf::MakeBlockReader;
  18. using NYql::NUdf::TBlockItemSerializeProps;
  19. using NYql::NUdf::UpdateBlockItemSerializeProps;
  20. std::unique_ptr<IBlockItemConverter> MakeBlockItemConverter(const NYql::NUdf::ITypeInfoHelper& typeInfoHelper, const NYql::NUdf::TType* type,
  21. const NYql::NUdf::IPgBuilder& pgBuilder);
  22. }