获取所有结果后,RMySQL结果集不"完整"

Ben*_*jen 5 r rmysql

在处理MySQL服务器中的大量行的脚本中,我使用dbSendQueryfetch限制取得和处理结果.

当我的fetch命令确切地检索结果集中可用(或左)的行数时,保留0行以获取,dbHasCompleted返回FALSE而我希望它返回TRUE.

query <- "select record_id, name 
          from big_table left join another_table using (record_id) 
          limit 500"

resultset <- dbSendQuery(con, query)   # con: DB connection

while(!dbHasCompleted(resultset)) {
  input <- fetch(resultset, n = 500)
  print(paste("Rows fetched:", nrow(input)))
  # process input ...
}
Run Code Online (Sandbox Code Playgroud)

我希望这个循环运行一次,但是在处理之后有一个额外的运行,print再次调用:

Rows fetched: 500
...
Rows fetched: 0
Run Code Online (Sandbox Code Playgroud)

显然,dbHasCompleted(resultset)在获取可用行的确切数量时为false(对于n = 1000,2000,3000,观察到相同的行为).在此脚本中n = 501时,没有第二个循环.

这是预期的吗?难道我做错了什么?