Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support pagination in V2 engine, phase 1 #1497

Merged
merged 19 commits into from
Apr 27, 2023

Conversation

Yury-Fridlyand
Copy link
Collaborator

@Yury-Fridlyand Yury-Fridlyand commented Apr 5, 2023

Supersedes #1483 and Bit-Quill#226

Description

https://github.com/Bit-Quill/opensearch-project-sql/blob/61767f2b200b2a7f8c8b2df32de209b3c30caa61/docs/dev/Pagination-v2.md

PHASE 1
Pagination supports queries like

select * from <index>;

For example:

curl -s -XPOST http://localhost:9200/_plugins/_sql -H 'Content-Type: application/json' -d '{"query": "SELECT * from calcs", "fetch_size": 5}'

Cursor request:

curl -s -XPOST http://localhost:9200/_plugins/_sql -H 'Content-Type: application/json' -d '{"cursor": "...." }'

All credits to @MaxKsyunz.

You can use attached script for testing as well. Command line: ./cursor_test.sh <table> <page size>. Requires jq. Rename it before use.
cursor_test.sh.txt

Scroll API usage doc:
https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search-scrolling.html

Please, see team review and discussion in Bit-Quill#226

Pagination demo: https://user-images.githubusercontent.com/88679692/224208630-8d38d833-abf8-4035-8d15-d5fb4382deca.mp4

Features

  1. Validating whether query could be paged
  2. Processing paging requests (first page) - create paged index scan builder
  3. Serialization physical plan tree
  4. Deserialization physical plan tree - without ResourceMonitorPlan
  5. Processing cursor requests (second and next pages) - skipping Planner and Implementor
    Last page is empty - this shows pagination is finished.
  6. Calculating totalHits - total number of matched rows/docs (see details)

Design Diagrams

New code workflows are highlighted.
Design document with these graphs is also available in the docs.

First page

sequenceDiagram
    participant SQLService
    participant QueryPlanFactory
    participant ResponseListener
    participant ResponseFormatter
    participant CanPaginateVisitor
    participant QueryService
    participant Planner
    participant CreatePagingTableScanBuilder
    participant OpenSearchExecutionEngine
    participant PlanSerializer
    participant Physical Plan Tree
    participant OpenSearchPagedIndexScan
    participant OpenSearchScrollRequest

SQLService->>QueryPlanFactory:execute
  critical
  QueryPlanFactory->>CanPaginateVisitor:canConvertToCursor
    CanPaginateVisitor-->>QueryPlanFactory:true
  end
  QueryPlanFactory->>QueryService:execute
    QueryService->>Planner:optimize
      critical
      Planner->>CreatePagingTableScanBuilder:apply
        CreatePagingTableScanBuilder-->>QueryService:paged index scan
      end
    QueryService->>OpenSearchExecutionEngine:execute
      OpenSearchExecutionEngine-->OpenSearchExecutionEngine:iterate result set
      critical Serialization
      OpenSearchExecutionEngine->>PlanSerializer:convertToCursor
        PlanSerializer->>Physical Plan Tree:serialize
          Physical Plan Tree->>OpenSearchPagedIndexScan:serialize
            OpenSearchPagedIndexScan->>OpenSearchScrollRequest:toCursor
              OpenSearchScrollRequest-->>OpenSearchPagedIndexScan:scroll Id
            OpenSearchPagedIndexScan-->>PlanSerializer:Serialized Plan Tree
        PlanSerializer-->>OpenSearchExecutionEngine:cursor
      end
      critical
      OpenSearchExecutionEngine->>Physical Plan Tree:getTotalHits
        Physical Plan Tree-->>OpenSearchExecutionEngine:total hits
      end
      OpenSearchExecutionEngine-->>ResponseListener:QueryResponse
    ResponseListener->>ResponseFormatter:format with cursor
Loading

Second page

sequenceDiagram
    participant SQLService
    participant QueryPlanFactory
    participant ResponseListener
    participant ResponseFormatter
    participant QueryService
    participant OpenSearchExecutionEngine
    participant PlanSerializer
    participant Physical Plan Tree
    participant OpenSearchPagedIndexScan
    participant ContinuePageRequest

