**Use case**

```
CREATE TABLE t
(
    x UInt8,
    y UInt8,
)
```
return true;
}
bool ParserConstraintDeclaration::parseImpl(Pos & pos, ASTPtr & node, Expected & expected)
{
    ParserKeyword s_check("CHECK");
    ParserKeyword s_assume("ASSUME");
    ParserIdentifier name_p;
    ParserLogicalOrExpression expression_p;
    ASTPtr name;
    ASTPtr expr;
    ASTConstraintDeclaration::Type type = ASTConstraintDeclaration::Type::CHECK;
    if (!name_p.parse(pos, name, expected))
        return false;
    if (!s_check.ignore(pos, expected))
    {
        if (s_assume.ignore(pos, expected))
            type = ASTConstraintDeclaration::Type::ASSUME;
        else
            return false;
    }
    if (!expression_p.parse(pos, expr, expected))
        return false;
    auto constraint = std::make_shared<ASTConstraintDeclaration>();
    constraint->name = name->as<ASTIdentifier &>().name();
    constraint->type = type;
    constraint->set(constraint->expr, expr);
    node = constraint;
    return true;
}
bool ParserProjectionDeclaration::parseImpl(Pos & pos, ASTPtr & node, Expected & expected)