[cayenne] branch master updated: Allow to process self char content for `NamespaceAwareNestedTagHandler`

2023-01-27 Thread ntimofeev
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
 new 5adac9355 Allow to process self char content for 
`NamespaceAwareNestedTagHandler`
5adac9355 is described below

commit 5adac93557c20b9e872c34def6a85e918b07a63b
Author: Nikita Timofeev 
AuthorDate: Fri Jan 27 19:01:40 2023 +0300

Allow to process self char content for `NamespaceAwareNestedTagHandler`
---
 .../java/org/apache/cayenne/gen/xml/CgenConfigHandler.java |  3 ++-
 .../java/org/apache/cayenne/dbsync/xml/CatalogHandler.java |  3 ++-
 .../main/java/org/apache/cayenne/dbsync/xml/ConfigHandler.java |  3 ++-
 .../org/apache/cayenne/dbsync/xml/IncludeTableHandler.java |  3 ++-
 .../main/java/org/apache/cayenne/dbsync/xml/SchemaHandler.java |  3 ++-
 .../java/org/apache/cayenne/dbsync/xml/TableTypesHandler.java  |  3 ++-
 .../org/apache/cayenne/configuration/xml/DbEntityHandler.java  |  3 ++-
 .../cayenne/configuration/xml/DbKeyGeneratorHandler.java   |  3 ++-
 .../configuration/xml/NamespaceAwareNestedTagHandler.java  | 10 +++---
 .../org/apache/cayenne/configuration/xml/ObjEntityHandler.java |  3 ++-
 .../cayenne/configuration/xml/QueryDescriptorHandler.java  |  3 ++-
 11 files changed, 27 insertions(+), 13 deletions(-)

diff --git 
a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java 
b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
index 3185bcd42..a552ff52c 100644
--- 
a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
+++ 
b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java
@@ -83,7 +83,7 @@ public class CgenConfigHandler extends 
NamespaceAwareNestedTagHandler {
 }
 
 @Override