SQLService->>QueryPlanFactory:execute
  QueryPlanFactory->>QueryService:execute
    critical Deserialization
    QueryService->>PlanSerializer:convertToPlan
      PlanSerializer->>Physical Plan Tree:deserialize
        Physical Plan Tree->>OpenSearchPagedIndexScan:deserialize
          OpenSearchPagedIndexScan-->>PlanSerializer:resolve engine
        PlanSerializer->>OpenSearchPagedIndexScan:OpenSearchStorageEngine
          OpenSearchPagedIndexScan->>ContinuePageRequest:create new
            OpenSearchPagedIndexScan-->>PlanSerializer:deserialized plan tree
      PlanSerializer-->>QueryService:Physical plan tree
    end
    QueryService->>OpenSearchExecutionEngine:execute
      OpenSearchExecutionEngine-->OpenSearchExecutionEngine:iterate result set
      critical Serialization
      OpenSearchExecutionEngine->>PlanSerializer:convertToCursor
        PlanSerializer->>Physical Plan Tree:serialize
          Physical Plan Tree->>OpenSearchPagedIndexScan:serialize
            OpenSearchPagedIndexScan->>ContinuePageRequest:toCursor
              ContinuePageRequest-->>OpenSearchPagedIndexScan:scroll Id
            OpenSearchPagedIndexScan-->>PlanSerializer:Serialized Plan Tree
        PlanSerializer-->>OpenSearchExecutionEngine:cursor
      end
      critical
      OpenSearchExecutionEngine->>Physical Plan Tree:getTotalHits
        Physical Plan Tree-->>OpenSearchExecutionEngine:total hits
      end
      OpenSearchExecutionEngine-->>ResponseListener:QueryResponse
    ResponseListener->>ResponseFormatter:format with cursor
Loading

Legacy Engine Fallback

sequenceDiagram
    participant RestSQLQueryAction
    participant Legacy Engine
    participant SQLService
    participant QueryPlanFactory
    participant CanPaginateVisitor

RestSQLQueryAction->>SQLService:prepareRequest
  SQLService->>QueryPlanFactory:execute
    critical V2 support check
    QueryPlanFactory->>CanPaginateVisitor:createContinuePaginatedPlan
      CanPaginateVisitor-->>QueryPlanFactory:false
    QueryPlanFactory-->>RestSQLQueryAction:UnsupportedCursorRequestException
    end
      RestSQLQueryAction->>Legacy Engine:accept
Loading

Further improvements are coming

  1. Support queries with LIMIT, WHERE, HAVING and ORDER BY and queries without FROM into pagination. in #253 - Phase 2
  2. Rework ComparisonIT to use pagination. in #254 - Phase 2

Issues Resolved

#656

Check List

  • New functionality includes testing.
    • All tests pass, including unit test, integration test and doctest
  • New functionality has been documented.
    • New functionality has javadoc added
    • New functionality has user manual doc added
  • Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Yury-Fridlyand and others added 3 commits March 28, 2023 17:59
* Fixing integration tests broken during POC

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Comment to clarify an exception.

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Add support for paginated scroll request, first page.

Implement PaginatedPlanCache.convertToPlan for second page to work.

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Progress on paginated scroll request, subsequent page.

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Move `ExpressionSerializer` from `opensearch` to `core`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rename `Cursor` `asString` to `toString`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Disable scroll cleaning.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add full cursor serialization and deserialization.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Misc fixes.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Further work on pagination.

