Execution of this query
```
create table t (c1 int(11) DEFAULT 1 NULL) engine=MergeTree order by tuple()
```
will return parsed query
```
CREATE TABLE t
(
     `c1` int NULL DEFAULT 1
)
ENGINE = MergeTree
ORDER BY tuple()
```
In the parsed query, NULL comes before DEFAULT, in the initial - other way around.
If I try to execute the parsed query, I’ll get the following error:
```
Syntax error: failed at position 36 ('DEFAULT') (line 3, col 19):

CREATE TABLE t
(
    `c1` int NULL DEFAULT 1
)
ENGINE = MergeTree
ORDER BY tuple()

Expected one of: COMMENT, CODEC, TTL, token, Comma, ClosingRoundBracket
```
This is confusing. 
See also discussion in #37087

Considerations:
(1) considering simplification of migration from other databases (see, for example, #37178) probably it makes sense to keep support for old column declaration, - MySQL supports both ways: `NULL DEFAULT 1` and `DEFAULT 1 NULL`, even `COMMENT '1' NULL` which we don't support. This way it'll keep the change backward compatible
(2) from another side ... I guess ... there is no target to support all variants of different syntax. It's not desirable to complicate parser implementation just for this reason


throw Exception("MaterializedPostgreSQL is an experimental database engine. "
                        "Enable allow_experimental_database_materialized_postgresql to use it.", ErrorCodes::UNKNOWN_DATABASE_ENGINE);
    }
    DatabasePtr database = DatabaseFactory::get(create, metadata_path / "", getContext());
    if (create.uuid != UUIDHelpers::Nil)
        create.setDatabase(TABLE_WITH_UUID_NAME_PLACEHOLDER);
    bool need_write_metadata = !create.attach || !fs::exists(metadata_file_path);
    if (need_write_metadata)
    {
        create.attach = true;
        create.if_not_exists = false;
        WriteBufferFromOwnString statement_buf;
        formatAST(create, statement_buf, false);
        writeChar('\n', statement_buf);
        String statement = statement_buf.str();
        
        WriteBufferFromFile out(metadata_file_tmp_path, statement.size(), O_WRONLY | O_CREAT | O_EXCL);
        writeString(statement, out);
        out.next();
        if (getContext()->getSettingsRef().fsync_metadata)
            out.sync();
        out.close();
    }
    
    auto db_guard = DatabaseCatalog::instance().getExclusiveDDLGuardForDatabase(database_name);
    bool added = false;
    bool renamed = false;
    try
    {