```
-- correct syntax:
CREATE TABLE test_aborted1 (a UInt8, b String EPHEMERAL) Engine=Memory();
-- ok

-- incorrect syntax:
CREATE TABLE test_aborted1 (a UInt8, b EPHEMERAL String) Engine=Memory();
-- in clickhouse-client: Aborted

(lldb) bt
* thread #1, name = 'clickhouse-clie', stop reason = signal SIGSEGV: invalid address (fault address: 0x80)
  * frame #0: 0x0000000014961c59 clickhouse-client`DB::ASTColumnDeclaration::formatImpl(DB::IAST::FormatSettings const&, DB::IAST::FormatState&, DB::IAST::FormatStateStacked) const [inlined] DB::Field::isNull(this=0x0000000000000050) const at Field.h:421:40
    frame #1: 0x0000000014961c59 clickhouse-client`DB::ASTColumnDeclaration::formatImpl(this=0x00007f67c252aa58, settings=0x00007fff8b1187f8, state=0x00007fff8b1187e0, frame=FormatStateStacked @ 0x00000000072c3190) const at ASTColumnDeclaration.cpp:76:94
    frame #2: 0x0000000014974efb clickhouse-client`DB::ASTExpressionList::formatImplMultiline(this=0x00007fff8b1185b8, settings=0x00007fff8b1187f8, state=0x00007fff8b1187e0, frame=FormatStateStacked @ 0x000000000b8baa80) const at ASTExpressionList.cpp:57:16
    frame #3: 0x000000001496b788 clickhouse-client`DB::ASTColumns::formatImpl(this=0x00007f67c401efa8, s=0x00007fff8b1187f8, state=0x00007fff8b1187e0, frame=FormatStateStacked @ 0x000000000eb7f520) const at ASTCreateQuery.cpp:185:18
    frame #4: 0x000000001496d6b2 clickhouse-client`DB::ASTCreateQuery::formatQueryImpl(this=0x00007f67c24fc598, settings=0x00007fff8b1187f8, state=0x00007fff8b1187e0, frame=FormatStateStacked @ 0x00000000090c7600) const at ASTCreateQuery.cpp:380:23
    frame #5: 0x0000000014989025 clickhouse-client`DB::ASTQueryWithOutput::formatImpl(this=0x00007f67c24fc598, s=0x00007fff8b1187f8, state=0x00007fff8b1187e0, frame=FormatStateStacked @ 0x00000000096c7400) const at ASTQueryWithOutput.cpp:27:5
    frame #6: 0x0000000014a11076 clickhouse-client`DB::formatAST(DB::IAST const&, DB::WriteBuffer&, bool, bool) [inlined] DB::IAST::format(this=<unavailable>, settings=0x00007fff8b1187f8) const at IAST.h:233:9
    frame #7: 0x0000000014a11052 clickhouse-client`DB::formatAST(ast=0x00007f67c24fc598, buf=0x00007fff8b118870, hilite=true, one_line=<unavailable>) at formatAST.cpp:12:9
    frame #8: 0x0000000014503f66 clickhouse-client`DB::ClientBase::parseQuery(this=0x00007fff8b11a510, pos=<unavailable>, end=<unavailable>, allow_multi_statements=<unavailable>) const at ClientBase.cpp:316:9
    frame #9: 0x00000000145069f8 clickhouse-client`DB::ClientBase::processTextAsSingleQuery(this=0x00007fff8b11a510, full_query="CREATE TABLE test_aborted (\n    a UInt64,\n    b EPHEMERAL String\n) Engine=MergeTree \nORDER BY tuple();") at ClientBase.cpp:632:25
    frame #10: 0x000000001450f2df clickhouse-client`DB::ClientBase::processQueryText(this=0x00007fff8b11a510, text="CREATE TABLE test_aborted (\n    a UInt64,\n    b EPHEMERAL String\n) Engine=MergeTree \nORDER BY tuple();") at ClientBase.cpp:1791:9
    frame #11: 0x000000001451085a clickhouse-client`DB::ClientBase::runInteractive(this=<unavailable>) at ClientBase.cpp:1939:18
    frame #12: 0x000000000afbbcd5 clickhouse-client`DB::Client::main(this=0x00007fff8b11a510, (null)=<unavailable>) at Client.cpp:251:9
    frame #13: 0x0000000017735f66 clickhouse-client`Poco::Util::Application::run(this=0x00007fff8b11a510) at Application.cpp:334:8
    frame #14: 0x000000000afc4f01 clickhouse-client`mainEntryClickHouseClient(argc=1, argv=0x00007f67c40ef038) at Client.cpp:1057:23
    frame #15: 0x000000000af06e31 clickhouse-client`main(argc_=<unavailable>, argv_=<unavailable>) at main.cpp:409:12
    frame #16: 0x00007f67c4f700b3 libc.so.6`__libc_start_main + 243
    frame #17: 0x000000000af066ae clickhouse-client`_start + 46
```
{
protected:
    const char * getName() const override { return "CREATE TABLE or ATTACH TABLE query"; }
    bool parseImpl(Pos & pos, ASTPtr & node, Expected & expected) override;
};
class ParserCreateLiveViewQuery : public IParserBase
{
protected:
    const char * getName() const override { return "CREATE LIVE VIEW query"; }
    bool parseImpl(Pos & pos, ASTPtr & node, Expected & expected) override;
};
class ParserCreateWindowViewQuery : public IParserBase
{
protected:
    const char * getName() const override { return "CREATE WINDOW VIEW query"; }
    bool parseImpl(Pos & pos, ASTPtr & node, Expected & expected) override;
};
class ParserTableOverrideDeclaration : public IParserBase