localで動かしてる分には問題なく動いてるように見えたんだけど、
server上で動かすとちゃんと返したり、0件になったりする。
原因としては別のconnectionが使われて、 select found_rows() が0を返していた。
同じconnectionが使わないといけないので、Connを使う必要があった。
ctx := context.Background()
conn, _ := db.Conn(ctx)
defer conn.Close()
rows, _ := conn.QueryContext(ctx, "select sql_calc_found_rows * from users")
defer rows.Close()
var rows uint32
_ := conn.QueryRowContext(ctx, "select found_rows()").Scan(&rows)
エラー処理は省略してるけど、だいたいこんな感じにすることで、問題は解決。