```
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)
```
{
    ReadBufferFromFile in(full_name);
    UInt64 _, last_written_pos;
    if (!tryReadIntText(_, in))
    {
        throw Exception(ErrorCodes::CANNOT_READ_ALL_DATA, "Read meta file {} failed", full_name);
    }
    assertChar('\n', in);
    if (!tryReadIntText(last_written_pos, in))
    {
        throw Exception(ErrorCodes::CANNOT_READ_ALL_DATA, "Read meta file {} failed", full_name);
    }
    if (last_written_pos > offset)
        throw Exception(
            ErrorCodes::LOGICAL_ERROR, "Last stored last_written_pos in meta file {} is bigger than current last_written_pos", full_name);
}
size_t StorageFileLog::getMaxBlockSize() const
{
    return filelog_settings->max_block_size.changed ? filelog_settings->max_block_size.value
                                                    : getContext()->getSettingsRef().max_insert_block_size.value;
}
size_t StorageFileLog::getPollMaxBatchSize() const
{
    size_t batch_size = filelog_settings->poll_max_batch_size.changed ? filelog_settings->poll_max_batch_size.value
                                                                      : getContext()->getSettingsRef().max_block_size.value;
    return std::min(batch_size, getMaxBlockSize());
}
size_t StorageFileLog::getPollTimeoutMillisecond() const