diff --git a/internal/statements/statement.go b/internal/statements/statement.go index e8675443..f8cb6f2d 100644 --- a/internal/statements/statement.go +++ b/internal/statements/statement.go @@ -35,9 +35,8 @@ var ( // Statement save all the sql info for executing SQL type Statement struct { - RefTable *schemas.Table - dialect dialects.Dialect - //Engine *Engine + RefTable *schemas.Table + dialect dialects.Dialect defaultTimeZone *time.Location tagParser *tags.Parser Start int @@ -985,8 +984,13 @@ func (statement *Statement) joinColumns(cols []*schemas.Column, includeTableName func (statement *Statement) CondDeleted(col *schemas.Column) builder.Cond { var colName = col.Name if statement.JoinStr != "" { - colName = statement.quote(statement.TableName()) + - "." + statement.quote(col.Name) + var prefix string + if statement.TableAlias != "" { + prefix = statement.TableAlias + } else { + prefix = statement.TableName() + } + colName = statement.quote(prefix) + "." + statement.quote(col.Name) } var cond = builder.NewCond() if col.SQLType.IsNumeric() { diff --git a/session_find.go b/session_find.go index 72882a28..960c1085 100644 --- a/session_find.go +++ b/session_find.go @@ -99,10 +99,11 @@ func (session *Session) find(rowsSlicePtr interface{}, condiBean ...interface{}) } } - var table = session.statement.RefTable - - var addedTableName = (len(session.statement.JoinStr) > 0) - var autoCond builder.Cond + var ( + table = session.statement.RefTable + addedTableName = (len(session.statement.JoinStr) > 0) + autoCond builder.Cond + ) if tp == tpStruct { if !session.statement.NoAutoCondition && len(condiBean) > 0 { var err error @@ -111,23 +112,13 @@ func (session *Session) find(rowsSlicePtr interface{}, condiBean ...interface{}) return err } } else { - // !oinume! Add " IS NULL" to WHERE whatever condiBean is given. - // See https://gitea.com/xorm/xorm/issues/179 if col := table.DeletedColumn(); col != nil && !session.statement.GetUnscoped() { // tag "deleted" is enabled - var colName = session.engine.Quote(col.Name) - if addedTableName { - var nm = session.statement.TableName() - if len(session.statement.TableAlias) > 0 { - nm = session.statement.TableAlias - } - colName = session.engine.Quote(nm) + "." + colName - } - autoCond = session.statement.CondDeleted(col) } } } + // if it's a map with Cols but primary key not in column list, we still need the primary key if isMap && !session.statement.ColumnMap.IsEmpty() { for _, k := range session.statement.RefTable.PrimaryKeys { session.statement.ColumnMap.Add(k) diff --git a/session_find_test.go b/session_find_test.go index 28ba1d60..c16d0a1b 100644 --- a/session_find_test.go +++ b/session_find_test.go @@ -794,6 +794,16 @@ func TestMoreExtends(t *testing.T) { Limit(10, 10). Find(&books) assert.NoError(t, err) + + books = make([]MoreExtendsBooksExtend, 0, len(books)) + err = testEngine.Table("more_extends_books"). + Alias("m"). + Select("m.*, more_extends_users.*"). + Join("INNER", "more_extends_users", "m.user_id = more_extends_users.id"). + Where("m.name LIKE ?", "abc"). + Limit(10, 10). + Find(&books) + assert.NoError(t, err) } func TestDistinctAndCols(t *testing.T) {