Hi Isomorphic,
there is a bug with 5.1p build newer than 2016-04-28.
It seems that my custom aggregation in .ds.xml code is no longer used. Instead a SELECT * is done.
This is my .ds.xml file:
The client request goes to operationId "countPossibleResellers".
This is the server log from 5.1p 2016-05-07:
In consequence, in the Developer Consoles Result you can that data for all columns *but* the custom field RESELLER_COUNT is returned, where only data for RESELLER_COUNT would be expected.
Are there changes in this area in builds newer than 5.1p 2016-04-28?
I checked that if I include a serverMethod with the operationBinding with just return request.execute() and put a breakpoint in it in the java file, I can see that it is hit, so the operationBinding is being used, it is just not interpreted correctly.
This one stops me from releasing product updates that include other fixes you made since 2016-04-28, so it is very important to me.
Best regards
Blama
there is a bug with 5.1p build newer than 2016-04-28.
It seems that my custom aggregation in .ds.xml code is no longer used. Instead a SELECT * is done.
This is my .ds.xml file:
Code:
<DataSource xmlns="lmscompany/ds" xmlns:fmt="lmscompany/fmt" dbName="Oracle" tableName="V_LEAD_RES_MATCH_ALL_RD_GUI" ID="V_LEAD_RES_MATCH_ALL_RD_GUI" serverType="sql" serverConstructor="com.lmscompany.lms.server.LMSSQLDataSource"> <fmt:bundle basename="com.lmscompany.lms.server.i18n.DSXMLResources-utf8" encoding="utf-8" /> <fields> <field name="TENANT_ID" type="integer" hidden="true" /> <field name="LEAD_ID" primaryKey="true" type="integer" hidden="true" /> <field name="RESELLER_ID" primaryKey="true" type="integer" displayField="RESELLER_NAME" foreignKey="T_RESELLER.ID" joinType="outer"> <title><fmt:message key="reseller" /></title> </field> <field name="RESELLER_NAME" includeFrom="T_RESELLER.NAME" type="text" length="70" escapeHTML="true" hidden="true" /> <field name="DISTANCE" type="float"> <title><fmt:message key="distanceToCustomer" /></title> </field> <field name="CUST_NAME" length="80" type="text" escapeHTML="true"> <title><fmt:message key="company" /></title> </field> <field name="RESELLER_AVAILABLE" type="boolean" sqlStorageStrategy="singleCharYN"> <title><fmt:message key="allowReseller" /></title> </field> <field name="LEAD_NOTRESELLER_ID" type="integer" /> <field name="RESELLER_COUNT" type="integer" customSQL="true" nativeName="RESELLER_ID" /> <!-- TENANT_IDs for WHERE-clause generation --> <field name="RESELLER_TENANT_ID" includeFrom="T_RESELLER.TENANT_ID" hidden="true" /> </fields> <serverObject lookupStyle="new" className="com.lmscompany.lms.server.worker.V_LEAD_RES_MATCH_ALL_RD_GUI" /> <operationBindings> <operationBinding operationType="update" /> <operationBinding operationType="fetch" /> <operationBinding operationType="fetch" operationId="countPossibleResellers"> <customFields>RESELLER_COUNT</customFields> <summaryFunctions> <RESELLER_COUNT>count</RESELLER_COUNT> </summaryFunctions> <whereClause>RESELLER_AVAILABLE = 'Y' AND ($defaultWhereClause)</whereClause> </operationBinding> <operationBinding operationType="fetch" operationId="countPossibleResellersWithCustName"> <customFields>RESELLER_COUNT, LEAD_ID, CUST_NAME</customFields> <summaryFunctions> <RESELLER_COUNT>count</RESELLER_COUNT> </summaryFunctions> <whereClause>RESELLER_AVAILABLE = 'Y' AND ($defaultWhereClause)</whereClause> <groupBy>LEAD_ID, CUST_NAME</groupBy> </operationBinding> </operationBindings> </DataSource>
This is the server log from 5.1p 2016-05-07:
Code:
INFO RequestContext - URL: '/lms/lms/sc/IDACall', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
DEBUG LMSIDACall - Header Name:Value pair: host:localhost:8080
DEBUG LMSIDACall - Header Name:Value pair: user-agent:Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
DEBUG LMSIDACall - Header Name:Value pair: accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DEBUG LMSIDACall - Header Name:Value pair: accept-language:de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
DEBUG LMSIDACall - Header Name:Value pair: accept-encoding:gzip, deflate
DEBUG LMSIDACall - Header Name:Value pair: content-type:application/x-www-form-urlencoded; charset=UTF-8
DEBUG LMSIDACall - Header Name:Value pair: referer:http://localhost:8080/lms/Lms.jsp?gwt.codesvr=127.0.0.1:9997
DEBUG LMSIDACall - Header Name:Value pair: content-length:1285
DEBUG LMSIDACall - Header Name:Value pair: cookie:JSESSIONID=E4A93F776D1CF16B5BD96B51B1BA9F8E; GLog=%22%5Bobject%20Object%5D%22; _ga=GA1.1.761878784.1443531764; isc_cState=ready
DEBUG LMSIDACall - Header Name:Value pair: connection:keep-alive
DEBUG LMSIDACall - Header Name:Value pair: pragma:no-cache
DEBUG LMSIDACall - Header Name:Value pair: cache-control:no-cache
DEBUG LMSIDACall - session exists: E4A93F776D1CF16B5BD96B51B1BA9F8E
DEBUG LMSIDACall - remote user: csuperuser
DEBUG RPCManager - Processing 1 requests.
DEBUG RPCManager - Request #1 (DSRequest) payload: {
criteria:{
operator:"equals",
fieldName:"LEAD_ID",
value:3606,
_constructor:"AdvancedCriteria"
},
operationConfig:{
dataSource:"V_LEAD_RES_MATCH_ALL_RD_GUI",
repo:null,
operationType:"fetch",
textMatchStyle:"exact"
},
appID:"builtinApplication",
operation:"countPossibleResellers",
oldValues:{
operator:"equals",
fieldName:"LEAD_ID",
value:3606,
_constructor:"AdvancedCriteria"
}
}
INFO LMSIDACall - Performing 1 operation(s)
DEBUG ServerObject - Couldn't find a public method named: fetch on class: com.lmscompany.lms.server.worker.V_LEAD_RES_MATCH_ALL_RD_GUI
DEBUG DataSourceDMI - DataSourceDMI: no public method name: fetch available on class: com.lmscompany.lms.server.worker.V_LEAD_RES_MATCH_ALL_RD_GUI - defaulting to builtin operations.
DEBUG AppBase - [builtinApplication.countPossibleResellers] No userTypes defined, allowing anyone access to all operations for this application
DEBUG AppBase - [builtinApplication.countPossibleResellers] No public zero-argument method named '_countPossibleResellers' found, performing generic datasource operation
INFO SQLDataSource - [builtinApplication.countPossibleResellers] Performing fetch operation with
criteria: {criteria:[{value:1,fieldName:"TENANT_ID",operator:"equals"},{value:3606,fieldName:"LEAD_ID",operator:"equals"},{criteria:[{value:1,fieldName:"RESELLER_TENANT_ID",operator:"equals"},{fieldName:"RESELLER_TENANT_ID",operator:"isNull"}],operator:"or"}],operator:"and",_constructor:"AdvancedCriteria"} values: {criteria:[{value:1,fieldName:"TENANT_ID",operator:"equals"},{value:3606,fieldName:"LEAD_ID",operator:"equals"},{criteria:[{value:1,fieldName:"RESELLER_TENANT_ID",operator:"equals"},{fieldName:"RESELLER_TENANT_ID",operator:"isNull"}],operator:"or"}],operator:"and",_constructor:"AdvancedCriteria"}
WARN SQLSelectClause - [builtinApplication.countPossibleResellers] SQLSelectClause is null or zero size, remap and conversions won't work!
INFO SQLDataSource - [builtinApplication.countPossibleResellers] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE RESELLER_AVAILABLE = 'Y' AND ($defaultWhereClause)
INFO SQLDataSource - [builtinApplication.countPossibleResellers] 594: Executing SQL query on 'Oracle': SELECT * FROM V_LEAD_RES_MATCH_ALL_RD_GUI LEFT OUTER JOIN T_RESELLER ON V_LEAD_RES_MATCH_ALL_RD_GUI.RESELLER_ID = T_RESELLER.ID WHERE RESELLER_AVAILABLE = 'Y' AND (((V_LEAD_RES_MATCH_ALL_RD_GUI.TENANT_ID = 1 AND V_LEAD_RES_MATCH_ALL_RD_GUI.TENANT_ID IS NOT NULL) AND (V_LEAD_RES_MATCH_ALL_RD_GUI.LEAD_ID = 3606 AND V_LEAD_RES_MATCH_ALL_RD_GUI.LEAD_ID IS NOT NULL) AND ((T_RESELLER.TENANT_ID = 1 AND T_RESELLER.TENANT_ID IS NOT NULL) OR (T_RESELLER.TENANT_ID IS NULL))))
DEBUG SQLTransaction - [builtinApplication.countPossibleResellers] Started new Oracle transaction "1984994984"
DEBUG SQLDataSource - [builtinApplication.countPossibleResellers] Setting DSRequest as being part of a transaction
INFO SQLDriver - [builtinApplication.countPossibleResellers] Executing SQL query on 'Oracle' using connection '1984994984': SELECT * FROM V_LEAD_RES_MATCH_ALL_RD_GUI LEFT OUTER JOIN T_RESELLER ON V_LEAD_RES_MATCH_ALL_RD_GUI.RESELLER_ID = T_RESELLER.ID WHERE RESELLER_AVAILABLE = 'Y' AND (((V_LEAD_RES_MATCH_ALL_RD_GUI.TENANT_ID = 1 AND V_LEAD_RES_MATCH_ALL_RD_GUI.TENANT_ID IS NOT NULL) AND (V_LEAD_RES_MATCH_ALL_RD_GUI.LEAD_ID = 3606 AND V_LEAD_RES_MATCH_ALL_RD_GUI.LEAD_ID IS NOT NULL) AND ((T_RESELLER.TENANT_ID = 1 AND T_RESELLER.TENANT_ID IS NOT NULL) OR (T_RESELLER.TENANT_ID IS NULL))))
INFO DSResponse - DSResponse: List with 1 items
DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
DEBUG SQLTransaction - Committing Oracle transaction "1984994984"
DEBUG RPCManager - non-DMI response, dropExtraFields: false
DEBUG SQLTransaction - getConnection() looked for transactional connection for Oracle: hashcode "1984994984"
DEBUG SQLTransaction - Ending Oracle transaction "1984994984"
DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 594
DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 679
DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 679
DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 594
DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 594
INFO Compression - /lms/lms/sc/IDACall: 534 -> 388 bytes
Are there changes in this area in builds newer than 5.1p 2016-04-28?
I checked that if I include a serverMethod with the operationBinding with just return request.execute() and put a breakpoint in it in the java file, I can see that it is hit, so the operationBinding is being used, it is just not interpreted correctly.
This one stops me from releasing product updates that include other fixes you made since 2016-04-28, so it is very important to me.
Best regards
Blama
Comment