resolved merge

This commit is contained in:
Nash Tsai 2014-08-11 20:02:14 +08:00
commit 236970548e
6 changed files with 55 additions and 12 deletions

View File

@ -54,7 +54,7 @@ import (
_ "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3"
"github.com/go-xorm/xorm" "github.com/go-xorm/xorm"
) )
engine, err = xorm.NewEngine("sqlite3", "./test.db") engine, err := xorm.NewEngine("sqlite3", "./test.db")
defer engine.Close() defer engine.Close()
``` ```

View File

@ -58,7 +58,7 @@ import (
_ "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3"
"github.com/go-xorm/xorm" "github.com/go-xorm/xorm"
) )
engine, err = xorm.NewEngine("sqlite3", "./test.db") engine, err := xorm.NewEngine("sqlite3", "./test.db")
defer engine.Close() defer engine.Close()
``` ```

View File

@ -183,9 +183,9 @@ func (engine *Engine) Ping() error {
func (engine *Engine) logSQL(sqlStr string, sqlArgs ...interface{}) { func (engine *Engine) logSQL(sqlStr string, sqlArgs ...interface{}) {
if engine.ShowSQL { if engine.ShowSQL {
if len(sqlArgs) > 0 { if len(sqlArgs) > 0 {
engine.Logger.Info(fmt.Sprintf("[sql]", sqlStr, "[args]", sqlArgs)) engine.Logger.Info(fmt.Sprintf("[sql] %v [args] %v", sqlStr, sqlArgs))
} else { } else {
engine.Logger.Info(fmt.Sprintf("[sql]", sqlStr)) engine.Logger.Info(fmt.Sprintf("[sql] %v", sqlStr))
} }
} }
} }
@ -305,7 +305,6 @@ func (engine *Engine) DBMetas() ([]*core.Table, error) {
} }
//table.Columns = cols //table.Columns = cols
//table.ColumnsSeq = colSeq //table.ColumnsSeq = colSeq
indexes, err := engine.dialect.GetIndexes(table.Name) indexes, err := engine.dialect.GetIndexes(table.Name)
if err != nil { if err != nil {
return nil, err return nil, err
@ -803,6 +802,14 @@ func (engine *Engine) mapType(v reflect.Value) *core.Table {
v = strings.Trim(v, "'") v = strings.Trim(v, "'")
col.EnumOptions[v] = k 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 { } else {
fs2 := strings.Split(fs[1][0:len(fs[1])-1], ",") fs2 := strings.Split(fs[1][0:len(fs[1])-1], ",")
if len(fs2) == 2 { if len(fs2) == 2 {

View File

@ -1,6 +1,7 @@
package xorm package xorm
import ( import (
"fmt"
"io" "io"
"log" "log"
) )
@ -14,35 +15,46 @@ type ILogger interface {
} }
type SimpleLogger struct { type SimpleLogger struct {
logger *log.Logger DEBUG *log.Logger
ERR *log.Logger
INFO *log.Logger
WARN *log.Logger
} }
func NewSimpleLogger(out io.Writer) *SimpleLogger { func NewSimpleLogger(out io.Writer) *SimpleLogger {
return &SimpleLogger{ return &SimpleLogger{
logger: log.New(out, "[xorm] ", 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 { func NewSimpleLogger2(out io.Writer, prefix string, flag int) *SimpleLogger {
return &SimpleLogger{ return &SimpleLogger{
logger: log.New(out, prefix, flag)} 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),
}
} }
func (s *SimpleLogger) Debug(m string) (err error) { func (s *SimpleLogger) Debug(m string) (err error) {
s.logger.Println("[debug]", m) s.DEBUG.Println(m)
return return
} }
func (s *SimpleLogger) Err(m string) (err error) { func (s *SimpleLogger) Err(m string) (err error) {
s.logger.Println("[error]", m) s.ERR.Println(m)
return return
} }
func (s *SimpleLogger) Info(m string) (err error) { func (s *SimpleLogger) Info(m string) (err error) {
s.logger.Println("[info]", m) s.INFO.Println(m)
return return
} }
func (s *SimpleLogger) Warning(m string) (err error) { func (s *SimpleLogger) Warning(m string) (err error) {
s.logger.Println("[warning]", m) s.WARN.Println(m)
return return
} }

View File

@ -64,6 +64,17 @@ func (db *mysql) SqlType(c *core.Column) string {
} }
} }
res += ")" 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: default:
res = t res = t
} }
@ -145,6 +156,7 @@ func (db *mysql) GetColumns(tableName string) ([]string, map[string]*core.Column
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
//fmt.Println(columnName, isNullable, colType, colKey, extra, colDefault)
col.Name = strings.Trim(columnName, "` ") col.Name = strings.Trim(columnName, "` ")
if "YES" == isNullable { if "YES" == isNullable {
col.Nullable = true col.Nullable = true
@ -171,6 +183,14 @@ func (db *mysql) GetColumns(tableName string) ([]string, map[string]*core.Column
v = strings.Trim(v, "'") v = strings.Trim(v, "'")
col.EnumOptions[v] = k 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 { } else {
lens := strings.Split(cts[1][0:idx], ",") lens := strings.Split(cts[1][0:idx], ",")
len1, err = strconv.Atoi(strings.TrimSpace(lens[0])) 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.Length = len1
col.Length2 = len2 col.Length2 = len2
if _, ok := core.SqlTypes[colType]; ok { if _, ok := core.SqlTypes[colType]; ok {

View File

@ -1037,6 +1037,7 @@ func (statement *Statement) genCountSql(bean interface{}) (string, []interface{}
if statement.Engine.Dialect().DBType() == "ql" { if statement.Engine.Dialect().DBType() == "ql" {
id = "" id = ""
} }
statement.attachInSql()
return statement.genSelectSql(fmt.Sprintf("count(%v) AS %v", id, statement.Engine.Quote("total"))), append(statement.Params, statement.BeanArgs...) return statement.genSelectSql(fmt.Sprintf("count(%v) AS %v", id, statement.Engine.Quote("total"))), append(statement.Params, statement.BeanArgs...)
} }