`CREATE TABLE test (x Int32, y Int32, s String, PRIMARY KEY (x, y)) ENGINE = MergeTree;`
should be equivalent to
`CREATE TABLE test (x Int32, y Int32, s String) ENGINE = MergeTree PRIMARY KEY (x, y);`
metadata.sampling_key = KeyDescription::getKeyFromAST(args.storage_def->sample_by->ptr(), metadata.columns, args.context);
        if (args.storage_def->ttl_table)
        {
            metadata.table_ttl = TTLTableDescription::getTTLForTableFromAST(
                args.storage_def->ttl_table->ptr(), metadata.columns, args.context, metadata.primary_key);
        }
        if (args.query.columns_list && args.query.columns_list->indices)
            for (auto & index : args.query.columns_list->indices->children)
                metadata.secondary_indices.push_back(IndexDescription::getIndexFromAST(index, args.columns, args.context));
        if (args.query.columns_list && args.query.columns_list->constraints)
            for (auto & constraint : args.query.columns_list->constraints->children)
                metadata.constraints.constraints.push_back(constraint);
        auto column_ttl_asts = args.columns.getColumnTTLs();
        for (const auto & [name, ast] : column_ttl_asts)
        {
            auto new_ttl_entry = TTLDescription::getTTLFromAST(ast, args.columns, args.context, metadata.primary_key);
            metadata.column_ttls_by_name[name] = new_ttl_entry;
        }
        storage_settings->loadFromQuery(*args.storage_def);
        
        if (args.storage_def->settings)
            metadata.settings_changes = args.storage_def->settings->ptr();
        size_t index_granularity_bytes = 0;
        size_t min_index_granularity_bytes = 0;
        index_granularity_bytes = storage_settings->index_granularity_bytes;
        min_index_granularity_bytes = storage_settings->min_index_granularity_bytes;
        /* the min_index_granularity_bytes value is 1024 b and index_granularity_bytes is 10 mb by default
         * if index_granularity_bytes is not disabled i.e > 0 b, then always ensure that it's greater than
         * min_index_granularity_bytes. This is mainly a safeguard against accidents whereby a really low
         * index_granularity_bytes SETTING of 1b can create really large parts with large marks.