(stmt *ast.CreateTableAsStmt, colGen columnGenerator)
| 451 | } |
| 452 | |
| 453 | func (c *Catalog) createTableAs(stmt *ast.CreateTableAsStmt, colGen columnGenerator) error { |
| 454 | cols, err := colGen.OutputColumns(stmt.Query) |
| 455 | if err != nil { |
| 456 | return err |
| 457 | } |
| 458 | |
| 459 | catName := "" |
| 460 | if stmt.Into.Rel.Catalogname != nil { |
| 461 | catName = *stmt.Into.Rel.Catalogname |
| 462 | } |
| 463 | schemaName := "" |
| 464 | if stmt.Into.Rel.Schemaname != nil { |
| 465 | schemaName = *stmt.Into.Rel.Schemaname |
| 466 | } |
| 467 | |
| 468 | tbl := Table{ |
| 469 | Rel: &ast.TableName{ |
| 470 | Catalog: catName, |
| 471 | Schema: schemaName, |
| 472 | Name: *stmt.Into.Rel.Relname, |
| 473 | }, |
| 474 | Columns: cols, |
| 475 | } |
| 476 | |
| 477 | ns := tbl.Rel.Schema |
| 478 | if ns == "" { |
| 479 | ns = c.DefaultSchema |
| 480 | } |
| 481 | schema, err := c.getSchema(ns) |
| 482 | if err != nil { |
| 483 | return err |
| 484 | } |
| 485 | _, _, err = schema.getTable(tbl.Rel) |
| 486 | if err == nil { |
| 487 | return sqlerr.RelationExists(tbl.Rel.Name) |
| 488 | } |
| 489 | |
| 490 | schema.Tables = append(schema.Tables, &tbl) |
| 491 | |
| 492 | return nil |
| 493 | } |
no test coverage detected