From cc28d9916190f1c2a822c9d36c4b5c0089a81259 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 30 Dec 2023 06:28:44 +0000 Subject: [PATCH] Fix use hint with join bug (#2384) Reviewed-on: https://gitea.com/xorm/xorm/pulls/2384 --- internal/statements/query.go | 2 +- tests/session_test.go | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/internal/statements/query.go b/internal/statements/query.go index a36d8ad3..e817403c 100644 --- a/internal/statements/query.go +++ b/internal/statements/query.go @@ -184,6 +184,7 @@ func (statement *Statement) writeFrom(w *builder.BytesWriter) error { statement.writeStrings(" FROM "), statement.writeTableName, statement.writeAlias, + statement.writeIndexHints, statement.writeJoins, ) } @@ -254,7 +255,6 @@ func (statement *Statement) writeSelect(buf *builder.BytesWriter, columnStr stri return statement.writeMultiple(buf, statement.writeSelectColumns(columnStr), statement.writeFrom, - statement.writeIndexHints, statement.writeWhere, statement.writeGroupBy, statement.writeHaving, diff --git a/tests/session_test.go b/tests/session_test.go index 3286ab2e..e4c4d5d6 100644 --- a/tests/session_test.go +++ b/tests/session_test.go @@ -65,7 +65,7 @@ func TestEnableSessionId(t *testing.T) { func TestIndexHint(t *testing.T) { assert.NoError(t, PrepareEngine()) - assertSync(t, new(Userinfo)) + assertSync(t, new(Userinfo), new(Userdetail)) if testEngine.Dialect().URI().DBType != "mysql" { return } @@ -78,4 +78,11 @@ func TestIndexHint(t *testing.T) { _, err = testEngine.Table("userinfo").IndexHint("USE", "GROUP BY", "UQE_userinfo_username").Get(new(Userinfo)) assert.NoError(t, err) + + // with join + _, err = testEngine.Table("userinfo"). + Join("LEFT", "userdetail", "userinfo.id = userdetail.id"). + IndexHint("USE", "", "UQE_userinfo_username"). + Get(new(Userinfo)) + assert.NoError(t, err) }