Merge branch 'master' into master_0124
This commit is contained in:
commit
fd4034e1e6
|
@ -1300,6 +1300,19 @@ func (db *postgres) GetIndexes(queryer core.Queryer, ctx context.Context, tableN
|
||||||
indexType = schemas.IndexType
|
indexType = schemas.IndexType
|
||||||
}
|
}
|
||||||
colNames = getIndexColName(indexdef)
|
colNames = getIndexColName(indexdef)
|
||||||
|
|
||||||
|
isSkip := false
|
||||||
|
//Oid It's a special index. You can't put it in
|
||||||
|
for _, element := range colNames {
|
||||||
|
if "oid" == element {
|
||||||
|
isSkip = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if isSkip {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
var isRegular bool
|
var isRegular bool
|
||||||
if strings.HasPrefix(indexName, "IDX_"+tableName) || strings.HasPrefix(indexName, "UQE_"+tableName) {
|
if strings.HasPrefix(indexName, "IDX_"+tableName) || strings.HasPrefix(indexName, "UQE_"+tableName) {
|
||||||
newIdxName := indexName[5+len(tableName):]
|
newIdxName := indexName[5+len(tableName):]
|
||||||
|
|
|
@ -711,6 +711,36 @@ func TestFindAndCountWithGroupBy(t *testing.T) {
|
||||||
assert.EqualValues(t, 2, len(results))
|
assert.EqualValues(t, 2, len(results))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFindAndCountWithDistinct(t *testing.T) {
|
||||||
|
assert.NoError(t, PrepareEngine())
|
||||||
|
|
||||||
|
type FindAndCountWithDistinct struct {
|
||||||
|
Id int64
|
||||||
|
Age int `xorm:"index"`
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.NoError(t, testEngine.Sync(new(FindAndCountWithDistinct)))
|
||||||
|
|
||||||
|
_, err := testEngine.Insert([]FindAndCountWithDistinct{
|
||||||
|
{
|
||||||
|
Name: "test1",
|
||||||
|
Age: 10,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "test2",
|
||||||
|
Age: 20,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
var results []FindAndCountWithDistinct
|
||||||
|
cnt, err := testEngine.Distinct("`age`").FindAndCount(&results)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 2, cnt)
|
||||||
|
assert.EqualValues(t, 2, len(results))
|
||||||
|
}
|
||||||
|
|
||||||
type FindMapDevice struct {
|
type FindMapDevice struct {
|
||||||
Deviceid string `xorm:"pk"`
|
Deviceid string `xorm:"pk"`
|
||||||
Status int
|
Status int
|
||||||
|
|
|
@ -57,7 +57,7 @@ func (session *Session) FindAndCount(rowsSlicePtr interface{}, condiBean ...inte
|
||||||
if session.statement.SelectStr != "" {
|
if session.statement.SelectStr != "" {
|
||||||
session.statement.SelectStr = ""
|
session.statement.SelectStr = ""
|
||||||
}
|
}
|
||||||
if len(session.statement.ColumnMap) > 0 {
|
if len(session.statement.ColumnMap) > 0 && !session.statement.IsDistinct {
|
||||||
session.statement.ColumnMap = []string{}
|
session.statement.ColumnMap = []string{}
|
||||||
}
|
}
|
||||||
if session.statement.OrderStr != "" {
|
if session.statement.OrderStr != "" {
|
||||||
|
|
Loading…
Reference in New Issue