Generic dialect support. (MySQL and Postgres)

This commit is contained in:
go-jet 2019-07-28 14:57:02 +02:00
parent 043a0dc4c0
commit 5dda5e1e11
27 changed files with 440 additions and 92 deletions

22
cast.go
View file

@ -44,9 +44,27 @@ func CAST(expression Expression) cast {
}
}
func (b *castImpl) accept(visitor visitor) {
visitor.visit(b)
b.Expression.accept(visitor)
}
func (b *castImpl) serialize(statement statementType, out *sqlBuilder, options ...serializeOption) error {
err := b.Expression.serialize(statement, out, options...)
out.writeString("::" + b.castType)
if castOverride := out.dialect.CastOverride; castOverride != nil {
return castOverride(b.Expression, b.castType)(statement, out, options...)
}
out.writeString("CAST")
err := WRAP(b.Expression).serialize(statement, out, options...)
if err != nil {
return err
}
out.writeString("AS")
out.writeString(b.castType)
return err
}