修复使用 postgres 数据库时,位置参数重复,导致参数与值不对应的问题。 (#960)

* 修复使用 postgres 数据库时,位置参数重复,导致参数与值不对应的问题。

* 修复使用 postgres 数据库时,位置参数重复,导致参数与值不对应的问题。

Co-authored-by: toven <toven@advan.onaliyun.com>
This commit is contained in:
toven tang
2021-09-05 22:27:59 +08:00
committed by GitHub
parent 58874779e7
commit d179b342b2
3 changed files with 7 additions and 3 deletions

View File

@@ -125,7 +125,7 @@ func RawFieldNames(in interface{}, postgresSql ...bool) []string {
func PostgreSqlJoin(elems []string) string {
b := new(strings.Builder)
for index, e := range elems {
b.WriteString(fmt.Sprintf("%s = $%d, ", e, index+1))
b.WriteString(fmt.Sprintf("%s = $%d, ", e, index+2))
}
if b.Len() == 0 {

View File

@@ -121,5 +121,5 @@ func TestBuildSqlLike(t *testing.T) {
func TestJoin(t *testing.T) {
ret := PostgreSqlJoin([]string{"name", "age"})
assert.Equal(t, "name = $1, age = $2", ret)
assert.Equal(t, "name = $2, age = $3", ret)
}

View File

@@ -33,7 +33,11 @@ func genUpdate(table Table, withCache, postgreSql bool) (string, string, error)
keyVariableSet.AddStr(key.KeyLeft)
}
expressionValues = append(expressionValues, "data."+table.PrimaryKey.Name.ToCamel())
if postgreSql {
expressionValues = append([]string{"data." + table.PrimaryKey.Name.ToCamel()}, expressionValues...)
} else {
expressionValues = append(expressionValues, "data."+table.PrimaryKey.Name.ToCamel())
}
camelTableName := table.Name.ToCamel()
text, err := util.LoadTemplate(category, updateTemplateFile, template.Update)
if err != nil {