WriteInCondition writes an IN condition
(cols []*model.ColumnInfo, dps ...[]types.Datum)
| 190 | |
| 191 | // WriteInCondition writes an IN condition |
| 192 | func (b *SQLBuilder) WriteInCondition(cols []*model.ColumnInfo, dps ...[]types.Datum) error { |
| 193 | switch b.state { |
| 194 | case writeSelOrDel: |
| 195 | b.restoreCtx.WritePlain(" WHERE ") |
| 196 | b.state = writeWhere |
| 197 | case writeWhere: |
| 198 | b.restoreCtx.WritePlain(" AND ") |
| 199 | default: |
| 200 | return errors.Errorf("invalid state: %v", b.state) |
| 201 | } |
| 202 | |
| 203 | b.writeColNames(cols, len(cols) > 1) |
| 204 | b.restoreCtx.WritePlain(" IN ") |
| 205 | b.restoreCtx.WritePlain("(") |
| 206 | first := true |
| 207 | for _, v := range dps { |
| 208 | if first { |
| 209 | first = false |
| 210 | } else { |
| 211 | b.restoreCtx.WritePlain(", ") |
| 212 | } |
| 213 | if err := b.writeDataPoint(cols, v); err != nil { |
| 214 | return err |
| 215 | } |
| 216 | } |
| 217 | b.restoreCtx.WritePlain(")") |
| 218 | return nil |
| 219 | } |
| 220 | |
| 221 | // WriteOrderBy writes order by |
| 222 | func (b *SQLBuilder) WriteOrderBy(cols []*model.ColumnInfo, desc bool) error { |