From 0d6d70c521d86e77dca5560f39a60bc74015d12c Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 10 Oct 2019 16:34:32 +0800 Subject: [PATCH 1/5] Fix update with Alias --- session_update.go | 7 ++++++- session_update_test.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/session_update.go b/session_update.go index c5c65a45..81dcc800 100644 --- a/session_update.go +++ b/session_update.go @@ -377,9 +377,14 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6 return 0, errors.New("No content found to be updated") } + var tableAlias = session.engine.Quote(tableName) + if session.statement.TableAlias != "" { + tableAlias = fmt.Sprintf("%s AS %s", tableAlias, session.statement.TableAlias) + } + sqlStr = fmt.Sprintf("UPDATE %v%v SET %v %v", top, - session.engine.Quote(tableName), + tableAlias, strings.Join(colNames, ", "), condSQL) diff --git a/session_update_test.go b/session_update_test.go index 77b188f9..386a68d1 100644 --- a/session_update_test.go +++ b/session_update_test.go @@ -1328,3 +1328,34 @@ func TestUpdateExprs(t *testing.T) { assert.EqualValues(t, 2, ue.NumIssues) assert.EqualValues(t, "lunny xiao", ue.Name) } + +func TestUpdateAlias(t *testing.T) { + assert.NoError(t, prepareEngine()) + + type UpdateAlias struct { + Id int64 + NumIssues int + Name string + } + + assertSync(t, new(UpdateAlias)) + + _, err := testEngine.Insert(&UpdateAlias{ + NumIssues: 1, + Name: "lunny", + }) + assert.NoError(t, err) + + _, err = testEngine.Alias("ua").Where("ua.id = ?", 1).Update(&UpdateAlias{ + NumIssues: 2, + Name: "lunny xiao", + }) + assert.NoError(t, err) + + var ue UpdateAlias + has, err := testEngine.Get(&ue) + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, 2, ue.NumIssues) + assert.EqualValues(t, "lunny xiao", ue.Name) +} -- 2.40.1 From 361409ba898d1c448a3eb7ed14cf494ed6c0bb86 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 10 Oct 2019 19:34:10 +0800 Subject: [PATCH 2/5] fix alias on mssql --- session_update.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/session_update.go b/session_update.go index 81dcc800..d6aa1f61 100644 --- a/session_update.go +++ b/session_update.go @@ -379,7 +379,12 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6 var tableAlias = session.engine.Quote(tableName) if session.statement.TableAlias != "" { - tableAlias = fmt.Sprintf("%s AS %s", tableAlias, session.statement.TableAlias) + switch session.engine.dialect.DBType() { + case core.MSSQL: + tableAlias = fmt.Sprintf("%s %s", tableAlias, session.statement.TableAlias) + default: + tableAlias = fmt.Sprintf("%s AS %s", tableAlias, session.statement.TableAlias) + } } sqlStr = fmt.Sprintf("UPDATE %v%v SET %v %v", -- 2.40.1 From 0e27d27f9e219e0bd3f9980e2f24c1085f21450c Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 23 Oct 2019 16:43:31 +0800 Subject: [PATCH 3/5] fix mssql test --- session_update.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/session_update.go b/session_update.go index d6aa1f61..18f00843 100644 --- a/session_update.go +++ b/session_update.go @@ -378,19 +378,22 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6 } var tableAlias = session.engine.Quote(tableName) + var fromSQL string if session.statement.TableAlias != "" { switch session.engine.dialect.DBType() { case core.MSSQL: - tableAlias = fmt.Sprintf("%s %s", tableAlias, session.statement.TableAlias) + tableAlias = fmt.Sprintf("%s", tableAlias) + fromSQL = fmt.Sprintf("FROM %s %s ", session.statement.TableAlias, tableAlias) default: tableAlias = fmt.Sprintf("%s AS %s", tableAlias, session.statement.TableAlias) } } - sqlStr = fmt.Sprintf("UPDATE %v%v SET %v %v", + sqlStr = fmt.Sprintf("UPDATE %v%v SET %v %v%v", top, tableAlias, strings.Join(colNames, ", "), + fromSQL, condSQL) res, err := session.exec(sqlStr, append(args, condArgs...)...) -- 2.40.1 From aa9404ac5ab7276c09e3995ceada169118b47757 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 13 Nov 2019 14:43:04 +0800 Subject: [PATCH 4/5] fix test --- session_update.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/session_update.go b/session_update.go index 18f00843..bb37ba30 100644 --- a/session_update.go +++ b/session_update.go @@ -382,8 +382,8 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6 if session.statement.TableAlias != "" { switch session.engine.dialect.DBType() { case core.MSSQL: - tableAlias = fmt.Sprintf("%s", tableAlias) - fromSQL = fmt.Sprintf("FROM %s %s ", session.statement.TableAlias, tableAlias) + tableAlias = session.statement.TableAlias + fromSQL = fmt.Sprintf("FROM %s %s ", tableAlias, session.statement.TableAlias) default: tableAlias = fmt.Sprintf("%s AS %s", tableAlias, session.statement.TableAlias) } -- 2.40.1 From f1cda4a8e4051e0b085332589b773f69cb5753cb Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 14 Nov 2019 10:01:00 +0800 Subject: [PATCH 5/5] fix alias --- session_update.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/session_update.go b/session_update.go index bb37ba30..231163e0 100644 --- a/session_update.go +++ b/session_update.go @@ -382,8 +382,8 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6 if session.statement.TableAlias != "" { switch session.engine.dialect.DBType() { case core.MSSQL: - tableAlias = session.statement.TableAlias fromSQL = fmt.Sprintf("FROM %s %s ", tableAlias, session.statement.TableAlias) + tableAlias = session.statement.TableAlias default: tableAlias = fmt.Sprintf("%s AS %s", tableAlias, session.statement.TableAlias) } -- 2.40.1