Add context for dialects

This commit is contained in:
Lunny Xiao 2020-02-27 17:40:30 +08:00
parent 7bf9a7a73c
commit 28a2613fab
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
8 changed files with 59 additions and 83 deletions

View File

@ -5,6 +5,7 @@
package dialects package dialects
import ( import (
"context"
"fmt" "fmt"
"strings" "strings"
"time" "time"
@ -60,7 +61,7 @@ type Dialect interface {
IndexCheckSQL(tableName, idxName string) (string, []interface{}) IndexCheckSQL(tableName, idxName string) (string, []interface{})
TableCheckSQL(tableName string) (string, []interface{}) TableCheckSQL(tableName string) (string, []interface{})
IsColumnExist(tableName string, colName string) (bool, error) IsColumnExist(ctx context.Context, tableName string, colName string) (bool, error)
CreateTableSQL(table *schemas.Table, tableName, storeEngine, charset string) string CreateTableSQL(table *schemas.Table, tableName, storeEngine, charset string) string
DropTableSQL(tableName string) string DropTableSQL(tableName string) string
@ -71,12 +72,9 @@ type Dialect interface {
ForUpdateSQL(query string) string ForUpdateSQL(query string) string
// CreateTableIfNotExists(table *Table, tableName, storeEngine, charset string) error GetColumns(ctx context.Context, tableName string) ([]string, map[string]*schemas.Column, error)
// MustDropTable(tableName string) error GetTables(ctx context.Context) ([]*schemas.Table, error)
GetIndexes(ctx context.Context, tableName string) (map[string]*schemas.Index, error)
GetColumns(tableName string) ([]string, map[string]*schemas.Column, error)
GetTables() ([]*schemas.Table, error)
GetIndexes(tableName string) (map[string]*schemas.Index, error)
Filters() []Filter Filters() []Filter
SetParams(params map[string]string) SetParams(params map[string]string)
@ -196,9 +194,9 @@ func (db *Base) DropTableSQL(tableName string) string {
return fmt.Sprintf("DROP TABLE IF EXISTS %s", quote(tableName)) return fmt.Sprintf("DROP TABLE IF EXISTS %s", quote(tableName))
} }
func (db *Base) HasRecords(query string, args ...interface{}) (bool, error) { func (db *Base) HasRecords(ctx context.Context, query string, args ...interface{}) (bool, error) {
db.LogSQL(query, args) db.LogSQL(query, args)
rows, err := db.DB().Query(query, args...) rows, err := db.DB().QueryContext(ctx, query, args...)
if err != nil { if err != nil {
return false, err return false, err
} }
@ -210,7 +208,7 @@ func (db *Base) HasRecords(query string, args ...interface{}) (bool, error) {
return false, nil return false, nil
} }
func (db *Base) IsColumnExist(tableName, colName string) (bool, error) { func (db *Base) IsColumnExist(ctx context.Context, tableName, colName string) (bool, error) {
quote := db.dialect.Quoter().Quote quote := db.dialect.Quoter().Quote
query := fmt.Sprintf( query := fmt.Sprintf(
"SELECT %v FROM %v.%v WHERE %v = ? AND %v = ? AND %v = ?", "SELECT %v FROM %v.%v WHERE %v = ? AND %v = ? AND %v = ?",
@ -221,7 +219,7 @@ func (db *Base) IsColumnExist(tableName, colName string) (bool, error) {
quote("TABLE_NAME"), quote("TABLE_NAME"),
quote("COLUMN_NAME"), quote("COLUMN_NAME"),
) )
return db.HasRecords(query, db.uri.DBName, tableName, colName) return db.HasRecords(ctx, query, db.uri.DBName, tableName, colName)
} }
/* /*

View File

@ -5,6 +5,7 @@
package dialects package dialects
import ( import (
"context"
"errors" "errors"
"fmt" "fmt"
"net/url" "net/url"
@ -324,10 +325,10 @@ func (db *mssql) IndexCheckSQL(tableName, idxName string) (string, []interface{}
return sql, args return sql, args
}*/ }*/
func (db *mssql) IsColumnExist(tableName, colName string) (bool, error) { func (db *mssql) IsColumnExist(ctx context.Context, tableName, colName string) (bool, error) {
query := `SELECT "COLUMN_NAME" FROM "INFORMATION_SCHEMA"."COLUMNS" WHERE "TABLE_NAME" = ? AND "COLUMN_NAME" = ?` query := `SELECT "COLUMN_NAME" FROM "INFORMATION_SCHEMA"."COLUMNS" WHERE "TABLE_NAME" = ? AND "COLUMN_NAME" = ?`
return db.HasRecords(query, tableName, colName) return db.HasRecords(ctx, query, tableName, colName)
} }
func (db *mssql) TableCheckSQL(tableName string) (string, []interface{}) { func (db *mssql) TableCheckSQL(tableName string) (string, []interface{}) {
@ -336,7 +337,7 @@ func (db *mssql) TableCheckSQL(tableName string) (string, []interface{}) {
return sql, args return sql, args
} }
func (db *mssql) GetColumns(tableName string) ([]string, map[string]*schemas.Column, error) { func (db *mssql) GetColumns(ctx context.Context, tableName string) ([]string, map[string]*schemas.Column, error) {
args := []interface{}{} args := []interface{}{}
s := `select a.name as name, b.name as ctype,a.max_length,a.precision,a.scale,a.is_nullable as nullable, s := `select a.name as name, b.name as ctype,a.max_length,a.precision,a.scale,a.is_nullable as nullable,
"default_is_null" = (CASE WHEN c.text is null THEN 1 ELSE 0 END), "default_is_null" = (CASE WHEN c.text is null THEN 1 ELSE 0 END),
@ -352,7 +353,7 @@ func (db *mssql) GetColumns(tableName string) ([]string, map[string]*schemas.Col
where a.object_id=object_id('` + tableName + `')` where a.object_id=object_id('` + tableName + `')`
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@ -407,12 +408,12 @@ func (db *mssql) GetColumns(tableName string) ([]string, map[string]*schemas.Col
return colSeq, cols, nil return colSeq, cols, nil
} }
func (db *mssql) GetTables() ([]*schemas.Table, error) { func (db *mssql) GetTables(ctx context.Context) ([]*schemas.Table, error) {
args := []interface{}{} args := []interface{}{}
s := `select name from sysobjects where xtype ='U'` s := `select name from sysobjects where xtype ='U'`
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -432,7 +433,7 @@ func (db *mssql) GetTables() ([]*schemas.Table, error) {
return tables, nil return tables, nil
} }
func (db *mssql) GetIndexes(tableName string) (map[string]*schemas.Index, error) { func (db *mssql) GetIndexes(ctx context.Context, tableName string) (map[string]*schemas.Index, error) {
args := []interface{}{tableName} args := []interface{}{tableName}
s := `SELECT s := `SELECT
IXS.NAME AS [INDEX_NAME], IXS.NAME AS [INDEX_NAME],
@ -447,7 +448,7 @@ WHERE IXS.TYPE_DESC='NONCLUSTERED' and OBJECT_NAME(IXS.OBJECT_ID) =?
` `
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -5,6 +5,7 @@
package dialects package dialects
import ( import (
"context"
"crypto/tls" "crypto/tls"
"errors" "errors"
"fmt" "fmt"
@ -314,13 +315,13 @@ func (db *mysql) TableCheckSQL(tableName string) (string, []interface{}) {
return sql, args return sql, args
} }
func (db *mysql) GetColumns(tableName string) ([]string, map[string]*schemas.Column, error) { func (db *mysql) GetColumns(ctx context.Context, tableName string) ([]string, map[string]*schemas.Column, error) {
args := []interface{}{db.uri.DBName, tableName} args := []interface{}{db.uri.DBName, tableName}
s := "SELECT `COLUMN_NAME`, `IS_NULLABLE`, `COLUMN_DEFAULT`, `COLUMN_TYPE`," + s := "SELECT `COLUMN_NAME`, `IS_NULLABLE`, `COLUMN_DEFAULT`, `COLUMN_TYPE`," +
" `COLUMN_KEY`, `EXTRA`,`COLUMN_COMMENT` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ?" " `COLUMN_KEY`, `EXTRA`,`COLUMN_COMMENT` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ?"
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@ -425,13 +426,13 @@ func (db *mysql) GetColumns(tableName string) ([]string, map[string]*schemas.Col
return colSeq, cols, nil return colSeq, cols, nil
} }
func (db *mysql) GetTables() ([]*schemas.Table, error) { func (db *mysql) GetTables(ctx context.Context) ([]*schemas.Table, error) {
args := []interface{}{db.uri.DBName} args := []interface{}{db.uri.DBName}
s := "SELECT `TABLE_NAME`, `ENGINE`, `TABLE_ROWS`, `AUTO_INCREMENT`, `TABLE_COMMENT` from " + s := "SELECT `TABLE_NAME`, `ENGINE`, `TABLE_ROWS`, `AUTO_INCREMENT`, `TABLE_COMMENT` from " +
"`INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA`=? AND (`ENGINE`='MyISAM' OR `ENGINE` = 'InnoDB' OR `ENGINE` = 'TokuDB')" "`INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA`=? AND (`ENGINE`='MyISAM' OR `ENGINE` = 'InnoDB' OR `ENGINE` = 'TokuDB')"
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -455,12 +456,12 @@ func (db *mysql) GetTables() ([]*schemas.Table, error) {
return tables, nil return tables, nil
} }
func (db *mysql) GetIndexes(tableName string) (map[string]*schemas.Index, error) { func (db *mysql) GetIndexes(ctx context.Context, tableName string) (map[string]*schemas.Index, error) {
args := []interface{}{db.uri.DBName, tableName} args := []interface{}{db.uri.DBName, tableName}
s := "SELECT `INDEX_NAME`, `NON_UNIQUE`, `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`STATISTICS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ?" s := "SELECT `INDEX_NAME`, `NON_UNIQUE`, `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`STATISTICS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ?"
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -5,6 +5,7 @@
package dialects package dialects
import ( import (
"context"
"errors" "errors"
"fmt" "fmt"
"regexp" "regexp"
@ -630,40 +631,13 @@ func (db *oracle) TableCheckSQL(tableName string) (string, []interface{}) {
return `SELECT table_name FROM user_tables WHERE table_name = :1`, args return `SELECT table_name FROM user_tables WHERE table_name = :1`, args
} }
func (db *oracle) MustDropTable(tableName string) error { func (db *oracle) IsColumnExist(ctx context.Context, tableName, colName string) (bool, error) {
sql, args := db.TableCheckSQL(tableName)
db.LogSQL(sql, args)
rows, err := db.DB().Query(sql, args...)
if err != nil {
return err
}
defer rows.Close()
if !rows.Next() {
return nil
}
sql = "Drop Table \"" + tableName + "\""
db.LogSQL(sql, args)
_, err = db.DB().Exec(sql)
return err
}
/*func (db *oracle) ColumnCheckSql(tableName, colName string) (string, []interface{}) {
args := []interface{}{strings.ToUpper(tableName), strings.ToUpper(colName)}
return "SELECT column_name FROM USER_TAB_COLUMNS WHERE table_name = ?" +
" AND column_name = ?", args
}*/
func (db *oracle) IsColumnExist(tableName, colName string) (bool, error) {
args := []interface{}{tableName, colName} args := []interface{}{tableName, colName}
query := "SELECT column_name FROM USER_TAB_COLUMNS WHERE table_name = :1" + query := "SELECT column_name FROM USER_TAB_COLUMNS WHERE table_name = :1" +
" AND column_name = :2" " AND column_name = :2"
db.LogSQL(query, args) db.LogSQL(query, args)
rows, err := db.DB().Query(query, args...) rows, err := db.DB().QueryContext(ctx, query, args...)
if err != nil { if err != nil {
return false, err return false, err
} }
@ -675,13 +649,13 @@ func (db *oracle) IsColumnExist(tableName, colName string) (bool, error) {
return false, nil return false, nil
} }
func (db *oracle) GetColumns(tableName string) ([]string, map[string]*schemas.Column, error) { func (db *oracle) GetColumns(ctx context.Context, tableName string) ([]string, map[string]*schemas.Column, error) {
args := []interface{}{tableName} args := []interface{}{tableName}
s := "SELECT column_name,data_default,data_type,data_length,data_precision,data_scale," + s := "SELECT column_name,data_default,data_type,data_length,data_precision,data_scale," +
"nullable FROM USER_TAB_COLUMNS WHERE table_name = :1" "nullable FROM USER_TAB_COLUMNS WHERE table_name = :1"
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@ -773,12 +747,12 @@ func (db *oracle) GetColumns(tableName string) ([]string, map[string]*schemas.Co
return colSeq, cols, nil return colSeq, cols, nil
} }
func (db *oracle) GetTables() ([]*schemas.Table, error) { func (db *oracle) GetTables(ctx context.Context) ([]*schemas.Table, error) {
args := []interface{}{} args := []interface{}{}
s := "SELECT table_name FROM user_tables" s := "SELECT table_name FROM user_tables"
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -797,13 +771,13 @@ func (db *oracle) GetTables() ([]*schemas.Table, error) {
return tables, nil return tables, nil
} }
func (db *oracle) GetIndexes(tableName string) (map[string]*schemas.Index, error) { func (db *oracle) GetIndexes(ctx context.Context, tableName string) (map[string]*schemas.Index, error) {
args := []interface{}{tableName} args := []interface{}{tableName}
s := "SELECT t.column_name,i.uniqueness,i.index_name FROM user_ind_columns t,user_indexes i " + s := "SELECT t.column_name,i.uniqueness,i.index_name FROM user_ind_columns t,user_indexes i " +
"WHERE t.index_name = i.index_name and t.table_name = i.table_name and t.table_name =:1" "WHERE t.index_name = i.index_name and t.table_name = i.table_name and t.table_name =:1"
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -5,6 +5,7 @@
package dialects package dialects
import ( import (
"context"
"errors" "errors"
"fmt" "fmt"
"net/url" "net/url"
@ -929,7 +930,7 @@ func (db *postgres) DropIndexSQL(tableName string, index *schemas.Index) string
return fmt.Sprintf("DROP INDEX %v", db.Quoter().Quote(idxName)) return fmt.Sprintf("DROP INDEX %v", db.Quoter().Quote(idxName))
} }
func (db *postgres) IsColumnExist(tableName, colName string) (bool, error) { func (db *postgres) IsColumnExist(ctx context.Context, tableName, colName string) (bool, error) {
args := []interface{}{db.uri.Schema, tableName, colName} args := []interface{}{db.uri.Schema, tableName, colName}
query := "SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = $1 AND table_name = $2" + query := "SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = $1 AND table_name = $2" +
" AND column_name = $3" " AND column_name = $3"
@ -940,7 +941,7 @@ func (db *postgres) IsColumnExist(tableName, colName string) (bool, error) {
} }
db.LogSQL(query, args) db.LogSQL(query, args)
rows, err := db.DB().Query(query, args...) rows, err := db.DB().QueryContext(ctx, query, args...)
if err != nil { if err != nil {
return false, err return false, err
} }
@ -949,7 +950,7 @@ func (db *postgres) IsColumnExist(tableName, colName string) (bool, error) {
return rows.Next(), nil return rows.Next(), nil
} }
func (db *postgres) GetColumns(tableName string) ([]string, map[string]*schemas.Column, error) { func (db *postgres) GetColumns(ctx context.Context, tableName string) ([]string, map[string]*schemas.Column, error) {
args := []interface{}{tableName} args := []interface{}{tableName}
s := `SELECT column_name, column_default, is_nullable, data_type, character_maximum_length, s := `SELECT column_name, column_default, is_nullable, data_type, character_maximum_length,
CASE WHEN p.contype = 'p' THEN true ELSE false END AS primarykey, CASE WHEN p.contype = 'p' THEN true ELSE false END AS primarykey,
@ -972,7 +973,7 @@ WHERE c.relkind = 'r'::char AND c.relname = $1%s AND f.attnum > 0 ORDER BY f.att
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@ -1064,7 +1065,7 @@ WHERE c.relkind = 'r'::char AND c.relname = $1%s AND f.attnum > 0 ORDER BY f.att
return colSeq, cols, nil return colSeq, cols, nil
} }
func (db *postgres) GetTables() ([]*schemas.Table, error) { func (db *postgres) GetTables(ctx context.Context) ([]*schemas.Table, error) {
args := []interface{}{} args := []interface{}{}
s := "SELECT tablename FROM pg_tables" s := "SELECT tablename FROM pg_tables"
if len(db.uri.Schema) != 0 { if len(db.uri.Schema) != 0 {
@ -1074,7 +1075,7 @@ func (db *postgres) GetTables() ([]*schemas.Table, error) {
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -1105,7 +1106,7 @@ func getIndexColName(indexdef string) []string {
return colNames return colNames
} }
func (db *postgres) GetIndexes(tableName string) (map[string]*schemas.Index, error) { func (db *postgres) GetIndexes(ctx context.Context, tableName string) (map[string]*schemas.Index, error) {
args := []interface{}{tableName} args := []interface{}{tableName}
s := fmt.Sprintf("SELECT indexname, indexdef FROM pg_indexes WHERE tablename=$1") s := fmt.Sprintf("SELECT indexname, indexdef FROM pg_indexes WHERE tablename=$1")
if len(db.uri.Schema) != 0 { if len(db.uri.Schema) != 0 {
@ -1114,7 +1115,7 @@ func (db *postgres) GetIndexes(tableName string) (map[string]*schemas.Index, err
} }
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -5,6 +5,7 @@
package dialects package dialects
import ( import (
"context"
"database/sql" "database/sql"
"errors" "errors"
"fmt" "fmt"
@ -254,11 +255,11 @@ func (db *sqlite3) ForUpdateSQL(query string) string {
return sql, args return sql, args
}*/ }*/
func (db *sqlite3) IsColumnExist(tableName, colName string) (bool, error) { func (db *sqlite3) IsColumnExist(ctx context.Context, tableName, colName string) (bool, error) {
args := []interface{}{tableName} args := []interface{}{tableName}
query := "SELECT name FROM sqlite_master WHERE type='table' and name = ? and ((sql like '%`" + colName + "`%') or (sql like '%[" + colName + "]%'))" query := "SELECT name FROM sqlite_master WHERE type='table' and name = ? and ((sql like '%`" + colName + "`%') or (sql like '%[" + colName + "]%'))"
db.LogSQL(query, args) db.LogSQL(query, args)
rows, err := db.DB().Query(query, args...) rows, err := db.DB().QueryContext(ctx, query, args...)
if err != nil { if err != nil {
return false, err return false, err
} }
@ -332,11 +333,11 @@ func parseString(colStr string) (*schemas.Column, error) {
return col, nil return col, nil
} }
func (db *sqlite3) GetColumns(tableName string) ([]string, map[string]*schemas.Column, error) { func (db *sqlite3) GetColumns(ctx context.Context, tableName string) ([]string, map[string]*schemas.Column, error) {
args := []interface{}{tableName} args := []interface{}{tableName}
s := "SELECT sql FROM sqlite_master WHERE type='table' and name = ?" s := "SELECT sql FROM sqlite_master WHERE type='table' and name = ?"
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@ -389,12 +390,12 @@ func (db *sqlite3) GetColumns(tableName string) ([]string, map[string]*schemas.C
return colSeq, cols, nil return colSeq, cols, nil
} }
func (db *sqlite3) GetTables() ([]*schemas.Table, error) { func (db *sqlite3) GetTables(ctx context.Context) ([]*schemas.Table, error) {
args := []interface{}{} args := []interface{}{}
s := "SELECT name FROM sqlite_master WHERE type='table'" s := "SELECT name FROM sqlite_master WHERE type='table'"
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -415,12 +416,12 @@ func (db *sqlite3) GetTables() ([]*schemas.Table, error) {
return tables, nil return tables, nil
} }
func (db *sqlite3) GetIndexes(tableName string) (map[string]*schemas.Index, error) { func (db *sqlite3) GetIndexes(ctx context.Context, tableName string) (map[string]*schemas.Index, error) {
args := []interface{}{tableName} args := []interface{}{tableName}
s := "SELECT sql FROM sqlite_master WHERE type='index' and tbl_name = ?" s := "SELECT sql FROM sqlite_master WHERE type='index' and tbl_name = ?"
db.LogSQL(s, args) db.LogSQL(s, args)
rows, err := db.DB().Query(s, args...) rows, err := db.DB().QueryContext(ctx, s, args...)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -321,14 +321,14 @@ func (engine *Engine) NoAutoCondition(no ...bool) *Session {
} }
func (engine *Engine) loadTableInfo(table *schemas.Table) error { func (engine *Engine) loadTableInfo(table *schemas.Table) error {
colSeq, cols, err := engine.dialect.GetColumns(table.Name) colSeq, cols, err := engine.dialect.GetColumns(engine.defaultContext, table.Name)
if err != nil { if err != nil {
return err return err
} }
for _, name := range colSeq { for _, name := range colSeq {
table.AddColumn(cols[name]) table.AddColumn(cols[name])
} }
indexes, err := engine.dialect.GetIndexes(table.Name) indexes, err := engine.dialect.GetIndexes(engine.defaultContext, table.Name)
if err != nil { if err != nil {
return err return err
} }
@ -348,7 +348,7 @@ func (engine *Engine) loadTableInfo(table *schemas.Table) error {
// DBMetas Retrieve all tables, columns, indexes' informations from database. // DBMetas Retrieve all tables, columns, indexes' informations from database.
func (engine *Engine) DBMetas() ([]*schemas.Table, error) { func (engine *Engine) DBMetas() ([]*schemas.Table, error) {
tables, err := engine.dialect.GetTables() tables, err := engine.dialect.GetTables(engine.defaultContext)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -439,7 +439,7 @@ func (engine *Engine) dumpTables(tables []*schemas.Table, w io.Writer, tp ...dia
colNames := engine.dialect.Quoter().Join(cols, ", ") colNames := engine.dialect.Quoter().Join(cols, ", ")
destColNames := dialect.Quoter().Join(cols, ", ") destColNames := dialect.Quoter().Join(cols, ", ")
rows, err := engine.DB().Query("SELECT " + colNames + " FROM " + engine.Quote(table.Name)) rows, err := engine.DB().QueryContext(engine.defaultContext, "SELECT "+colNames+" FROM "+engine.Quote(table.Name))
if err != nil { if err != nil {
return err return err
} }
@ -979,7 +979,7 @@ func (engine *Engine) Sync(beans ...interface{}) error {
} }
} else { } else {
for _, col := range table.Columns() { for _, col := range table.Columns() {
isExist, err := engine.dialect.IsColumnExist(tableNameNoSchema, col.Name) isExist, err := engine.dialect.IsColumnExist(session.ctx, tableNameNoSchema, col.Name)
if err != nil { if err != nil {
return err return err
} }

View File

@ -183,7 +183,7 @@ func (session *Session) isTableEmpty(tableName string) (bool, error) {
// find if index is exist according cols // find if index is exist according cols
func (session *Session) isIndexExist2(tableName string, cols []string, unique bool) (bool, error) { func (session *Session) isIndexExist2(tableName string, cols []string, unique bool) (bool, error) {
indexes, err := session.engine.dialect.GetIndexes(tableName) indexes, err := session.engine.dialect.GetIndexes(session.ctx, tableName)
if err != nil { if err != nil {
return false, err return false, err
} }
@ -229,7 +229,7 @@ func (session *Session) Sync2(beans ...interface{}) error {
defer session.Close() defer session.Close()
} }
tables, err := engine.dialect.GetTables() tables, err := engine.dialect.GetTables(session.ctx)
if err != nil { if err != nil {
return err return err
} }