From a068aadd275adf37e245640f833be930e273d6d1 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 12 Mar 2015 18:03:52 +0800 Subject: [PATCH] use old drop table interface --- engine.go | 3 ++- session.go | 16 +++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/engine.go b/engine.go index 4103738e..8f0c805d 100644 --- a/engine.go +++ b/engine.go @@ -1225,8 +1225,9 @@ func (engine *Engine) CreateTables(beans ...interface{}) error { func (engine *Engine) DropTables(beans ...interface{}) error { session := engine.NewSession() - err := session.Begin() defer session.Close() + + err := session.Begin() if err != nil { return err } diff --git a/session.go b/session.go index 41afe844..62a423b9 100644 --- a/session.go +++ b/session.go @@ -570,7 +570,7 @@ func (session *Session) DropTable(bean interface{}) error { } t := reflect.Indirect(reflect.ValueOf(bean)).Type() - defer session.resetStatement() + if t.Kind() == reflect.String { session.Statement.AltTableName = bean.(string) } else if t.Kind() == reflect.Struct { @@ -579,10 +579,10 @@ func (session *Session) DropTable(bean interface{}) error { return errors.New("Unsupported type") } - return session.Engine.Dialect().MustDropTable(session.Statement.TableName()) - /*sqlStr := session.Statement.genDropSQL() + //return session.Engine.Dialect().MustDropTable(session.Statement.TableName()) + sqlStr := session.Engine.Dialect().DropTableSql(session.Statement.TableName()) _, err := session.exec(sqlStr) - return err*/ + return err } func (statement *Statement) JoinColumns(cols []*core.Column) string { @@ -1688,14 +1688,12 @@ func (session *Session) _row2Bean(rows *core.Rows, fields []string, fieldsCount z, _ := t.Zone() if len(z) == 0 || t.Year() == 0 { // !nashtsai! HACK tmp work around for lib/pq doesn't properly time with location session.Engine.LogDebug("empty zone key[%v] : %v | zone: %v | location: %+v\n", key, t, z, *t.Location()) - tt := time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), + t = time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Nanosecond(), time.Local) - vv = reflect.ValueOf(tt) } // !nashtsai! convert to engine location - t = vv.Convert(core.TimeType).Interface().(time.Time).In(session.Engine.TZLocation) - vv = reflect.ValueOf(t) - fieldValue.Set(vv) + t = t.In(session.Engine.TZLocation) + fieldValue.Set(reflect.ValueOf(t).Convert(fieldType)) // t = fieldValue.Interface().(time.Time) // z, _ = t.Zone()