-protected void processCharData(String localName, String data) {
+protected boolean processCharData(String localName, String data) {
 switch (localName) {
 case NAME:
 setName(data);
@@ -139,6 +139,7 @@ public class CgenConfigHandler extends 
NamespaceAwareNestedTagHandler {
 createSuperPkg(data);
 break;
 }
+return true;
 }
 
 private void setName(String name) {
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/CatalogHandler.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/CatalogHandler.java
index 0c92e28ef..dc9450546 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/CatalogHandler.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/CatalogHandler.java
@@ -84,7 +84,7 @@ class CatalogHandler extends NamespaceAwareNestedTagHandler {
 }
 
 @Override
-protected void processCharData(String localName, String data) {
+protected boolean processCharData(String localName, String data) {
 switch (localName) {
 case INCLUDE_TABLE_TAG:
 createIncludeTable(data);
@@ -108,6 +108,7 @@ class CatalogHandler extends NamespaceAwareNestedTagHandler 
{
 createExcludeProcedure(data);
 break;
 }
+return true;
 }
 
 private void createIncludeTable(String includeTableData) {
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/ConfigHandler.java 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/ConfigHandler.java
index 40f2d8ab6..3d7cacd44 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/ConfigHandler.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/ConfigHandler.java
@@ -102,7 +102,7 @@ class ConfigHandler extends NamespaceAwareNestedTagHandler {
 }
 
 @Override
-protected void processCharData(String localName, String data) {
+protected boolean processCharData(String localName, String data) {
 switch (localName) {
 case DEFAULT_PACKAGE_TAG:
 createDefaultPackage(data);
@@ -147,6 +147,7 @@ class ConfigHandler extends NamespaceAwareNestedTagHandler {
 createExcludeProcedure(data);
 break;
 }
+return true;
 }
 
 private void createExcludeProcedure(String excludeProcedure) {
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/IncludeTableHandler.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/IncludeTableHandler.java
index 5f7d1fe16..cf9b346d9 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/IncludeTableHandler.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/xml/IncludeTableHandler.java
@@ -57,7 +57,7 @@ class IncludeTableHandler extends 
NamespaceAwareNestedTagHandler {
 }
 
 @Override
-protected void processCharData(String localName, String data) {
+protected boolean 

[jira] [Closed] (CAY-2789) MalformedJsonException thrown when reading manually edited JSON data in Postgres

2023-01-27 Thread Nikita Timofeev (Jira)


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

Nikita Timofeev closed CAY-2789.

Resolution: Fixed

*4.2*: 
https://github.com/apache/cayenne/commit/ca04d2bd2d49d338b701dbf3005c8b34372ed508
*5.0*: https://github.com/apache/cayenne/pull/557

> MalformedJsonException thrown when reading manually edited JSON data in 
> Postgres
> 
>
> Key: CAY-2789
> URL: https://issues.apache.org/jira/browse/CAY-2789
> Project: Cayenne
>  Issue Type: Bug
>  Components: Database integration
>Affects Versions: 4.2.RC2, 4.2.M3, 4.2.B1, 4.2.RC1
> Environment: PostgreSQL 15
> Windows 10
> Cayenne 4.2.RC2
> IntelliJ IDEA 2022.3
>Reporter: Nikita Timofeev
>Assignee: Nikita Timofeev
>Priority: Major
> Fix For: 4.2, 5.0.M1
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Encountered this exception while modifying JSON data in the DB:
> {{org.apache.cayenne.value.json.MalformedJsonException: Unexpected end of 
> document}}
> The data in question is simple test JSON like this:
> {code}
> {"test": "some value"} 
> {code}
> Same exact data that is inserted via java code is totally fine.
> I suspect that it could be Windows related, but need to check.



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


[jira] [Commented] (CAY-2552) ColumnQuery with flattened attributes bug

2023-01-27 Thread Nikita Timofeev (Jira)


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

Nikita Timofeev commented on CAY-2552:
--

*4.2*: 
https://github.com/apache/cayenne/commit/6211a66f0846e554bc272f4c8860a97eaa1fbbdc

> ColumnQuery with flattened attributes bug
> -
>
> Key: CAY-2552
> URL: https://issues.apache.org/jira/browse/CAY-2552
> Project: Cayenne
>  Issue Type: Bug
>  Components: Core Library
>Affects Versions: 4.2.M1
>Reporter: Arseni Bulatski
>Assignee: Nikita Timofeev
>Priority: Major
> Fix For: 4.2, 5.0.M1
>
> Attachments: ColumnQuery_with_flattened_attribute_bug.patch
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Select entity with flattened attributes in column query.
> Entry point: EntityRowReader
> Fields size from segmentMetadata isn't equal to columns list size in 
> RowDescriptor.
> You can see test case in attachment.
>  
> This bugs appeared when worked on CAY-2529 Custom expression in DbJoin. Order 
> of attributes was changed and bug with wrong size broke tests.



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


[GitHub] [cayenne] stariy95 commented on a diff in pull request #559: Order in db import

2023-01-27 Thread via GitHub


stariy95 commented on code in PR #559:
URL: https://github.com/apache/cayenne/pull/559#discussion_r1088860541


##
cayenne-server/src/main/resources/org/apache/cayenne/schema/11/dbimport.xsd:
##
@@ -73,6 +71,8 @@
 
 
 
+

Review Comment:
   This change would allow to place `schema` and `catalog` tags inside any type 
that inherits from `container`. And that includes `schema` that shouldn't allow 
that.



-- 
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



[cayenne] branch STABLE-4.2 updated: CAY-2552 ColumnQuery with flattened attributes bug

2023-01-27 Thread ntimofeev
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch STABLE-4.2
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/STABLE-4.2 by this push:
 new 6211a66f0 CAY-2552 ColumnQuery with flattened attributes bug
6211a66f0 is described below

commit 6211a66f0846e554bc272f4c8860a97eaa1fbbdc
Author: Nikita Timofeev 
AuthorDate: Fri Jan 27 14:29:41 2023 +0300

CAY-2552 ColumnQuery with flattened attributes bug
---
 RELEASE-NOTES.txt  |   1 +
 .../select/DescriptorColumnExtractor.java  |  17 ++-
 .../access/DataContextFlattenedAttributesIT.java   | 148 -
 .../cayenne/access/VerticalInheritanceIT.java  | 110 ++-
 .../select/DescriptorColumnExtractorIT.java|  86 
 .../map/DefaultEntityResultSegmentTest.java|  57 
 .../testdo/inheritance_vertical/auto/_Iv1Root.java |   2 +-
 .../testdo/inheritance_vertical/auto/_Iv1Sub1.java |   2 +-
 .../testdo/inheritance_vertical/auto/_Iv2Root.java |   2 +-
 .../testdo/inheritance_vertical/auto/_Iv2Sub1.java |   2 +-
 .../testdo/inheritance_vertical/auto/_Iv2X.java|   2 +-
 .../inheritance_vertical/auto/_IvAbstract.java |   2 +-
 .../testdo/inheritance_vertical/auto/_IvBase.java  |   2 +-
 .../inheritance_vertical/auto/_IvBaseWithLock.java |   2 +-
 .../inheritance_vertical/auto/_IvConcrete.java |   2 +-
 .../inheritance_vertical/auto/_IvGenKeyRoot.java   |   2 +-
 .../inheritance_vertical/auto/_IvGenKeySub.java|   2 +-
 .../testdo/inheritance_vertical/auto/_IvImpl.java  |   2 +-
 .../inheritance_vertical/auto/_IvImplWithLock.java |   2 +-
 .../testdo/inheritance_vertical/auto/_IvOther.java |   2 +-
 .../testdo/inheritance_vertical/auto/_IvRoot.java  |   2 +-
 .../testdo/inheritance_vertical/auto/_IvSub1.java  |  22 ++-
 .../inheritance_vertical/auto/_IvSub1Sub1.java |   2 +-
 .../testdo/inheritance_vertical/auto/_IvSub2.java  |   2 +-
 .../testdo/inheritance_vertical/auto/_IvSub3.java  |   2 +-
 .../test/resources/inheritance-vertical.map.xml|   4 +
 26 files changed, 451 insertions(+), 30 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index b8b33d185..530306011 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -15,6 +15,7 @@ Changes/New Features:
 
 Bug Fixes:
 
+CAY-2552 ColumnQuery with flattened attributes bug
 CAY-2783 DbEntity to ObjEntity synchronization should check mandatory flag for 
primitive java types
 CAY-2789 MalformedJsonException thrown when reading manually edited JSON data 
in Postgres
 
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractor.java
 
b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractor.java
index 7f8025976..494519c75 100644
--- 
a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractor.java
+++ 
b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractor.java
@@ -118,9 +118,16 @@ class DescriptorColumnExtractor extends 
BaseColumnExtractor implements PropertyV
 int count = result.getDbAttributes().size();
 for(int i=0; i 1) {
+String dataRowKey = result.getAttributePaths().get(i) + 
"." + dbAttribute.getName();
+resultNodeDescriptor.setDataRowKey(dataRowKey);
+addEntityResultField(dataRowKey);
+} else {
+addEntityResultField(dbAttribute);
+}
 }
 }
 
@@ -177,6 +184,12 @@ class DescriptorColumnExtractor extends 
BaseColumnExtractor implements PropertyV
 }
 }
 
+private void addEntityResultField(String nameForFlattenedAttribute) {
+if (context.getQuery().needsResultSetMapping()) {
+entityResult.addDbField(nameForFlattenedAttribute, 
nameForFlattenedAttribute);
+}
+}
+
 @Override
 public boolean visitToMany(ToManyProperty property) {
 return true;
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
index adb152b79..8e04719a4 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
@@ -22,8 +22,12 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.PersistenceState;
+import org.apache.cayenne.access.translator.select.DefaultSelectTranslator;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.di.Inject;
+import 

[jira] [Updated] (CAY-2552) ColumnQuery with flattened attributes bug

2023-01-27 Thread Nikita Timofeev (Jira)


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

Nikita Timofeev updated CAY-2552:
-
Fix Version/s: 4.2

> ColumnQuery with flattened attributes bug
> -
>
> Key: CAY-2552
> URL: https://issues.apache.org/jira/browse/CAY-2552
> Project: Cayenne
>  Issue Type: Bug
>  Components: Core Library
>Affects Versions: 4.2.M1
>Reporter: Arseni Bulatski
>Assignee: Nikita Timofeev
>Priority: Major
> Fix For: 4.2, 5.0.M1
>
> Attachments: ColumnQuery_with_flattened_attribute_bug.patch
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Select entity with flattened attributes in column query.
> Entry point: EntityRowReader
> Fields size from segmentMetadata isn't equal to columns list size in 
> RowDescriptor.
> You can see test case in attachment.
>  
> This bugs appeared when worked on CAY-2529 Custom expression in DbJoin. Order 
> of attributes was changed and bug with wrong size broke tests.



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


[cayenne] branch STABLE-4.2 updated: CAY-2789 MalformedJsonException release notes

2023-01-27 Thread ntimofeev
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch STABLE-4.2
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/STABLE-4.2 by this push:
 new 5092f6399 CAY-2789 MalformedJsonException release notes
5092f6399 is described below

commit 5092f6399b2ca7ae95faf0741279e7f19cb087f5
Author: Nikita Timofeev 
AuthorDate: Fri Jan 27 14:10:08 2023 +0300

CAY-2789 MalformedJsonException release notes
---
 RELEASE-NOTES.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index bb7b9458a..b8b33d185 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -16,6 +16,7 @@ Changes/New Features:
 Bug Fixes:
 
 CAY-2783 DbEntity to ObjEntity synchronization should check mandatory flag for 
primitive java types
+CAY-2789 MalformedJsonException thrown when reading manually edited JSON data 
in Postgres
 
 --
 Release: 4.2.RC2



[cayenne] branch STABLE-4.2 updated (78868d820 -> 52433d177)

2023-01-27 Thread ntimofeev
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a change to branch STABLE-4.2
in repository https://gitbox.apache.org/repos/asf/cayenne.git


from 78868d820 Fix OpIdFactory test
 new ca04d2bd2 CAY-2789 MalformedJsonException thrown when reading manually 
edited JSON data in Postgres
 new 52433d177 Add JsonTokenizer trailing spaces test

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/cayenne/value/json/JsonTokenizer.java   |  3 +++
 .../cayenne/value/json/JsonTokenizerTest.java  | 28 ++
 2 files changed, 31 insertions(+)



[cayenne] 01/02: CAY-2789 MalformedJsonException thrown when reading manually edited JSON data in Postgres

2023-01-27 Thread ntimofeev
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch STABLE-4.2
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit ca04d2bd2d49d338b701dbf3005c8b34372ed508
Author: Mikhail Dzianishchyts 
AuthorDate: Tue Jan 17 11:22:45 2023 +0300

CAY-2789 MalformedJsonException thrown when reading manually edited JSON 
data in Postgres

(cherry picked from commit 6634ecba37d0a7dd07eeff7643b03a5207b93951)
---
 .../main/java/org/apache/cayenne/value/json/JsonTokenizer.java |  3 +++
 .../java/org/apache/cayenne/value/json/JsonTokenizerTest.java  | 10 ++
 2 files changed, 13 insertions(+)

diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java 
b/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java
index 14f415240..9ab9ec46e 100644
--- 
a/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java
+++ 
b/cayenne-server/src/main/java/org/apache/cayenne/value/json/JsonTokenizer.java
@@ -52,6 +52,9 @@ final class JsonTokenizer {
 while (position < data.length) {
 // skip whitespace
 skipWhitespace();
+if (position == data.length) {
+break;
+}
 JsonToken token = nextValue();
 // only string could be used as an object member name
 if (states[currentState] == State.OBJECT_MEMBER_NAME) {
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
index daea7cb05..c64d01415 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
@@ -28,6 +28,16 @@ import static org.junit.Assert.assertEquals;
  */
 public class JsonTokenizerTest {
 
+@Test
+public void testEmpty() {
+JsonTokenizer tokenizer;
+JsonTokenizer.JsonToken token;
+
+tokenizer = new JsonTokenizer("");
+token = tokenizer.nextToken();
+assertEquals(JsonTokenizer.TokenType.NONE, token.type);
+}
+
 @Test
 public void testNull() {
 JsonTokenizer tokenizer;



[cayenne] 02/02: Add JsonTokenizer trailing spaces test

2023-01-27 Thread ntimofeev
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch STABLE-4.2
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 52433d177709bd2d51e664ca01167766d7dbed2a
Author: Mikhail Dzianishchyts 
AuthorDate: Tue Jan 17 11:42:03 2023 +0300

Add JsonTokenizer trailing spaces test

(cherry picked from commit 67a895bba48e22a9b0db475fe8301beb8eaf6a09)
---
 .../apache/cayenne/value/json/JsonTokenizerTest.java   | 18 ++
 1 file changed, 18 insertions(+)

diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
index c64d01415..990d63620 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/value/json/JsonTokenizerTest.java
@@ -283,6 +283,24 @@ public class JsonTokenizerTest {
 assertEquals("abc", token5.toString());
 }
 
+@Test
+public void testTrailingSpaces() {
+JsonTokenizer tokenizer;
+JsonTokenizer.JsonToken token;
+
+tokenizer = new JsonTokenizer("{\"test\": \"some value\"} \n");
+token = tokenizer.nextToken();
+assertEquals(JsonTokenizer.TokenType.OBJECT_START, token.type);
+token = tokenizer.nextToken();
+assertEquals(JsonTokenizer.TokenType.STRING, token.type);
+token = tokenizer.nextToken();
+assertEquals(JsonTokenizer.TokenType.STRING, token.type);
+token = tokenizer.nextToken();
+assertEquals(JsonTokenizer.TokenType.OBJECT_END, token.type);
+token = tokenizer.nextToken();
+assertEquals(JsonTokenizer.TokenType.NONE, token.type);
+}
+
 @Test
 public void testEmptyArray() {
 JsonTokenizer tokenizer = new JsonTokenizer("[]");



[cayenne] branch master updated: Use `Artist.SELF` for queries

2023-01-27 Thread ntimofeev
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
 new 0a6ab3672 Use `Artist.SELF` for queries
0a6ab3672 is described below

commit 0a6ab3672effb3f124e9abb03a3aabe303a861e4
Author: Nikita Timofeev 
AuthorDate: Fri Jan 27 14:05:33 2023 +0300

Use `Artist.SELF` for queries
---
 .../org/apache/cayenne/query/ColumnSelectIT.java   | 103 +
 1 file changed, 43 insertions(+), 60 deletions(-)

diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java 
b/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
index 5cd837429..248bcec05 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
@@ -111,8 +111,7 @@ public class ColumnSelectIT extends ServerCase {
 
 @Test
 public void testSelectGroupBy() throws Exception {
-Object[] result = ObjectSelect.query(Artist.class)
-.columns(Artist.DATE_OF_BIRTH, PropertyFactory.COUNT)
+Object[] result = Artist.SELF.columnQuery(Artist.DATE_OF_BIRTH, 
PropertyFactory.COUNT)
 .orderBy(Artist.DATE_OF_BIRTH.asc())
 .selectFirst(context);
 
@@ -122,8 +121,7 @@ public class ColumnSelectIT extends ServerCase {
 
 @Test
 public void testSelectSimpleHaving() throws Exception {
-Object[] result = ObjectSelect.query(Artist.class)
-.columns(Artist.DATE_OF_BIRTH, PropertyFactory.COUNT)
+Object[] result = Artist.SELF.columnQuery(Artist.DATE_OF_BIRTH, 
PropertyFactory.COUNT)
 .having(Artist.DATE_OF_BIRTH.eq(dateFormat.parse("1/2/17")))
 .selectOne(context);
 
@@ -135,7 +133,7 @@ public class ColumnSelectIT extends ServerCase {
 public void testHavingOnNonGroupByColumn() {
 StringProperty nameSubstr = Artist.ARTIST_NAME.substring(1, 6);
 
-Object[] q = ObjectSelect.columnQuery(Artist.class, nameSubstr, 
PropertyFactory.COUNT)
+Object[] q = Artist.SELF.columnQuery(nameSubstr, PropertyFactory.COUNT)
 .having(Artist.ARTIST_NAME.like("artist%"))
 .selectOne(context);
 assertEquals("artist", q[0]);
@@ -144,8 +142,7 @@ public class ColumnSelectIT extends ServerCase {
 
 @Test
 public void testSelectRelationshipCount() throws Exception {
-Object[] result = ObjectSelect.query(Artist.class)
-.columns(Artist.DATE_OF_BIRTH, Artist.PAINTING_ARRAY.count())
+Object[] result = Artist.SELF.columnQuery(Artist.DATE_OF_BIRTH, 
Artist.PAINTING_ARRAY.count())
 .orderBy(Artist.DATE_OF_BIRTH.asc())
 .selectFirst(context);
 assertEquals(dateFormat.parse("1/1/17"), result[0]);
@@ -157,8 +154,7 @@ public class ColumnSelectIT extends ServerCase {
 
 Object[] q = null;
 try {
-q = ObjectSelect
-.columnQuery(Artist.class, Artist.ARTIST_NAME.substring(1, 
6).alias("name_substr"), PropertyFactory.COUNT)
+q = Artist.SELF.columnQuery(Artist.ARTIST_NAME.substring(1, 
6).alias("name_substr"), PropertyFactory.COUNT)
 .having(PropertyFactory.COUNT.gt(10L))
 .selectOne(context);
 } catch (CayenneRuntimeException ex) {
@@ -178,7 +174,7 @@ public class ColumnSelectIT extends ServerCase {
 
 Object[] q = null;
 try {
-q = ObjectSelect.columnQuery(Artist.class, 
Artist.ARTIST_NAME.substring(1, 6), PropertyFactory.COUNT)
+q = Artist.SELF.columnQuery(Artist.ARTIST_NAME.substring(1, 6), 
PropertyFactory.COUNT)
 .having(PropertyFactory.COUNT.gt(10L))
 .selectOne(context);
 } catch (CayenneRuntimeException ex) {
@@ -196,7 +192,7 @@ public class ColumnSelectIT extends ServerCase {
 public void testSelectWhereAndHaving() {
 Object[] q = null;
 try {
-q = ObjectSelect.columnQuery(Artist.class, 
Artist.ARTIST_NAME.substring(1, 6).alias("name_substr"), PropertyFactory.COUNT)
+q = Artist.SELF.columnQuery(Artist.ARTIST_NAME.substring(1, 
6).alias("name_substr"), PropertyFactory.COUNT)
 .where(Artist.ARTIST_NAME.substring(1, 1).eq("a"))
 .having(PropertyFactory.COUNT.gt(10L))
 .selectOne(context);
@@ -213,7 +209,7 @@ public class ColumnSelectIT extends ServerCase {
 
 @Test
 public void testHavingWithoutAggregate() {
-Object date = ObjectSelect.columnQuery(Artist.class, 
Artist.DATE_OF_BIRTH, Artist.ARTIST_NAME)
+Object date = Artist.SELF.columnQuery(Artist.DATE_OF_BIRTH, 
Artist.ARTIST_NAME)
 .having(Artist.ARTIST_NAME.like("a%"))
 

[jira] [Updated] (CAY-2791) Unmapped columns are included in INSERT statements

2023-01-27 Thread Nikita Timofeev (Jira)


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

Nikita Timofeev updated CAY-2791:
-
Fix Version/s: 5.0.M1

> Unmapped columns are included in INSERT statements
> --
>
> Key: CAY-2791
> URL: https://issues.apache.org/jira/browse/CAY-2791
> Project: Cayenne
>  Issue Type: Bug
>Affects Versions: 4.2.RC1
>Reporter: Andrus Adamchik
>Priority: Major
> Fix For: 5.0.M1
>
>
> Columns mapped in DbEntity, but not mapped in ObjEntity are still included in 
> the generated INSERT statements because of this:
> {noformat}
> public InsertBatchQuery(DbEntity entity, int batchCapacity) {
>   super(entity, new ArrayList<>(entity.getAttributes()), batchCapacity);
> }
> {noformat}
> This is not a new issue, but this is evil. It inserts explicit NULLs in all 
> unmapped columns, which is too big of an assumption to always work. E.g. I 
> have a case of "calculated" MySQL columns. Inserting NULLs in those causes 
> exceptions. 
> {noformat}
> CALC_COLUMN decimal(12,6) GENERATED ALWAYS AS ((COL_A / COL_B)) STORED,
> {noformat}
> The workaround for me was to use  "exclude column" rules in DB Import. But 
> the issue should still be addressed and not require a workaround. We need to 
> only insert in the columns that are relevant for the ObjEntity (i.e. those 
> mapped to ObjAttributes, pks and fks).



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