Statements sql serialization simplified.

This commit is contained in:
zer0sub 2019-05-08 13:47:01 +02:00
parent d9bbec3795
commit 439c9f1ef9
26 changed files with 274 additions and 284 deletions

View file

@ -77,42 +77,42 @@ func (c *baseColumn) DefaultAlias() projection {
return c.AS(c.tableName + "." + c.name)
}
func (c *baseColumn) serializeAsOrderBy(out *queryData) error {
if out.statementType == set_statement {
func (c *baseColumn) serializeAsOrderBy(statement statementType, out *queryData) error {
if statement == set_statement {
// set statement (UNION, EXCEPT ...) can reference only select projections in order by clause
out.WriteString(`"`)
out.writeString(`"`)
if c.tableName != "" {
out.WriteString(c.tableName)
out.WriteString(".")
out.writeString(c.tableName)
out.writeString(".")
}
out.WriteString(c.name)
out.writeString(c.name)
out.WriteString(`"`)
out.writeString(`"`)
return nil
}
return c.serialize(out)
return c.serialize(statement, out)
}
func (c baseColumn) serialize(out *queryData) error {
func (c baseColumn) serialize(statement statementType, out *queryData) error {
if c.tableName != "" {
out.WriteString(c.tableName)
out.WriteString(".")
out.writeString(c.tableName)
out.writeString(".")
}
wrapColumnName := strings.Contains(c.name, ".")
if wrapColumnName {
out.WriteString(`"`)
out.writeString(`"`)
}
out.WriteString(c.name)
out.writeString(c.name)
if wrapColumnName {
out.WriteString(`"`)
out.writeString(`"`)
}
return nil