Wai created OFBIZ-5907:
--------------------------
Summary: Postgresql jdbc driver is causing exception. Mysql
driver is working ok.
Key: OFBIZ-5907
URL: https://issues.apache.org/jira/browse/OFBIZ-5907
Project: OFBiz
Issue Type: Bug
Components: framework
Affects Versions: Trunk
Environment: OS:
Ubuntu 14.04
Java:
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Reporter: Wai
I've discovered an issue and I do not know if it lies in the entity engine or
the jdbc driver.
I have the following entity view.
<view-entity entity-name="TestView" package-name="test.entityviews"
title="View entity">
<member-entity entity-alias="SG" entity-name="SecurityGroup" />
<member-entity entity-alias="ULSG" entity-name="UserLoginSecurityGroup"
/>
<member-entity entity-alias="UL" entity-name="UserLogin" />
<alias entity-alias="SG" name="groupId" field="groupId" group-by="true"
/>
<alias entity-alias="ULSG" name="userLoginId" field="userLoginId" />
<alias entity-alias="ULSG" name="cntUser" field="userLoginId"
function="count-distinct" />
<view-link entity-alias="SG" rel-entity-alias="ULSG"
rel-optional="true">
<key-map field-name="groupId" rel-field-name="groupId" />
</view-link>
<view-link entity-alias="ULSG" rel-entity-alias="UL"
rel-optional="true">
<key-map field-name="userLoginId" rel-field-name="userLoginId" />
</view-link>
<entity-condition>
<condition-expr entity-alias="ULSG" field-name="thruDate"
operator="equals" />
</entity-condition>
</view-entity>
When ofbiz is run using the latest mysql jdbc driver (v5.1.34), the proper sql
statement is generated and all runs well. But when the Postgresql jdbc driver
is used, it causes an exception. I have tried with the following latest
Postgresql drivers and they have all failed.
JDBC3 Postgresql Driver, Version 9.3-1102
JDBC4 Postgresql Driver, Version 9.3-1102
JDBC41 Postgresql Driver, Version 9.3-1102
Mysql jdbc driver would generate the following sql statement:
SELECT SG.GROUP_ID, ULSG.USER_LOGIN_ID, COUNT(DISTINCT ULSG.USER_LOGIN_ID) FROM
SECURITY_GROUP SG LEFT OUTER JOIN USER_LOGIN_SECURITY_GROUP ULSG ON SG.GROUP_ID
= ULSG.GROUP_ID LEFT OUTER JOIN USER_LOGIN UL ON ULSG.USER_LOGIN_ID =
UL.USER_LOGIN_ID WHERE ((ULSG.THRU_DATE IS NULL)) GROUP BY SG.GROUP_ID
Postgresql jdbc driver would give the following exception (Notice the resulting
sql statement is corrupted with 'public.' ???):
Failure in operation, rolling back transaction
org.ofbiz.entity.GenericDataSourceException: SQL Exception while executing the
following:SELECT SG.GROUP_ID, ULSG.USER_LOGIN_ID, COUNT(DISTINCT
ULSG.USER_LOGIN_ID) FROM (public.SECURITY_GROUP SG LEFT OUTER JOIN
public.USER_LOGIN_SECURITY_GROUP ULSG ON SG.GROUP_ID = ULSG.GROUP_ID) LEFT
OUTER JOIN public.USER_LOGIN UL ON ULSG.USER_LOGIN_ID = UL.USER_LOGIN_ID WHERE
((ULSG.THRU_DATE IS NULL)) GROUP BY SG.GROUP_ID (ERROR: column
"ulsg.user_login_id" must appear in the GROUP BY clause or be used in an
aggregate function
Position: 21)
at
org.ofbiz.entity.jdbc.SQLProcessor.executeQuery(SQLProcessor.java:409)
~[ofbiz-entity.jar:?]
at
org.ofbiz.entity.datasource.GenericDAO.selectListIteratorByCondition(GenericDAO.java:785)
~[ofbiz-entity.jar:?]
at
org.ofbiz.entity.datasource.GenericHelperDAO.findListIteratorByCondition(GenericHelperDAO.java:140)
~[ofbiz-entity.jar:?]
at org.ofbiz.entity.GenericDelegator.find(GenericDelegator.java:1774)
~[ofbiz-entity.jar:?]
at
org.ofbiz.entity.util.EntityQuery.queryIterator(EntityQuery.java:392)
~[ofbiz-entity.jar:?]
at org.ofbiz.entity.util.EntityQuery$queryIterator$1.call(Unknown
Source) ~[?:?]
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)