```
touch /tmp/aaa.csv

CREATE TABLE log (A String) ENGINE= FileLog('/tmp/aaa.csv', 'CSV');
DB::Exception: The absolute data path should be inside `user_files_path`(/var/lib/clickhouse/user_files/). (BAD_ARGUMENTS)


CREATE TABLE log (A String) ENGINE= FileLog('/tmp/aaa.csv', 'CSV');
DB::Exception: Metadata files already exist by path: /var/lib/clickhouse/.filelog_storage_metadata/default/log, remove them manually if it is intended. (TABLE_METADATA_ALREADY_EXISTS)
```
openFilesAndSetPos();
    Pipes pipes;
    pipes.reserve(max_streams_number);
    for (size_t stream_number = 0; stream_number < max_streams_number; ++stream_number)
    {
        pipes.emplace_back(std::make_shared<FileLogSource>(
            *this,
            metadata_snapshot,
            new_context,
            block_io.pipeline.getHeader().getNames(),
            getPollMaxBatchSize(),
            getPollTimeoutMillisecond(),
            stream_number,
            max_streams_number));
    }
    auto input= Pipe::unitePipes(std::move(pipes));
    assertBlocksHaveEqualStructure(input.getHeader(), block_io.pipeline.getHeader(), "StorageFileLog streamToViews");
    size_t rows = 0;
    {
        block_io.pipeline.complete(std::move(input));
        block_io.pipeline.setProgressCallback([&](const Progress & progress) { rows += progress.read_rows.load(); });
        CompletedPipelineExecutor executor(block_io.pipeline);
        executor.execute();
    }
    UInt64 milliseconds = watch.elapsedMilliseconds();
    LOG_DEBUG(log, "Pushing {} rows to {} took {} ms.", rows, table_id.getNameForLogs(), milliseconds);
    return updateFileInfos();
}
void StorageFileLog::wakeUp()