mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 08:40:50 +00:00
50 lines
1019 B
C++
50 lines
1019 B
C++
#pragma once
|
|
|
|
#include <Common/SharedLibrary.h>
|
|
#include <common/logger_useful.h>
|
|
#include <DataStreams/OneBlockInputStream.h>
|
|
|
|
#include "LibraryUtils.h"
|
|
|
|
|
|
namespace DB
|
|
{
|
|
|
|
class SharedLibraryHandler
|
|
{
|
|
|
|
public:
|
|
SharedLibraryHandler() {}
|
|
|
|
SharedLibraryHandler(const SharedLibraryHandler & other);
|
|
|
|
~SharedLibraryHandler();
|
|
|
|
void libNew(const std::string & path, const std::string & settings);
|
|
|
|
BlockInputStreamPtr loadAll(const std::string & attributes_string, const Block & sample_block);
|
|
|
|
BlockInputStreamPtr loadIds(const std::string & ids_string, const std::string & attributes_string, const Block & sample_block);
|
|
|
|
bool isModified();
|
|
|
|
bool supportsSelectiveLoad();
|
|
|
|
private:
|
|
void libDelete();
|
|
|
|
Block dataToBlock(const Block & sample_block, const void * data);
|
|
|
|
std::string library_path;
|
|
|
|
SharedLibraryPtr library;
|
|
|
|
std::shared_ptr<CStringsHolder> settings_holder;
|
|
|
|
void * lib_data;
|
|
};
|
|
|
|
using SharedLibraryHandlerPtr = std::shared_ptr<SharedLibraryHandler>;
|
|
|
|
}
|