Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    12.0p BatchUploader sends way to many JDBC-commits, slowing down the upload process severely

    Hi Isomorphic,

    please see this log and watch the growing amount of "DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"" per add statement.
    While where is 4x this line (also 3 too much, if this is really 4 JDBC-commit() and not just log output) in the beginning, it becomes 4 more per additional row.
    For me, this results in a huge delay (0.5 seconds *per row*/for the last row) when there are many rows in the csv-file.

    My issues here are:
    • The linear growth of commits for every row
    • The 4 commit for the 1st row (if it really is this way)
    Tested with v12.0p_2019-06-25.
    Important change from "normal" BU is the code in EmployeesUpload.java.
    The change is there in order not to have long lasting object locks (table, index) and not much undo information in the DB.

    Testcase and server log for "Commit"-click in BatchUploader ("Upload" not included):

    Server log output:
    Code:
    === 2019-07-01 15:55:05,838 [2-32] INFO  RequestContext - URL: '/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
    === 2019-07-01 15:55:05,841 [2-32] DEBUG XML - Parsed XML from (in memory stream): 2ms
    === 2019-07-01 15:55:05,848 [2-32] DEBUG RPCManager - Processing 4 requests.
    === 2019-07-01 15:55:05,851 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 100
    === 2019-07-01 15:55:05,851 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 96
    === 2019-07-01 15:55:05,851 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 38
    === 2019-07-01 15:55:05,851 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 50
    === 2019-07-01 15:55:05,851 [2-32] DEBUG ProcessedFileCache - STALE object for file 'C:\Users\ST\workspace\lib\smartgwtpower-12.0p\samples\built-in-ds\war\ds\employeesUpload.ds.xml', reloading (file timestamp 1561989289028, cache timestamp 1561988695822)
    === 2019-07-01 15:55:05,853 [2-32] DEBUG XML - Parsed XML from C:\Users\ST\workspace\lib\smartgwtpower-12.0p\samples\built-in-ds\war\ds\employeesUpload.ds.xml: 1ms
    === 2019-07-01 15:55:05,864 [2-32] DEBUG RPCManager - Request #1 (DSRequest) payload: {
        values:{
            ReportsTo:4,
            Gender:"female",
            EmployeeId:1000,
            ReportsToName:"Charles Madigen",
            Name:"Anna Sun"
        },
        operationConfig:{
            dataSource:"employeesUpload",
            repo:null,
            operationType:"add",
            textMatchStyle:"exact"
        },
        appID:"builtinApplication",
        operation:"employeesUpload_add",
        oldValues:{
            ReportsTo:4,
            Gender:"female",
            EmployeeId:1000,
            ReportsToName:"Charles Madigen",
            Name:"Anna Sun"
        },
        criteria:{
        }
    }
    === 2019-07-01 15:55:05,865 [2-32] DEBUG RPCManager - Request #2 (DSRequest) payload: {
        values:{
            ReportsTo:182,
            Gender:"male",
            EmployeeId:1001,
            ReportsToName:"Tamara Kane",
            Name:"Mike Sun"
        },
        operationConfig:{
            dataSource:"employeesUpload",
            repo:null,
            operationType:"add",
            textMatchStyle:"exact"
        },
        appID:"builtinApplication",
        operation:"employeesUpload_add",
        oldValues:{
            ReportsTo:182,
            Gender:"male",
            EmployeeId:1001,
            ReportsToName:"Tamara Kane",
            Name:"Mike Sun"
        },
        criteria:{
        }
    }
    === 2019-07-01 15:55:05,865 [2-32] DEBUG RPCManager - Request #3 (DSRequest) payload: {
        values:{
            ReportsTo:182,
            Gender:"male",
            EmployeeId:1002,
            ReportsToName:"Tamara Kane",
            Name:"Jeff Doe"
        },
        operationConfig:{
            dataSource:"employeesUpload",
            repo:null,
            operationType:"add",
            textMatchStyle:"exact"
        },
        appID:"builtinApplication",
        operation:"employeesUpload_add",
        oldValues:{
            ReportsTo:182,
            Gender:"male",
            EmployeeId:1002,
            ReportsToName:"Tamara Kane",
            Name:"Jeff Doe"
        },
        criteria:{
        }
    }
    === 2019-07-01 15:55:05,865 [2-32] DEBUG RPCManager - Request #4 (DSRequest) payload: {
        values:{
            ReportsTo:182,
            Gender:"male",
            EmployeeId:1003,
            ReportsToName:"Tamara Kane",
            Name:"John Doe"
        },
        operationConfig:{
            dataSource:"employeesUpload",
            repo:null,
            operationType:"add",
            textMatchStyle:"exact"
        },
        appID:"builtinApplication",
        operation:"employeesUpload_add",
        oldValues:{
            ReportsTo:182,
            Gender:"male",
            EmployeeId:1003,
            ReportsToName:"Tamara Kane",
            Name:"John Doe"
        },
        criteria:{
        }
    }
    === 2019-07-01 15:55:05,865 [2-32] INFO  IDACall - Performing 4 operation(s)
    === 2019-07-01 15:55:05,865 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:05,865 [2-32] DEBUG DeclarativeSecurity - DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:05,866 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:05,866 [2-32] DEBUG DeclarativeSecurity - Request is not a client request, ignoring security checks.
    === 2019-07-01 15:55:05,866 [2-32] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:05,866 [2-32] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:05,867 [2-32] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
        criteria: {EmployeeId:4}    values: {EmployeeId:4}
    === 2019-07-01 15:55:05,867 [2-32] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:05,867 [2-32] INFO  SQLDataSource - [builtinApplication.null] 83: Executing SQL query on 'HSQLDB': SELECT employeeTable.userOrder, employeeTable.Name, employeeTable.EmployeeId, employeeTable.ReportsTo, employeeTable.Job, employeeTable.Email, employeeTable.EmployeeType, employeeTable.EmployeeStatus, employeeTable.Salary, employeeTable.OrgUnit, employeeTable.Gender, employeeTable.MaritalStatus FROM employeeTable WHERE (employeeTable.EmployeeId=4)
    === 2019-07-01 15:55:05,868 [2-32] DEBUG SQLConnectionManager - [builtinApplication.null] Borrowed connection '1723282589'
    === 2019-07-01 15:55:05,868 [2-32] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '1723282589': SELECT employeeTable.userOrder, employeeTable.Name, employeeTable.EmployeeId, employeeTable.ReportsTo, employeeTable.Job, employeeTable.Email, employeeTable.EmployeeType, employeeTable.EmployeeStatus, employeeTable.Salary, employeeTable.OrgUnit, employeeTable.Gender, employeeTable.MaritalStatus FROM employeeTable WHERE (employeeTable.EmployeeId=4)
    === 2019-07-01 15:55:05,868 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    === 2019-07-01 15:55:05,869 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:05,869 [2-32] DEBUG DeclarativeSecurity - Request is not a client request, ignoring security checks.
    === 2019-07-01 15:55:05,869 [2-32] DEBUG ServerObject - Couldn't find a public method named: fetch on class: com.smartgwt.sample.server.listener.EmployeesUpload
    === 2019-07-01 15:55:05,869 [2-32] DEBUG DataSourceDMI - DataSourceDMI: no public method name: fetch available on class: com.smartgwt.sample.server.listener.EmployeesUpload - defaulting to builtin operations.
    === 2019-07-01 15:55:05,869 [2-32] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:05,869 [2-32] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:05,869 [2-32] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
        outputs: [EmployeeId, Name]    criteria: {Name:"Anna Sun"}    values: {Name:"Anna Sun"}
    === 2019-07-01 15:55:05,870 [2-32] DEBUG SQLDataSource - [builtinApplication.null] DataSource 113 acquired SQLDriver instance 1503672471 during initialization
    === 2019-07-01 15:55:05,870 [2-32] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:05,871 [2-32] INFO  SQLDataSource - [builtinApplication.null] 113: Executing SQL query on 'HSQLDB': SELECT employeeTable.EmployeeId, employeeTable.Name FROM employeeTable WHERE (employeeTable.Name='Anna Sun')
    === 2019-07-01 15:55:05,871 [2-32] DEBUG SQLConnectionManager - [builtinApplication.null] Borrowed connection '147239089'
    === 2019-07-01 15:55:05,871 [2-32] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '147239089': SELECT employeeTable.EmployeeId, employeeTable.Name FROM employeeTable WHERE (employeeTable.Name='Anna Sun')
    === 2019-07-01 15:55:05,872 [2-32] INFO  DSResponse - DSResponse: List with 0 items
    === 2019-07-01 15:55:10,660 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:10,660 [2-32] DEBUG DeclarativeSecurity - DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:10,660 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:10,660 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add] No public zero-argument method named '_employeesUpload_add' found, performing generic datasource operation
    === 2019-07-01 15:55:10,660 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add] Performing add operation with
        criteria: {ReportsTo:4,Gender:"female",EmployeeId:1000,ReportsToName:"Charles Madigen",Name:"Anna Sun"}    values: {ReportsTo:4,Gender:"female",EmployeeId:1000,ReportsToName:"Charles Madigen",Name:"Anna Sun"}
    === 2019-07-01 15:55:10,661 [2-32] INFO  SQLValuesClause - [builtinApplication.employeesUpload_add] Ignored data for non-existent or included columns: [ReportsToName]
    === 2019-07-01 15:55:10,661 [2-32] DEBUG SQLValuesClause - [builtinApplication.employeesUpload_add] Sequences: {}
    === 2019-07-01 15:55:10,661 [2-32] DEBUG SQLConnectionManager - [builtinApplication.employeesUpload_add] Borrowed connection '1939247906'
    === 2019-07-01 15:55:10,661 [2-32] DEBUG SQLTransaction - [builtinApplication.employeesUpload_add] Started new HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:10,661 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:10,661 [2-32] INFO  SQLDriver - [builtinApplication.employeesUpload_add] Executing SQL query on 'HSQLDB' using connection '1939247906': INSERT INTO employeeTable (EmployeeId, Gender, Name, ReportsTo) VALUES (1000, 'female', 'Anna Sun', 4)
    === 2019-07-01 15:55:10,664 [2-32] DEBUG SQLDriver - [builtinApplication.employeesUpload_add] SequenceMode is not JDBC_DRIVER, skipping search for generated values
    === 2019-07-01 15:55:10,665 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add] primaryKeys: {EmployeeId=1000}
    === 2019-07-01 15:55:10,665 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] Gathered all keys.  lastPrimaryKeys is now {EmployeeId=1000}
    === 2019-07-01 15:55:10,665 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] add operation affected 1 rows
    === 2019-07-01 15:55:10,665 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:10,665 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:10,665 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource employees, field EmployeeId
    === 2019-07-01 15:55:10,665 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employees is not in the pre-checked list, processing...
    === 2019-07-01 15:55:10,665 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource employees, field Name
    === 2019-07-01 15:55:10,665 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employees is not in the pre-checked list, processing...
    === 2019-07-01 15:55:10,665 [2-32] DEBUG ServerObject - [builtinApplication.employeesUpload_add] Couldn't find a public method named: fetch on class: com.smartgwt.sample.server.listener.EmployeesUpload
    === 2019-07-01 15:55:10,665 [2-32] DEBUG DataSourceDMI - [builtinApplication.employeesUpload_add] DataSourceDMI: no public method name: fetch available on class: com.smartgwt.sample.server.listener.EmployeesUpload - defaulting to builtin operations.
    === 2019-07-01 15:55:10,665 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:10,665 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:10,665 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Performing fetch operation with
        criteria: {EmployeeId:1000}    values: {EmployeeId:1000}
    === 2019-07-01 15:55:10,667 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:10,668 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Using SQL Limit query
    === 2019-07-01 15:55:10,668 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] SQL windowed select rows 0->-1, result size 1. Query: SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1000)
    === 2019-07-01 15:55:10,668 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] SQL windowed select rows 0->-1, result size 1. Query: SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1000)
    === 2019-07-01 15:55:10,668 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:10,668 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] 113: Executing cache sync query on 'HSQLDB': SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1000)
    === 2019-07-01 15:55:10,670 [2-32] INFO  DSResponse - [builtinApplication.employeesUpload_add] DSResponse: List with 1 items
    === 2019-07-01 15:55:10,670 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    [B]=== 2019-07-01 15:55:10,670 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:10,671 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:10,671 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:10,671 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"[/B]
    === 2019-07-01 15:55:10,671 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    === 2019-07-01 15:55:10,671 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:10,671 [2-32] DEBUG DeclarativeSecurity - DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:10,672 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:10,672 [2-32] DEBUG DeclarativeSecurity - Request is not a client request, ignoring security checks.
    === 2019-07-01 15:55:10,672 [2-32] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:10,672 [2-32] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:10,672 [2-32] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
        criteria: {EmployeeId:182}    values: {EmployeeId:182}
    === 2019-07-01 15:55:10,673 [2-32] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:10,673 [2-32] INFO  SQLDataSource - [builtinApplication.null] 99: Executing SQL query on 'HSQLDB': SELECT employeeTable.userOrder, employeeTable.Name, employeeTable.EmployeeId, employeeTable.ReportsTo, employeeTable.Job, employeeTable.Email, employeeTable.EmployeeType, employeeTable.EmployeeStatus, employeeTable.Salary, employeeTable.OrgUnit, employeeTable.Gender, employeeTable.MaritalStatus FROM employeeTable WHERE (employeeTable.EmployeeId=182)
    === 2019-07-01 15:55:10,673 [2-32] DEBUG SQLDataSource - [builtinApplication.null] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:10,673 [2-32] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '1939247906': SELECT employeeTable.userOrder, employeeTable.Name, employeeTable.EmployeeId, employeeTable.ReportsTo, employeeTable.Job, employeeTable.Email, employeeTable.EmployeeType, employeeTable.EmployeeStatus, employeeTable.Salary, employeeTable.OrgUnit, employeeTable.Gender, employeeTable.MaritalStatus FROM employeeTable WHERE (employeeTable.EmployeeId=182)
    === 2019-07-01 15:55:10,674 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    === 2019-07-01 15:55:10,674 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:10,674 [2-32] DEBUG DeclarativeSecurity - Request is not a client request, ignoring security checks.
    === 2019-07-01 15:55:10,674 [2-32] DEBUG ServerObject - Couldn't find a public method named: fetch on class: com.smartgwt.sample.server.listener.EmployeesUpload
    === 2019-07-01 15:55:10,674 [2-32] DEBUG DataSourceDMI - DataSourceDMI: no public method name: fetch available on class: com.smartgwt.sample.server.listener.EmployeesUpload - defaulting to builtin operations.
    === 2019-07-01 15:55:10,674 [2-32] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:10,674 [2-32] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:10,674 [2-32] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
        outputs: [EmployeeId, Name]    criteria: {Name:"Mike Sun"}    values: {Name:"Mike Sun"}
    === 2019-07-01 15:55:10,675 [2-32] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:10,675 [2-32] INFO  SQLDataSource - [builtinApplication.null] 113: Executing SQL query on 'HSQLDB': SELECT employeeTable.EmployeeId, employeeTable.Name FROM employeeTable WHERE (employeeTable.Name='Mike Sun')
    === 2019-07-01 15:55:10,675 [2-32] DEBUG SQLDataSource - [builtinApplication.null] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:10,675 [2-32] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '1939247906': SELECT employeeTable.EmployeeId, employeeTable.Name FROM employeeTable WHERE (employeeTable.Name='Mike Sun')
    === 2019-07-01 15:55:10,676 [2-32] INFO  DSResponse - DSResponse: List with 0 items
    === 2019-07-01 15:55:16,236 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:16,236 [2-32] DEBUG DeclarativeSecurity - DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:16,236 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:16,236 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add] No public zero-argument method named '_employeesUpload_add' found, performing generic datasource operation
    === 2019-07-01 15:55:16,236 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add] Performing add operation with
        criteria: {ReportsTo:182,Gender:"male",EmployeeId:1001,ReportsToName:"Tamara Kane",Name:"Mike Sun"}    values: {ReportsTo:182,Gender:"male",EmployeeId:1001,ReportsToName:"Tamara Kane",Name:"Mike Sun"}
    === 2019-07-01 15:55:16,236 [2-32] INFO  SQLValuesClause - [builtinApplication.employeesUpload_add] Ignored data for non-existent or included columns: [ReportsToName]
    === 2019-07-01 15:55:16,236 [2-32] DEBUG SQLValuesClause - [builtinApplication.employeesUpload_add] Sequences: {}
    === 2019-07-01 15:55:16,237 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:16,237 [2-32] INFO  SQLDriver - [builtinApplication.employeesUpload_add] Executing SQL query on 'HSQLDB' using connection '1939247906': INSERT INTO employeeTable (EmployeeId, Gender, Name, ReportsTo) VALUES (1001, 'male', 'Mike Sun', 182)
    === 2019-07-01 15:55:16,237 [2-32] DEBUG SQLDriver - [builtinApplication.employeesUpload_add] SequenceMode is not JDBC_DRIVER, skipping search for generated values
    === 2019-07-01 15:55:16,237 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add] primaryKeys: {EmployeeId=1001}
    === 2019-07-01 15:55:16,237 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] Gathered all keys.  lastPrimaryKeys is now {EmployeeId=1001}
    === 2019-07-01 15:55:16,237 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] add operation affected 1 rows
    === 2019-07-01 15:55:16,237 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:16,237 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:16,237 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource employees, field EmployeeId
    === 2019-07-01 15:55:16,237 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employees is not in the pre-checked list, processing...
    === 2019-07-01 15:55:16,237 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource employees, field Name
    === 2019-07-01 15:55:16,237 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employees is not in the pre-checked list, processing...
    === 2019-07-01 15:55:16,238 [2-32] DEBUG ServerObject - [builtinApplication.employeesUpload_add] Couldn't find a public method named: fetch on class: com.smartgwt.sample.server.listener.EmployeesUpload
    === 2019-07-01 15:55:16,238 [2-32] DEBUG DataSourceDMI - [builtinApplication.employeesUpload_add] DataSourceDMI: no public method name: fetch available on class: com.smartgwt.sample.server.listener.EmployeesUpload - defaulting to builtin operations.
    === 2019-07-01 15:55:16,238 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:16,238 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:16,238 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Performing fetch operation with
        criteria: {EmployeeId:1001}    values: {EmployeeId:1001}
    === 2019-07-01 15:55:16,238 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:16,239 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Using SQL Limit query
    === 2019-07-01 15:55:16,239 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] SQL windowed select rows 0->-1, result size 1. Query: SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1001)
    === 2019-07-01 15:55:16,239 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] SQL windowed select rows 0->-1, result size 1. Query: SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1001)
    === 2019-07-01 15:55:16,239 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:16,239 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] 113: Executing cache sync query on 'HSQLDB': SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1001)
    === 2019-07-01 15:55:16,239 [2-32] INFO  DSResponse - [builtinApplication.employeesUpload_add] DSResponse: List with 1 items
    === 2019-07-01 15:55:16,239 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    [B]=== 2019-07-01 15:55:16,239 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:16,239 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:16,239 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:16,239 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:16,239 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:16,240 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:16,240 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:16,240 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"[/B]
    === 2019-07-01 15:55:16,240 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    === 2019-07-01 15:55:16,240 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:16,240 [2-32] DEBUG DeclarativeSecurity - DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:16,241 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:16,241 [2-32] DEBUG DeclarativeSecurity - Request is not a client request, ignoring security checks.
    === 2019-07-01 15:55:16,241 [2-32] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:16,241 [2-32] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:16,242 [2-32] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
        criteria: {EmployeeId:182}    values: {EmployeeId:182}
    === 2019-07-01 15:55:16,242 [2-32] DEBUG SQLDataSource - [builtinApplication.null] DataSource 115 acquired SQLDriver instance 793786614 during initialization
    === 2019-07-01 15:55:16,242 [2-32] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:16,243 [2-32] INFO  SQLDataSource - [builtinApplication.null] 115: Executing SQL query on 'HSQLDB': SELECT employeeTable.userOrder, employeeTable.Name, employeeTable.EmployeeId, employeeTable.ReportsTo, employeeTable.Job, employeeTable.Email, employeeTable.EmployeeType, employeeTable.EmployeeStatus, employeeTable.Salary, employeeTable.OrgUnit, employeeTable.Gender, employeeTable.MaritalStatus FROM employeeTable WHERE (employeeTable.EmployeeId=182)
    === 2019-07-01 15:55:16,243 [2-32] DEBUG SQLDataSource - [builtinApplication.null] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:16,243 [2-32] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '1939247906': SELECT employeeTable.userOrder, employeeTable.Name, employeeTable.EmployeeId, employeeTable.ReportsTo, employeeTable.Job, employeeTable.Email, employeeTable.EmployeeType, employeeTable.EmployeeStatus, employeeTable.Salary, employeeTable.OrgUnit, employeeTable.Gender, employeeTable.MaritalStatus FROM employeeTable WHERE (employeeTable.EmployeeId=182)
    === 2019-07-01 15:55:16,244 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    === 2019-07-01 15:55:16,244 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:16,244 [2-32] DEBUG DeclarativeSecurity - Request is not a client request, ignoring security checks.
    === 2019-07-01 15:55:16,244 [2-32] DEBUG ServerObject - Couldn't find a public method named: fetch on class: com.smartgwt.sample.server.listener.EmployeesUpload
    === 2019-07-01 15:55:16,244 [2-32] DEBUG DataSourceDMI - DataSourceDMI: no public method name: fetch available on class: com.smartgwt.sample.server.listener.EmployeesUpload - defaulting to builtin operations.
    === 2019-07-01 15:55:16,244 [2-32] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:16,244 [2-32] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:16,244 [2-32] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
        outputs: [EmployeeId, Name]    criteria: {Name:"Jeff Doe"}    values: {Name:"Jeff Doe"}
    === 2019-07-01 15:55:16,244 [2-32] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:16,245 [2-32] INFO  SQLDataSource - [builtinApplication.null] 113: Executing SQL query on 'HSQLDB': SELECT employeeTable.EmployeeId, employeeTable.Name FROM employeeTable WHERE (employeeTable.Name='Jeff Doe')
    === 2019-07-01 15:55:16,245 [2-32] DEBUG SQLDataSource - [builtinApplication.null] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:16,245 [2-32] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '1939247906': SELECT employeeTable.EmployeeId, employeeTable.Name FROM employeeTable WHERE (employeeTable.Name='Jeff Doe')
    === 2019-07-01 15:55:16,246 [2-32] INFO  DSResponse - DSResponse: List with 0 items
    === 2019-07-01 15:55:18,292 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:18,292 [2-32] DEBUG DeclarativeSecurity - DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:18,292 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:18,292 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add] No public zero-argument method named '_employeesUpload_add' found, performing generic datasource operation
    === 2019-07-01 15:55:18,293 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add] Performing add operation with
        criteria: {ReportsTo:182,Gender:"male",EmployeeId:1002,ReportsToName:"Tamara Kane",Name:"Jeff Doe"}    values: {ReportsTo:182,Gender:"male",EmployeeId:1002,ReportsToName:"Tamara Kane",Name:"Jeff Doe"}
    === 2019-07-01 15:55:18,293 [2-32] INFO  SQLValuesClause - [builtinApplication.employeesUpload_add] Ignored data for non-existent or included columns: [ReportsToName]
    === 2019-07-01 15:55:18,293 [2-32] DEBUG SQLValuesClause - [builtinApplication.employeesUpload_add] Sequences: {}
    === 2019-07-01 15:55:18,294 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:18,294 [2-32] INFO  SQLDriver - [builtinApplication.employeesUpload_add] Executing SQL query on 'HSQLDB' using connection '1939247906': INSERT INTO employeeTable (EmployeeId, Gender, Name, ReportsTo) VALUES (1002, 'male', 'Jeff Doe', 182)
    === 2019-07-01 15:55:18,294 [2-32] DEBUG SQLDriver - [builtinApplication.employeesUpload_add] SequenceMode is not JDBC_DRIVER, skipping search for generated values
    === 2019-07-01 15:55:18,294 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add] primaryKeys: {EmployeeId=1002}
    === 2019-07-01 15:55:18,294 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] Gathered all keys.  lastPrimaryKeys is now {EmployeeId=1002}
    === 2019-07-01 15:55:18,294 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] add operation affected 1 rows
    === 2019-07-01 15:55:18,295 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:18,295 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:18,295 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource employees, field EmployeeId
    === 2019-07-01 15:55:18,295 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employees is not in the pre-checked list, processing...
    === 2019-07-01 15:55:18,295 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource employees, field Name
    === 2019-07-01 15:55:18,295 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employees is not in the pre-checked list, processing...
    === 2019-07-01 15:55:18,295 [2-32] DEBUG ServerObject - [builtinApplication.employeesUpload_add] Couldn't find a public method named: fetch on class: com.smartgwt.sample.server.listener.EmployeesUpload
    === 2019-07-01 15:55:18,295 [2-32] DEBUG DataSourceDMI - [builtinApplication.employeesUpload_add] DataSourceDMI: no public method name: fetch available on class: com.smartgwt.sample.server.listener.EmployeesUpload - defaulting to builtin operations.
    === 2019-07-01 15:55:18,295 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:18,296 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:18,296 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Performing fetch operation with
        criteria: {EmployeeId:1002}    values: {EmployeeId:1002}
    === 2019-07-01 15:55:18,296 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:18,298 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Using SQL Limit query
    === 2019-07-01 15:55:18,298 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] SQL windowed select rows 0->-1, result size 1. Query: SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1002)
    === 2019-07-01 15:55:18,298 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] SQL windowed select rows 0->-1, result size 1. Query: SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1002)
    === 2019-07-01 15:55:18,298 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:18,298 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] 113: Executing cache sync query on 'HSQLDB': SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1002)
    === 2019-07-01 15:55:18,298 [2-32] INFO  DSResponse - [builtinApplication.employeesUpload_add] DSResponse: List with 1 items
    === 2019-07-01 15:55:18,299 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    [B]=== 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:18,299 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"[/B]
    === 2019-07-01 15:55:18,299 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    === 2019-07-01 15:55:18,299 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:18,299 [2-32] DEBUG DeclarativeSecurity - DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:18,301 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:18,301 [2-32] DEBUG DeclarativeSecurity - Request is not a client request, ignoring security checks.
    === 2019-07-01 15:55:18,301 [2-32] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:18,301 [2-32] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:18,302 [2-32] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
        criteria: {EmployeeId:182}    values: {EmployeeId:182}
    === 2019-07-01 15:55:18,302 [2-32] DEBUG SQLDataSource - [builtinApplication.null] DataSource 117 acquired SQLDriver instance 82037668 during initialization
    === 2019-07-01 15:55:18,302 [2-32] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:18,303 [2-32] INFO  SQLDataSource - [builtinApplication.null] 117: Executing SQL query on 'HSQLDB': SELECT employeeTable.userOrder, employeeTable.Name, employeeTable.EmployeeId, employeeTable.ReportsTo, employeeTable.Job, employeeTable.Email, employeeTable.EmployeeType, employeeTable.EmployeeStatus, employeeTable.Salary, employeeTable.OrgUnit, employeeTable.Gender, employeeTable.MaritalStatus FROM employeeTable WHERE (employeeTable.EmployeeId=182)
    === 2019-07-01 15:55:18,303 [2-32] DEBUG SQLDataSource - [builtinApplication.null] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:18,303 [2-32] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '1939247906': SELECT employeeTable.userOrder, employeeTable.Name, employeeTable.EmployeeId, employeeTable.ReportsTo, employeeTable.Job, employeeTable.Email, employeeTable.EmployeeType, employeeTable.EmployeeStatus, employeeTable.Salary, employeeTable.OrgUnit, employeeTable.Gender, employeeTable.MaritalStatus FROM employeeTable WHERE (employeeTable.EmployeeId=182)
    === 2019-07-01 15:55:18,304 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    === 2019-07-01 15:55:18,304 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:18,304 [2-32] DEBUG DeclarativeSecurity - Request is not a client request, ignoring security checks.
    === 2019-07-01 15:55:18,305 [2-32] DEBUG ServerObject - Couldn't find a public method named: fetch on class: com.smartgwt.sample.server.listener.EmployeesUpload
    === 2019-07-01 15:55:18,305 [2-32] DEBUG DataSourceDMI - DataSourceDMI: no public method name: fetch available on class: com.smartgwt.sample.server.listener.EmployeesUpload - defaulting to builtin operations.
    === 2019-07-01 15:55:18,305 [2-32] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:18,305 [2-32] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:18,305 [2-32] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
        outputs: [EmployeeId, Name]    criteria: {Name:"John Doe"}    values: {Name:"John Doe"}
    === 2019-07-01 15:55:18,305 [2-32] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:18,306 [2-32] INFO  SQLDataSource - [builtinApplication.null] 113: Executing SQL query on 'HSQLDB': SELECT employeeTable.EmployeeId, employeeTable.Name FROM employeeTable WHERE (employeeTable.Name='John Doe')
    === 2019-07-01 15:55:18,306 [2-32] DEBUG SQLDataSource - [builtinApplication.null] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:18,306 [2-32] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '1939247906': SELECT employeeTable.EmployeeId, employeeTable.Name FROM employeeTable WHERE (employeeTable.Name='John Doe')
    === 2019-07-01 15:55:18,307 [2-32] INFO  DSResponse - DSResponse: List with 0 items
    === 2019-07-01 15:55:21,619 [2-32] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:21,619 [2-32] DEBUG DeclarativeSecurity - DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:21,619 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:21,619 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add] No public zero-argument method named '_employeesUpload_add' found, performing generic datasource operation
    === 2019-07-01 15:55:21,620 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add] Performing add operation with
        criteria: {ReportsTo:182,Gender:"male",EmployeeId:1003,ReportsToName:"Tamara Kane",Name:"John Doe"}    values: {ReportsTo:182,Gender:"male",EmployeeId:1003,ReportsToName:"Tamara Kane",Name:"John Doe"}
    === 2019-07-01 15:55:21,620 [2-32] INFO  SQLValuesClause - [builtinApplication.employeesUpload_add] Ignored data for non-existent or included columns: [ReportsToName]
    === 2019-07-01 15:55:21,620 [2-32] DEBUG SQLValuesClause - [builtinApplication.employeesUpload_add] Sequences: {}
    === 2019-07-01 15:55:21,621 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:21,621 [2-32] INFO  SQLDriver - [builtinApplication.employeesUpload_add] Executing SQL query on 'HSQLDB' using connection '1939247906': INSERT INTO employeeTable (EmployeeId, Gender, Name, ReportsTo) VALUES (1003, 'male', 'John Doe', 182)
    === 2019-07-01 15:55:21,621 [2-32] DEBUG SQLDriver - [builtinApplication.employeesUpload_add] SequenceMode is not JDBC_DRIVER, skipping search for generated values
    === 2019-07-01 15:55:21,621 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add] primaryKeys: {EmployeeId=1003}
    === 2019-07-01 15:55:21,622 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] Gathered all keys.  lastPrimaryKeys is now {EmployeeId=1003}
    === 2019-07-01 15:55:21,622 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add] add operation affected 1 rows
    === 2019-07-01 15:55:21,622 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource null, field null
    === 2019-07-01 15:55:21,622 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employeesUpload is not in the pre-checked list, processing...
    === 2019-07-01 15:55:21,622 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource employees, field EmployeeId
    === 2019-07-01 15:55:21,622 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employees is not in the pre-checked list, processing...
    === 2019-07-01 15:55:21,622 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] Processing security checks for DataSource employees, field Name
    === 2019-07-01 15:55:21,622 [2-32] DEBUG DeclarativeSecurity - [builtinApplication.employeesUpload_add] DataSource employees is not in the pre-checked list, processing...
    === 2019-07-01 15:55:21,622 [2-32] DEBUG ServerObject - [builtinApplication.employeesUpload_add] Couldn't find a public method named: fetch on class: com.smartgwt.sample.server.listener.EmployeesUpload
    === 2019-07-01 15:55:21,622 [2-32] DEBUG DataSourceDMI - [builtinApplication.employeesUpload_add] DataSourceDMI: no public method name: fetch available on class: com.smartgwt.sample.server.listener.EmployeesUpload - defaulting to builtin operations.
    === 2019-07-01 15:55:21,622 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2019-07-01 15:55:21,622 [2-32] DEBUG AppBase - [builtinApplication.employeesUpload_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2019-07-01 15:55:21,622 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Performing fetch operation with
        criteria: {EmployeeId:1003}    values: {EmployeeId:1003}
    === 2019-07-01 15:55:21,623 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE $defaultWhereClause
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Using SQL Limit query
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] SQL windowed select rows 0->-1, result size 1. Query: SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1003)
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] SQL windowed select rows 0->-1, result size 1. Query: SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1003)
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] Setting DSRequest as being part of a transaction
    === 2019-07-01 15:55:21,624 [2-32] INFO  SQLDataSource - [builtinApplication.employeesUpload_add, builtinApplication.null] 113: Executing cache sync query on 'HSQLDB': SELECT LIMIT 0 1  employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Gender, relatedReportsTo.Name AS ReportsToName FROM employeeTable JOIN employeeTable relatedReportsTo ON employeeTable.ReportsTo = relatedReportsTo.EmployeeId WHERE (employeeTable.EmployeeId=1003)
    === 2019-07-01 15:55:21,624 [2-32] INFO  DSResponse - [builtinApplication.employeesUpload_add] DSResponse: List with 1 items
    === 2019-07-01 15:55:21,624 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    [B]=== 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,624 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"[/B]
    === 2019-07-01 15:55:21,625 [2-32] INFO  DSResponse - DSResponse: List with 1 items
    === 2019-07-01 15:55:21,625 [2-32] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
    === 2019-07-01 15:55:21,625 [2-32] DEBUG SQLTransaction - Committing HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,625 [2-32] DEBUG RPCManager - DMI response, dropExtraFields: true
    === 2019-07-01 15:55:21,625 [2-32] DEBUG RPCManager - DMI response, dropExtraFields: true
    === 2019-07-01 15:55:21,625 [2-32] DEBUG RPCManager - DMI response, dropExtraFields: true
    === 2019-07-01 15:55:21,625 [2-32] DEBUG RPCManager - DMI response, dropExtraFields: true
    === 2019-07-01 15:55:21,625 [2-32] DEBUG SQLTransaction - getConnection() looked for transactional connection for HSQLDB:  hashcode "1939247906"
    === 2019-07-01 15:55:21,625 [2-32] WARN  SQLTransaction - Ending HSQLDB transaction "1939247906"
    === 2019-07-01 15:55:21,625 [2-32] DEBUG SQLConnectionManager - About to close connection with hashcode "1939247906"
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 113
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDriver - Freeing SQLDriver dbConnection 147239089 for SQLDriver instance 1503672471
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLConnectionManager - About to close connection with hashcode "147239089"
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 105
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 105
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 113
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 113
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 83
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDriver - Freeing SQLDriver dbConnection 1723282589 for SQLDriver instance 1096140550
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLConnectionManager - About to close connection with hashcode "1723282589"
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 83
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 83
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 113
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLTransaction - getConnection() looked for transactional connection for HSQLDB:  (connection is null)
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 113
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLTransaction - getConnection() looked for transactional connection for HSQLDB:  (connection is null)
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 99
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 99
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 99
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLTransaction - getConnection() looked for transactional connection for HSQLDB:  (connection is null)
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 113
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLTransaction - getConnection() looked for transactional connection for HSQLDB:  (connection is null)
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 113
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLTransaction - getConnection() looked for transactional connection for HSQLDB:  (connection is null)
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 115
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 115
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 115
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLTransaction - getConnection() looked for transactional connection for HSQLDB:  (connection is null)
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 113
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLTransaction - getConnection() looked for transactional connection for HSQLDB:  (connection is null)
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 113
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLTransaction - getConnection() looked for transactional connection for HSQLDB:  (connection is null)
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 117
    === 2019-07-01 15:55:21,626 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 117
    === 2019-07-01 15:55:21,627 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 117
    === 2019-07-01 15:55:21,627 [2-32] DEBUG SQLTransaction - getConnection() looked for transactional connection for HSQLDB:  (connection is null)
    === 2019-07-01 15:55:21,627 [2-32] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 113
    === 2019-07-01 15:55:21,627 [2-32] INFO  Compression - /builtinds/sc/IDACall: 838 -> 259 bytes
    BuiltInDS.java:
    Code:
    package com.smartgwt.sample.client;
    
    import com.google.gwt.core.client.EntryPoint;
    import com.smartgwt.client.core.KeyIdentifier;
    import com.smartgwt.client.data.DataSource;
    import com.smartgwt.client.types.PartialCommitOption;
    import com.smartgwt.client.util.Page;
    import com.smartgwt.client.util.PageKeyHandler;
    import com.smartgwt.client.util.SC;
    import com.smartgwt.client.widgets.BatchUploader;
    import com.smartgwt.client.widgets.IButton;
    import com.smartgwt.client.widgets.Window;
    import com.smartgwt.client.widgets.events.ClickEvent;
    import com.smartgwt.client.widgets.events.ClickHandler;
    import com.smartgwt.client.widgets.form.fields.SelectItem;
    import com.smartgwt.client.widgets.grid.ListGridField;
    import com.smartgwt.client.widgets.layout.VLayout;
    
    public class BuiltInDS implements EntryPoint {
        private VLayout mainLayout;
        private IButton recreateBtn;
    
        public void onModuleLoad() {
            KeyIdentifier debugKey = new KeyIdentifier();
            debugKey.setCtrlKey(true);
            debugKey.setKeyName("D");
    
            Page.registerKey(debugKey, new PageKeyHandler() {
                public void execute(String keyName) {
                    SC.showConsole();
                }
            });
    
            mainLayout = new VLayout(20);
            mainLayout.setWidth100();
            mainLayout.setHeight100();
    
            recreateBtn = new IButton("Recreate");
            recreateBtn.addClickHandler(new ClickHandler() {
                @Override
                public void onClick(ClickEvent event) {
                    recreate();
                }
            });
            mainLayout.addMember(recreateBtn);
            recreate();
            mainLayout.draw();
        }
    
        private void recreate() {
            Window w = new Window();
            w.setWidth("95%");
            w.setHeight("95%");
            w.setMembersMargin(0);
            w.setModalMaskOpacity(70);
            w.setTitle("editorProperties not used in BatchUploader");
            w.setShowMinimizeButton(false);
            w.setIsModal(true);
            w.setShowModalMask(true);
            w.centerInPage();
    
            BatchUploader batchUploader = new BatchUploader();
            batchUploader.setWidth100();
            batchUploader.setUploadDataSource(DataSource.get("employeesUpload"));
            batchUploader.setPartialCommit(PartialCommitOption.RETAIN);
    
            ListGridField employeeIdLGF = new ListGridField("EmployeeId");
    
            ListGridField nameLGF = new ListGridField("Name");
    
            ListGridField managerLGF = new ListGridField("ReportsTo");
            SelectItem si = new SelectItem("ReportsTo");
            si.setOptionDataSource(DataSource.get("employees"));
            si.setValueField("EmployeeId");
    
            ListGridField plFieldName = new ListGridField("Name");
            ListGridField plFieldEmployeeType = new ListGridField("EmployeeType");
            ListGridField plFieldGender = new ListGridField("Gender");
            ListGridField plFieldEmployeeId = new ListGridField("EmployeeId");
    
            si.setPickListFields(plFieldName, plFieldEmployeeType, plFieldGender, plFieldEmployeeId);
            si.setSortField("Name");
            managerLGF.setEditorProperties(si);
    
            ListGridField genderLGF = new ListGridField("Gender");
    
            batchUploader.setGridFields(employeeIdLGF, nameLGF, genderLGF, managerLGF);
    
            w.addItem(batchUploader);
            w.show();
        }
    }
    employeesUpload.ds.xml:
    Code:
    <DataSource ID="employeesUpload" serverType="sql" tableName="employeeTable" recordName="employee" useAnsiJoins="true">
        <fields>
            <field name="EmployeeId" primaryKey="true" hidden="true" type="integer" />
    
            <field name="Name" uploadFieldName="Name" title="Name" type="text" length="128">
                <validators>
                    <validator type="isUnique" caseSensitive="true" />
                </validators>
            </field>
    
            <field name="ReportsTo" uploadFieldName="ReportsTo" type="integer" displayField="ReportsToName" title="Manager" required="true" importStrategy="display"
                foreignKey="employees.EmployeeId" relatedTableAlias="relatedReportsTo">
                <validators>
                    <validator type="hasRelatedRecord" errorMessage="Unknown ReportsTo" />
                </validators>
            </field>
            <field name="ReportsToName" includeFrom="employees.Name" includeVia="ReportsTo" />
    
            <field name="Gender" uploadFieldName="Gender" title="Gender" type="text" length="6">
                <validators>
                    <validator type="required" />
                </validators>
                <valueMap>
                    <value>male</value>
                    <value>female</value>
                </valueMap>
            </field>
        </fields>
        <serverObject lookupStyle="new" className="com.smartgwt.sample.server.listener.EmployeesUpload" />
    </DataSource>
    EmployeesUpload.java:
    Code:
    package com.smartgwt.sample.server.listener;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.isomorphic.datasource.DSRequest;
    import com.isomorphic.datasource.DSResponse;
    import com.isomorphic.datasource.DSTransaction;
    
    public class EmployeesUpload {
        public DSResponse add(DSRequest dsRequest, HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
            DSTransaction dsTransaction = null;
            if (dsRequest.getRPCManager() == null || dsRequest.getRPCManager().getDsTransaction() == null) {
                dsTransaction = new DSTransaction();
                dsTransaction.setUserId(dsRequest.getUserId());
                dsTransaction.setClientRequest(false);
            } else
                dsTransaction = dsRequest.getRPCManager().getDsTransaction();
    
            DSResponse addResponse = dsRequest.execute();
            if (!addResponse.statusIsError())
                dsTransaction.commit();
            return addResponse;
        }
    }
    BuiltInDS.html change:
    Code:
    <script src="builtinds/sc/DataSourceLoader?dataSource=employees,employeesUpload,batchUpload"></script>
    TestdataImportEmployees.csv:
    Code:
    Name,ReportsTo,Gender,EmployeeId
    Anna Sun,Charles Madigen,female,1000
    Mike Sun,Tamara Kane,male,1001
    Jeff Doe,Tamara Kane,male,1002
    John Doe,Tamara Kane,male,1003
    Best regards
    Blama

    #2
    Hi Isomorphic,

    it's even more weird. As I wanted to get rid of the linear growth per commit, I included a lazy "Commit every 100" rows instead like this:
    Code:
        /**
         * Commits data every n rows and stores progress in a servletRequest variable.<br>
         * This method is NOT responsible for a final commit (or rollback(!)), which will/should be done by the framework.<br>
         * Method needed because of <a href=
         * "https://forums.smartclient.com/forum/smart-gwt-technical-q-a/258380-12-0p-batchuploader-sends-way-to-many-jdbc-commits-slowing-down-the-upload-process-severely">this
         * issue</a> and might be deleted afterwards, if single commits are fast.
         * 
         * [USER="45788"]param[/USER] n
         *          Commit every n rows
         * [USER="45788"]param[/USER] dsTransaction
         * [USER="45788"]param[/USER] servletRequest
         * @throws Exception
         */
        private void commitEveryN(int n, DSTransaction dsTransaction, HttpServletRequest servletRequest) throws Exception {
            Object commitCountObj = servletRequest.getAttribute("V_RESELLER_SALESAREA_UPLOAD_CommitCount");
            Integer commitCount = null;
            if (commitCountObj != null && commitCountObj instanceof Integer) {
                commitCount = (Integer) commitCountObj;
            } else {
                commitCount = new Integer(0);
            }
            commitCount++;
    
            if (commitCount.equals(n)) {
                dsTransaction.commit();
                commitCount = 0;
            }
            servletRequest.setAttribute("V_RESELLER_SALESAREA_UPLOAD_CommitCount", commitCount);
        }
    Calling this with n=100 I can see 200 Commit-logs for the 100 first inserts - I assume this is for 100xInsert + 100xcurrVal query (I disabled cacheSync, so there is no SELECT for the inserted row).
    In total I added 2000 rows.
    The last one Commit-log-block had 4000 rows. So it's the same pattern I observed in #1. In short "If one commits, the framework commits once for every request done in the HttpServletRequest". IMHO a single commit is enough here.

    The very last commit (or rollback, I assume) is then done automatically after the last add-request finished:
    Code:
    === 2019-07-04 16:26:13,033 [ec-2] DEBUG DataSourceDMI - Freeing resources in DataSourceDMI...
    === 2019-07-04 16:26:13,033 [ec-2] INFO  DSRequestLogger - DSRequest successful.
    === 2019-07-04 16:26:13,033 [ec-2] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
    === 2019-07-04 16:26:13,036 [ec-2] DEBUG SQLTransaction - Committing Oracle transaction "1602796971"
    === 2019-07-04 16:26:13,038 [ec-2] DEBUG RPCManager - DMI response, dropExtraFields: true
    === 2019-07-04 16:26:13,038 [ec-2] DEBUG RPCManager - DMI response, dropExtraFields: true
    === 2019-07-04 16:26:13,038 [ec-2] DEBUG RPCManager - DMI response, dropExtraFields: true
    === 2019-07-04 16:26:13,038 [ec-2] DEBUG RPCManager - DMI response, dropExtraFields: true
    === 2019-07-04 16:26:13,038 [ec-2] DEBUG RPCManager - DMI response, dropExtraFields: true
    Perhaps this helps in fixing the issue.

    Best regards
    Blama

    Comment


      #3
      Hi Isomorphic,

      this might have slipped through. Can you have a look?

      Best regards
      Blama

      Comment


        #4
        Yes, sorry, this is assigned now - we will post back when we have investigated

        Comment


          #5
          Hi Isomorphic,

          any update on this one?

          Best regards
          Blama

          Comment


            #6
            Sorry for the delay on this. We have now investigated and fixed this problem (which is triggered, as you are no doubt aware, by the fact that you are manually committing SmartClient's transaction during the queue flow). The changes will be present in 12.0 and 12.1 builds as of tomorrow (those dated January 28 and beyond)

            Regards,
            Isomorphic Support

            Comment


              #7
              Hi Isomorphic,

              it seems I forgot to reply here.
              After my update v12.0p_2020-03-11 -> v12.1p_2022-08-10 I'm checking old tickets if they need any rework or I can use any of the new features. It seems that this is working fine in v12.1p_2022-08-10 and has also been before in v12.0p_2020-03-11.

              Thank you & Best regards
              Blama

              Comment

              Working...
              X