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
IGNITE-14699 Add IndexQuery API. #9118
IGNITE-14699 Add IndexQuery API. #9118
Conversation
a0c542f
to
659b920
Compare
modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
Outdated
Show resolved
Hide resolved
...les/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryProcessor.java
Outdated
Show resolved
Hide resolved
modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
Outdated
Show resolved
Hide resolved
8a20778
to
93d4ec2
Compare
modules/core/src/main/java/org/apache/ignite/cache/query/IndexConditionBuilder.java
Outdated
Show resolved
Hide resolved
for (int i = 0; i < rngCond.fields.size(); i++) { | ||
String f = rngCond.fields.get(i); | ||
|
||
A.ensure(!fields.contains(f), "Duplicated field in conditions: " + f + "."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why can't we use the same field twice? For example, if we proceed data month by month a condition would be something like: d >= 01/01/2021 and d < 01/02/2021
and then next query: d >= 01/02/2021 and d < 01/03/2021
, etc. With the current implementation, we can't build such conditions (gte and lt on the same field).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's better to add new method with inclusion flags: between(field, lower, upper, lowIncl, upIncl). Otherwise logic could be too hard - how to merge lt and lt, or lt and lte). WDYT?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Discussed privately, decided to provide opportunity to define multiple conditions on the same field and merge them with AND. Will be done in separate ticket.
...les/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryProcessor.java
Outdated
Show resolved
Hide resolved
...les/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryProcessor.java
Outdated
Show resolved
Hide resolved
...les/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryProcessor.java
Outdated
Show resolved
Hide resolved
829e857
to
dd5e285
Compare
modules/core/src/main/java/org/apache/ignite/cache/query/IndexQueryCriteria.java
Outdated
Show resolved
Hide resolved
modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexProcessor.java
Outdated
Show resolved
Hide resolved
modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
Outdated
Show resolved
Hide resolved
...e/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
Outdated
Show resolved
Hide resolved
modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
Outdated
Show resolved
Hide resolved
modules/indexing/src/test/java/org/apache/ignite/cache/query/IndexQuerySqlIndexTest.java
Show resolved
Hide resolved
modules/indexing/src/test/java/org/apache/ignite/cache/query/MultiTableIndexQuery.java
Show resolved
Hide resolved
modules/indexing/src/test/java/org/apache/ignite/cache/query/MultiTableIndexQuery.java
Show resolved
Hide resolved
modules/indexing/src/test/java/org/apache/ignite/cache/query/MultifieldIndexQueryTest.java
Show resolved
Hide resolved
modules/indexing/src/test/java/org/apache/ignite/cache/query/MultifieldIndexQueryTest.java
Show resolved
Hide resolved
Let's also add some test where the index field alias not equal to java field name. |
bc1f6f6
to
fc748c5
Compare
d3850b0
to
2d66613
Compare
2d66613
to
76807f2
Compare
...les/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryProcessor.java
Outdated
Show resolved
Hide resolved
modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
Outdated
Show resolved
Hide resolved
modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
Outdated
Show resolved
Hide resolved
modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
Outdated
Show resolved
Hide resolved
modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
Outdated
Show resolved
Hide resolved
modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
Outdated
Show resolved
Hide resolved
...les/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryProcessor.java
Outdated
Show resolved
Hide resolved
...les/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryProcessor.java
Outdated
Show resolved
Hide resolved
...les/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryProcessor.java
Outdated
Show resolved
Hide resolved
...les/core/src/main/java/org/apache/ignite/internal/cache/query/index/IndexQueryProcessor.java
Outdated
Show resolved
Hide resolved
modules/core/src/main/java/org/apache/ignite/cache/query/IndexQueryCriteriaBuilder.java
Show resolved
Hide resolved
… replace Null class with flags, PriorityQueue for cursors, refactoring.
@AMashenkov I've pushed fixes, could you please have a look? |
@AMashenkov hi! I fixed merge conflict. Now, this PR is available for review again. |
Introduce new public API: Index Query API.
See IEP-71: https://cwiki.apache.org/confluence/display/IGNITE/IEP-71%3A+Public+API+for+secondary+index+search