From a2283dee2329a913a9438ffb3ec2e3d098f956fe Mon Sep 17 00:00:00 2001 From: fuxiaohei Date: Thu, 7 Aug 2014 16:58:24 +0800 Subject: [PATCH 1/5] fix syntax error in doc --- docs/QuickStart.md | 2 +- docs/QuickStartCN.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/QuickStart.md b/docs/QuickStart.md index 6f568071..3b9f0aab 100644 --- a/docs/QuickStart.md +++ b/docs/QuickStart.md @@ -54,7 +54,7 @@ import ( _ "github.com/mattn/go-sqlite3" "github.com/go-xorm/xorm" ) -engine, err = xorm.NewEngine("sqlite3", "./test.db") +engine, err := xorm.NewEngine("sqlite3", "./test.db") defer engine.Close() ``` diff --git a/docs/QuickStartCN.md b/docs/QuickStartCN.md index d0fd45b1..793d05a4 100644 --- a/docs/QuickStartCN.md +++ b/docs/QuickStartCN.md @@ -58,7 +58,7 @@ import ( _ "github.com/mattn/go-sqlite3" "github.com/go-xorm/xorm" ) -engine, err = xorm.NewEngine("sqlite3", "./test.db") +engine, err := xorm.NewEngine("sqlite3", "./test.db") defer engine.Close() ``` From 4c38b4de473d11627551dfba773c568adcde3401 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 7 Aug 2014 22:18:15 +0800 Subject: [PATCH 2/5] add set type --- engine.go | 9 ++++++++- mysql_dialect.go | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/engine.go b/engine.go index 0962a08e..6ab7d465 100644 --- a/engine.go +++ b/engine.go @@ -273,7 +273,6 @@ func (engine *Engine) DBMetas() ([]*core.Table, error) { } //table.Columns = cols //table.ColumnsSeq = colSeq - indexes, err := engine.dialect.GetIndexes(table.Name) if err != nil { return nil, err @@ -732,6 +731,14 @@ func (engine *Engine) mapType(v reflect.Value) *core.Table { v = strings.Trim(v, "'") col.EnumOptions[v] = k } + } else if fs[0] == core.Set && fs[1][0] == '\'' { //set + options := strings.Split(fs[1][0:len(fs[1])-1], ",") + col.SetOptions = make(map[string]int) + for k, v := range options { + v = strings.TrimSpace(v) + v = strings.Trim(v, "'") + col.SetOptions[v] = k + } } else { fs2 := strings.Split(fs[1][0:len(fs[1])-1], ",") if len(fs2) == 2 { diff --git a/mysql_dialect.go b/mysql_dialect.go index 4e430165..b9911138 100644 --- a/mysql_dialect.go +++ b/mysql_dialect.go @@ -64,6 +64,17 @@ func (db *mysql) SqlType(c *core.Column) string { } } res += ")" + case core.Set: //mysql set + res = core.Set + res += "(" + for v, k := range c.SetOptions { + if k > 0 { + res += fmt.Sprintf(",'%v'", v) + } else { + res += fmt.Sprintf("'%v'", v) + } + } + res += ")" default: res = t } @@ -145,6 +156,7 @@ func (db *mysql) GetColumns(tableName string) ([]string, map[string]*core.Column if err != nil { return nil, nil, err } + //fmt.Println(columnName, isNullable, colType, colKey, extra, colDefault) col.Name = strings.Trim(columnName, "` ") if "YES" == isNullable { col.Nullable = true @@ -171,6 +183,14 @@ func (db *mysql) GetColumns(tableName string) ([]string, map[string]*core.Column v = strings.Trim(v, "'") col.EnumOptions[v] = k } + } else if colType == core.Set && cts[1][0] == '\'' { + options := strings.Split(cts[1][0:idx], ",") + col.SetOptions = make(map[string]int) + for k, v := range options { + v = strings.TrimSpace(v) + v = strings.Trim(v, "'") + col.SetOptions[v] = k + } } else { lens := strings.Split(cts[1][0:idx], ",") len1, err = strconv.Atoi(strings.TrimSpace(lens[0])) @@ -185,6 +205,9 @@ func (db *mysql) GetColumns(tableName string) ([]string, map[string]*core.Column } } } + if colType == "FLOAT UNSIGNED" { + colType = "FLOAT" + } col.Length = len1 col.Length2 = len2 if _, ok := core.SqlTypes[colType]; ok { From 160de202540fdc03b7bbee71fc028c41907d0fc1 Mon Sep 17 00:00:00 2001 From: Nash Tsai Date: Fri, 8 Aug 2014 05:05:45 +0800 Subject: [PATCH 3/5] SimpleLogger tidy up --- logger.go | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/logger.go b/logger.go index c4c17bbb..29aa7632 100644 --- a/logger.go +++ b/logger.go @@ -1,7 +1,9 @@ package xorm import ( + "fmt" "io" + "io/ioutil" "log" ) @@ -14,35 +16,46 @@ type ILogger interface { } type SimpleLogger struct { - logger *log.Logger + DEBUG *log.Logger + ERR *log.Logger + INFO *log.Logger + WARN *log.Logger } func NewSimpleLogger(out io.Writer) *SimpleLogger { return &SimpleLogger{ - logger: log.New(out, "[xorm] ", log.Ldate|log.Lmicroseconds)} + DEBUG: log.New(ioutil.Discard, "[xorm] [debug] ", log.Ldate|log.Lmicroseconds), + ERR: log.New(ioutil.Discard, "[xorm] [error] ", log.Ldate|log.Lmicroseconds), + INFO: log.New(ioutil.Discard, "[xorm] [info] ", log.Ldate|log.Lmicroseconds), + WARN: log.New(ioutil.Discard, "[xorm] [warn] ", log.Ldate|log.Lmicroseconds), + } } func NewSimpleLogger2(out io.Writer, prefix string, flag int) *SimpleLogger { return &SimpleLogger{ - logger: log.New(out, prefix, flag)} + DEBUG: log.New(ioutil.Discard, fmt.Sprintf("%s [debug] ", prefix), log.Ldate|log.Lmicroseconds), + ERR: log.New(ioutil.Discard, fmt.Sprintf("%s [error] ", prefix), log.Ldate|log.Lmicroseconds), + INFO: log.New(ioutil.Discard, fmt.Sprintf("%s [info] ", prefix), log.Ldate|log.Lmicroseconds), + WARN: log.New(ioutil.Discard, fmt.Sprintf("%s [warn] ", prefix), log.Ldate|log.Lmicroseconds), + } } func (s *SimpleLogger) Debug(m string) (err error) { - s.logger.Println("[debug]", m) + s.DEBUG.Println(m) return } func (s *SimpleLogger) Err(m string) (err error) { - s.logger.Println("[error]", m) + s.ERR.Println(m) return } func (s *SimpleLogger) Info(m string) (err error) { - s.logger.Println("[info]", m) + s.INFO.Println(m) return } func (s *SimpleLogger) Warning(m string) (err error) { - s.logger.Println("[warning]", m) + s.WARN.Println(m) return } From ab8716a447c076924abfc48f50d032016ac7cc79 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 8 Aug 2014 14:05:51 +0800 Subject: [PATCH 4/5] bug fixed #154 --- statement.go | 1 + 1 file changed, 1 insertion(+) diff --git a/statement.go b/statement.go index 9286250d..74daf9fb 100644 --- a/statement.go +++ b/statement.go @@ -1037,6 +1037,7 @@ func (statement *Statement) genCountSql(bean interface{}) (string, []interface{} if statement.Engine.Dialect().DBType() == "ql" { id = "" } + statement.attachInSql() return statement.genSelectSql(fmt.Sprintf("count(%v) AS %v", id, statement.Engine.Quote("total"))), append(statement.Params, statement.BeanArgs...) } From f33ed5b947187e45e6a5dd9a91ff319b1f5cf470 Mon Sep 17 00:00:00 2001 From: Nash Tsai Date: Mon, 11 Aug 2014 20:00:13 +0800 Subject: [PATCH 5/5] fix error using ioutil.Discard --- engine.go | 4 ++-- logger.go | 17 ++++++++--------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/engine.go b/engine.go index 6ab7d465..bf041410 100644 --- a/engine.go +++ b/engine.go @@ -175,9 +175,9 @@ func (engine *Engine) Ping() error { func (engine *Engine) logSQL(sqlStr string, sqlArgs ...interface{}) { if engine.ShowSQL { if len(sqlArgs) > 0 { - engine.Logger.Info(fmt.Sprintln("[sql]", sqlStr, "[args]", sqlArgs)) + engine.Logger.Info(fmt.Sprintf("[sql] %v [args] %v", sqlStr, sqlArgs)) } else { - engine.Logger.Info(fmt.Sprintln("[sql]", sqlStr)) + engine.Logger.Info(fmt.Sprintf("[sql] %v", sqlStr)) } } } diff --git a/logger.go b/logger.go index 29aa7632..f9d529a1 100644 --- a/logger.go +++ b/logger.go @@ -3,7 +3,6 @@ package xorm import ( "fmt" "io" - "io/ioutil" "log" ) @@ -24,19 +23,19 @@ type SimpleLogger struct { func NewSimpleLogger(out io.Writer) *SimpleLogger { return &SimpleLogger{ - DEBUG: log.New(ioutil.Discard, "[xorm] [debug] ", log.Ldate|log.Lmicroseconds), - ERR: log.New(ioutil.Discard, "[xorm] [error] ", log.Ldate|log.Lmicroseconds), - INFO: log.New(ioutil.Discard, "[xorm] [info] ", log.Ldate|log.Lmicroseconds), - WARN: log.New(ioutil.Discard, "[xorm] [warn] ", log.Ldate|log.Lmicroseconds), + DEBUG: log.New(out, "[xorm] [debug] ", log.Ldate|log.Lmicroseconds), + ERR: log.New(out, "[xorm] [error] ", log.Ldate|log.Lmicroseconds), + INFO: log.New(out, "[xorm] [info] ", log.Ldate|log.Lmicroseconds), + WARN: log.New(out, "[xorm] [warn] ", log.Ldate|log.Lmicroseconds), } } func NewSimpleLogger2(out io.Writer, prefix string, flag int) *SimpleLogger { return &SimpleLogger{ - DEBUG: log.New(ioutil.Discard, fmt.Sprintf("%s [debug] ", prefix), log.Ldate|log.Lmicroseconds), - ERR: log.New(ioutil.Discard, fmt.Sprintf("%s [error] ", prefix), log.Ldate|log.Lmicroseconds), - INFO: log.New(ioutil.Discard, fmt.Sprintf("%s [info] ", prefix), log.Ldate|log.Lmicroseconds), - WARN: log.New(ioutil.Discard, fmt.Sprintf("%s [warn] ", prefix), log.Ldate|log.Lmicroseconds), + DEBUG: log.New(out, fmt.Sprintf("%s [debug] ", prefix), log.Ldate|log.Lmicroseconds), + ERR: log.New(out, fmt.Sprintf("%s [error] ", prefix), log.Ldate|log.Lmicroseconds), + INFO: log.New(out, fmt.Sprintf("%s [info] ", prefix), log.Ldate|log.Lmicroseconds), + WARN: log.New(out, fmt.Sprintf("%s [warn] ", prefix), log.Ldate|log.Lmicroseconds), } }