This commit is contained in:
Lunny Xiao 2020-02-21 09:11:12 +08:00
parent 7a1572c83d
commit ce1d3bb488
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
2 changed files with 6 additions and 4 deletions

View File

@ -26,11 +26,12 @@ func (engine *Engine) tbNameWithSchema(v string) string {
}
func isSubQuery(tbName string) bool {
if len(tbName) <= 6 {
const selStr = "select"
if len(tbName) <= len(selStr)+1 {
return false
}
return strings.EqualFold(tbName[:5], "select") || strings.EqualFold(tbName[:6], "(select")
return strings.EqualFold(tbName[:len(selStr)], selStr) || strings.EqualFold(tbName[:len(selStr)+1], "("+selStr)
}
// TableName returns table name with schema prefix if has

View File

@ -371,15 +371,16 @@ func TestJoinWithSubQuery(t *testing.T) {
assert.NoError(t, err)
assert.EqualValues(t, 1, cnt)
tbName := testEngine.Quote(testEngine.TableName("join_with_sub_query_depart", true))
var querys []JoinWithSubQuery1
err = testEngine.Join("INNER", builder.Select("id").From(testEngine.Quote(testEngine.TableName("join_with_sub_query_depart", true))),
err = testEngine.Join("INNER", builder.Select("id").From(tbName),
"join_with_sub_query_depart.id = join_with_sub_query1.depart_id").Find(&querys)
assert.NoError(t, err)
assert.EqualValues(t, 1, len(querys))
assert.EqualValues(t, q, querys[0])
querys = make([]JoinWithSubQuery1, 0, 1)
err = testEngine.Join("INNER", "(SELECT id FROM `join_with_sub_query_depart`) join_with_sub_query_depart", "join_with_sub_query_depart.id = join_with_sub_query1.depart_id").
err = testEngine.Join("INNER", "(SELECT id FROM "+tbName+") join_with_sub_query_depart", "join_with_sub_query_depart.id = join_with_sub_query1.depart_id").
Find(&querys)
assert.NoError(t, err)
assert.EqualValues(t, 1, len(querys))