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

Nikita Timofeev closed CAY-2839.
--------------------------------
    Resolution: Won't Fix

> Postgresql connection fails to escape column name if it is a reserved word, 
> line "end".
> ---------------------------------------------------------------------------------------
>
>                 Key: CAY-2839
>                 URL: https://issues.apache.org/jira/browse/CAY-2839
>             Project: Cayenne
>          Issue Type: Bug
>          Components: Core Library, Modeler
>    Affects Versions: 4.2
>         Environment: JDK21
>            Reporter: Roland Szabó
>            Priority: Major
>
> As seen in the sample stack trace, I have a database table in postgresql 
> named "end". Because this is a reserved word, it should be quoted, but the 
> postgresql connector does not quote column names in queries nor in Modeler, 
> when I request SQL generation. The SQL generated by the Modeler can easily be 
> fixed, but the queries fail.
> I have tried it with the latest postgresql library available in maven.
> {{2024-01-30 17:19:43 [apache-cayenne] 
> org.apache.cayenne.log.Slf4jJdbcEventLogger logQueryError}}
> {{   INFO: *** error.}}
> {{   org.postgresql.util.PSQLException: ERROR: syntax error at or near "end"}}
> {{     Position: 26}}
> {{       at 
> org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2676)}}
> {{       at 
> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2366)}}
> {{       at 
> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:356)}}
> {{       at 
> org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:496)}}
> {{       at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:413)}}
> {{       at 
> org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)}}
> {{       at 
> org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:152)}}
> {{       at 
> org.apache.cayenne.access.jdbc.BatchAction.runAsIndividualQueries(BatchAction.java:196)}}
> {{       at 
> org.apache.cayenne.access.jdbc.BatchAction.performAction(BatchAction.java:93)}}
> {{       at 
> org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97)}}
> {{       at 
> org.apache.cayenne.access.DataNode.performQueries(DataNode.java:273)}}
> {{       at 
> org.apache.cayenne.access.flush.DefaultDataDomainFlushAction.lambda$executeQueries$6(DefaultDataDomainFlushAction.java:178)}}
> {{       at java.base/java.util.HashMap.forEach(HashMap.java:1429)}}
> {{       at 
> org.apache.cayenne.access.flush.DefaultDataDomainFlushAction.executeQueries(DefaultDataDomainFlushAction.java:177)}}
> {{       at 
> org.apache.cayenne.access.flush.DefaultDataDomainFlushAction.flush(DefaultDataDomainFlushAction.java:90)}}
> {{       at 
> org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:637)}}
> {{       at 
> org.apache.cayenne.access.DataDomain.onSyncNoFilters(DataDomain.java:609)}}
> {{       at 
> org.apache.cayenne.access.DataDomain$DataDomainSyncFilterChain.onSync(DataDomain.java:835)}}
> {{       at 
> org.apache.cayenne.tx.TransactionFilter.lambda$onSync$0(TransactionFilter.java:61)}}
> {{       at 
> org.apache.cayenne.tx.DefaultTransactionManager$BaseTransactionHandler.performInTransaction(DefaultTransactionManager.java:180)}}
> {{       at 
> org.apache.cayenne.tx.DefaultTransactionManager$NestedTransactionHandler.handle(DefaultTransactionManager.java:93)}}
> {{       at 
> org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:62)}}
> {{       at 
> org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:40)}}



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

Reply via email to