#include #include #include #include namespace DB { /// Rereadable WriteBuffer, could be used as disk buffer /// Creates unique temporary in directory (and directory itself) class WriteBufferFromTemporaryFile : public WriteBufferFromFile, public IReadableWriteBuffer { public: using Ptr = std::shared_ptr; static Ptr create(const std::string & tmp_dir); ~WriteBufferFromTemporaryFile() override; protected: WriteBufferFromTemporaryFile(std::unique_ptr && tmp_file); std::shared_ptr getReadBufferImpl() override; protected: std::unique_ptr tmp_file; friend class ReadBufferFromTemporaryWriteBuffer; }; }