formatMergeStatement formats MERGE statements with proper indentation
(stmt *ast.MergeStatement)
| 1268 | |
| 1269 | // formatMergeStatement formats MERGE statements with proper indentation |
| 1270 | func (f *SQLFormatter) formatMergeStatement(stmt *ast.MergeStatement) error { |
| 1271 | // MERGE INTO target_table |
| 1272 | f.writeKeyword("MERGE INTO") |
| 1273 | f.builder.WriteString(" ") |
| 1274 | f.formatTableReference(&stmt.TargetTable) |
| 1275 | if stmt.TargetAlias != "" { |
| 1276 | f.builder.WriteString(" " + stmt.TargetAlias) |
| 1277 | } |
| 1278 | |
| 1279 | // USING source_table |
| 1280 | f.writeNewline() |
| 1281 | f.writeKeyword("USING") |
| 1282 | f.builder.WriteString(" ") |
| 1283 | f.formatTableReference(&stmt.SourceTable) |
| 1284 | if stmt.SourceAlias != "" { |
| 1285 | f.builder.WriteString(" " + stmt.SourceAlias) |
| 1286 | } |
| 1287 | |
| 1288 | // ON condition |
| 1289 | if stmt.OnCondition != nil { |
| 1290 | f.writeNewline() |
| 1291 | f.writeKeyword("ON") |
| 1292 | f.builder.WriteString(" ") |
| 1293 | if err := f.formatExpression(stmt.OnCondition); err != nil { |
| 1294 | return fmt.Errorf("failed to format ON condition: %w", err) |
| 1295 | } |
| 1296 | } |
| 1297 | |
| 1298 | // WHEN clauses |
| 1299 | for _, whenClause := range stmt.WhenClauses { |
| 1300 | if err := f.formatMergeWhenClause(whenClause); err != nil { |
| 1301 | return fmt.Errorf("failed to format WHEN clause: %w", err) |
| 1302 | } |
| 1303 | } |
| 1304 | |
| 1305 | return nil |
| 1306 | } |
| 1307 | |
| 1308 | // formatMergeWhenClause formats a WHEN clause in a MERGE statement |
| 1309 | func (f *SQLFormatter) formatMergeWhenClause(when *ast.MergeWhenClause) error { |
no test coverage detected