Hello Isomorphic,
the cacheSyncOperation for the animals DataSource uses LOWER(animals.scientificName) for its data gathering.
While one could argue that for isUnique-Validator-text-columns the default should be case-insensitive (like you did here), this is almost certainly wrong for primaryKey text fields like animals.scientificName. While this may be no problem in the animals-DataSource, this may lead to performance problems in real-world applications (full table scan vs. index unique scan when there is no function based index on LOWER(scientificName).
Additionally there is no pre-existence check for the entry and the application ends with a constraint violation DB message if you try to add an existing key. This is also true for the employees-DataSource. I'd suggest that primaryKey-fields have implicit case sensitive (see above) isUnique-Validators.
See this BuiltInDS server logs for the 1st issue (v10.0p_2015-05-19):
See this log for trying to add another employee with id "182" for the 2nd issue:
Best regards
Blama
the cacheSyncOperation for the animals DataSource uses LOWER(animals.scientificName) for its data gathering.
While one could argue that for isUnique-Validator-text-columns the default should be case-insensitive (like you did here), this is almost certainly wrong for primaryKey text fields like animals.scientificName. While this may be no problem in the animals-DataSource, this may lead to performance problems in real-world applications (full table scan vs. index unique scan when there is no function based index on LOWER(scientificName).
Additionally there is no pre-existence check for the entry and the application ends with a constraint violation DB message if you try to add an existing key. This is also true for the employees-DataSource. I'd suggest that primaryKey-fields have implicit case sensitive (see above) isUnique-Validators.
See this BuiltInDS server logs for the 1st issue (v10.0p_2015-05-19):
Code:
=== 2015-05-20 14:18:48,050 [c-60] INFO RequestContext - URL: '/BuiltInDS/builtinds/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 === 2015-05-20 14:18:48,051 [c-60] DEBUG IDACall - Header Name:Value pair: host:localhost:8080 === 2015-05-20 14:18:48,051 [c-60] DEBUG IDACall - Header Name:Value pair: user-agent:Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0 === 2015-05-20 14:18:48,051 [c-60] DEBUG IDACall - Header Name:Value pair: accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 === 2015-05-20 14:18:48,051 [c-60] DEBUG IDACall - Header Name:Value pair: accept-language:de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 === 2015-05-20 14:18:48,051 [c-60] DEBUG IDACall - Header Name:Value pair: accept-encoding:gzip, deflate === 2015-05-20 14:18:48,052 [c-60] DEBUG IDACall - Header Name:Value pair: dnt:1 === 2015-05-20 14:18:48,052 [c-60] DEBUG IDACall - Header Name:Value pair: content-type:application/x-www-form-urlencoded; charset=UTF-8 === 2015-05-20 14:18:48,052 [c-60] DEBUG IDACall - Header Name:Value pair: referer:http://localhost:8080/BuiltInDS/BuiltInDS.html === 2015-05-20 14:18:48,052 [c-60] DEBUG IDACall - Header Name:Value pair: content-length:1318 === 2015-05-20 14:18:48,052 [c-60] DEBUG IDACall - Header Name:Value pair: cookie:JSESSIONID=C5631D101CCCE887D2DBB40F36F47C69; isc_cState=ready; GLog=%7B%0D%20%20%20%20trackRPC%3Atrue%2C%20%0D%20%20%20%20pageGUID%3A%2241645E28-A8A9-4B95-822F-5C44EE205904%22%2C%20%0D%20%20%20%20priorityDefaults%3A%7B%0D%20%20%20%20%20%20%20%20sgwtInternal%3A1%0D%20%20%20%20%7D%2C%20%0D%20%20%20%20defaultPriority%3A3%2C%20%0D%20%20%20%20left%3A0%2C%20%0D%20%20%20%20top%3A0%2C%20%0D%20%20%20%20width%3A942%2C%20%0D%20%20%20%20height%3A520%0D%7D === 2015-05-20 14:18:48,052 [c-60] DEBUG IDACall - Header Name:Value pair: connection:keep-alive === 2015-05-20 14:18:48,053 [c-60] DEBUG IDACall - Header Name:Value pair: pragma:no-cache === 2015-05-20 14:18:48,053 [c-60] DEBUG IDACall - Header Name:Value pair: cache-control:no-cache === 2015-05-20 14:18:48,053 [c-60] DEBUG IDACall - session exists: C5631D101CCCE887D2DBB40F36F47C69 === 2015-05-20 14:18:48,053 [c-60] DEBUG IDACall - remote user: null === 2015-05-20 14:18:48,058 [c-60] DEBUG XML - Parsed XML from (in memory stream): 3ms === 2015-05-20 14:18:48,058 [c-60] DEBUG ISCKeyedObjectPool - Borrowing object for 'transaction' === 2015-05-20 14:18:48,059 [c-60] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'transaction' in the pooling flow === 2015-05-20 14:18:48,060 [c-60] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object' === 2015-05-20 14:18:48,060 [c-60] DEBUG PoolableDataSourceFactory - Created DataSource 92 of type 'Object' and assigned it to thread http-bio-8080-exec-60 === 2015-05-20 14:18:48,060 [c-60] DEBUG PoolableDataSourceFactory - Created DataSource 92 of type 'Object' in the pooling flow === 2015-05-20 14:18:48,060 [c-60] DEBUG PoolableDataSourceFactory - Activated DataSource 92 of type 'Object' === 2015-05-20 14:18:48,061 [c-60] DEBUG ISCKeyedObjectPool - Borrowing object for 'List' === 2015-05-20 14:18:48,064 [c-60] DEBUG PoolableDataSourceFactory - Created DataSource 93 of type 'List' and assigned it to thread http-bio-8080-exec-60 === 2015-05-20 14:18:48,064 [c-60] DEBUG PoolableDataSourceFactory - Created DataSource 93 of type 'List' in the pooling flow === 2015-05-20 14:18:48,064 [c-60] DEBUG PoolableDataSourceFactory - Activated DataSource 93 of type 'List' === 2015-05-20 14:18:48,065 [c-60] DEBUG ISCKeyedObjectPool - Borrowing object for 'elem' === 2015-05-20 14:18:48,065 [c-60] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'elem' in the pooling flow === 2015-05-20 14:18:48,067 [c-60] DEBUG RPCManager - Processing 1 requests. === 2015-05-20 14:18:48,068 [c-60] DEBUG ISCKeyedObjectPool - Borrowing object for 'animals' === 2015-05-20 14:18:48,068 [c-60] DEBUG PoolableDataSourceFactory - Activated DataSource 77 of type 'animals' === 2015-05-20 14:18:48,068 [c-60] DEBUG DSRequest - Caching instance 77 of DS 'animals' from DSRequest.getDataSource() === 2015-05-20 14:18:48,068 [c-60] DEBUG DSRequest - Caching instance 77 of DS animals === 2015-05-20 14:18:48,069 [c-60] DEBUG RPCManager - Request #1 (DSRequest) payload: { values:{ commonName:"Eurasian eagle-owl", scientificName:"Bubo bubo", lifeSpan:30, status:"Protected", diet:"Carnivore", information:"Onomatopoeic name in German (Uhu)", picture:null, someField:null }, operationConfig:{ dataSource:"animals", repo:null, operationType:"add", textMatchStyle:"exact" }, componentId:"isc_DynamicForm_0", appID:"builtinApplication", operation:"animals_add", oldValues:{ }, criteria:{ } } === 2015-05-20 14:18:48,069 [c-60] INFO IDACall - Performing 1 operation(s) === 2015-05-20 14:18:48,070 [c-60] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null === 2015-05-20 14:18:48,070 [c-60] DEBUG DeclarativeSecurity - DataSource animals is not in the pre-checked list, processing... === 2015-05-20 14:18:48,070 [c-60] DEBUG AppBase - [builtinApplication.animals_add] No userTypes defined, allowing anyone access to all operations for this application === 2015-05-20 14:18:48,071 [c-60] DEBUG AppBase - [builtinApplication.animals_add] No public zero-argument method named '_animals_add' found, performing generic datasource operation === 2015-05-20 14:18:48,073 [c-60] INFO SQLDataSource - [builtinApplication.animals_add] Performing add operation with criteria: {commonName:"Eurasian eagle-owl",scientificName:"Bubo bubo",lifeSpan:30,status:"Protected",diet:"Carnivore",information:"Onomatopoeic name in German (Uhu)",picture:null,someField:null} values: {commonName:"Eurasian eagle-owl",scientificName:"Bubo bubo",lifeSpan:30,status:"Protected",diet:"Carnivore",information:"Onomatopoeic name in German (Uhu)",picture:null,someField:null} === 2015-05-20 14:18:48,074 [c-60] DEBUG SQLValuesClause - [builtinApplication.animals_add] Sequences: {} === 2015-05-20 14:18:48,076 [c-60] DEBUG PoolableSQLConnectionFactory - [builtinApplication.animals_add] DriverManager fetching connection for HSQLDB via jdbc url jdbc:hsqldb:hsql://localhost/isomorphic === 2015-05-20 14:18:48,076 [c-60] DEBUG PoolableSQLConnectionFactory - [builtinApplication.animals_add] Passing JDBC URL only to getConnection === 2015-05-20 14:18:48,181 [c-60] DEBUG PoolableSQLConnectionFactory - [builtinApplication.animals_add] makeObject() created an unpooled Connection '1943539812' === 2015-05-20 14:18:48,181 [c-60] DEBUG SQLConnectionManager - [builtinApplication.animals_add] Borrowed connection '1943539812' === 2015-05-20 14:18:48,182 [c-60] DEBUG SQLTransaction - [builtinApplication.animals_add] Started new HSQLDB transaction "1943539812" === 2015-05-20 14:18:48,182 [c-60] DEBUG SQLDriver - [builtinApplication.animals_add] About to execute SQL update in 'HSQLDB' using connection'1943539812' === 2015-05-20 14:18:48,183 [c-60] INFO SQLDriver - [builtinApplication.animals_add] Executing SQL update on 'HSQLDB': INSERT INTO animals (commonName, diet, information, lifeSpan, picture, scientificName, status) VALUES ('Eurasian eagle-owl', 'Carnivore', 'Onomatopoeic name in German (Uhu)', 30, NULL, 'Bubo bubo', 'Protected') === 2015-05-20 14:18:48,184 [c-60] DEBUG SQLDriver - [builtinApplication.animals_add] SequenceMode is not JDBC_DRIVER, skipping search for generated values === 2015-05-20 14:18:48,185 [c-60] DEBUG SQLDataSource - [builtinApplication.animals_add] add operation affected 1 rows === 2015-05-20 14:18:48,185 [c-60] INFO SQLDataSource - [builtinApplication.animals_add] primaryKeys: {scientificName=Bubo bubo} === 2015-05-20 14:18:48,185 [c-60] DEBUG DeclarativeSecurity - [builtinApplication.animals_add] Processing security checks for DataSource null, field null === 2015-05-20 14:18:48,186 [c-60] DEBUG DeclarativeSecurity - [builtinApplication.animals_add] DataSource animals is not in the pre-checked list, processing... === 2015-05-20 14:18:48,186 [c-60] DEBUG AppBase - [builtinApplication.animals_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application === 2015-05-20 14:18:48,186 [c-60] DEBUG AppBase - [builtinApplication.animals_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation === 2015-05-20 14:18:48,187 [c-60] INFO SQLDataSource - [builtinApplication.animals_add, builtinApplication.null] Performing fetch operation with criteria: {scientificName:"Bubo bubo"} values: {scientificName:"Bubo bubo"} === 2015-05-20 14:18:48,188 [c-60] INFO SQLDataSource - [builtinApplication.animals_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause === 2015-05-20 14:18:48,188 [c-60] INFO SQLDataSource - [builtinApplication.animals_add, builtinApplication.null] 77: Executing SQL query on 'HSQLDB': SELECT animals.commonName, animals.scientificName, animals.lifeSpan, animals.status, animals.diet, animals.information, animals.picture FROM animals WHERE (LOWER(animals.scientificName)='bubo bubo') === 2015-05-20 14:18:48,189 [c-60] DEBUG SQLDriver - [builtinApplication.animals_add, builtinApplication.null] About to execute SQL query in 'HSQLDB' using connection '1943539812' === 2015-05-20 14:18:48,189 [c-60] INFO SQLDriver - [builtinApplication.animals_add, builtinApplication.null] Executing SQL query on 'HSQLDB': SELECT animals.commonName, animals.scientificName, animals.lifeSpan, animals.status, animals.diet, animals.information, animals.picture FROM animals WHERE (LOWER(animals.scientificName)='bubo bubo') === 2015-05-20 14:18:48,192 [c-60] INFO DSResponse - [builtinApplication.animals_add, builtinApplication.null] DSResponse: List with 1 items === 2015-05-20 14:18:48,193 [c-60] DEBUG DSRequest - [builtinApplication.animals_add] freeOnExecute is false for request of type fetch on DataSource animals - not freeing resources! === 2015-05-20 14:18:48,193 [c-60] INFO DSResponse - [builtinApplication.animals_add] DSResponse: List with 1 items === 2015-05-20 14:18:48,193 [c-60] DEBUG DSRequest - freeOnExecute is false for request of type add on DataSource animals - not freeing resources! === 2015-05-20 14:18:48,193 [c-60] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8 === 2015-05-20 14:18:48,193 [c-60] DEBUG SQLTransaction - Committing HSQLDB transaction "1943539812" === 2015-05-20 14:18:48,194 [c-60] DEBUG RPCManager - non-DMI response, dropExtraFields: false === 2015-05-20 14:18:48,195 [c-60] DEBUG SQLTransaction - getConnection() found transactional connection for HSQLDB with hashcode "1943539812" === 2015-05-20 14:18:48,195 [c-60] DEBUG SQLTransaction - Ending HSQLDB transaction "1943539812" === 2015-05-20 14:18:48,196 [c-60] DEBUG SQLConnectionManager - About to close JDBCConnection with hashcode "1943539812" === 2015-05-20 14:18:48,196 [c-60] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 77 of type 'animals' === 2015-05-20 14:18:48,197 [c-60] DEBUG DSRequest - Ignoring freeResources call because this is not a primary request! === 2015-05-20 14:18:48,197 [c-60] DEBUG DSRequest - Ignoring freeQueueResources call because this is not a primary request! === 2015-05-20 14:18:48,197 [c-60] INFO Compression - /BuiltInDS/builtinds/sc/IDACall: 310 -> 247 bytes
Code:
=== 2015-05-20 14:42:26,324 [c-59] INFO RequestContext - URL: '/BuiltInDS/builtinds/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 === 2015-05-20 14:42:26,324 [c-59] DEBUG IDACall - Header Name:Value pair: host:localhost:8080 === 2015-05-20 14:42:26,324 [c-59] DEBUG IDACall - Header Name:Value pair: user-agent:Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0 === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - Header Name:Value pair: accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - Header Name:Value pair: accept-language:de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - Header Name:Value pair: accept-encoding:gzip, deflate === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - Header Name:Value pair: dnt:1 === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - Header Name:Value pair: content-type:application/x-www-form-urlencoded; charset=UTF-8 === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - Header Name:Value pair: referer:http://localhost:8080/BuiltInDS/BuiltInDS.html === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - Header Name:Value pair: content-length:1425 === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - Header Name:Value pair: cookie:JSESSIONID=C5631D101CCCE887D2DBB40F36F47C69; isc_cState=ready; GLog=%7B%0D%20%20%20%20trackRPC%3Atrue%2C%20%0D%20%20%20%20pageGUID%3A%2241645E28-A8A9-4B95-822F-5C44EE205904%22%2C%20%0D%20%20%20%20priorityDefaults%3A%7B%0D%20%20%20%20%20%20%20%20sgwtInternal%3A1%0D%20%20%20%20%7D%2C%20%0D%20%20%20%20defaultPriority%3A3%2C%20%0D%20%20%20%20left%3A0%2C%20%0D%20%20%20%20top%3A0%2C%20%0D%20%20%20%20width%3A940%2C%20%0D%20%20%20%20height%3A519%0D%7D === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - Header Name:Value pair: connection:keep-alive === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - Header Name:Value pair: pragma:no-cache === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - Header Name:Value pair: cache-control:no-cache === 2015-05-20 14:42:26,325 [c-59] DEBUG IDACall - session exists: C5631D101CCCE887D2DBB40F36F47C69 === 2015-05-20 14:42:26,326 [c-59] DEBUG IDACall - remote user: null === 2015-05-20 14:42:26,329 [c-59] DEBUG XML - Parsed XML from (in memory stream): 2ms === 2015-05-20 14:42:26,329 [c-59] DEBUG ISCKeyedObjectPool - Borrowing object for 'transaction' === 2015-05-20 14:42:26,330 [c-59] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'transaction' in the pooling flow === 2015-05-20 14:42:26,330 [c-59] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object' === 2015-05-20 14:42:26,330 [c-59] DEBUG PoolableDataSourceFactory - Created DataSource 136 of type 'Object' and assigned it to thread http-bio-8080-exec-59 === 2015-05-20 14:42:26,330 [c-59] DEBUG PoolableDataSourceFactory - Created DataSource 136 of type 'Object' in the pooling flow === 2015-05-20 14:42:26,330 [c-59] DEBUG PoolableDataSourceFactory - Activated DataSource 136 of type 'Object' === 2015-05-20 14:42:26,331 [c-59] DEBUG ISCKeyedObjectPool - Borrowing object for 'List' === 2015-05-20 14:42:26,332 [c-59] DEBUG PoolableDataSourceFactory - Created DataSource 137 of type 'List' and assigned it to thread http-bio-8080-exec-59 === 2015-05-20 14:42:26,333 [c-59] DEBUG PoolableDataSourceFactory - Created DataSource 137 of type 'List' in the pooling flow === 2015-05-20 14:42:26,333 [c-59] DEBUG PoolableDataSourceFactory - Activated DataSource 137 of type 'List' === 2015-05-20 14:42:26,333 [c-59] DEBUG ISCKeyedObjectPool - Borrowing object for 'elem' === 2015-05-20 14:42:26,333 [c-59] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'elem' in the pooling flow === 2015-05-20 14:42:26,335 [c-59] DEBUG RPCManager - Processing 1 requests. === 2015-05-20 14:42:26,335 [c-59] DEBUG ISCKeyedObjectPool - Borrowing object for 'employees' === 2015-05-20 14:42:26,335 [c-59] DEBUG PoolableDataSourceFactory - Activated DataSource 21 of type 'employees' === 2015-05-20 14:42:26,335 [c-59] DEBUG DSRequest - Caching instance 21 of DS 'employees' from DSRequest.getDataSource() === 2015-05-20 14:42:26,335 [c-59] DEBUG DSRequest - Caching instance 21 of DS employees === 2015-05-20 14:42:26,336 [c-59] DEBUG RPCManager - Request #1 (DSRequest) payload: { values:{ Name:"New Name", EmployeeId:182, ReportsTo:4, Job:null, Email:null, EmployeeType:null, EmployeeStatus:null, Salary:null, OrgUnit:null, Gender:null, MaritalStatus:null }, operationConfig:{ dataSource:"employees", repo:null, operationType:"add", textMatchStyle:"exact" }, componentId:"isc_DynamicForm_0", appID:"builtinApplication", operation:"employees_add", oldValues:{ }, criteria:{ } } === 2015-05-20 14:42:26,336 [c-59] INFO IDACall - Performing 1 operation(s) === 2015-05-20 14:42:26,336 [c-59] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null === 2015-05-20 14:42:26,336 [c-59] DEBUG DeclarativeSecurity - DataSource employees is not in the pre-checked list, processing... === 2015-05-20 14:42:26,337 [c-59] DEBUG AppBase - [builtinApplication.employees_add] No userTypes defined, allowing anyone access to all operations for this application === 2015-05-20 14:42:26,337 [c-59] DEBUG AppBase - [builtinApplication.employees_add] No public zero-argument method named '_employees_add' found, performing generic datasource operation === 2015-05-20 14:42:26,338 [c-59] INFO SQLDataSource - [builtinApplication.employees_add] Performing add operation with criteria: {Name:"New Name",EmployeeId:182,ReportsTo:4,Job:null,Email:null,EmployeeType:null,EmployeeStatus:null,Salary:null,OrgUnit:null,Gender:null,MaritalStatus:null} values: {Name:"New Name",EmployeeId:182,ReportsTo:4,Job:null,Email:null,EmployeeType:null,EmployeeStatus:null,Salary:null,OrgUnit:null,Gender:null,MaritalStatus:null} === 2015-05-20 14:42:26,338 [c-59] DEBUG SQLValuesClause - [builtinApplication.employees_add] Sequences: {} === 2015-05-20 14:42:26,340 [c-59] DEBUG PoolableSQLConnectionFactory - [builtinApplication.employees_add] DriverManager fetching connection for HSQLDB via jdbc url jdbc:hsqldb:hsql://localhost/isomorphic === 2015-05-20 14:42:26,340 [c-59] DEBUG PoolableSQLConnectionFactory - [builtinApplication.employees_add] Passing JDBC URL only to getConnection === 2015-05-20 14:42:26,443 [c-59] DEBUG PoolableSQLConnectionFactory - [builtinApplication.employees_add] makeObject() created an unpooled Connection '31901225' === 2015-05-20 14:42:26,443 [c-59] DEBUG SQLConnectionManager - [builtinApplication.employees_add] Borrowed connection '31901225' === 2015-05-20 14:42:26,444 [c-59] DEBUG SQLTransaction - [builtinApplication.employees_add] Started new HSQLDB transaction "31901225" === 2015-05-20 14:42:26,444 [c-59] DEBUG SQLDriver - [builtinApplication.employees_add] About to execute SQL update in 'HSQLDB' using connection'31901225' === 2015-05-20 14:42:26,444 [c-59] INFO SQLDriver - [builtinApplication.employees_add] Executing SQL update on 'HSQLDB': INSERT INTO employeeTable (Email, EmployeeId, EmployeeStatus, EmployeeType, Gender, Job, MaritalStatus, Name, OrgUnit, ReportsTo, Salary) VALUES (NULL, 182, NULL, NULL, NULL, NULL, NULL, 'New Name', NULL, 4, NULL) === 2015-05-20 14:42:26,446 [c-59] DEBUG SQLDriver - [builtinApplication.employees_add] SequenceMode is not JDBC_DRIVER, skipping search for generated values === 2015-05-20 14:42:26,447 [c-59] DEBUG SQLDriver - [builtinApplication.employees_add] FAILED to execute SQL update in 'HSQLDB' using connection'31901225' === 2015-05-20 14:42:26,447 [c-59] DEBUG DSRequest - freeOnExecute is false for request of type add on DataSource employees - not freeing resources! === 2015-05-20 14:42:26,447 [c-59] WARN RequestContext - dsRequest.execute() failed: java.sql.SQLIntegrityConstraintViolationException: integrity constraint violation: unique constraint or index violation; EMPLOYEETABLE_UI table: EMPLOYEETABLE at org.hsqldb.jdbc.Util.sqlException(Unknown Source) at org.hsqldb.jdbc.Util.sqlException(Unknown Source) at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source) at com.isomorphic.sql.SQLDriver.doUpdate(SQLDriver.java:902) at com.isomorphic.sql.SQLDriver.update(SQLDriver.java:804) at com.isomorphic.sql.SQLDriver.executeUpdate(SQLDriver.java:989) at com.isomorphic.sql.SQLDataSource.executeNativeUpdate(SQLDataSource.java:570) at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1992) at com.isomorphic.sql.SQLDataSource.processRequest(SQLDataSource.java:443) at com.isomorphic.sql.SQLDataSource.executeAdd(SQLDataSource.java:396) at com.isomorphic.datasource.DataSource.execute(DataSource.java:1950) at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:726) at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658) at com.isomorphic.application.AppBase.execute(AppBase.java:491) at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2548) at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:220) at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:185) at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:152) at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:117) at com.isomorphic.servlet.IDACall.doPost(IDACall.java:76) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:156) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.isomorphic.servlet.CompressionFilter._doFilter(CompressionFilter.java:260) at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:83) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) === 2015-05-20 14:42:26,448 [c-59] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8 === 2015-05-20 14:42:26,449 [c-59] DEBUG SQLTransaction - Rolling back HSQLDB transaction "31901225" === 2015-05-20 14:42:26,449 [c-59] DEBUG RPCManager - non-DMI response, dropExtraFields: false === 2015-05-20 14:42:26,450 [c-59] DEBUG SQLTransaction - getConnection() found transactional connection for HSQLDB with hashcode "31901225" === 2015-05-20 14:42:26,450 [c-59] DEBUG SQLTransaction - Ending HSQLDB transaction "31901225" === 2015-05-20 14:42:26,451 [c-59] DEBUG SQLConnectionManager - About to close JDBCConnection with hashcode "31901225" === 2015-05-20 14:42:26,451 [c-59] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 21 of type 'employees' === 2015-05-20 14:42:26,452 [c-59] INFO Compression - /BuiltInDS/builtinds/sc/IDACall: 243 -> 189 bytes
Blama
Comment