Some slight improvments

This commit is contained in:
Lunny Xiao 2022-04-24 16:28:06 +08:00
parent f7e9fb74ac
commit e9dbd365a3
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
4 changed files with 82 additions and 43 deletions

View File

@ -11,6 +11,7 @@ import (
"time"
"xorm.io/xorm"
"xorm.io/xorm/log"
"xorm.io/xorm/schemas"
"github.com/stretchr/testify/assert"
@ -142,8 +143,13 @@ func TestInsert(t *testing.T) {
assert.NoError(t, PrepareEngine())
assertSync(t, new(Userinfo))
user := Userinfo{0, "xiaolunwen", "dev", "lunny", time.Now(),
Userdetail{Id: 1}, 1.78, []byte{1, 2, 3}, true}
user := Userinfo{
0, "xiaolunwen", "dev", "lunny", time.Now(),
Userdetail{Id: 1},
1.78,
[]byte{1, 2, 3},
true,
}
cnt, err := testEngine.Insert(&user)
assert.NoError(t, err)
assert.EqualValues(t, 1, cnt, "insert not returned 1")
@ -161,8 +167,10 @@ func TestInsertAutoIncr(t *testing.T) {
assertSync(t, new(Userinfo))
// auto increment insert
user := Userinfo{Username: "xiaolunwen2", Departname: "dev", Alias: "lunny", Created: time.Now(),
Detail: Userdetail{Id: 1}, Height: 1.78, Avatar: []byte{1, 2, 3}, IsMan: true}
user := Userinfo{
Username: "xiaolunwen2", Departname: "dev", Alias: "lunny", Created: time.Now(),
Detail: Userdetail{Id: 1}, Height: 1.78, Avatar: []byte{1, 2, 3}, IsMan: true,
}
cnt, err := testEngine.Insert(&user)
assert.NoError(t, err)
assert.EqualValues(t, 1, cnt)
@ -184,7 +192,7 @@ func TestInsertDefault(t *testing.T) {
err := testEngine.Sync(di)
assert.NoError(t, err)
var di2 = DefaultInsert{Name: "test"}
di2 := DefaultInsert{Name: "test"}
_, err = testEngine.Omit(testEngine.GetColumnMapper().Obj2Table("Status")).Insert(&di2)
assert.NoError(t, err)
@ -210,7 +218,7 @@ func TestInsertDefault2(t *testing.T) {
err := testEngine.Sync(di)
assert.NoError(t, err)
var di2 = DefaultInsert2{Name: "test"}
di2 := DefaultInsert2{Name: "test"}
_, err = testEngine.Omit(testEngine.GetColumnMapper().Obj2Table("CheckTime")).Insert(&di2)
assert.NoError(t, err)
@ -438,7 +446,7 @@ func TestCreatedJsonTime(t *testing.T) {
assert.True(t, has)
assert.EqualValues(t, time.Time(ci5.Created).Unix(), time.Time(di5.Created).Unix())
var dis = make([]MyJSONTime, 0)
dis := make([]MyJSONTime, 0)
err = testEngine.Find(&dis)
assert.NoError(t, err)
}
@ -761,7 +769,7 @@ func TestInsertWhere(t *testing.T) {
assert.NoError(t, PrepareEngine())
assertSync(t, new(InsertWhere))
var i = InsertWhere{
i := InsertWhere{
RepoId: 1,
Width: 10,
Height: 20,
@ -871,7 +879,7 @@ func TestInsertExpr2(t *testing.T) {
assertSync(t, new(InsertExprsRelease))
var ie = InsertExprsRelease{
ie := InsertExprsRelease{
RepoId: 1,
IsTag: true,
}
@ -1046,7 +1054,7 @@ func TestInsertIntSlice(t *testing.T) {
assert.NoError(t, testEngine.Sync(new(InsertIntSlice)))
var v = InsertIntSlice{
v := InsertIntSlice{
NameIDs: []int{1, 2},
}
cnt, err := testEngine.Insert(&v)
@ -1063,7 +1071,7 @@ func TestInsertIntSlice(t *testing.T) {
assert.NoError(t, err)
assert.EqualValues(t, 1, cnt)
var v3 = InsertIntSlice{
v3 := InsertIntSlice{
NameIDs: nil,
}
cnt, err = testEngine.Insert(&v3)
@ -1201,3 +1209,34 @@ func TestInsertMultipleMap(t *testing.T) {
Name: "xiaolunwen",
}, res[1])
}
func BenchmarkInsertSingle(b *testing.B) {
b.StopTimer()
type BenchmarkInsertStruct struct {
Id int64
Login string
Name string
Age int
Nation string
Created time.Time `xorm:"created"`
Updated time.Time `xorm:"updated"`
}
if err := testEngine.Sync(new(BenchmarkInsertStruct)); err != nil {
b.Error(err)
}
testEngine.SetLogLevel(log.LOG_OFF)
b.StartTimer()
for n := 0; n < b.N; n++ {
if _, err := testEngine.Insert(&BenchmarkInsertStruct{
Login: "test",
Name: "the test account",
Age: 40,
Nation: "China",
}); err != nil {
b.Error(err)
}
}
}

View File

@ -43,8 +43,8 @@ func (statement *Statement) GenInsertSQL(colNames []string, args []interface{})
return "", nil, err
}
var hasInsertColumns = len(colNames) > 0
var needSeq = len(table.AutoIncrement) > 0 && (statement.dialect.URI().DBType == schemas.ORACLE || statement.dialect.URI().DBType == schemas.DAMENG)
hasInsertColumns := len(colNames) > 0
needSeq := len(table.AutoIncrement) > 0 && (statement.dialect.URI().DBType == schemas.ORACLE || statement.dialect.URI().DBType == schemas.DAMENG)
if needSeq {
for _, col := range colNames {
if strings.EqualFold(col, table.AutoIncrement) {
@ -188,7 +188,7 @@ func (statement *Statement) GenInsertMapSQL(columns []string, args []interface{}
tableName = statement.TableName()
)
if _, err := buf.WriteString(fmt.Sprintf("INSERT INTO %s (", statement.quote(tableName))); err != nil {
if _, err := fmt.Fprint(buf, "INSERT INTO ", statement.quote(tableName), " ("); err != nil {
return "", nil, err
}
@ -215,7 +215,7 @@ func (statement *Statement) GenInsertMapSQL(columns []string, args []interface{}
}
}
if _, err := buf.WriteString(fmt.Sprintf(" FROM %s WHERE ", statement.quote(tableName))); err != nil {
if _, err := fmt.Fprint(buf, " FROM ", statement.quote(tableName), " WHERE "); err != nil {
return "", nil, err
}
@ -253,7 +253,7 @@ func (statement *Statement) GenInsertMultipleMapSQL(columns []string, argss [][]
tableName = statement.TableName()
)
if _, err := buf.WriteString(fmt.Sprintf("INSERT INTO %s (", statement.quote(tableName))); err != nil {
if _, err := fmt.Fprint(buf, "INSERT INTO ", statement.quote(tableName), " ("); err != nil {
return "", nil, err
}

View File

@ -28,7 +28,7 @@ func (statement *Statement) GenQuerySQL(sqlOrArgs ...interface{}) (string, []int
return "", nil, ErrTableNotFound
}
var columnStr = statement.ColumnStr()
columnStr := statement.ColumnStr()
if len(statement.SelectStr) > 0 {
columnStr = statement.SelectStr
} else {
@ -83,7 +83,7 @@ func (statement *Statement) GenSumSQL(bean interface{}, columns ...string) (stri
return "", nil, err
}
var sumStrs = make([]string, 0, len(columns))
sumStrs := make([]string, 0, len(columns))
for _, colName := range columns {
if !strings.Contains(colName, " ") && !strings.Contains(colName, "(") {
colName = statement.quote(colName)
@ -119,7 +119,7 @@ func (statement *Statement) GenGetSQL(bean interface{}) (string, []interface{},
}
}
var columnStr = statement.ColumnStr()
columnStr := statement.ColumnStr()
if len(statement.SelectStr) > 0 {
columnStr = statement.SelectStr
} else {
@ -180,7 +180,7 @@ func (statement *Statement) GenCountSQL(beans ...interface{}) (string, []interfa
}
}
var selectSQL = statement.SelectStr
selectSQL := statement.SelectStr
if len(selectSQL) <= 0 {
if statement.IsDistinct {
selectSQL = fmt.Sprintf("count(DISTINCT %s)", statement.ColumnStr())
@ -211,8 +211,8 @@ func (statement *Statement) GenCountSQL(beans ...interface{}) (string, []interfa
func (statement *Statement) fromBuilder() *strings.Builder {
var builder strings.Builder
var quote = statement.quote
var dialect = statement.dialect
quote := statement.quote
dialect := statement.dialect
builder.WriteString(" FROM ")
@ -304,7 +304,7 @@ func (statement *Statement) genSelectSQL(columnStr string, needLimit, needOrderB
}
var buf strings.Builder
fmt.Fprintf(&buf, "SELECT %v%v%v%v%v", distinct, top, columnStr, fromStr, whereStr)
fmt.Fprint(&buf, "SELECT ", distinct, top, columnStr, fromStr, whereStr)
if len(mssqlCondi) > 0 {
if len(whereStr) > 0 {
fmt.Fprint(&buf, " AND ", mssqlCondi)
@ -326,9 +326,9 @@ func (statement *Statement) genSelectSQL(columnStr string, needLimit, needOrderB
if dialect.URI().DBType != schemas.MSSQL && dialect.URI().DBType != schemas.ORACLE {
if statement.Start > 0 {
if pLimitN != nil {
fmt.Fprintf(&buf, " LIMIT %v OFFSET %v", *pLimitN, statement.Start)
fmt.Fprint(&buf, " LIMIT ", *pLimitN, " OFFSET ", statement.Start)
} else {
fmt.Fprintf(&buf, " LIMIT 0 OFFSET %v", statement.Start)
fmt.Fprint(&buf, " LIMIT 0 OFFSET ", statement.Start)
}
} else if pLimitN != nil {
fmt.Fprint(&buf, " LIMIT ", *pLimitN)
@ -341,8 +341,8 @@ func (statement *Statement) genSelectSQL(columnStr string, needLimit, needOrderB
if rawColStr == "*" {
rawColStr = "at.*"
}
fmt.Fprintf(&buf, "SELECT %v FROM (SELECT %v,ROWNUM RN FROM (%v) at WHERE ROWNUM <= %d) aat WHERE RN > %d",
columnStr, rawColStr, oldString, statement.Start+*pLimitN, statement.Start)
fmt.Fprint(&buf, "SELECT ", columnStr, " FROM (SELECT ", rawColStr, ",ROWNUM RN FROM (", oldString, ") at WHERE ROWNUM <= ", statement.Start+*pLimitN, ") aat WHERE RN > ",
statement.Start)
}
}
}
@ -436,7 +436,7 @@ func (statement *Statement) GenFindSQL(autoCond builder.Cond) (string, []interfa
return "", nil, ErrTableNotFound
}
var columnStr = statement.ColumnStr()
columnStr := statement.ColumnStr()
if len(statement.SelectStr) > 0 {
columnStr = statement.SelectStr
} else {

View File

@ -156,14 +156,14 @@ func (session *Session) insertMultipleStruct(rowsSlicePtr interface{}) (int64, e
}
args = append(args, val)
var colName = col.Name
colName := col.Name
session.afterClosures = append(session.afterClosures, func(bean interface{}) {
col := table.GetColumn(colName)
setColumnTime(bean, col, t)
})
} else if col.IsVersion && session.statement.CheckVersion {
args = append(args, 1)
var colName = col.Name
colName := col.Name
session.afterClosures = append(session.afterClosures, func(bean interface{}) {
col := table.GetColumn(colName)
setColumnInt(bean, col, 1)
@ -276,7 +276,7 @@ func (session *Session) insertStruct(bean interface{}) (int64, error) {
processor.BeforeInsert()
}
var tableName = session.statement.TableName()
tableName := session.statement.TableName()
table := session.statement.RefTable
colNames, args, err := session.genInsertColumns(bean)
@ -470,7 +470,7 @@ func (session *Session) genInsertColumns(bean interface{}) ([]string, []interfac
if session.statement.OmitColumnMap.Contain(col.Name) {
continue
}
if len(session.statement.ColumnMap) > 0 && !session.statement.ColumnMap.Contain(col.Name) {
if !session.statement.ColumnMap.Contain(col.Name) {
continue
}
if session.statement.IncrColumns.IsColExist(col.Name) {
@ -517,7 +517,7 @@ func (session *Session) genInsertColumns(bean interface{}) ([]string, []interfac
}
args = append(args, val)
var colName = col.Name
colName := col.Name
session.afterClosures = append(session.afterClosures, func(bean interface{}) {
col := table.GetColumn(colName)
setColumnTime(bean, col, t)
@ -547,7 +547,7 @@ func (session *Session) insertMapInterface(m map[string]interface{}) (int64, err
return 0, ErrTableNotFound
}
var columns = make([]string, 0, len(m))
columns := make([]string, 0, len(m))
exprs := session.statement.ExprColumns
for k := range m {
if !exprs.IsColExist(k) {
@ -556,7 +556,7 @@ func (session *Session) insertMapInterface(m map[string]interface{}) (int64, err
}
sort.Strings(columns)
var args = make([]interface{}, 0, len(m))
args := make([]interface{}, 0, len(m))
for _, colName := range columns {
args = append(args, m[colName])
}
@ -574,7 +574,7 @@ func (session *Session) insertMultipleMapInterface(maps []map[string]interface{}
return 0, ErrTableNotFound
}
var columns = make([]string, 0, len(maps[0]))
columns := make([]string, 0, len(maps[0]))
exprs := session.statement.ExprColumns
for k := range maps[0] {
if !exprs.IsColExist(k) {
@ -583,9 +583,9 @@ func (session *Session) insertMultipleMapInterface(maps []map[string]interface{}
}
sort.Strings(columns)
var argss = make([][]interface{}, 0, len(maps))
argss := make([][]interface{}, 0, len(maps))
for _, m := range maps {
var args = make([]interface{}, 0, len(m))
args := make([]interface{}, 0, len(m))
for _, colName := range columns {
args = append(args, m[colName])
}
@ -605,7 +605,7 @@ func (session *Session) insertMapString(m map[string]string) (int64, error) {
return 0, ErrTableNotFound
}
var columns = make([]string, 0, len(m))
columns := make([]string, 0, len(m))
exprs := session.statement.ExprColumns
for k := range m {
if !exprs.IsColExist(k) {
@ -615,7 +615,7 @@ func (session *Session) insertMapString(m map[string]string) (int64, error) {
sort.Strings(columns)
var args = make([]interface{}, 0, len(m))
args := make([]interface{}, 0, len(m))
for _, colName := range columns {
args = append(args, m[colName])
}
@ -633,7 +633,7 @@ func (session *Session) insertMultipleMapString(maps []map[string]string) (int64
return 0, ErrTableNotFound
}
var columns = make([]string, 0, len(maps[0]))
columns := make([]string, 0, len(maps[0]))
exprs := session.statement.ExprColumns
for k := range maps[0] {
if !exprs.IsColExist(k) {
@ -642,9 +642,9 @@ func (session *Session) insertMultipleMapString(maps []map[string]string) (int64
}
sort.Strings(columns)
var argss = make([][]interface{}, 0, len(maps))
argss := make([][]interface{}, 0, len(maps))
for _, m := range maps {
var args = make([]interface{}, 0, len(m))
args := make([]interface{}, 0, len(m))
for _, colName := range columns {
args = append(args, m[colName])
}