Fix tests
This commit is contained in:
parent
20eb15c4c1
commit
b5893755cb
|
@ -551,6 +551,12 @@ func (db *dameng) Version(ctx context.Context, queryer core.Queryer) (*schemas.V
|
|||
}, nil
|
||||
}
|
||||
|
||||
func (db *dameng) Features() *DialectFeatures {
|
||||
return &DialectFeatures{
|
||||
AutoincrMode: SequenceAutoincrMode,
|
||||
}
|
||||
}
|
||||
|
||||
func (db *dameng) SQLType(c *schemas.Column) string {
|
||||
var res string
|
||||
switch t := c.SQLType.Name; t {
|
||||
|
@ -561,7 +567,7 @@ func (db *dameng) SQLType(c *schemas.Column) string {
|
|||
case schemas.BigInt,
|
||||
schemas.UnsignedBigInt, schemas.UnsignedBit, schemas.UnsignedInt,
|
||||
schemas.Serial, schemas.BigSerial:
|
||||
res = "BIGINT"
|
||||
return "BIGINT"
|
||||
case schemas.Bit, schemas.Bool:
|
||||
return schemas.Bit
|
||||
case schemas.Binary, schemas.VarBinary, schemas.Blob, schemas.TinyBlob, schemas.MediumBlob, schemas.LongBlob, schemas.Bytea:
|
||||
|
|
|
@ -38,11 +38,21 @@ func (uri *URI) SetSchema(schema string) {
|
|||
}
|
||||
}
|
||||
|
||||
const (
|
||||
IncrAutoincrMode = iota
|
||||
SequenceAutoincrMode
|
||||
)
|
||||
|
||||
type DialectFeatures struct {
|
||||
AutoincrMode int // 0 autoincrement column, 1 sequence
|
||||
}
|
||||
|
||||
// Dialect represents a kind of database
|
||||
type Dialect interface {
|
||||
Init(*URI) error
|
||||
URI() *URI
|
||||
Version(ctx context.Context, queryer core.Queryer) (*schemas.Version, error)
|
||||
Features() *DialectFeatures
|
||||
|
||||
SQLType(*schemas.Column) string
|
||||
Alias(string) string // return what a sql type's alias of
|
||||
|
|
|
@ -282,6 +282,12 @@ func (db *mssql) Version(ctx context.Context, queryer core.Queryer) (*schemas.Ve
|
|||
}, nil
|
||||
}
|
||||
|
||||
func (db *mssql) Features() *DialectFeatures {
|
||||
return &DialectFeatures{
|
||||
AutoincrMode: IncrAutoincrMode,
|
||||
}
|
||||
}
|
||||
|
||||
func (db *mssql) SQLType(c *schemas.Column) string {
|
||||
var res string
|
||||
switch t := c.SQLType.Name; t {
|
||||
|
|
|
@ -244,6 +244,12 @@ func (db *mysql) Version(ctx context.Context, queryer core.Queryer) (*schemas.Ve
|
|||
}, nil
|
||||
}
|
||||
|
||||
func (db *mysql) Features() *DialectFeatures {
|
||||
return &DialectFeatures{
|
||||
AutoincrMode: IncrAutoincrMode,
|
||||
}
|
||||
}
|
||||
|
||||
func (db *mysql) SetParams(params map[string]string) {
|
||||
rowFormat, ok := params["rowFormat"]
|
||||
if ok {
|
||||
|
|
|
@ -539,6 +539,12 @@ func (db *oracle) Version(ctx context.Context, queryer core.Queryer) (*schemas.V
|
|||
}, nil
|
||||
}
|
||||
|
||||
func (db *oracle) Features() *DialectFeatures {
|
||||
return &DialectFeatures{
|
||||
AutoincrMode: SequenceAutoincrMode,
|
||||
}
|
||||
}
|
||||
|
||||
func (db *oracle) SQLType(c *schemas.Column) string {
|
||||
var res string
|
||||
switch t := c.SQLType.Name; t {
|
||||
|
|
|
@ -941,6 +941,12 @@ func (db *postgres) SQLType(c *schemas.Column) string {
|
|||
return res
|
||||
}
|
||||
|
||||
func (db *postgres) Features() *DialectFeatures {
|
||||
return &DialectFeatures{
|
||||
AutoincrMode: IncrAutoincrMode,
|
||||
}
|
||||
}
|
||||
|
||||
func (db *postgres) ColumnTypeKind(t string) int {
|
||||
switch strings.ToUpper(t) {
|
||||
case "DATETIME", "TIMESTAMP":
|
||||
|
|
|
@ -184,6 +184,12 @@ func (db *sqlite3) Version(ctx context.Context, queryer core.Queryer) (*schemas.
|
|||
}, nil
|
||||
}
|
||||
|
||||
func (db *sqlite3) Features() *DialectFeatures {
|
||||
return &DialectFeatures{
|
||||
AutoincrMode: IncrAutoincrMode,
|
||||
}
|
||||
}
|
||||
|
||||
func (db *sqlite3) SetQuotePolicy(quotePolicy QuotePolicy) {
|
||||
switch quotePolicy {
|
||||
case QuotePolicyNone:
|
||||
|
|
|
@ -62,8 +62,8 @@ func TestCacheFind(t *testing.T) {
|
|||
}
|
||||
|
||||
boxes = make([]MailBox, 0, 2)
|
||||
assert.NoError(t, testEngine.Alias("a").Where(testEngine.Quote("a.id")+" > -1").
|
||||
Asc(testEngine.Quote("a.id")).Find(&boxes))
|
||||
assert.NoError(t, testEngine.Alias("a").Where("`a`.`id`> -1").
|
||||
Asc("`a`.`id`").Find(&boxes))
|
||||
assert.EqualValues(t, 2, len(boxes))
|
||||
for i, box := range boxes {
|
||||
assert.Equal(t, inserts[i].Id, box.Id)
|
||||
|
@ -78,8 +78,8 @@ func TestCacheFind(t *testing.T) {
|
|||
}
|
||||
|
||||
boxes2 := make([]MailBox4, 0, 2)
|
||||
assert.NoError(t, testEngine.Table("mail_box").Where(testEngine.Quote("mail_box.id")+" > -1").
|
||||
Asc(testEngine.Quote("mail_box.id")).Find(&boxes2))
|
||||
assert.NoError(t, testEngine.Table("mail_box").Where("`mail_box`.`id` > -1").
|
||||
Asc("mail_box.id").Find(&boxes2))
|
||||
assert.EqualValues(t, 2, len(boxes2))
|
||||
for i, box := range boxes2 {
|
||||
assert.Equal(t, inserts[i].Id, box.Id)
|
||||
|
@ -166,14 +166,14 @@ func TestCacheGet(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
var box1 MailBox3
|
||||
has, err := testEngine.Where(testEngine.Quote("id")+" = ?", inserts[0].Id).Get(&box1)
|
||||
has, err := testEngine.Where("`id` = ?", inserts[0].Id).Get(&box1)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, "user1", box1.Username)
|
||||
assert.EqualValues(t, "pass1", box1.Password)
|
||||
|
||||
var box2 MailBox3
|
||||
has, err = testEngine.Where(testEngine.Quote("id")+" = ?", inserts[0].Id).Get(&box2)
|
||||
has, err = testEngine.Where("`id` = ?", inserts[0].Id).Get(&box2)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, "user1", box2.Username)
|
||||
|
|
|
@ -32,7 +32,7 @@ func BenchmarkGetVars(b *testing.B) {
|
|||
b.StartTimer()
|
||||
var myname string
|
||||
for i := 0; i < b.N; i++ {
|
||||
has, err := testEngine.Cols("name").Table("benchmark_get_vars").Where("id=?", v.Id).Get(&myname)
|
||||
has, err := testEngine.Cols("name").Table("benchmark_get_vars").Where("`id`=?", v.Id).Get(&myname)
|
||||
b.StopTimer()
|
||||
myname = ""
|
||||
assert.True(b, has)
|
||||
|
|
|
@ -54,9 +54,9 @@ func TestSetExpr(t *testing.T) {
|
|||
|
||||
tableName := testEngine.TableName(new(UserExprIssue), true)
|
||||
cnt, err = testEngine.SetExpr("issue_id",
|
||||
builder.Select(testEngine.Quote("id")).
|
||||
builder.Select("`id`").
|
||||
From(testEngine.Quote(tableName)).
|
||||
Where(builder.Eq{testEngine.Quote("id"): issue.Id})).
|
||||
Where(builder.Eq{"`id`": issue.Id})).
|
||||
ID(1).
|
||||
Update(new(UserExpr))
|
||||
assert.NoError(t, err)
|
||||
|
|
|
@ -216,7 +216,7 @@ func TestFindAndCount(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
var results []FindAndCount
|
||||
sess := testEngine.Where(testEngine.Quote("name")+" = ?", "test1")
|
||||
sess := testEngine.Where("`name` = ?", "test1")
|
||||
conds := sess.Conds()
|
||||
err = sess.Find(&results)
|
||||
assert.NoError(t, err)
|
||||
|
|
|
@ -63,7 +63,7 @@ func TestSQLCount(t *testing.T) {
|
|||
|
||||
assertSync(t, new(UserinfoCount2), new(UserinfoBooks))
|
||||
|
||||
total, err := testEngine.SQL("SELECT count(" + testEngine.Quote("id") + ") FROM " + testEngine.TableName("userinfo_count2", true)).
|
||||
total, err := testEngine.SQL("SELECT count(`id`) FROM `" + testEngine.TableName("userinfo_count2", true) + "`").
|
||||
Count()
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 0, total)
|
||||
|
@ -89,7 +89,7 @@ func TestCountWithOthers(t *testing.T) {
|
|||
})
|
||||
assert.NoError(t, err)
|
||||
|
||||
total, err := testEngine.OrderBy("id desc").Limit(1).Count(new(CountWithOthers))
|
||||
total, err := testEngine.OrderBy("`id` desc").Limit(1).Count(new(CountWithOthers))
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 2, total)
|
||||
}
|
||||
|
@ -118,11 +118,11 @@ func TestWithTableName(t *testing.T) {
|
|||
})
|
||||
assert.NoError(t, err)
|
||||
|
||||
total, err := testEngine.OrderBy("id desc").Count(new(CountWithTableName))
|
||||
total, err := testEngine.OrderBy("`id` desc").Count(new(CountWithTableName))
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 2, total)
|
||||
|
||||
total, err = testEngine.OrderBy("id desc").Count(CountWithTableName{})
|
||||
total, err = testEngine.OrderBy("`id` desc").Count(CountWithTableName{})
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 2, total)
|
||||
}
|
||||
|
@ -146,7 +146,7 @@ func TestCountWithSelectCols(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 2, total)
|
||||
|
||||
total, err = testEngine.Select("count(id)").Count(CountWithTableName{})
|
||||
total, err = testEngine.Select("count(`id`)").Count(CountWithTableName{})
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 2, total)
|
||||
}
|
||||
|
@ -166,7 +166,7 @@ func TestCountWithGroupBy(t *testing.T) {
|
|||
})
|
||||
assert.NoError(t, err)
|
||||
|
||||
cnt, err := testEngine.GroupBy(testEngine.Quote("name")).Count(new(CountWithTableName))
|
||||
cnt, err := testEngine.GroupBy("`name`").Count(new(CountWithTableName))
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 2, cnt)
|
||||
}
|
||||
|
|
|
@ -48,19 +48,19 @@ func TestExistStruct(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
assert.False(t, has)
|
||||
|
||||
has, err = testEngine.Where(testEngine.Quote("name")+" = ?", "test1").Exist(&RecordExist{})
|
||||
has, err = testEngine.Where("`name` = ?", "test1").Exist(&RecordExist{})
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
|
||||
has, err = testEngine.Where(testEngine.Quote("name")+" = ?", "test2").Exist(&RecordExist{})
|
||||
has, err = testEngine.Where("`name` = ?", "test2").Exist(&RecordExist{})
|
||||
assert.NoError(t, err)
|
||||
assert.False(t, has)
|
||||
|
||||
has, err = testEngine.SQL("select * from "+testEngine.TableName("record_exist", true)+" where "+testEngine.Quote("name")+" = ?", "test1").Exist()
|
||||
has, err = testEngine.SQL("select * from `"+testEngine.TableName("record_exist", true)+"` where `name` = ?", "test1").Exist()
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
|
||||
has, err = testEngine.SQL("select * from "+testEngine.TableName("record_exist", true)+" where "+testEngine.Quote("name")+" = ?", "test2").Exist()
|
||||
has, err = testEngine.SQL("select * from `"+testEngine.TableName("record_exist", true)+"` where `name` = ?", "test2").Exist()
|
||||
assert.NoError(t, err)
|
||||
assert.False(t, has)
|
||||
|
||||
|
@ -68,11 +68,11 @@ func TestExistStruct(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
|
||||
has, err = testEngine.Table("record_exist").Where(testEngine.Quote("name")+" = ?", "test1").Exist()
|
||||
has, err = testEngine.Table("record_exist").Where("`name` = ?", "test1").Exist()
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
|
||||
has, err = testEngine.Table("record_exist").Where(testEngine.Quote("name")+" = ?", "test2").Exist()
|
||||
has, err = testEngine.Table("record_exist").Where("`name` = ?", "test2").Exist()
|
||||
assert.NoError(t, err)
|
||||
assert.False(t, has)
|
||||
|
||||
|
@ -123,46 +123,44 @@ func TestExistStructForJoin(t *testing.T) {
|
|||
session := testEngine.NewSession()
|
||||
defer session.Close()
|
||||
|
||||
var q = testEngine.Quote
|
||||
|
||||
session.Table("number").
|
||||
Join("INNER", "order_list", q("order_list.id")+" = "+q("number.lid")).
|
||||
Join("LEFT", "player", q("player.id")+" = "+q("order_list.eid")).
|
||||
Where(q("number.lid")+" = ?", 1)
|
||||
Join("INNER", "order_list", "`order_list`.`id` = `number`.`lid`").
|
||||
Join("LEFT", "player", "`player`.`id` = `order_list`.`eid`").
|
||||
Where("`number`.`lid` = ?", 1)
|
||||
has, err := session.Exist()
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
|
||||
session.Table("number").
|
||||
Join("INNER", "order_list", q("order_list.id")+" = "+q("number.lid")).
|
||||
Join("LEFT", "player", q("player.id")+" = "+q("order_list.eid")).
|
||||
Where("number.lid = ?", 2)
|
||||
Join("INNER", "order_list", "`order_list`.`id` = `number`.`lid`").
|
||||
Join("LEFT", "player", "`player`.`id` = `order_list`.`eid`").
|
||||
Where("`number`.`lid` = ?", 2)
|
||||
has, err = session.Exist()
|
||||
assert.NoError(t, err)
|
||||
assert.False(t, has)
|
||||
|
||||
session.Table("number").
|
||||
Select("order_list.id").
|
||||
Join("INNER", "order_list", q("order_list.id")+" = "+q("number.lid")).
|
||||
Join("LEFT", "player", q("player.id")+" = "+q("order_list.eid")).
|
||||
Where("order_list.id = ?", 1)
|
||||
Select("`order_list`.`id`").
|
||||
Join("INNER", "order_list", "`order_list`.`id` = `number`.`lid`").
|
||||
Join("LEFT", "player", "`player`.`id` = `order_list`.`eid`").
|
||||
Where("`order_list`.`id` = ?", 1)
|
||||
has, err = session.Exist()
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
|
||||
session.Table("number").
|
||||
Select("player.id").
|
||||
Join("INNER", "order_list", q("order_list.id")+" = "+q("number.lid")).
|
||||
Join("LEFT", "player", q("player.id")+" = "+q("order_list.eid")).
|
||||
Where("player.id = ?", 2)
|
||||
Join("INNER", "order_list", "`order_list`.`id` = `number`.`lid`").
|
||||
Join("LEFT", "player", "`player`.`id` = `order_list`.`eid`").
|
||||
Where("`player`.`id` = ?", 2)
|
||||
has, err = session.Exist()
|
||||
assert.NoError(t, err)
|
||||
assert.False(t, has)
|
||||
|
||||
session.Table("number").
|
||||
Select("player.id").
|
||||
Join("INNER", "order_list", q("order_list.id")+" = "+q("number.lid")).
|
||||
Join("LEFT", "player", q("player.id")+" = "+q("order_list.eid"))
|
||||
Join("INNER", "order_list", "`order_list`.`id` = `number`.`lid`").
|
||||
Join("LEFT", "player", "`player`.`id` = `order_list`.`eid`")
|
||||
has, err = session.Exist()
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
|
@ -176,15 +174,15 @@ func TestExistStructForJoin(t *testing.T) {
|
|||
|
||||
session.Table("number").
|
||||
Select("player.id").
|
||||
Join("INNER", "order_list", q("order_list.id")+" = "+q("number.lid")).
|
||||
Join("LEFT", "player", q("player.id")+" = "+q("order_list.eid"))
|
||||
Join("INNER", "order_list", "`order_list`.`id` = `number`.`lid`").
|
||||
Join("LEFT", "player", "`player`.`id` = `order_list`.`eid`")
|
||||
has, err = session.Exist()
|
||||
assert.Error(t, err)
|
||||
assert.False(t, has)
|
||||
|
||||
session.Table("number").
|
||||
Select("player.id").
|
||||
Join("LEFT", "player", q("player.id")+" = "+q("number.lid"))
|
||||
Join("LEFT", "player", "`player`.`id` = `number`.`lid`")
|
||||
has, err = session.Exist()
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
|
|
|
@ -56,8 +56,8 @@ func TestJoinLimit(t *testing.T) {
|
|||
|
||||
var salaries []Salary
|
||||
err = testEngine.Table("salary").
|
||||
Join("INNER", "check_list", "check_list.id = salary.lid").
|
||||
Join("LEFT", "empsetting", "empsetting.id = check_list.eid").
|
||||
Join("INNER", "check_list", "`check_list`.`id` = `salary`.`lid`").
|
||||
Join("LEFT", "empsetting", "`empsetting`.`id` = `check_list`.`eid`").
|
||||
Limit(10, 0).
|
||||
Find(&salaries)
|
||||
assert.NoError(t, err)
|
||||
|
@ -69,10 +69,10 @@ func TestWhere(t *testing.T) {
|
|||
assertSync(t, new(Userinfo))
|
||||
|
||||
users := make([]Userinfo, 0)
|
||||
err := testEngine.Where("id > ?", 2).Find(&users)
|
||||
err := testEngine.Where("`id` > ?", 2).Find(&users)
|
||||
assert.NoError(t, err)
|
||||
|
||||
err = testEngine.Where("id > ?", 2).And("id < ?", 10).Find(&users)
|
||||
err = testEngine.Where("`id` > ?", 2).And("`id` < ?", 10).Find(&users)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
|
@ -125,50 +125,50 @@ func TestFind3(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
var teams []Team
|
||||
err = testEngine.Cols("`team`.id").
|
||||
Where("`team_user`.org_id=?", 1).
|
||||
And("`team_user`.uid=?", 2).
|
||||
Join("INNER", "`team_user`", "`team_user`.team_id=`team`.id").
|
||||
err = testEngine.Cols("`team`.`id`").
|
||||
Where("`team_user`.`org_id`=?", 1).
|
||||
And("`team_user`.`uid`=?", 2).
|
||||
Join("INNER", "`team_user`", "`team_user`.`team_id`=`team`.`id`").
|
||||
Find(&teams)
|
||||
assert.NoError(t, err)
|
||||
|
||||
teams = make([]Team, 0)
|
||||
err = testEngine.Cols("`team`.id").
|
||||
Where("`team_user`.org_id=?", 1).
|
||||
And("`team_user`.uid=?", 2).
|
||||
Join("INNER", teamUser, "`team_user`.team_id=`team`.id").
|
||||
Where("`team_user`.`org_id`=?", 1).
|
||||
And("`team_user`.`uid`=?", 2).
|
||||
Join("INNER", teamUser, "`team_user`.`team_id`=`team`.`id`").
|
||||
Find(&teams)
|
||||
assert.NoError(t, err)
|
||||
|
||||
teams = make([]Team, 0)
|
||||
err = testEngine.Cols("`team`.id").
|
||||
Where("`team_user`.org_id=?", 1).
|
||||
And("`team_user`.uid=?", 2).
|
||||
Join("INNER", []interface{}{teamUser}, "`team_user`.team_id=`team`.id").
|
||||
err = testEngine.Cols("`team`.`id`").
|
||||
Where("`team_user`.`org_id`=?", 1).
|
||||
And("`team_user`.`uid`=?", 2).
|
||||
Join("INNER", []interface{}{teamUser}, "`team_user`.`team_id`=`team`.`id`").
|
||||
Find(&teams)
|
||||
assert.NoError(t, err)
|
||||
|
||||
teams = make([]Team, 0)
|
||||
err = testEngine.Cols("`team`.id").
|
||||
Where("`tu`.org_id=?", 1).
|
||||
And("`tu`.uid=?", 2).
|
||||
Join("INNER", []string{"team_user", "tu"}, "`tu`.team_id=`team`.id").
|
||||
err = testEngine.Cols("`team`.`id`").
|
||||
Where("`tu`.`org_id`=?", 1).
|
||||
And("`tu`.`uid`=?", 2).
|
||||
Join("INNER", []string{"team_user", "tu"}, "`tu`.`team_id`=`team`.`id`").
|
||||
Find(&teams)
|
||||
assert.NoError(t, err)
|
||||
|
||||
teams = make([]Team, 0)
|
||||
err = testEngine.Cols("`team`.id").
|
||||
Where("`tu`.org_id=?", 1).
|
||||
And("`tu`.uid=?", 2).
|
||||
Join("INNER", []interface{}{"team_user", "tu"}, "`tu`.team_id=`team`.id").
|
||||
err = testEngine.Cols("`team`.`id`").
|
||||
Where("`tu`.`org_id`=?", 1).
|
||||
And("`tu`.`uid`=?", 2).
|
||||
Join("INNER", []interface{}{"team_user", "tu"}, "`tu`.`team_id`=`team`.`id`").
|
||||
Find(&teams)
|
||||
assert.NoError(t, err)
|
||||
|
||||
teams = make([]Team, 0)
|
||||
err = testEngine.Cols("`team`.id").
|
||||
Where("`tu`.org_id=?", 1).
|
||||
And("`tu`.uid=?", 2).
|
||||
Join("INNER", []interface{}{teamUser, "tu"}, "`tu`.team_id=`team`.id").
|
||||
err = testEngine.Cols("`team`.`id`").
|
||||
Where("`tu`.`org_id`=?", 1).
|
||||
And("`tu`.`uid`=?", 2).
|
||||
Join("INNER", []interface{}{teamUser, "tu"}, "`tu`.`team_id`=`team`.`id`").
|
||||
Find(&teams)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
@ -241,7 +241,7 @@ func TestOrder(t *testing.T) {
|
|||
assertSync(t, new(Userinfo))
|
||||
|
||||
users := make([]Userinfo, 0)
|
||||
err := testEngine.OrderBy("id desc").Find(&users)
|
||||
err := testEngine.OrderBy("`id` desc").Find(&users)
|
||||
assert.NoError(t, err)
|
||||
|
||||
users2 := make([]Userinfo, 0)
|
||||
|
@ -254,7 +254,7 @@ func TestGroupBy(t *testing.T) {
|
|||
assertSync(t, new(Userinfo))
|
||||
|
||||
users := make([]Userinfo, 0)
|
||||
err := testEngine.GroupBy("id, username").Find(&users)
|
||||
err := testEngine.GroupBy("`id`, `username`").Find(&users)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
|
@ -263,7 +263,7 @@ func TestHaving(t *testing.T) {
|
|||
assertSync(t, new(Userinfo))
|
||||
|
||||
users := make([]Userinfo, 0)
|
||||
err := testEngine.GroupBy("username").Having("username='xlw'").Find(&users)
|
||||
err := testEngine.GroupBy("`username`").Having("`username`='xlw'").Find(&users)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
|
@ -499,7 +499,7 @@ func TestFindAndCountOneFunc(t *testing.T) {
|
|||
assert.EqualValues(t, 2, cnt)
|
||||
|
||||
results = make([]FindAndCountStruct, 0, 1)
|
||||
cnt, err = testEngine.Where("msg = ?", true).FindAndCount(&results)
|
||||
cnt, err = testEngine.Where("`msg` = ?", true).FindAndCount(&results)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 1, len(results))
|
||||
assert.EqualValues(t, 1, cnt)
|
||||
|
@ -549,21 +549,21 @@ func TestFindAndCountOneFunc(t *testing.T) {
|
|||
}, results[0])
|
||||
|
||||
results = make([]FindAndCountStruct, 0, 1)
|
||||
cnt, err = testEngine.Where("msg = ?", true).Select("id, content, msg").
|
||||
cnt, err = testEngine.Where("`msg` = ?", true).Select("`id`, `content`, `msg`").
|
||||
Limit(1).FindAndCount(&results)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 1, len(results))
|
||||
assert.EqualValues(t, 1, cnt)
|
||||
|
||||
results = make([]FindAndCountStruct, 0, 1)
|
||||
cnt, err = testEngine.Where("msg = ?", true).Cols("id", "content", "msg").
|
||||
cnt, err = testEngine.Where("`msg` = ?", true).Cols("id", "content", "msg").
|
||||
Limit(1).FindAndCount(&results)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 1, len(results))
|
||||
assert.EqualValues(t, 1, cnt)
|
||||
|
||||
results = make([]FindAndCountStruct, 0, 1)
|
||||
cnt, err = testEngine.Where("msg = ?", true).Desc("id").
|
||||
cnt, err = testEngine.Where("`msg` = ?", true).Desc("id").
|
||||
Limit(1).Cols("content").FindAndCount(&results)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 1, len(results))
|
||||
|
@ -649,7 +649,7 @@ func TestFindAndCount2(t *testing.T) {
|
|||
cnt, err = testEngine.
|
||||
Table(new(TestFindAndCountHotel)).
|
||||
Alias("t").
|
||||
Where("t.region like '6501%'").
|
||||
Where("`t`.`region` like '6501%'").
|
||||
Limit(10, 0).
|
||||
FindAndCount(&hotels)
|
||||
assert.NoError(t, err)
|
||||
|
@ -705,7 +705,7 @@ func TestFindAndCountWithGroupBy(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
var results []FindAndCountWithGroupBy
|
||||
cnt, err := testEngine.GroupBy("age").FindAndCount(&results)
|
||||
cnt, err := testEngine.GroupBy("`age`").FindAndCount(&results)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 2, cnt)
|
||||
assert.EqualValues(t, 2, len(results))
|
||||
|
@ -735,14 +735,14 @@ func TestFindMapStringId(t *testing.T) {
|
|||
|
||||
deviceMaps := make(map[string]*FindMapDevice, len(deviceIDs))
|
||||
err = testEngine.
|
||||
Where("status = ?", 1).
|
||||
Where("`status` = ?", 1).
|
||||
In("deviceid", deviceIDs).
|
||||
Find(&deviceMaps)
|
||||
assert.NoError(t, err)
|
||||
|
||||
deviceMaps2 := make(map[string]FindMapDevice, len(deviceIDs))
|
||||
err = testEngine.
|
||||
Where("status = ?", 1).
|
||||
Where("`status` = ?", 1).
|
||||
In("deviceid", deviceIDs).
|
||||
Find(&deviceMaps2)
|
||||
assert.NoError(t, err)
|
||||
|
@ -919,17 +919,17 @@ func TestFindJoin(t *testing.T) {
|
|||
assertSync(t, new(SceneItem), new(DeviceUserPrivrels), new(Order))
|
||||
|
||||
var scenes []SceneItem
|
||||
err := testEngine.Join("LEFT OUTER", "device_user_privrels", "device_user_privrels.device_id=scene_item.device_id").
|
||||
Where("scene_item.type=?", 3).Or("device_user_privrels.user_id=?", 339).Find(&scenes)
|
||||
err := testEngine.Join("LEFT OUTER", "device_user_privrels", "`device_user_privrels`.`device_id`=`scene_item`.`device_id`").
|
||||
Where("`scene_item`.`type`=?", 3).Or("`device_user_privrels`.`user_id`=?", 339).Find(&scenes)
|
||||
assert.NoError(t, err)
|
||||
|
||||
scenes = make([]SceneItem, 0)
|
||||
err = testEngine.Join("LEFT OUTER", new(DeviceUserPrivrels), "device_user_privrels.device_id=scene_item.device_id").
|
||||
Where("scene_item.type=?", 3).Or("device_user_privrels.user_id=?", 339).Find(&scenes)
|
||||
err = testEngine.Join("LEFT OUTER", new(DeviceUserPrivrels), "`device_user_privrels`.`device_id`=`scene_item`.`device_id`").
|
||||
Where("`scene_item`.`type`=?", 3).Or("`device_user_privrels`.`user_id`=?", 339).Find(&scenes)
|
||||
assert.NoError(t, err)
|
||||
|
||||
scenes = make([]SceneItem, 0)
|
||||
err = testEngine.Join("INNER", "order", "`scene_item`.device_id=`order`.id").Find(&scenes)
|
||||
err = testEngine.Join("INNER", "order", "`scene_item`.`device_id`=`order`.`id`").Find(&scenes)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
|
@ -949,7 +949,7 @@ func TestJoinFindLimit(t *testing.T) {
|
|||
assertSync(t, new(JoinFindLimit1), new(JoinFindLimit2))
|
||||
|
||||
var finds []JoinFindLimit1
|
||||
err := testEngine.Join("INNER", new(JoinFindLimit2), "join_find_limit2.eid=join_find_limit1.id").
|
||||
err := testEngine.Join("INNER", new(JoinFindLimit2), "`join_find_limit2`.`eid`=`join_find_limit1`.`id`").
|
||||
Limit(10, 10).Find(&finds)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
@ -981,9 +981,9 @@ func TestMoreExtends(t *testing.T) {
|
|||
assertSync(t, new(MoreExtendsUsers), new(MoreExtendsBooks))
|
||||
|
||||
var books []MoreExtendsBooksExtend
|
||||
err := testEngine.Table("more_extends_books").Select("more_extends_books.*, more_extends_users.*").
|
||||
Join("INNER", "more_extends_users", "more_extends_books.user_id = more_extends_users.id").
|
||||
Where("more_extends_books.name LIKE ?", "abc").
|
||||
err := testEngine.Table("more_extends_books").Select("`more_extends_books`.*, `more_extends_users`.*").
|
||||
Join("INNER", "more_extends_users", "`more_extends_books`.`user_id` = `more_extends_users`.`id`").
|
||||
Where("`more_extends_books`.`name` LIKE ?", "abc").
|
||||
Limit(10, 10).
|
||||
Find(&books)
|
||||
assert.NoError(t, err)
|
||||
|
@ -991,9 +991,9 @@ func TestMoreExtends(t *testing.T) {
|
|||
books = make([]MoreExtendsBooksExtend, 0, len(books))
|
||||
err = testEngine.Table("more_extends_books").
|
||||
Alias("m").
|
||||
Select("m.*, more_extends_users.*").
|
||||
Join("INNER", "more_extends_users", "m.user_id = more_extends_users.id").
|
||||
Where("m.name LIKE ?", "abc").
|
||||
Select("m.*, `more_extends_users`.*").
|
||||
Join("INNER", "more_extends_users", "`m`.`user_id` = `more_extends_users`.`id`").
|
||||
Where("`m`.`name` LIKE ?", "abc").
|
||||
Limit(10, 10).
|
||||
Find(&books)
|
||||
assert.NoError(t, err)
|
||||
|
@ -1038,11 +1038,11 @@ func TestUpdateFind(t *testing.T) {
|
|||
}
|
||||
_, err := session.Insert(&tuf)
|
||||
assert.NoError(t, err)
|
||||
_, err = session.Where("id = ?", tuf.Id).Update(&TestUpdateFind{})
|
||||
_, err = session.Where("`id` = ?", tuf.Id).Update(&TestUpdateFind{})
|
||||
assert.EqualError(t, xorm.ErrNoColumnsTobeUpdated, err.Error())
|
||||
|
||||
var tufs []TestUpdateFind
|
||||
err = session.Where("id = ?", tuf.Id).Find(&tufs)
|
||||
err = session.Where("`id` = ?", tuf.Id).Find(&tufs)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
|
|
|
@ -55,15 +55,15 @@ func TestGetVar(t *testing.T) {
|
|||
assert.Equal(t, 28, age)
|
||||
|
||||
var ageMax int
|
||||
has, err = testEngine.SQL("SELECT max(age) FROM "+testEngine.TableName("get_var", true)+" WHERE `id` = ?", data.Id).Get(&ageMax)
|
||||
has, err = testEngine.SQL("SELECT max(`age`) FROM `"+testEngine.TableName("get_var", true)+"` WHERE `id` = ?", data.Id).Get(&ageMax)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, true, has)
|
||||
assert.Equal(t, 28, ageMax)
|
||||
|
||||
var age2 int64
|
||||
has, err = testEngine.Table("get_var").Cols("age").
|
||||
Where("age > ?", 20).
|
||||
And("age < ?", 30).
|
||||
Where("`age` > ?", 20).
|
||||
And("`age` < ?", 30).
|
||||
Get(&age2)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, true, has)
|
||||
|
@ -77,8 +77,8 @@ func TestGetVar(t *testing.T) {
|
|||
|
||||
var age4 int16
|
||||
has, err = testEngine.Table("get_var").Cols("age").
|
||||
Where("age > ?", 20).
|
||||
And("age < ?", 30).
|
||||
Where("`age` > ?", 20).
|
||||
And("`age` < ?", 30).
|
||||
Get(&age4)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, true, has)
|
||||
|
@ -86,8 +86,8 @@ func TestGetVar(t *testing.T) {
|
|||
|
||||
var age5 int32
|
||||
has, err = testEngine.Table("get_var").Cols("age").
|
||||
Where("age > ?", 20).
|
||||
And("age < ?", 30).
|
||||
Where("`age` > ?", 20).
|
||||
And("`age` < ?", 30).
|
||||
Get(&age5)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, true, has)
|
||||
|
@ -101,8 +101,8 @@ func TestGetVar(t *testing.T) {
|
|||
|
||||
var age7 int64
|
||||
has, err = testEngine.Table("get_var").Cols("age").
|
||||
Where("age > ?", 20).
|
||||
And("age < ?", 30).
|
||||
Where("`age` > ?", 20).
|
||||
And("`age` < ?", 30).
|
||||
Get(&age7)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, true, has)
|
||||
|
@ -116,8 +116,8 @@ func TestGetVar(t *testing.T) {
|
|||
|
||||
var age9 int16
|
||||
has, err = testEngine.Table("get_var").Cols("age").
|
||||
Where("age > ?", 20).
|
||||
And("age < ?", 30).
|
||||
Where("`age` > ?", 20).
|
||||
And("`age` < ?", 30).
|
||||
Get(&age9)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, true, has)
|
||||
|
@ -125,8 +125,8 @@ func TestGetVar(t *testing.T) {
|
|||
|
||||
var age10 int32
|
||||
has, err = testEngine.Table("get_var").Cols("age").
|
||||
Where("age > ?", 20).
|
||||
And("age < ?", 30).
|
||||
Where("`age` > ?", 20).
|
||||
And("`age` < ?", 30).
|
||||
Get(&age10)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, true, has)
|
||||
|
@ -161,16 +161,16 @@ func TestGetVar(t *testing.T) {
|
|||
|
||||
var money2 float64
|
||||
if testEngine.Dialect().URI().DBType == schemas.MSSQL {
|
||||
has, err = testEngine.SQL("SELECT TOP 1 money FROM " + testEngine.TableName("get_var", true)).Get(&money2)
|
||||
has, err = testEngine.SQL("SELECT TOP 1 `money` FROM " + testEngine.Quote(testEngine.TableName("get_var", true))).Get(&money2)
|
||||
} else {
|
||||
has, err = testEngine.SQL("SELECT money FROM " + testEngine.TableName("get_var", true) + " LIMIT 1").Get(&money2)
|
||||
has, err = testEngine.SQL("SELECT `money` FROM `" + testEngine.TableName("get_var", true) + "` LIMIT 1").Get(&money2)
|
||||
}
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, true, has)
|
||||
assert.Equal(t, "1.5", fmt.Sprintf("%.1f", money2))
|
||||
|
||||
var money3 float64
|
||||
has, err = testEngine.SQL("SELECT money FROM " + testEngine.TableName("get_var", true) + " WHERE money > 20").Get(&money3)
|
||||
has, err = testEngine.SQL("SELECT `money` FROM `" + testEngine.TableName("get_var", true) + "` WHERE `money` > 20").Get(&money3)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, false, has)
|
||||
|
||||
|
@ -187,7 +187,7 @@ func TestGetVar(t *testing.T) {
|
|||
// for mymysql driver, interface{} will be []byte, so ignore it currently
|
||||
if testEngine.DriverName() != "mymysql" {
|
||||
var valuesInter = make(map[string]interface{})
|
||||
has, err = testEngine.Table("get_var").Where("id = ?", 1).Select("*").Get(&valuesInter)
|
||||
has, err = testEngine.Table("get_var").Where("`id` = ?", 1).Select("*").Get(&valuesInter)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, true, has)
|
||||
assert.Equal(t, 5, len(valuesInter))
|
||||
|
@ -243,7 +243,7 @@ func TestGetStruct(t *testing.T) {
|
|||
if testEngine.Dialect().URI().DBType == schemas.MSSQL {
|
||||
err = session.Begin()
|
||||
assert.NoError(t, err)
|
||||
_, err = session.Exec("SET IDENTITY_INSERT userinfo_get ON")
|
||||
_, err = session.Exec("SET IDENTITY_INSERT `userinfo_get` ON")
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
cnt, err := session.Insert(&UserinfoGet{Uid: 2})
|
||||
|
@ -300,6 +300,11 @@ func TestGetSlice(t *testing.T) {
|
|||
func TestGetMap(t *testing.T) {
|
||||
assert.NoError(t, PrepareEngine())
|
||||
|
||||
if testEngine.Dialect().Features().AutoincrMode == dialects.SequenceAutoincrMode {
|
||||
t.SkipNow()
|
||||
return
|
||||
}
|
||||
|
||||
type UserinfoMap struct {
|
||||
Uid int `xorm:"pk autoincr"`
|
||||
IsMan bool
|
||||
|
@ -308,7 +313,7 @@ func TestGetMap(t *testing.T) {
|
|||
assertSync(t, new(UserinfoMap))
|
||||
|
||||
tableName := testEngine.Quote(testEngine.TableName("userinfo_map", true))
|
||||
_, err := testEngine.Exec(fmt.Sprintf("INSERT INTO %s (is_man) VALUES (NULL)", tableName))
|
||||
_, err := testEngine.Exec(fmt.Sprintf("INSERT INTO %s (`is_man`) VALUES (NULL)", tableName))
|
||||
assert.NoError(t, err)
|
||||
|
||||
var valuesString = make(map[string]string)
|
||||
|
@ -479,7 +484,7 @@ func TestGetStructId(t *testing.T) {
|
|||
|
||||
//var id int64
|
||||
var maxid maxidst
|
||||
sql := "select max(id) as id from " + testEngine.TableName(&TestGetStruct{}, true)
|
||||
sql := "select max(`id`) as id from `" + testEngine.TableName(&TestGetStruct{}, true) + "`"
|
||||
has, err := testEngine.SQL(sql).Get(&maxid)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
|
@ -597,73 +602,78 @@ func TestGetNullVar(t *testing.T) {
|
|||
assert.NoError(t, PrepareEngine())
|
||||
assertSync(t, new(TestGetNullVarStruct))
|
||||
|
||||
affected, err := testEngine.Exec("insert into " + testEngine.TableName(new(TestGetNullVarStruct), true) + " (name,age) values (null,null)")
|
||||
if testEngine.Dialect().Features().AutoincrMode == dialects.SequenceAutoincrMode {
|
||||
t.SkipNow()
|
||||
return
|
||||
}
|
||||
|
||||
affected, err := testEngine.Exec("insert into `" + testEngine.TableName(new(TestGetNullVarStruct), true) + "` (`name`,`age`) values (null,null)")
|
||||
assert.NoError(t, err)
|
||||
a, _ := affected.RowsAffected()
|
||||
assert.EqualValues(t, 1, a)
|
||||
|
||||
var name string
|
||||
has, err := testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("name").Get(&name)
|
||||
has, err := testEngine.Table(new(TestGetNullVarStruct)).Where("`id` = ?", 1).Cols("name").Get(&name)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, "", name)
|
||||
|
||||
var age int
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age)
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("`id` = ?", 1).Cols("age").Get(&age)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, 0, age)
|
||||
|
||||
var age2 int8
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age2)
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("`id` = ?", 1).Cols("age").Get(&age2)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, 0, age2)
|
||||
|
||||
var age3 int16
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age3)
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("`id` = ?", 1).Cols("age").Get(&age3)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, 0, age3)
|
||||
|
||||
var age4 int32
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age4)
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("`id` = ?", 1).Cols("age").Get(&age4)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, 0, age4)
|
||||
|
||||
var age5 int64
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age5)
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("`id` = ?", 1).Cols("age").Get(&age5)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, 0, age5)
|
||||
|
||||
var age6 uint
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age6)
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("`id` = ?", 1).Cols("age").Get(&age6)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, 0, age6)
|
||||
|
||||
var age7 uint8
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age7)
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("`id` = ?", 1).Cols("age").Get(&age7)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, 0, age7)
|
||||
|
||||
var age8 int16
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age8)
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("`id` = ?", 1).Cols("age").Get(&age8)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, 0, age8)
|
||||
|
||||
var age9 int32
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age9)
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("`id` = ?", 1).Cols("age").Get(&age9)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, 0, age9)
|
||||
|
||||
var age10 int64
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age10)
|
||||
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("`id` = ?", 1).Cols("age").Get(&age10)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, 0, age10)
|
||||
|
@ -697,7 +707,7 @@ func TestCustomTypes(t *testing.T) {
|
|||
assert.EqualValues(t, "test", name)
|
||||
|
||||
var age MyInt
|
||||
has, err = testEngine.Table(new(TestCustomizeStruct)).ID(s.Id).Select("age").Get(&age)
|
||||
has, err = testEngine.Table(new(TestCustomizeStruct)).ID(s.Id).Select("`age`").Get(&age)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, 32, age)
|
||||
|
@ -759,7 +769,7 @@ func TestGetBigFloat(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
var m big.Float
|
||||
has, err := testEngine.Table("get_big_float").Cols("money").Where("id=?", gf.Id).Get(&m)
|
||||
has, err := testEngine.Table("get_big_float").Cols("money").Where("`id`=?", gf.Id).Get(&m)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.True(t, m.String() == gf.Money.String(), "%v != %v", m.String(), gf.Money.String())
|
||||
|
@ -785,7 +795,7 @@ func TestGetBigFloat(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
var m2 big.Float
|
||||
has, err := testEngine.Table("get_big_float2").Cols("money").Where("id=?", gf2.Id).Get(&m2)
|
||||
has, err := testEngine.Table("get_big_float2").Cols("money").Where("`id`=?", gf2.Id).Get(&m2)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.True(t, m2.String() == gf2.Money.String(), "%v != %v", m2.String(), gf2.Money.String())
|
||||
|
@ -825,7 +835,7 @@ func TestGetDecimal(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
var m decimal.Decimal
|
||||
has, err := testEngine.Table("get_decimal").Cols("money").Where("id=?", gf.Id).Get(&m)
|
||||
has, err := testEngine.Table("get_decimal").Cols("money").Where("`id`=?", gf.Id).Get(&m)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.True(t, m.String() == gf.Money.String(), "%v != %v", m.String(), gf.Money.String())
|
||||
|
@ -850,7 +860,7 @@ func TestGetDecimal(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
var m decimal.Decimal
|
||||
has, err := testEngine.Table("get_decimal2").Cols("money").Where("id=?", gf.Id).Get(&m)
|
||||
has, err := testEngine.Table("get_decimal2").Cols("money").Where("`id`=?", gf.Id).Get(&m)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.True(t, m.String() == gf.Money.String(), "%v != %v", m.String(), gf.Money.String())
|
||||
|
|
|
@ -740,7 +740,7 @@ func TestInsertWhere(t *testing.T) {
|
|||
i.Index = 1
|
||||
assert.EqualValues(t, i, j)
|
||||
|
||||
inserted, err = testEngine.Table(new(InsertWhere)).Where("repo_id=?", 1).
|
||||
inserted, err = testEngine.Table(new(InsertWhere)).Where("`repo_id`=?", 1).
|
||||
SetExpr("`index`", "coalesce(MAX(`index`),0)+1").
|
||||
Insert(map[string]interface{}{
|
||||
"repo_id": 1,
|
||||
|
@ -761,7 +761,7 @@ func TestInsertWhere(t *testing.T) {
|
|||
assert.EqualValues(t, "trest2", j2.Name)
|
||||
assert.EqualValues(t, 2, j2.Index)
|
||||
|
||||
inserted, err = testEngine.Table(new(InsertWhere)).Where("repo_id=?", 1).
|
||||
inserted, err = testEngine.Table(new(InsertWhere)).Where("`repo_id`=?", 1).
|
||||
SetExpr("`index`", "coalesce(MAX(`index`),0)+1").
|
||||
SetExpr("repo_id", "1").
|
||||
Insert(map[string]string{
|
||||
|
@ -777,7 +777,7 @@ func TestInsertWhere(t *testing.T) {
|
|||
assert.EqualValues(t, "trest3", j3.Name)
|
||||
assert.EqualValues(t, 3, j3.Index)
|
||||
|
||||
inserted, err = testEngine.Table(new(InsertWhere)).Where("repo_id=?", 1).
|
||||
inserted, err = testEngine.Table(new(InsertWhere)).Where("`repo_id`=?", 1).
|
||||
SetExpr("`index`", "coalesce(MAX(`index`),0)+1").
|
||||
Insert(map[string]interface{}{
|
||||
"repo_id": 1,
|
||||
|
@ -793,7 +793,7 @@ func TestInsertWhere(t *testing.T) {
|
|||
assert.EqualValues(t, "10';delete * from insert_where; --", j4.Name)
|
||||
assert.EqualValues(t, 4, j4.Index)
|
||||
|
||||
inserted, err = testEngine.Table(new(InsertWhere)).Where("repo_id=?", 1).
|
||||
inserted, err = testEngine.Table(new(InsertWhere)).Where("`repo_id`=?", 1).
|
||||
SetExpr("`index`", "coalesce(MAX(`index`),0)+1").
|
||||
Insert(map[string]interface{}{
|
||||
"repo_id": 1,
|
||||
|
|
|
@ -91,7 +91,7 @@ func TestBufferIterate(t *testing.T) {
|
|||
assert.EqualValues(t, 7, cnt)
|
||||
|
||||
cnt = 0
|
||||
err = testEngine.Where("id <= 10").BufferSize(2).Iterate(new(UserBufferIterate), func(i int, bean interface{}) error {
|
||||
err = testEngine.Where("`id` <= 10").BufferSize(2).Iterate(new(UserBufferIterate), func(i int, bean interface{}) error {
|
||||
user := bean.(*UserBufferIterate)
|
||||
assert.EqualValues(t, cnt+1, user.Id)
|
||||
assert.EqualValues(t, true, user.IsMan)
|
||||
|
|
|
@ -60,7 +60,7 @@ func TestExecTime(t *testing.T) {
|
|||
assert.EqualValues(t, now.In(testEngine.GetTZLocation()).Format("2006-01-02 15:04:05"), results[0]["created"])
|
||||
|
||||
var uet UserinfoExecTime
|
||||
has, err := testEngine.Where("uid=?", 1).Get(&uet)
|
||||
has, err := testEngine.Where("`uid`=?", 1).Get(&uet)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.EqualValues(t, now.In(testEngine.GetTZLocation()).Format("2006-01-02 15:04:05"), uet.Created.Format("2006-01-02 15:04:05"))
|
||||
|
|
|
@ -18,7 +18,7 @@ func TestClose(t *testing.T) {
|
|||
sess1.Close()
|
||||
assert.True(t, sess1.IsClosed())
|
||||
|
||||
sess2 := testEngine.Where("a = ?", 1)
|
||||
sess2 := testEngine.Where("`a` = ?", 1)
|
||||
sess2.Close()
|
||||
assert.True(t, sess2.IsClosed())
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ func TestTransaction(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
user2 := Userinfo{Username: "yyy"}
|
||||
_, err = session.Where("id = ?", 0).Update(&user2)
|
||||
_, err = session.Where("`id` = ?", 0).Update(&user2)
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = session.Delete(&user2)
|
||||
|
@ -70,10 +70,10 @@ func TestCombineTransaction(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
user2 := Userinfo{Username: "zzz"}
|
||||
_, err = session.Where("id = ?", 0).Update(&user2)
|
||||
_, err = session.Where("`id` = ?", 0).Update(&user2)
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = session.Exec("delete from "+testEngine.TableName("userinfo", true)+" where username = ?", user2.Username)
|
||||
_, err = session.Exec("delete from "+testEngine.TableName("userinfo", true)+" where `username` = ?", user2.Username)
|
||||
assert.NoError(t, err)
|
||||
|
||||
err = session.Commit()
|
||||
|
@ -113,7 +113,7 @@ func TestCombineTransactionSameMapper(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
user2 := Userinfo{Username: "zzz"}
|
||||
_, err = session.Where("id = ?", 0).Update(&user2)
|
||||
_, err = session.Where("`id` = ?", 0).Update(&user2)
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = session.Exec("delete from "+testEngine.TableName("`Userinfo`", true)+" where `Username` = ?", user2.Username)
|
||||
|
@ -144,7 +144,7 @@ func TestMultipleTransaction(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
user2 := MultipleTransaction{Name: "zzz"}
|
||||
_, err = session.Where("id = ?", 0).Update(&user2)
|
||||
_, err = session.Where("`id` = ?", 0).Update(&user2)
|
||||
assert.NoError(t, err)
|
||||
|
||||
err = session.Commit()
|
||||
|
@ -158,7 +158,7 @@ func TestMultipleTransaction(t *testing.T) {
|
|||
err = session.Begin()
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = session.Where("id=?", m1.Id).Delete(new(MultipleTransaction))
|
||||
_, err = session.Where("`id`=?", m1.Id).Delete(new(MultipleTransaction))
|
||||
assert.NoError(t, err)
|
||||
|
||||
err = session.Commit()
|
||||
|
|
|
@ -35,7 +35,7 @@ func TestUpdateMap(t *testing.T) {
|
|||
_, err := testEngine.Insert(&tb)
|
||||
assert.NoError(t, err)
|
||||
|
||||
cnt, err := testEngine.Table("update_table").Where("id = ?", tb.Id).Update(map[string]interface{}{
|
||||
cnt, err := testEngine.Table("update_table").Where("`id` = ?", tb.Id).Update(map[string]interface{}{
|
||||
"name": "test2",
|
||||
"age": 36,
|
||||
})
|
||||
|
@ -166,7 +166,7 @@ func TestForUpdate(t *testing.T) {
|
|||
// use lock
|
||||
fList := make([]ForUpdate, 0)
|
||||
session1.ForUpdate()
|
||||
session1.Where("id = ?", 1)
|
||||
session1.Where("`id` = ?", 1)
|
||||
err = session1.Find(&fList)
|
||||
switch {
|
||||
case err != nil:
|
||||
|
@ -187,7 +187,7 @@ func TestForUpdate(t *testing.T) {
|
|||
wg.Add(1)
|
||||
go func() {
|
||||
f2 := new(ForUpdate)
|
||||
session2.Where("id = ?", 1).ForUpdate()
|
||||
session2.Where("`id` = ?", 1).ForUpdate()
|
||||
has, err := session2.Get(f2) // wait release lock
|
||||
switch {
|
||||
case err != nil:
|
||||
|
@ -207,7 +207,7 @@ func TestForUpdate(t *testing.T) {
|
|||
wg2.Add(1)
|
||||
go func() {
|
||||
f3 := new(ForUpdate)
|
||||
session3.Where("id = ?", 1)
|
||||
session3.Where("`id` = ?", 1)
|
||||
has, err := session3.Get(f3) // wait release lock
|
||||
switch {
|
||||
case err != nil:
|
||||
|
@ -225,7 +225,7 @@ func TestForUpdate(t *testing.T) {
|
|||
|
||||
f := new(ForUpdate)
|
||||
f.Name = "updated by session1"
|
||||
session1.Where("id = ?", 1)
|
||||
session1.Where("`id` = ?", 1)
|
||||
session1.Update(f)
|
||||
|
||||
// release lock
|
||||
|
@ -300,7 +300,7 @@ func TestUpdateMap2(t *testing.T) {
|
|||
assert.NoError(t, PrepareEngine())
|
||||
assertSync(t, new(UpdateMustCols))
|
||||
|
||||
_, err := testEngine.Table("update_must_cols").Where("id =?", 1).Update(map[string]interface{}{
|
||||
_, err := testEngine.Table("update_must_cols").Where("`id` =?", 1).Update(map[string]interface{}{
|
||||
"bool": true,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
|
@ -825,7 +825,7 @@ func TestNewUpdate(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 0, af)
|
||||
|
||||
af, err = testEngine.Table(new(TbUserInfo)).Where("phone=?", "13126564922").Update(&changeUsr)
|
||||
af, err = testEngine.Table(new(TbUserInfo)).Where("`phone`=?", "13126564922").Update(&changeUsr)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 0, af)
|
||||
}
|
||||
|
@ -1197,7 +1197,7 @@ func TestUpdateAlias(t *testing.T) {
|
|||
})
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = testEngine.Alias("ua").Where("ua.id = ?", 1).Update(&UpdateAlias{
|
||||
_, err = testEngine.Alias("ua").Where("`ua`.`id` = ?", 1).Update(&UpdateAlias{
|
||||
NumIssues: 2,
|
||||
Name: "lunny xiao",
|
||||
})
|
||||
|
@ -1237,7 +1237,7 @@ func TestUpdateExprs2(t *testing.T) {
|
|||
assert.EqualValues(t, 1, inserted)
|
||||
|
||||
updated, err := testEngine.
|
||||
Where("repo_id = ? AND is_tag = ?", 1, false).
|
||||
Where("`repo_id` = ? AND `is_tag` = ?", 1, false).
|
||||
SetExpr("is_draft", true).
|
||||
SetExpr("num_commits", 0).
|
||||
SetExpr("sha1", "").
|
||||
|
@ -1308,7 +1308,7 @@ func TestUpdateIgnoreOnlyFromDBFields(t *testing.T) {
|
|||
|
||||
assertGetRecord := func() *TestOnlyFromDBField {
|
||||
var record TestOnlyFromDBField
|
||||
has, err := testEngine.Where("id = ?", 1).Get(&record)
|
||||
has, err := testEngine.Where("`id` = ?", 1).Get(&record)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, true, has)
|
||||
assert.EqualValues(t, "", record.OnlyFromDBField)
|
||||
|
|
|
@ -730,7 +730,7 @@ func TestLowerCase(t *testing.T) {
|
|||
|
||||
err := testEngine.Sync2(&Lowercase{})
|
||||
assert.NoError(t, err)
|
||||
_, err = testEngine.Where("id > 0").Delete(&Lowercase{})
|
||||
_, err = testEngine.Where("`id` > 0").Delete(&Lowercase{})
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = testEngine.Insert(&Lowercase{ended: 1})
|
||||
|
|
|
@ -324,7 +324,7 @@ func TestTimeUserDeleted(t *testing.T) {
|
|||
fmt.Println("user2 str", user2.CreatedAtStr, user2.UpdatedAtStr)
|
||||
|
||||
var user3 UserDeleted
|
||||
cnt, err = testEngine.Where("id = ?", "lunny").Delete(&user3)
|
||||
cnt, err = testEngine.Where("`id` = ?", "lunny").Delete(&user3)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 1, cnt)
|
||||
assert.True(t, !utils.IsTimeZero(user3.DeletedAt))
|
||||
|
@ -386,7 +386,7 @@ func TestTimeUserDeletedDiffLoc(t *testing.T) {
|
|||
fmt.Println("user2", user2.CreatedAt, user2.UpdatedAt, user2.DeletedAt)
|
||||
|
||||
var user3 UserDeleted2
|
||||
cnt, err = testEngine.Where("id = ?", "lunny").Delete(&user3)
|
||||
cnt, err = testEngine.Where("`id` = ?", "lunny").Delete(&user3)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 1, cnt)
|
||||
assert.True(t, !utils.IsTimeZero(user3.DeletedAt))
|
||||
|
@ -457,7 +457,7 @@ func TestCustomTimeUserDeleted(t *testing.T) {
|
|||
fmt.Println("user2", user2.CreatedAt, user2.UpdatedAt, user2.DeletedAt)
|
||||
|
||||
var user3 UserDeleted3
|
||||
cnt, err = testEngine.Where("id = ?", "lunny").Delete(&user3)
|
||||
cnt, err = testEngine.Where("`id` = ?", "lunny").Delete(&user3)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 1, cnt)
|
||||
assert.True(t, !utils.IsTimeZero(time.Time(user3.DeletedAt)))
|
||||
|
@ -519,7 +519,7 @@ func TestCustomTimeUserDeletedDiffLoc(t *testing.T) {
|
|||
fmt.Println("user2", user2.CreatedAt, user2.UpdatedAt, user2.DeletedAt)
|
||||
|
||||
var user3 UserDeleted4
|
||||
cnt, err = testEngine.Where("id = ?", "lunny").Delete(&user3)
|
||||
cnt, err = testEngine.Where("`id` = ?", "lunny").Delete(&user3)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 1, cnt)
|
||||
assert.True(t, !utils.IsTimeZero(time.Time(user3.DeletedAt)))
|
||||
|
|
|
@ -173,7 +173,7 @@ func TestNullStructUpdate(t *testing.T) {
|
|||
item.IsMan = sql.NullBool{Bool: true, Valid: true}
|
||||
item.Age = sql.NullInt64{Int64: 34, Valid: true}
|
||||
|
||||
_, err := testEngine.Where("age > ?", 34).Update(item)
|
||||
_, err := testEngine.Where("`age` > ?", 34).Update(item)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
|
@ -260,7 +260,7 @@ func TestNullStructIterate(t *testing.T) {
|
|||
assertSync(t, new(NullType))
|
||||
|
||||
if true {
|
||||
err := testEngine.Where("age IS NOT NULL").OrderBy("age").Iterate(new(NullType),
|
||||
err := testEngine.Where("`age` IS NOT NULL").OrderBy("age").Iterate(new(NullType),
|
||||
func(i int, bean interface{}) error {
|
||||
nultype := bean.(*NullType)
|
||||
fmt.Println(i, nultype)
|
||||
|
@ -276,7 +276,7 @@ func TestNullStructCount(t *testing.T) {
|
|||
|
||||
if true {
|
||||
item := new(NullType)
|
||||
_, err := testEngine.Where("age IS NOT NULL").Count(item)
|
||||
_, err := testEngine.Where("`age` IS NOT NULL").Count(item)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
}
|
||||
|
@ -286,7 +286,7 @@ func TestNullStructRows(t *testing.T) {
|
|||
assertSync(t, new(NullType))
|
||||
|
||||
item := new(NullType)
|
||||
rows, err := testEngine.Where("id > ?", 1).Rows(item)
|
||||
rows, err := testEngine.Where("`id` > ?", 1).Rows(item)
|
||||
assert.NoError(t, err)
|
||||
defer rows.Close()
|
||||
|
||||
|
@ -305,6 +305,6 @@ func TestNullStructDelete(t *testing.T) {
|
|||
_, err := testEngine.ID(1).Delete(item)
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = testEngine.Where("id > ?", 1).Delete(item)
|
||||
_, err = testEngine.Where("`id` > ?", 1).Delete(item)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
|
|
@ -11,8 +11,8 @@ func SliceEq(left, right []string) bool {
|
|||
if len(left) != len(right) {
|
||||
return false
|
||||
}
|
||||
sort.Sort(sort.StringSlice(left))
|
||||
sort.Sort(sort.StringSlice(right))
|
||||
sort.Strings(left)
|
||||
sort.Strings(right)
|
||||
for i := 0; i < len(left); i++ {
|
||||
if left[i] != right[i] {
|
||||
return false
|
||||
|
@ -20,3 +20,12 @@ func SliceEq(left, right []string) bool {
|
|||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func IndexSlice(s []string, c string) int {
|
||||
for i, ss := range s {
|
||||
if c == ss {
|
||||
return i
|
||||
}
|
||||
}
|
||||
return -1
|
||||
}
|
||||
|
|
|
@ -316,6 +316,7 @@ func (session *Session) insertStruct(bean interface{}) (int64, error) {
|
|||
var sql string
|
||||
var newArgs []interface{}
|
||||
var needCommit bool
|
||||
var id int64
|
||||
if session.engine.dialect.URI().DBType == schemas.ORACLE || session.engine.dialect.URI().DBType == schemas.DAMENG {
|
||||
if session.isAutoCommit { // if it's not in transaction
|
||||
if err := session.Begin(); err != nil {
|
||||
|
@ -327,13 +328,21 @@ func (session *Session) insertStruct(bean interface{}) (int64, error) {
|
|||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i := utils.IndexSlice(colNames, table.AutoIncrement)
|
||||
if i > -1 {
|
||||
id, err = convert.AsInt64(args[i])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
} else {
|
||||
sql = fmt.Sprintf("select %s.currval from dual", utils.SeqName(tableName))
|
||||
}
|
||||
} else {
|
||||
sql = sqlStr
|
||||
newArgs = args
|
||||
}
|
||||
|
||||
var id int64
|
||||
if id == 0 {
|
||||
err := session.queryRow(sql, newArgs...).Scan(&id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
|
@ -346,6 +355,7 @@ func (session *Session) insertStruct(bean interface{}) (int64, error) {
|
|||
if id == 0 {
|
||||
return 0, errors.New("insert successfully but not returned id")
|
||||
}
|
||||
}
|
||||
|
||||
defer handleAfterInsertProcessorFunc(bean)
|
||||
|
||||
|
|
Loading…
Reference in New Issue