()
| 637 | return m.ctx |
| 638 | } |
| 639 | func (m *Source) LoadConn() error { |
| 640 | |
| 641 | //u.Debugf("LoadConn() nil?%v", m.Conn == nil) |
| 642 | if m.Conn != nil { |
| 643 | return nil |
| 644 | } |
| 645 | if m.DataSource == nil { |
| 646 | // Not all sources require a source, ie literal queries |
| 647 | // and some, information schema, or fully qualifyied schema queries |
| 648 | // requires schema switching |
| 649 | if m.IsSchemaQuery() && m.ctx != nil { |
| 650 | m.ctx.Schema = m.ctx.Schema.InfoSchema |
| 651 | u.Infof("switching to info schema") |
| 652 | if err := m.load(); err != nil { |
| 653 | u.Errorf("could not load schema? %v", err) |
| 654 | return err |
| 655 | } |
| 656 | if m.DataSource == nil { |
| 657 | return u.LogErrorf("could not load info schema source %v", m.Stmt) |
| 658 | } |
| 659 | } else { |
| 660 | u.Debugf("return bc no datasource ctx=nil?%v schema?%v", m.ctx == nil, m.IsSchemaQuery()) |
| 661 | return nil |
| 662 | } |
| 663 | } |
| 664 | source, err := m.DataSource.Open(m.Stmt.SourceName()) |
| 665 | if err != nil { |
| 666 | u.Debugf("no source? %T for source %q", m.DataSource, m.Stmt.SourceName()) |
| 667 | return err |
| 668 | } |
| 669 | m.Conn = source |
| 670 | return nil |
| 671 | } |
| 672 | func (m *Source) IsSchemaQuery() bool { |
| 673 | if m.Stmt != nil && len(m.Stmt.Schema) > 0 { |
| 674 | //u.Debugf("schema:%q name:%q", m.Stmt.Schema, m.Stmt.Name) |
no test coverage detected