クライアント駆動ページングを使用した queryMore のサポート
外部システムが各クエリに対して合計サイズの結果セットを返すことができる場合は、DataSource.Provider クラスで QUERY_TOTAL_SIZE 機能を宣言します。検索またはクエリごとに、DataSource.TableResult の totalSize 値が返されることを確認します。合計サイズがバッチで返される行数よりも大きい場合は、nextRecordsUrl リンクが生成され、done フラグが false に設定されます。また、TableResult の totalSize が指定する値に設定されます。
外部システムが各クエリに対して合計サイズを返すことができない場合は、DataSource.Provider クラスで QUERY_TOTAL_SIZE 機能を宣言しません。カスタムアダプタを使用してクエリを実行するときは、常に 1 行余分に求めます。たとえば、SELECT ExternalId FROM Sample LIMIT 5 というクエリを実行する場合、DataSource.Connection オブジェクトで maxResults プロパティを 6 に設定した DataSource.QueryContext を指定した query メソッドをコールします。結果セットに 6 つ目の行があるかないかによって、さらなるデータがあるかどうかがわかります。ただし、前回から今回のクエリまでにデータセットが変更されていないことを前提とします。前回から今回のクエリまでにデータセットが変更されると、行が繰り返し表示されるか、すべての結果を取得しないことがあります。
���局のところ、外部データへのアクセスが最も効率的に機能するのは、少量のデータを取得し、クエリ対象のデータセットがめったに変更されない場合です。