From 0fb5abcfd379e91dc609c4bac359d68a2ed3d993 Mon Sep 17 00:00:00 2001 From: yaofeng-wang Date: Sat, 24 Dec 2022 17:36:13 +0800 Subject: [PATCH] fix: support implicit table alias --- chainable_api.go | 2 +- tests/table_test.go | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/chainable_api.go b/chainable_api.go index 8a92a9e3f..6deb7d007 100644 --- a/chainable_api.go +++ b/chainable_api.go @@ -55,7 +55,7 @@ func (db *DB) Clauses(conds ...clause.Expression) (tx *DB) { return } -var tableRegexp = regexp.MustCompile(`(?i).+? AS (\w+)\s*(?:$|,)`) +var tableRegexp = regexp.MustCompile(`(?i).+?(?: AS )?(\w+)\s*(?:$|,)`) // Table specify the table you would like to run db operations // diff --git a/tests/table_test.go b/tests/table_test.go index f538c6918..50fe3c41b 100644 --- a/tests/table_test.go +++ b/tests/table_test.go @@ -32,6 +32,11 @@ func TestTable(t *testing.T) { t.Errorf("Table with escape character, got %v", r.Statement.SQL.String()) } + r = dryDB.Table("user u").Select("name").Find(&User{}).Statement + if !regexp.MustCompile("SELECT .name. FROM user u WHERE .u.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) { + t.Errorf("Table with escape character, got %v", r.Statement.SQL.String()) + } + r = dryDB.Table("`people`").Table("`user`").Find(&User{}).Statement if !regexp.MustCompile("SELECT \\* FROM `user`").MatchString(r.Statement.SQL.String()) { t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())