* Added push down page size from `LogicalPaginate` to `LogicalRelation`.
* Improved cursor encoding and decoding.
* Added cursor compression.
* Fixed issuing `SearchScrollRequest`.
* Fixed returning last empty page.
* Minor code grooming/commenting.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Pagination fix for empty indices.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix error reporting on wrong cursor.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor comments and error reporting improvement.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add an end-to-end integration test.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add `explain` request handlers.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add IT for explain.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address issues flagged by checkstyle build step (#229)

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Pagination, phase 1: Add unit tests for `:core` module with coverage. (#230)

* Add unit tests for `:core` module with coverage. Uncovered: `toCursor`, because it is will be changed soon.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Pagination, phase 1: Add unit tests for SQL module with coverage. (#239)

* Add unit tests for SQL module with coverage.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Update sql/src/main/java/org/opensearch/sql/sql/domain/SQLQueryRequest.java

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

Co-authored-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Co-authored-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>

* Pagination, phase 1: Add unit tests for `:opensearch` module with coverage. (#233)

* Add UT for `:opensearch` module with full coverage, except `toCursor`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix checkstyle.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix the merges.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix explain.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix scroll cleaning.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Store `TotalHits` and use it to report `total` in response.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add missing UT for `:protocol` module.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix PPL UTs damaged in f4ea4ad.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor checkstyle fixes.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fallback to v1 engine for pagination (#245)

* Pagination fallback integration tests.

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Add UT with coverage for `toCursor` serialization.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix broken tests in `legacy`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix getting `total` from non-paged requests and from queries without `FROM` clause.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix scroll cleaning.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix cursor request processing.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Update ITs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix (again) TotalHits feature.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix typo in prometheus config.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Recover commented logging.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Move `test_pagination_blackbox` to a separate class and add logging.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address some PR feedbacks: rename some classes and revert unnecessary whitespace changed.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor commenting.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

* Add javadocs
* Renames
* Cleaning up some comments
* Remove unused code
* Speed up IT

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor missing changes.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Integration tests for fetch_size, max_result_window, and query.size_limit (#248)

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Remove `PaginatedQueryService`, extend `QueryService` to hold two planners and use them.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Move push down functions from request builders to a new interface.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Some file moves.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor clean-up according to PR review.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Co-authored-by: MaxKsyunz <maxk@bitquilltech.com>
Co-authored-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>
Co-authored-by: Max Ksyunz <max.ksyunz@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Copy link
Collaborator Author

@Yury-Fridlyand Yury-Fridlyand left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I copied unresolved questions/issues from Bit-Quill#226

acarbonetto
acarbonetto previously approved these changes Apr 5, 2023
MaxKsyunz
MaxKsyunz previously approved these changes Apr 6, 2023
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
@@ -49,7 +51,8 @@ public void execute(PhysicalPlan physicalPlan, ExecutionContext context,
result.add(plan.next());
}

QueryResponse response = new QueryResponse(physicalPlan.schema(), result);
QueryResponse response = new QueryResponse(physicalPlan.schema(), result,
plan.getTotalHits(), planSerializer.convertToCursor(plan));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm also confused about why we need to maintain totalHits in each physical operator.

total hits == number of rows matching the search criteria

Do you mean total hits = matched #rows in each page or totally? If the latter, why it becomes 0 finally?

* Override pushDown* methods from TableScanBuilder as more features
* support pagination.
*/
public class OpenSearchPagedIndexScanBuilder extends TableScanBuilder {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This class just a holder, and seems do nothing?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice finding. Yes, it is. It was simplified so it became just a holder.

Max Ksyunz and others added 3 commits April 17, 2023 11:58
* Remove PaginateOperator class since it is no longer used.


---------

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
@Yury-Fridlyand Yury-Fridlyand mentioned this pull request Apr 17, 2023
6 tasks
@anirudha
Copy link
Collaborator

Lets we tag this for 2.8 and discuss the requested changes. we are a few hours away from code freeze as this is a huge PR with critical changes; lets move this to the next release train

@Yury-Fridlyand Yury-Fridlyand changed the base branch from feature/pagination/integ to main April 18, 2023 19:41
@Yury-Fridlyand Yury-Fridlyand dismissed stale reviews from matthewryanwells, GumpacG, MaxKsyunz, acarbonetto, and GabeFernandez310 April 18, 2023 19:41

The base branch was changed.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Copy link
Collaborator

@MaxKsyunz MaxKsyunz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yury-Fridlyand thank you so much for the diagrams!

Could you add method returns and activations to objects where appropriate? They make it easier to visualize the call stack.

Yury-Fridlyand and others added 3 commits April 19, 2023 15:47
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
# Conflicts:
#	opensearch/src/main/java/org/opensearch/sql/opensearch/executor/protector/ResourceMonitorPlan.java
Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>
@Yury-Fridlyand Yury-Fridlyand changed the base branch from main to feature/pagination/integ April 25, 2023 18:41
@Yury-Fridlyand Yury-Fridlyand merged commit f40bb6d into feature/pagination/integ Apr 27, 2023
acarbonetto pushed a commit to Bit-Quill/opensearch-project-sql that referenced this pull request Apr 28, 2023
* Support pagination in V2 engine, phase 1 (#226)

* Fixing integration tests broken during POC

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Comment to clarify an exception.

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Add support for paginated scroll request, first page.

Implement PaginatedPlanCache.convertToPlan for second page to work.

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Progress on paginated scroll request, subsequent page.

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Move `ExpressionSerializer` from `opensearch` to `core`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rename `Cursor` `asString` to `toString`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Disable scroll cleaning.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add full cursor serialization and deserialization.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Misc fixes.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Further work on pagination.

* Added push down page size from `LogicalPaginate` to `LogicalRelation`.
* Improved cursor encoding and decoding.
* Added cursor compression.
* Fixed issuing `SearchScrollRequest`.
* Fixed returning last empty page.
* Minor code grooming/commenting.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Pagination fix for empty indices.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix error reporting on wrong cursor.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor comments and error reporting improvement.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add an end-to-end integration test.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add `explain` request handlers.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add IT for explain.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address issues flagged by checkstyle build step (#229)

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Pagination, phase 1: Add unit tests for `:core` module with coverage. (#230)

* Add unit tests for `:core` module with coverage. Uncovered: `toCursor`, because it is will be changed soon.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Pagination, phase 1: Add unit tests for SQL module with coverage. (#239)

* Add unit tests for SQL module with coverage.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Update sql/src/main/java/org/opensearch/sql/sql/domain/SQLQueryRequest.java

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

Co-authored-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Co-authored-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>

* Pagination, phase 1: Add unit tests for `:opensearch` module with coverage. (#233)

* Add UT for `:opensearch` module with full coverage, except `toCursor`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix checkstyle.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix the merges.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix explain.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix scroll cleaning.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Store `TotalHits` and use it to report `total` in response.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add missing UT for `:protocol` module.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix PPL UTs damaged in f4ea4ad.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor checkstyle fixes.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fallback to v1 engine for pagination (#245)

* Pagination fallback integration tests.

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Add UT with coverage for `toCursor` serialization.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix broken tests in `legacy`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix getting `total` from non-paged requests and from queries without `FROM` clause.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix scroll cleaning.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix cursor request processing.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Update ITs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix (again) TotalHits feature.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix typo in prometheus config.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Recover commented logging.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Move `test_pagination_blackbox` to a separate class and add logging.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address some PR feedbacks: rename some classes and revert unnecessary whitespace changed.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor commenting.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

* Add javadocs
* Renames
* Cleaning up some comments
* Remove unused code
* Speed up IT

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor missing changes.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Integration tests for fetch_size, max_result_window, and query.size_limit (#248)

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Remove `PaginatedQueryService`, extend `QueryService` to hold two planners and use them.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Move push down functions from request builders to a new interface.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Some file moves.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor clean-up according to PR review.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Co-authored-by: MaxKsyunz <maxk@bitquilltech.com>
Co-authored-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>
Co-authored-by: Max Ksyunz <max.ksyunz@improving.com>

* Make scroll timeout configurable.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix IT to set cursor keep alive parameter.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Remove `QueryId.None`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rename according to PR feedback.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Remove default implementations of `PushDownRequestBuilder`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Merge paginated plan optimizer into the regular optimizer. (opensearch-project#1516)

Merge paginated plan optimizer into the regular optimizer.
---------

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>
Co-authored-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Complete rework on serialization and deserialization. (opensearch-project#1498)

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Resolve merge conflicts and fix tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor cleanup.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Minor cleanup - missing changes for the previous commit.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Remove paginate operator  (opensearch-project#1528)

* Remove PaginateOperator class since it is no longer used.

---------

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

* Remove `PaginatedPlan` - move logic to `QueryPlan`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Remove default implementations from `SerializablePlan`.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add a doc.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Update design graphs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* More fixes for merge from upstream/main.

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>

---------

Signed-off-by: MaxKsyunz <maxk@bitquilltech.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Co-authored-by: MaxKsyunz <maxk@bitquilltech.com>
Co-authored-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>
Co-authored-by: Max Ksyunz <max.ksyunz@improving.com>
@Yury-Fridlyand Yury-Fridlyand added the pagination Pagination feature, ref #656 label May 1, 2023
@Yury-Fridlyand Yury-Fridlyand deleted the feature/pagination/P1 branch May 30, 2023 01:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request new-engine-gap pagination Pagination feature, ref #656 SQL
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants