Removed extraordinarily bad code in StorageFile #2150

This commit is contained in:
Alexey Milovidov 2019-01-27 03:38:30 +03:00
parent 7100a74e41
commit ef51f126b4

View File

@ -121,7 +121,7 @@ public:
{ {
if (storage.use_table_fd) if (storage.use_table_fd)
{ {
storage.rwlock.lock(); unique_lock = std::unique_lock(storage.rwlock);
/// We could use common ReadBuffer and WriteBuffer in storage to leverage cache /// We could use common ReadBuffer and WriteBuffer in storage to leverage cache
/// and add ability to seek unseekable files, but cache sync isn't supported. /// and add ability to seek unseekable files, but cache sync isn't supported.
@ -141,7 +141,7 @@ public:
} }
else else
{ {
storage.rwlock.lock_shared(); shared_lock = std::shared_lock(storage.rwlock);
read_buf = std::make_unique<ReadBufferFromFile>(storage.path); read_buf = std::make_unique<ReadBufferFromFile>(storage.path);
} }
@ -149,14 +149,6 @@ public:
reader = FormatFactory::instance().getInput(storage.format_name, *read_buf, storage.getSampleBlock(), context, max_block_size); reader = FormatFactory::instance().getInput(storage.format_name, *read_buf, storage.getSampleBlock(), context, max_block_size);
} }
~StorageFileBlockInputStream() override
{
if (storage.use_table_fd)
storage.rwlock.unlock();
else
storage.rwlock.unlock_shared();
}
String getName() const override String getName() const override
{ {
return storage.getName(); return storage.getName();
@ -184,6 +176,9 @@ private:
Block sample_block; Block sample_block;
std::unique_ptr<ReadBufferFromFileDescriptor> read_buf; std::unique_ptr<ReadBufferFromFileDescriptor> read_buf;
BlockInputStreamPtr reader; BlockInputStreamPtr reader;
std::shared_lock<std::shared_mutex> shared_lock;
std::unique_lock<std::shared_mutex> unique_lock;
}; };