**Describe what's wrong**
clickhouse creates lots of system log tables if config storage settings for system log table

**Does it reproduce on recent release?**
22.1

**How to reproduce**

* Which ClickHouse server version to use
22.1
* Non-default settings, if any
config query_log table as below:
```
query_log:
  partition_by:
    "@remove": 1
  engine: |
    ENGINE = MergeTree PARTITION BY (event_date)
    ORDER BY (event_time)
    TTL event_date + INTERVAL 14 DAY DELETE
    SETTINGS ttl_only_drop_parts=1
```

**Expected behavior**
clickhouse should not create new system log tables if the table is not changed.

**Error message and/or stacktrace**
2022.02.26 19:53:28.039097 [ 1197451 ] {} <Debug> SystemLog (system.query_log): Existing table system.query_log for system log has obsolete or different structure. Renaming it to query_log_13.
Old: CREATE TABLE system.query_log (....) ENGINE = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + toIntervalDay(14) 
New: CREATE TABLE system.query_log (....) ENGINE = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + toIntervalDay(14) SETTINGS ttl_only_drop_parts = 1

**Additional context**
in this commit https://github.com/ClickHouse/ClickHouse/commit/5fafeea76330db8037f2beddd8a4386cad54505a, v3: SETTINGS of MergeTree in old CREATE TABLE query is reset before comparing with new create query.


class StorageFileBlockOutputStream;
class StorageFile final : public shared_ptr_helper<StorageFile>, public IStorage
{
friend struct shared_ptr_helper<StorageFile>;
friend class PartitionedStorageFileSink;
public:
    std::string getName() const override { return "File"; }
    Pipe read(
        const Names & column_names,
        const StorageMetadataPtr & ,
        SelectQueryInfo & query_info,
        ContextPtr context,
        QueryProcessingStage::Enum processed_stage,
        size_t max_block_size,
        unsigned num_streams) override;
    SinkToStoragePtr write(
        const ASTPtr & query,
        const StorageMetadataPtr & ,
        ContextPtr context) override;
    void truncate(
        const ASTPtr & ,
        const StorageMetadataPtr & ,
        ContextPtr ,
        TableExclusiveLockHolder &) override;
    void rename(const String & new_path_to_table_data, const StorageID & new_table_id) override;
    bool storesDataOnDisk() const override;
    Strings getDataPaths() const override;
    struct CommonArguments : public WithContext
    {
        StorageID table_id;