[jira] [Commented] (CAY-2843) Use an IN clause for single field disjoint by ID prefetches

2024-02-07 Thread Jurgen Doll (Jira)


[ 
https://issues.apache.org/jira/browse/CAY-2843?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17815333#comment-17815333
 ] 

Jurgen Doll commented on CAY-2843:
--

Created a [PR|https://github.com/apache/cayenne/pull/606] containing a 
potential solution that passes the tests.

> Use an IN clause for single field disjoint by ID prefetches
> ---
>
> Key: CAY-2843
> URL: https://issues.apache.org/jira/browse/CAY-2843
> Project: Cayenne
>  Issue Type: Improvement
>  Components: Core Library
>Affects Versions: 4.2
>Reporter: Jurgen Doll
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently HierarchicalObjectResolver uses "field1 = ? OR field1 = ? " 
> pattern for all disjoint by ID prefetches.
> I propose distinguishing between single field prefetches and multi-field 
> prefetches, so that the former makes use of an IN clause instead.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (CAY-2843) Use an IN clause for single field disjoint by ID prefetches

2024-02-07 Thread Jurgen Doll (Jira)
Jurgen Doll created CAY-2843:


 Summary: Use an IN clause for single field disjoint by ID 
prefetches
 Key: CAY-2843
 URL: https://issues.apache.org/jira/browse/CAY-2843
 Project: Cayenne
  Issue Type: Improvement
  Components: Core Library
Affects Versions: 4.2
Reporter: Jurgen Doll


Currently HierarchicalObjectResolver uses "field1 = ? OR field1 = ? " 
pattern for all disjoint by ID prefetches.

I propose distinguishing between single field prefetches and multi-field 
prefetches, so that the former makes use of an IN clause instead.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Commented] (CAY-2842) Prevent duplicate select columns when using distinct with order by

2024-02-07 Thread Jurgen Doll (Jira)


[ 
https://issues.apache.org/jira/browse/CAY-2842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17815273#comment-17815273
 ] 

Jurgen Doll commented on CAY-2842:
--

Created a [PR|https://github.com/apache/cayenne/pull/605] containing a failing 
test and a potential solution that passes the tests.

> Prevent duplicate select columns when using distinct with order by
> --
>
> Key: CAY-2842
> URL: https://issues.apache.org/jira/browse/CAY-2842
> Project: Cayenne
>  Issue Type: Improvement
>  Components: Core Library
>Affects Versions: 4.2
>Reporter: Jurgen Doll
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> When a "select distinct" query has an "order by" clause then the "order by" 
> fields must also be listed in the select clause. However no check is 
> currently done to see if the column is already specified which can result in 
> duplicate columns being fetched.
> This is listed as a TODO item in OrderingStage.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[PR] CAY-2842 Prevent duplicate select columns when using distinct with order by [cayenne]

2024-02-07 Thread via GitHub


Jugen opened a new pull request, #605:
URL: https://github.com/apache/cayenne/pull/605

   (no comment)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@cayenne.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



[jira] [Created] (CAY-2842) Prevent duplicate select columns when using distinct with order by

2024-02-07 Thread Jurgen Doll (Jira)
Jurgen Doll created CAY-2842:


 Summary: Prevent duplicate select columns when using distinct with 
order by
 Key: CAY-2842
 URL: https://issues.apache.org/jira/browse/CAY-2842
 Project: Cayenne
  Issue Type: Improvement
  Components: Core Library
Affects Versions: 4.2
Reporter: Jurgen Doll


When a "select distinct" query has an "order by" clause then the "order by" 
fields must also be listed in the select clause. However no check is currently 
done to see if the column is already specified which can result in duplicate 
columns being fetched.

This is listed as a TODO item in OrderingStage.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Assigned] (CAY-2841) Multi column ColumnSelect with SHARED_CACHE fails after 1st select

