func()

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
}