ecodeclub / eorm

简单 ORM 框架
Apache License 2.0
194 stars 64 forks source link

分库分表:结果集处理——聚合函数(不含 Group By 子句) #187

Closed juniaoshaonian closed 1 year ago

codecov[bot] commented 1 year ago

Codecov Report

Merging #187 (25ff222) into dev (96d0b3c) will increase coverage by 1.20%. The diff coverage is 96.27%.

@@            Coverage Diff             @@
##              dev     #187      +/-   ##
==========================================
+ Coverage   84.86%   86.07%   +1.20%     
==========================================
  Files          36       43       +7     
  Lines        2723     3045     +322     
==========================================
+ Hits         2311     2621     +310     
- Misses        335      343       +8     
- Partials       77       81       +4     
Impacted Files Coverage Δ
internal/merger/aggregatemerger/merger.go 92.15% <92.15%> (ø)
internal/merger/aggregatemerger/aggregator/avg.go 100.00% <100.00%> (ø)
...nternal/merger/aggregatemerger/aggregator/count.go 100.00% <100.00%> (ø)
internal/merger/aggregatemerger/aggregator/max.go 100.00% <100.00%> (ø)
internal/merger/aggregatemerger/aggregator/min.go 100.00% <100.00%> (ø)
internal/merger/aggregatemerger/aggregator/sum.go 100.00% <100.00%> (ø)
internal/merger/aggregatemerger/aggregator/type.go 100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

flycash commented 1 year ago
func TestColumnType(t *testing.T) {
    db, err := sql.Open("mysql", "root:root@tcp(localhost:13306)/integration_test")
    require.NoError(t, err)
    defer func() {
        db.Exec("DELETE FROM `order`")
        db.Exec("DELETE FROM `item`")
        db.Exec("DELETE FROM `order_detail`")
    }()
    o, err := eorm.Open("mysql", single.NewDB(db))
    require.NoError(t, err)
    initSql(o, t)
    rows, err := db.Query("SELECT * FROM `order` limit 1")
    require.NoError(t, err)
    types, err := rows.ColumnTypes()
    require.NoError(t, err)
    var vals []any
    for _, typ := range types {
        goType := typ.ScanType()
        zero := reflect.New(goType)
        vals = append(vals, zero.Interface())
    }
    rows.Next()
    err = rows.Scan(vals...)
    require.NoError(t, err)
    fmt.Println(vals)
}

确实可以拿到。但是我没有进一步考察,还要考虑一些数据库上奇怪的类型,尤其是 big int, big unsign int 之类的,在转为 Go 类型的时候会不会有问题。

flycash commented 1 year ago

@juniaoshaonian deepsource 有一个小问题,你修复一下。 @longyue0521 确认没有问题之后你就可以合并了。

longyue0521 commented 1 year ago

确认没有问题之后你就可以合并了。

OK

longyue0521 commented 1 year ago

@juniaoshaonian golangci-lint 问题修复一下

juniaoshaonian commented 1 year ago

@juniaoshaonian golangci-lint 问题修复一下

奇怪了我就改了个变量名呀,昨天还可以的