2024-02-07 Thread Nikita Timofeev (Jira)


 [ 
https://issues.apache.org/jira/browse/CAY-2841?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikita Timofeev reassigned CAY-2841:


Assignee: Nikita Timofeev

> Multi column ColumnSelect with SHARED_CACHE fails after 1st select
> --
>
> Key: CAY-2841
> URL: https://issues.apache.org/jira/browse/CAY-2841
> Project: Cayenne
>  Issue Type: Bug
>Affects Versions: 4.2
>Reporter: Jurgen Doll
>Assignee: Nikita Timofeev
>Priority: Minor
> Fix For: 4.2.1, 5.0-M1
>
>
> Adding the following test case to 
> {color:#00}{color:#00}ColumnSelectIT{color}{color} shows the problem:
>  
> {color:#00} {color}{color:#646464}@{color}{color:#00}Test{color}
> {color:#00} {color}{color:#7f0055}public{color}{color:#00} 
> {color}{color:#7f0055}void{color}{color:#00} testSharedCache() 
> {color}{color:#7f0055}throws{color}{color:#00} Exception {{color}
> {color:#00} ColumnSelect colQry = ObjectSelect.query( 
> Artist.{color}{color:#7f0055}class{color}{color:#00} ){color}
> {color:#00} .columns( Artist.ARTIST_NAME, Artist.DATE_OF_BIRTH ){color}
> {color:#00} .cacheStrategy( QueryCacheStrategy.SHARED_CACHE );{color}
> {color:#00} {color}
> {color:#00} List result = colQry.select(context);{color}
> {color:#00} assertEquals(20, result.size());{color}
>  
> {color:#00} {color}{color:#3f7f5f}// Next line fails with 
> UnsupportedOperationException{color}
> {color:#00} List result2 = colQry.select(context);{color}
> {color:#00} assertEquals(20, result.size());{color}
> {color:#00} }{color}
>  
> Stacktrace:
>  
> {color:#ff}Exception in thread "JavaFX Application Thread" 
> {color}{color:#0066cc}java.lang.UnsupportedOperationException{color}
> {color:#ff} at 
> java.base/java.util.Collections$UnmodifiableCollection.removeIf({color}{color:#0066cc}Collections.java:1120{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomainQueryAction$MixedConversionStrategy.convert({color}{color:#0066cc}DataDomainQueryAction.java:818{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomainQueryAction.interceptObjectConversion({color}{color:#0066cc}DataDomainQueryAction.java:507{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomainQueryAction.execute({color}{color:#0066cc}DataDomainQueryAction.java:135{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomain.onQueryNoFilters({color}{color:#0066cc}DataDomain.java:570{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery({color}{color:#0066cc}DataDomain.java:819{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomain.onQuery({color}{color:#0066cc}DataDomain.java:562{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.util.ObjectContextQueryAction.runQuery({color}{color:#0066cc}ObjectContextQueryAction.java:406{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.util.ObjectContextQueryAction.executePostCache({color}{color:#0066cc}ObjectContextQueryAction.java:107{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.util.ObjectContextQueryAction.execute({color}{color:#0066cc}ObjectContextQueryAction.java:94{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataContext.onQuery({color}{color:#0066cc}DataContext.java:960{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataContext.performQuery({color}{color:#0066cc}DataContext.java:949{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.BaseContext.select({color}{color:#0066cc}BaseContext.java:307{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.query.FluentSelect.select({color}{color:#0066cc}FluentSelect.java:160{color}{color:#ff}){color}
>  
> Workaround:  Add 
> {color:#00}{color:#00}.suppressDistinct(){color}{color} to the query.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (CAY-2841) Multi column ColumnSelect with SHARED_CACHE fails after 1st select

2024-02-07 Thread Nikita Timofeev (Jira)


 [ 
https://issues.apache.org/jira/browse/CAY-2841?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikita Timofeev updated CAY-2841:
-
Fix Version/s: 4.2.1
   (was: 4.1.2)

> Multi column ColumnSelect with SHARED_CACHE fails after 1st select
> --
>
> Key: CAY-2841
> URL: https://issues.apache.org/jira/browse/CAY-2841
> Project: Cayenne
>  Issue Type: Bug
>Affects Versions: 4.2
>Reporter: Jurgen Doll
>Priority: Minor
> Fix For: 4.2.1, 5.0-M1
>
>
> Adding the following test case to 
> {color:#00}{color:#00}ColumnSelectIT{color}{color} shows the problem:
>  
> {color:#00} {color}{color:#646464}@{color}{color:#00}Test{color}
> {color:#00} {color}{color:#7f0055}public{color}{color:#00} 
> {color}{color:#7f0055}void{color}{color:#00} testSharedCache() 
> {color}{color:#7f0055}throws{color}{color:#00} Exception {{color}
> {color:#00} ColumnSelect colQry = ObjectSelect.query( 
> Artist.{color}{color:#7f0055}class{color}{color:#00} ){color}
> {color:#00} .columns( Artist.ARTIST_NAME, Artist.DATE_OF_BIRTH ){color}
> {color:#00} .cacheStrategy( QueryCacheStrategy.SHARED_CACHE );{color}
> {color:#00} {color}
> {color:#00} List result = colQry.select(context);{color}
> {color:#00} assertEquals(20, result.size());{color}
>  
> {color:#00} {color}{color:#3f7f5f}// Next line fails with 
> UnsupportedOperationException{color}
> {color:#00} List result2 = colQry.select(context);{color}
> {color:#00} assertEquals(20, result.size());{color}
> {color:#00} }{color}
>  
> Stacktrace:
>  
> {color:#ff}Exception in thread "JavaFX Application Thread" 
> {color}{color:#0066cc}java.lang.UnsupportedOperationException{color}
> {color:#ff} at 
> java.base/java.util.Collections$UnmodifiableCollection.removeIf({color}{color:#0066cc}Collections.java:1120{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomainQueryAction$MixedConversionStrategy.convert({color}{color:#0066cc}DataDomainQueryAction.java:818{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomainQueryAction.interceptObjectConversion({color}{color:#0066cc}DataDomainQueryAction.java:507{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomainQueryAction.execute({color}{color:#0066cc}DataDomainQueryAction.java:135{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomain.onQueryNoFilters({color}{color:#0066cc}DataDomain.java:570{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery({color}{color:#0066cc}DataDomain.java:819{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomain.onQuery({color}{color:#0066cc}DataDomain.java:562{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.util.ObjectContextQueryAction.runQuery({color}{color:#0066cc}ObjectContextQueryAction.java:406{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.util.ObjectContextQueryAction.executePostCache({color}{color:#0066cc}ObjectContextQueryAction.java:107{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.util.ObjectContextQueryAction.execute({color}{color:#0066cc}ObjectContextQueryAction.java:94{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataContext.onQuery({color}{color:#0066cc}DataContext.java:960{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataContext.performQuery({color}{color:#0066cc}DataContext.java:949{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.BaseContext.select({color}{color:#0066cc}BaseContext.java:307{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.query.FluentSelect.select({color}{color:#0066cc}FluentSelect.java:160{color}{color:#ff}){color}
>  
> Workaround:  Add 
> {color:#00}{color:#00}.suppressDistinct(){color}{color} to the query.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (CAY-2841) Multi column ColumnSelect with SHARED_CACHE fails after 1st select

2024-02-07 Thread Nikita Timofeev (Jira)


 [ 
https://issues.apache.org/jira/browse/CAY-2841?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikita Timofeev updated CAY-2841:
-
Fix Version/s: 4.1.2
   5.0-M1

> Multi column ColumnSelect with SHARED_CACHE fails after 1st select
> --
>
> Key: CAY-2841
> URL: https://issues.apache.org/jira/browse/CAY-2841
> Project: Cayenne
>  Issue Type: Bug
>Affects Versions: 4.2
>Reporter: Jurgen Doll
>Priority: Minor
> Fix For: 4.1.2, 5.0-M1
>
>
> Adding the following test case to 
> {color:#00}{color:#00}ColumnSelectIT{color}{color} shows the problem:
>  
> {color:#00} {color}{color:#646464}@{color}{color:#00}Test{color}
> {color:#00} {color}{color:#7f0055}public{color}{color:#00} 
> {color}{color:#7f0055}void{color}{color:#00} testSharedCache() 
> {color}{color:#7f0055}throws{color}{color:#00} Exception {{color}
> {color:#00} ColumnSelect colQry = ObjectSelect.query( 
> Artist.{color}{color:#7f0055}class{color}{color:#00} ){color}
> {color:#00} .columns( Artist.ARTIST_NAME, Artist.DATE_OF_BIRTH ){color}
> {color:#00} .cacheStrategy( QueryCacheStrategy.SHARED_CACHE );{color}
> {color:#00} {color}
> {color:#00} List result = colQry.select(context);{color}
> {color:#00} assertEquals(20, result.size());{color}
>  
> {color:#00} {color}{color:#3f7f5f}// Next line fails with 
> UnsupportedOperationException{color}
> {color:#00} List result2 = colQry.select(context);{color}
> {color:#00} assertEquals(20, result.size());{color}
> {color:#00} }{color}
>  
> Stacktrace:
>  
> {color:#ff}Exception in thread "JavaFX Application Thread" 
> {color}{color:#0066cc}java.lang.UnsupportedOperationException{color}
> {color:#ff} at 
> java.base/java.util.Collections$UnmodifiableCollection.removeIf({color}{color:#0066cc}Collections.java:1120{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomainQueryAction$MixedConversionStrategy.convert({color}{color:#0066cc}DataDomainQueryAction.java:818{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomainQueryAction.interceptObjectConversion({color}{color:#0066cc}DataDomainQueryAction.java:507{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomainQueryAction.execute({color}{color:#0066cc}DataDomainQueryAction.java:135{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomain.onQueryNoFilters({color}{color:#0066cc}DataDomain.java:570{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery({color}{color:#0066cc}DataDomain.java:819{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataDomain.onQuery({color}{color:#0066cc}DataDomain.java:562{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.util.ObjectContextQueryAction.runQuery({color}{color:#0066cc}ObjectContextQueryAction.java:406{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.util.ObjectContextQueryAction.executePostCache({color}{color:#0066cc}ObjectContextQueryAction.java:107{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.util.ObjectContextQueryAction.execute({color}{color:#0066cc}ObjectContextQueryAction.java:94{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataContext.onQuery({color}{color:#0066cc}DataContext.java:960{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.access.DataContext.performQuery({color}{color:#0066cc}DataContext.java:949{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.BaseContext.select({color}{color:#0066cc}BaseContext.java:307{color}{color:#ff}){color}
> {color:#ff} at 
> org.apache.cayenne.query.FluentSelect.select({color}{color:#0066cc}FluentSelect.java:160{color}{color:#ff}){color}
>  
> Workaround:  Add 
> {color:#00}{color:#00}.suppressDistinct(){color}{color} to the query.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)