DB returns `*sql.DB`
()
| 424 | |
| 425 | // DB returns `*sql.DB` |
| 426 | func (db *DB) DB() (*sql.DB, error) { |
| 427 | connPool := db.ConnPool |
| 428 | if db.Statement != nil && db.Statement.ConnPool != nil { |
| 429 | connPool = db.Statement.ConnPool |
| 430 | } |
| 431 | if tx, ok := connPool.(*sql.Tx); ok && tx != nil { |
| 432 | return (*sql.DB)(reflect.ValueOf(tx).Elem().FieldByName("db").UnsafePointer()), nil |
| 433 | } |
| 434 | |
| 435 | if dbConnector, ok := connPool.(GetDBConnector); ok && dbConnector != nil { |
| 436 | if sqldb, err := dbConnector.GetDBConn(); sqldb != nil || err != nil { |
| 437 | return sqldb, err |
| 438 | } |
| 439 | } |
| 440 | |
| 441 | if sqldb, ok := connPool.(*sql.DB); ok && sqldb != nil { |
| 442 | return sqldb, nil |
| 443 | } |
| 444 | |
| 445 | return nil, ErrInvalidDB |
| 446 | } |
| 447 | |
| 448 | func (db *DB) getInstance() *DB { |
| 449 | if db.clone > 0 { |