| 354 | } |
| 355 | |
| 356 | func (c *Catalog) dropTable(stmt *ast.DropTableStmt) error { |
| 357 | for _, name := range stmt.Tables { |
| 358 | ns := name.Schema |
| 359 | if ns == "" { |
| 360 | ns = c.DefaultSchema |
| 361 | } |
| 362 | schema, err := c.getSchema(ns) |
| 363 | if errors.Is(err, sqlerr.NotFound) && stmt.IfExists { |
| 364 | continue |
| 365 | } else if err != nil { |
| 366 | return err |
| 367 | } |
| 368 | |
| 369 | tbl, idx, err := schema.getTable(name) |
| 370 | if errors.Is(err, sqlerr.NotFound) && stmt.IfExists { |
| 371 | continue |
| 372 | } else if err != nil { |
| 373 | return err |
| 374 | } |
| 375 | |
| 376 | drop := &ast.DropTypeStmt{} |
| 377 | for _, col := range tbl.Columns { |
| 378 | if !col.linkedType { |
| 379 | continue |
| 380 | } |
| 381 | drop.Types = append(drop.Types, &col.Type) |
| 382 | } |
| 383 | if err := c.dropType(drop); err != nil { |
| 384 | return err |
| 385 | } |
| 386 | |
| 387 | schema.Tables = append(schema.Tables[:idx], schema.Tables[idx+1:]...) |
| 388 | } |
| 389 | return nil |
| 390 | } |
| 391 | |
| 392 | func (c *Catalog) renameColumn(stmt *ast.RenameColumnStmt) error { |
| 393 | _, tbl, err := c.getTable(stmt.Table) |