我知道我非常接近使这段代码正常工作,但必须遗漏一些简单的东西。
我有一系列teradata和oracle表格,我使用续集::模型进行抽象。我已将分页扩展名加载到数据库中。我可以返回一个数据集,但无论我做什么,我都不能让它给我除第一页以外的任何东西。
以下是我如何抽象表格的示例。
module MyDB
class MyTable< Sequel::Model(tera_db["#{$env[:my_db]}__my_table".to_sym])
@factory_name = :my_factory
set_primary_key [:my_primary_key]
@typecast_on_assignment = false
end
end
以下是我如何围绕each_page实现一些测试代码
MyDB::MyTable.order(:my_primary_key).each_page(1000) do |page|
p page.current_page_record_count
p page.count
p page.first
end
数据集中有87,675条记录。此循环的最后两次迭代输出为:
1000
1000
values = {:key1 =&gt; 12345,:key2 =&gt; 14.58,:key3 =&gt; 155.44}
675
1000
values = {:key1 =&gt; 12345,:key2 =&gt; 14.58,:key3 =&gt; 155.44}
所以......正在创建适当数量的页面。并且分页记录的基础计数是正确的。但是当我尝试获取页面中的实际值时,它只从第一页获取记录,包括记录计数。
我错过了什么?
答案 0 :(得分:0)
Maybe page.first
is removing the offset from the dataset? I can't recreate your results. It's possible the issue is in the teradata adapter (which is external adapter not part of Sequel itself). You may want to try page.from_self.first
, or page.limit(1).all[0]
and see if the results are different, as well as post an SQL log (which you can probably generate using tera_db.loggers << Logger.new($stdout)
)