| 1567 | } |
| 1568 | |
| 1569 | func mergeActionSQL(a *MergeAction) string { |
| 1570 | switch a.ActionType { |
| 1571 | case "UPDATE": |
| 1572 | sets := make([]string, len(a.SetClauses)) |
| 1573 | for i, s := range a.SetClauses { |
| 1574 | sets[i] = s.Column + " = " + exprSQL(s.Value) |
| 1575 | } |
| 1576 | return "UPDATE SET " + strings.Join(sets, ", ") |
| 1577 | case "INSERT": |
| 1578 | var sb strings.Builder |
| 1579 | sb.WriteString("INSERT") |
| 1580 | if a.DefaultValues { |
| 1581 | sb.WriteString(" DEFAULT VALUES") |
| 1582 | } else { |
| 1583 | if len(a.Columns) > 0 { |
| 1584 | sb.WriteString(" (") |
| 1585 | sb.WriteString(strings.Join(a.Columns, ", ")) |
| 1586 | sb.WriteString(")") |
| 1587 | } |
| 1588 | if len(a.Values) > 0 { |
| 1589 | sb.WriteString(" VALUES (") |
| 1590 | vals := make([]string, len(a.Values)) |
| 1591 | for i, v := range a.Values { |
| 1592 | vals[i] = exprSQL(v) |
| 1593 | } |
| 1594 | sb.WriteString(strings.Join(vals, ", ")) |
| 1595 | sb.WriteString(")") |
| 1596 | } |
| 1597 | } |
| 1598 | return sb.String() |
| 1599 | case "DELETE": |
| 1600 | return "DELETE" |
| 1601 | default: |
| 1602 | return a.ActionType |
| 1603 | } |
| 1604 | } |
| 1605 | |
| 1606 | // ToSQL returns the SQL string for CREATE SEQUENCE. |
| 1607 | func (s *CreateSequenceStatement) ToSQL() string { |