in dao/feature_view_hologres_dao.go [549:585]
func (d *FeatureViewHologresDao) RowCount(filterExpr string) int {
builder := sqlbuilder.PostgreSQL.NewSelectBuilder()
builder.Select("count(*)")
builder.From(d.table)
if filterExpr != "" {
program, err := expr.Compile(filterExpr)
if err != nil {
fmt.Println(err)
return 0
}
node := program.Node()
visitor := &Visitor{}
ast.Walk(&node, visitor)
sqlWhere := visitor.ConvertToSql(visitor.LastNode)
builder.Where(sqlWhere)
}
sql, args := builder.Build()
fmt.Println("row count sql:", sql)
var count int
retry := 3
for i := 0; i < retry; i++ {
row := d.db.QueryRow(sql, args...)
err := row.Scan(&count)
if i == retry-1 {
fmt.Println(err)
return 0
}
if err != nil {
time.Sleep(100 * time.Millisecond)
continue
}
return count
}
return count
}