Hi,
I'm currently using SmartGWT 4.1p.
I'm facing a json conversion issue of database TIMESTAMP fields that leads to exceptions and unresponsive UI.
My data source definition:
Note that in allCustomerClassifications binding, I'm fetching data from columns that are not defined nor referenced in the the DS fields (d.UPDATED). That makes a difference, because TIMESTAMP fields defined in the DS don't suffer this problem.
The query runs normally, referring to server logs:
On client side, I never get any result and grid get stuck in loading. I get the following exception:
I copied and pasted json in a validator that pointed to the problem:
A sample row that shows better the conversion problem happening only on the joined table field (UPDATED), not on the source table field defined in DS (CREATED):
This problem doesn't show up in MS Sql Server (fields defined as DATETIME).
For now, the workaround I found is to cast the value with CAST(d.UPDATED as DATE) or TO_DATE(TO_CHAR(d.UPDATED,'YYYY-MM-DD'),'YYYY-MM-DD')
Regards
I'm currently using SmartGWT 4.1p.
I'm facing a json conversion issue of database TIMESTAMP fields that leads to exceptions and unresponsive UI.
My data source definition:
Code:
<DataSource
ID="reg_classification"
serverType="sql"
tableName="REG_CLASSIFICATION"
>
<fields>
<field name="ID" type="sequence" sequenceName="SQ_REG_CLASSIFICATION" hidden="true" primaryKey="true"/>
<field name="REGULATION_ID" type="integer" foreignKey="reg_regulation.ID"/>
<field name="REGULATION_NAME" includeFrom="reg_regulation.NAME"/>
<field name="CREATED" type="creatorTimestamp" title="$date"/>
<field name="CREATED_BY" type="integer" foreignKey="operator.ID"/>
<field name="REASON" type="text" />
<field name="NB_PROCESSED" type="integer"/>
<field name="NB_QUALIFIED" type="integer"/>
<field name="NB_DISQUALIFIED" type="integer"/>
<field name="NB_PAPERSEARCH" type="integer"/>
</fields>
<operationBindings>
<operationBinding operationType="fetch" operationId="allCustomerClassifications" dropExtraFields="false">
<selectClause>$defaultSelectClause, d.UPDATED, d.UPDATED_BY, a.NAME as RESULT</selectClause>
<tableClause>$defaultTableClause, REG_DECISION d, REG_STATUS a</tableClause>
<whereClause>$defaultWhereClause
and d.CLASSIFICATION_ID = REG_CLASSIFICATION.ID
and d.CUSTOMER_ID = $criteria.CUSTOMER_ID
and d.STATUS_ID = a.ID
</whereClause>
</operationBinding>
</operationBindings>
</DataSource>
The query runs normally, referring to server logs:
Code:
=== 2014-03-13 08:50:29,656 [0-15] DEBUG SQLDataSource - [builtinApplication.allCustomerClassifications] JDBC driver windowed select rows 0->75, result size 75. Query: SELECT REG_CLASSIFICATION.CREATED, REG_CLASSIFICATION.CREATED_BY, REG_CLASSIFICATION.ID, REG_CLASSIFICATION.NB_DISQUALIFIED, REG_CLASSIFICATION.NB_PAPERSEARCH, REG_CLASSIFICATION.NB_PROCESSED, REG_CLASSIFICATION.NB_QUALIFIED, REG_CLASSIFICATION.REASON, REG_CLASSIFICATION.REGULATION_ID, REG_REGULATION.NAME AS REGULATION_NAME, d.UPDATED, d.UPDATED_BY, a.NAME as RESULT FROM REG_REGULATION, REG_CLASSIFICATION, REG_DECISION d, REG_STATUS a WHERE ('1'='1')
and d.CLASSIFICATION_ID = REG_CLASSIFICATION.ID
and d.CUSTOMER_ID = '12590'
and d.STATUS_ID = a.ID
AND REG_CLASSIFICATION.REGULATION_ID = REG_REGULATION.ID ORDER BY REG_CLASSIFICATION.CREATED DESC
=== 2014-03-13 08:50:29,662 [0-15] DEBUG SQLDataSource - [builtinApplication.allCustomerClassifications] Using paging strategy 'jdbcScroll' - scrolling to absolute position 1
=== 2014-03-13 08:50:29,663 [0-15] DEBUG SQLDataSource - [builtinApplication.allCustomerClassifications] Scrolling / positioning took 1ms
=== 2014-03-13 08:50:29,664 [0-15] INFO DSResponse - [builtinApplication.allCustomerClassifications] DSResponse: List with 1 items
Code:
[ERROR] [application] - 08:50:29.725:TMR8:WARN:ResultSet:isc_ResultSet_15 (created by: (cacheAllData fetch)):Bad data returned, ignoring: "//isc_RPCResponseStart-->[{"affectedRows":0,"data":[{"NB_PAPERSEARCH":0,"REGULATION_ID":3,"CREATED_BY":2,"RESULT":"Specified US Person","NB_PROCESSED":1,"UPDATED_BY":2,"REGULATION_NAME":"FATCA for Companies","UPDATED":2014-03-13 08:46:36.94,"ID":8,"CREATED":"$$DATESTAMP$$:1394696796000","NB_QUALIFIED":1,"NB_DISQUALIFIED":0}],"endRow":1,"invalidateCache":false,"isDSResponse":true,"operationType":"fetch","queueStatus":0,"startRow":0,"status":0,"totalRows":1},{"affectedRows":0,"data":[{"NAME":"(System)","DESCRIPTION":"This is the main internal system operator.","CONNECTED":false,"APPROVED":true,"BUNIT_NAME":"(System)","CREATED":"$$DATESTAMP$$:1394092605272","ENABLED":true,"LOGIN":"(SYSTEM)","LANGUAGE_CODE":"en","UPDATED":"$$DATESTAMP$$:1394092605272","ID":1,"BUNIT_ID":1,"ACTIVE":1},{"NAME":"(Master)","DESCRIPTION":"This in the main system administrator.","CONNECTED":true,"APPROVED":true,"BUNIT_NAME":"(System)","CREATED":"$$DATESTAMP$$:1394092605279","ENABLED":true,"CREATED_BY":1,"LAST_LOGIN":"$$DATESTAMP$$:1394696568514","LOGIN":"(MASTER)","UPDATED_BY":1,"LANGUAGE_CODE":"en","UPDATED":"$$DATESTAMP$$:1394092605279","ID":2,"BUNIT_ID":1,"ACTIVE":1,"LOCKED":false},{"NAME":"xxx","CONNECTED":false,"APPROVED":true,"BUNIT_NAME":"(System)","CREATED":"$$DATESTAMP$$:1394093488000","SECURITY_LEVEL_ID":1,"ENABLED":true,"CREATED_BY":2,"LAST_LOGIN":"$$DATESTAMP$$:1394524864967","LOGIN":"xxx","UPDATED_BY":2,"LANGUAGE_CODE":"en","UPDATED":"$$DATESTAMP$$:1394093488000","ID":113,"SECURITY_LEVEL_NAME":"(System)","BUNIT_ID":1,"ACTIVE":1,"LOCKED":false},{"NAME":"xxx","CONNECTED":false,"APPROVED":true,"BUNIT_NAME":"(System)","CREATED":"$$DATESTAMP$$:1394445699000","SECURITY_LEVEL_ID":1,"ENABLED":true,"CREATED_BY":2,"LAST_LOGIN":"$$DATESTAMP$$:1394616270000","LOGIN":"xxx","UPDATED_BY":2,"LANGUAGE_CODE":"en","UPDATED":"$$DATESTAMP$$:1394616661000","ID":114,"SECURITY_LEVEL_NAME":"(System)","BUNIT_ID":1,"ACTIVE":1,"LOCKED":false},{"NAME":"XXXTestAudit","CONNECTED":false,"APPROVED":true,"BUNIT_NAME":"(System)","CREATED":"$$DATESTAMP$$:1394450994000","SECURITY_LEVEL_ID":1,"ENABLED":true,"CREATED_BY":113,"LAST_LOGIN":"$$DATESTAMP$$:1394455857865","LOGIN":"XXXTestAudit","UPDATED_BY":113,"LANGUAGE_CODE":"en","UPDATED":"$$DATESTAMP$$:1394455747000","ID":115,"SECURITY_LEVEL_NAME":"(System)","BUNIT_ID":1,"ACTIVE":1,"LOCKED":false},{"NAME":"xxx","CONNECTED":false,"APPROVED":true,"BUNIT_NAME":"Default","CREATED":"$$DATESTAMP$$:1394553242000","SECURITY_LEVEL_ID":1,"ENABLED":true,"CREATED_BY":2,"LAST_LOGIN":"$$DATESTAMP$$:1394553828493","LOGIN":"paa","UPDATED_BY":2,"LANGUAGE_CODE":"en","UPDATED":"$$DATESTAMP$$:1394553609000","ID":116,"EMAIL":"xxx@xxx.com","SECURITY_LEVEL_NAME":"(System)","DEPARTMENT":"IT","BUNIT_ID":219,"ACTIVE":1,"LOCKED":false},{"NAME":"Guest","DESCRIPTION":"This in the guest operator. To be used for testing only.","CONNECTED":false,"APPROVED":true,"BUNIT_NAME":"Default","CREATED":"$$DATESTAMP$$:1394619816612","ENABLED":true,"CREATED_BY":1,"LAST_LOGIN":"$$DATESTAMP$$:1394640019104","LOGIN":"Guest","UPDATED_BY":1,"LANGUAGE_CODE":"en","UPDATED":"$$DATESTAMP$$:1394619816612","ID":118,"BUNIT_ID":222,"ACTIVE":1,"LOCKED":false}],"endRow":7,"invalidateCache":false,"isDSResponse":true,"operationType":"fetch","queueStatus":0,"startRow":0,"status":0,"totalRows":7}]//isc_RPCResponseEnd"
Code:
Parse error on line 12: ... "UPDATED": 2014-03-1308: 46: 36.94, -----------------------^ Expecting '}', ',', ']'
Code:
"data": [
{
"NB_PAPERSEARCH": 0,
"REGULATION_ID": 3,
"CREATED_BY": 2,
"RESULT": "Specified US Person",
"NB_PROCESSED": 1,
"UPDATED_BY": 2,
"REGULATION_NAME": "FATCA for Companies",
"UPDATED": 2014-03-1308: 46: 36.94,
"ID": 8,
"CREATED": "$$DATESTAMP$$:1394696796000",
"NB_QUALIFIED": 1,
"NB_DISQUALIFIED": 0
}
]
For now, the workaround I found is to cast the value with CAST(d.UPDATED as DATE) or TO_DATE(TO_CHAR(d.UPDATED,'YYYY-MM-DD'),'YYYY-MM-DD')
Regards
Comment