Fix find alias bug (#1581)
Code improvement Fix find alias bug Reviewed-on: https://gitea.com/xorm/xorm/pulls/1581
This commit is contained in:
parent
257653726e
commit
8b100bb7d4
|
@ -37,7 +37,6 @@ var (
|
||||||
type Statement struct {
|
type Statement struct {
|
||||||
RefTable *schemas.Table
|
RefTable *schemas.Table
|
||||||
dialect dialects.Dialect
|
dialect dialects.Dialect
|
||||||
//Engine *Engine
|
|
||||||
defaultTimeZone *time.Location
|
defaultTimeZone *time.Location
|
||||||
tagParser *tags.Parser
|
tagParser *tags.Parser
|
||||||
Start int
|
Start int
|
||||||
|
@ -985,8 +984,13 @@ func (statement *Statement) joinColumns(cols []*schemas.Column, includeTableName
|
||||||
func (statement *Statement) CondDeleted(col *schemas.Column) builder.Cond {
|
func (statement *Statement) CondDeleted(col *schemas.Column) builder.Cond {
|
||||||
var colName = col.Name
|
var colName = col.Name
|
||||||
if statement.JoinStr != "" {
|
if statement.JoinStr != "" {
|
||||||
colName = statement.quote(statement.TableName()) +
|
var prefix string
|
||||||
"." + statement.quote(col.Name)
|
if statement.TableAlias != "" {
|
||||||
|
prefix = statement.TableAlias
|
||||||
|
} else {
|
||||||
|
prefix = statement.TableName()
|
||||||
|
}
|
||||||
|
colName = statement.quote(prefix) + "." + statement.quote(col.Name)
|
||||||
}
|
}
|
||||||
var cond = builder.NewCond()
|
var cond = builder.NewCond()
|
||||||
if col.SQLType.IsNumeric() {
|
if col.SQLType.IsNumeric() {
|
||||||
|
|
|
@ -99,10 +99,11 @@ func (session *Session) find(rowsSlicePtr interface{}, condiBean ...interface{})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var table = session.statement.RefTable
|
var (
|
||||||
|
table = session.statement.RefTable
|
||||||
var addedTableName = (len(session.statement.JoinStr) > 0)
|
addedTableName = (len(session.statement.JoinStr) > 0)
|
||||||
var autoCond builder.Cond
|
autoCond builder.Cond
|
||||||
|
)
|
||||||
if tp == tpStruct {
|
if tp == tpStruct {
|
||||||
if !session.statement.NoAutoCondition && len(condiBean) > 0 {
|
if !session.statement.NoAutoCondition && len(condiBean) > 0 {
|
||||||
var err error
|
var err error
|
||||||
|
@ -111,23 +112,13 @@ func (session *Session) find(rowsSlicePtr interface{}, condiBean ...interface{})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// !oinume! Add "<col> 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
|
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)
|
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() {
|
if isMap && !session.statement.ColumnMap.IsEmpty() {
|
||||||
for _, k := range session.statement.RefTable.PrimaryKeys {
|
for _, k := range session.statement.RefTable.PrimaryKeys {
|
||||||
session.statement.ColumnMap.Add(k)
|
session.statement.ColumnMap.Add(k)
|
||||||
|
|
|
@ -794,6 +794,16 @@ func TestMoreExtends(t *testing.T) {
|
||||||
Limit(10, 10).
|
Limit(10, 10).
|
||||||
Find(&books)
|
Find(&books)
|
||||||
assert.NoError(t, err)
|
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) {
|
func TestDistinctAndCols(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue