Announcement

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

    Regression with unique validator unnecessary imported and run for includeFrom field

    Hi Isomorphic,

    I found a bug in v10.0p_2015-10-08/PowerEdition Deployment that was not there in August.
    For a includeFrom-field where the base field has a unique-validator, the validator seems to be included as well. This renders 1:n cardinalities to 1:1, as you can't have a parent entry more than once in a child table.
    I tried hard to create a testcase (I even "copied" the BuildInDS schema and data to Oracle, as I could not reproduce in HSQLDB), but was not able to do so. But I'm pretty sure you can find the problem from the last code changes in this area.

    This is the server log:
    Code:
    === 2015-10-09 23:09:02,310 [c-29] DEBUG RPCManager - Request #1 (DSRequest) payload: {
        values:{
            AVAILABLE:true,
            PRODUCTCATEGORY_ID:92,
            PRODUCTCATEGORY_NAME:"PARENTENTRY_NAME",
            SHORTNAME:"ChildEntry",
            NAME:"ChildEntry"
        },
        operationConfig:{
            dataSource:"T_PRODUCT",
            repo:null,
            operationType:"add",
            textMatchStyle:"exact"
        },
        componentId:"isc_ProductProductcategoryList_6",
        appID:"builtinApplication",
        operation:"T_PRODUCT_add",
        oldValues:{
            AVAILABLE:true,
            PRODUCTCATEGORY_ID:92,
            PRODUCTCATEGORY_NAME:"PARENTENTRY_NAME",
            SHORTNAME:"ChildEntry",
            NAME:"ChildEntry"
        },
        criteria:{
        }
    }
    === 2015-10-09 23:09:02,310 [c-29] INFO  LMSIDACall - Performing 1 operation(s)
    === 2015-10-09 23:09:02,311 [c-29] DEBUG AppBase - [builtinApplication.T_PRODUCT_add] No userTypes defined, allowing anyone access to all operations for this application
    === 2015-10-09 23:09:02,311 [c-29] DEBUG AppBase - [builtinApplication.T_PRODUCT_add] No public zero-argument method named '_T_PRODUCT_add' found, performing generic datasource operation
    === 2015-10-09 23:09:02,311 [c-29] DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2015-10-09 23:09:02,311 [c-29] DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2015-10-09 23:09:02,311 [c-29] INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Performing fetch operation with
        outputs: [NAME, ID]    criteria: {NAME:"ChildEntry",TENANT_ID:15}    values: {NAME:"ChildEntry",TENANT_ID:15}
    === 2015-10-09 23:09:02,312 [c-29] INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2015-10-09 23:09:02,312 [c-29] INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] 688: Executing SQL query on 'Oracle': SELECT T_PRODUCT.ID, T_PRODUCT.NAME FROM T_PRODUCT WHERE (LOWER(T_PRODUCT.NAME)='childentry' AND T_PRODUCT.TENANT_ID=15)
    === 2015-10-09 23:09:02,312 [c-29] DEBUG SQLConnectionManager - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Borrowed connection '2087315966'
    === 2015-10-09 23:09:02,312 [c-29] DEBUG SQLTransaction - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Started new Oracle transaction "2087315966"
    === 2015-10-09 23:09:02,312 [c-29] DEBUG SQLDriver - [builtinApplication.T_PRODUCT_add, builtinApplication.null] About to execute SQL query in 'Oracle' using connection '2087315966'
    === 2015-10-09 23:09:02,312 [c-29] INFO  SQLDriver - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Executing SQL query on 'Oracle': SELECT T_PRODUCT.ID, T_PRODUCT.NAME FROM T_PRODUCT WHERE (LOWER(T_PRODUCT.NAME)='childentry' AND T_PRODUCT.TENANT_ID=15)
    === 2015-10-09 23:09:02,313 [c-29] INFO  DSResponse - [builtinApplication.T_PRODUCT_add, builtinApplication.null] DSResponse: List with 0 items
    === 2015-10-09 23:09:02,313 [c-29] DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2015-10-09 23:09:02,313 [c-29] DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2015-10-09 23:09:02,314 [c-29] INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Performing fetch operation with
        outputs: [ID, SHORTNAME]    criteria: {SHORTNAME:"ChildEntry",TENANT_ID:15}    values: {SHORTNAME:"ChildEntry",TENANT_ID:15}
    === 2015-10-09 23:09:02,314 [c-29] INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2015-10-09 23:09:02,314 [c-29] INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] 688: Executing SQL query on 'Oracle': SELECT T_PRODUCT.ID, T_PRODUCT.SHORTNAME FROM T_PRODUCT WHERE (LOWER(T_PRODUCT.SHORTNAME)='childentry' AND T_PRODUCT.TENANT_ID=15)
    === 2015-10-09 23:09:02,314 [c-29] DEBUG SQLDriver - [builtinApplication.T_PRODUCT_add, builtinApplication.null] About to execute SQL query in 'Oracle' using connection '2087315966'
    === 2015-10-09 23:09:02,314 [c-29] INFO  SQLDriver - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Executing SQL query on 'Oracle': SELECT T_PRODUCT.ID, T_PRODUCT.SHORTNAME FROM T_PRODUCT WHERE (LOWER(T_PRODUCT.SHORTNAME)='childentry' AND T_PRODUCT.TENANT_ID=15)
    === 2015-10-09 23:09:02,315 [c-29] INFO  DSResponse - [builtinApplication.T_PRODUCT_add, builtinApplication.null] DSResponse: List with 0 items
    === 2015-10-09 23:09:02,315 [c-29] DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2015-10-09 23:09:02,315 [c-29] DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2015-10-09 23:09:02,315 [c-29] INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Performing fetch operation with
        outputs: [ID, PRODUCTCATEGORY_NAME]    criteria: {PRODUCTCATEGORY_NAME:"PARENTENTRY_NAME",TENANT_ID:15}    values: {PRODUCTCATEGORY_NAME:"PARENTENTRY_NAME",TENANT_ID:15}
    === 2015-10-09 23:09:02,316 [c-29] INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE $defaultWhereClause
    === 2015-10-09 23:09:02,316 [c-29] INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] 688: Executing SQL query on 'Oracle': SELECT T_PRODUCT.ID, T_PRODUCTCATEGORY.NAME AS PRODUCTCATEGORY_NAME FROM T_PRODUCT JOIN T_PRODUCTCATEGORY ON T_PRODUCT.PRODUCTCATEGORY_ID = T_PRODUCTCATEGORY.ID WHERE (LOWER(T_PRODUCTCATEGORY.NAME)='parententry_name' AND T_PRODUCT.TENANT_ID=15)
    === 2015-10-09 23:09:02,316 [c-29] DEBUG SQLDriver - [builtinApplication.T_PRODUCT_add, builtinApplication.null] About to execute SQL query in 'Oracle' using connection '2087315966'
    === 2015-10-09 23:09:02,316 [c-29] INFO  SQLDriver - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Executing SQL query on 'Oracle': [B]SELECT T_PRODUCT.ID, T_PRODUCTCATEGORY.NAME AS PRODUCTCATEGORY_NAME FROM T_PRODUCT JOIN T_PRODUCTCATEGORY ON T_PRODUCT.PRODUCTCATEGORY_ID = T_PRODUCTCATEGORY.ID WHERE (LOWER(T_PRODUCTCATEGORY.NAME)='parententry_name' AND T_PRODUCT.TENANT_ID=15)[/B]
    === 2015-10-09 23:09:02,317 [c-29] INFO  DSResponse - [builtinApplication.T_PRODUCT_add, builtinApplication.null] DSResponse: List with 1 items
    === 2015-10-09 23:09:02,318 [c-29] DEBUG ValidationContext - [builtinApplication.T_PRODUCT_add] Adding validation errors at path '/T_PRODUCT/PRODUCTCATEGORY_NAME/PRODUCTCATEGORY_NAME': {errorMessage=Der Name wird bereits verwendet!}
    === 2015-10-09 23:09:02,318 [c-29] INFO  Validation - [builtinApplication.T_PRODUCT_add] Validation error: [
        {
            PRODUCTCATEGORY_NAME:{
                errorMessage:"Der Name wird bereits verwendet!"
            }
        }
    ]
    === 2015-10-09 23:09:02,318 [c-29] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
    === 2015-10-09 23:09:02,318 [c-29] DEBUG SQLTransaction - Rolling back Oracle transaction "2087315966"
    === 2015-10-09 23:09:02,318 [c-29] DEBUG RPCManager - non-DMI response, dropExtraFields: false
    === 2015-10-09 23:09:02,318 [c-29] DEBUG SQLTransaction - getConnection() found transactional connection for Oracle with hashcode "2087315966"
    === 2015-10-09 23:09:02,318 [c-29] DEBUG SQLTransaction - Ending Oracle transaction "2087315966"
    === 2015-10-09 23:09:02,319 [c-29] DEBUG SQLConnectionManager - About to close connection with hashcode "2087315966"
    === 2015-10-09 23:09:02,319 [c-29] DEBUG SQLTransaction - getConnection() found transactional connection for Oracle (connection is null)
    === 2015-10-09 23:09:02,319 [c-29] DEBUG SQLTransaction - getConnection() found transactional connection for Oracle (connection is null)
    === 2015-10-09 23:09:02,319 [c-29] INFO  Compression - /***/lms/sc/IDACall: 240 -> 209 bytes
    Please see the bold SELECT-statement. It contains a join, but should only be about T_PRODUCT.

    These are the .ds.xml, if needed:
    T_PRODUCT.ds.xml:
    Code:
    <DataSource dbName="Oracle" tableName="T_PRODUCT" ID="T_PRODUCT" serverType="sql"
        serverConstructor="com.lmscompany.lms.server.LMSSQLDataSource">
        <fields>
            <field primaryKey="true" hidden="true" name="ID" type="sequence" />
            <field hidden="true" name="TENANT_ID" type="integer" canEdit="false" />
            <field foreignKey="V_USER_CREATED_BY.ID" relatedTableAlias="USER_CREATED_BY" name="CREATED_BY" title="Erstellt von" type="creator" />
            <field name="CREATED_AT" title="Erstellt am" type="creatorTimestamp" />
            <field foreignKey="V_USER_MODIFIED_BY.ID" relatedTableAlias="USER_MODIFIED_BY" name="MODIFIED_BY" title="Geändert von" type="modifier" />
            <field name="MODIFIED_AT" title="Geändert am" type="modifierTimestamp" />
            <field name="SHORTNAME" title="Kurzname" length="30" type="text" escapeHTML="true" required="true">
                <validators>
                    <validator type="isUnique" errorMessage="Der Kurzname wird bereits verwendet!" />
                </validators>
            </field>
            <field name="NAME" title="Name" length="60" type="text" escapeHTML="true" required="true">
                <validators>
                    <validator type="isUnique" errorMessage="Der Name wird bereits verwendet!" />
                </validators>
            </field>
            <field name="DESCRIPTION" title="Beschreibung" length="1000" type="text" escapeHTML="true" />
            <field foreignKey="T_PRODUCTCATEGORY.ID" name="PRODUCTCATEGORY_ID" title="Produktkategorie" displayField="PRODUCTCATEGORY_NAME" type="integer" />
            <field name="PRODUCTCATEGORY_NAME" includeFrom="T_PRODUCTCATEGORY.NAME" title="Produktkategorie" length="60" type="text" escapeHTML="true"
                canEdit="false" />
            <field name="AVAILABLE" title="Verfügbar?" type="boolean" escapeHTML="true" sqlStorageStrategy="singleCharYN" required="true" />
            <!-- TENANT_IDs for WHERE-clause generation -->
            <field name="CREATED_BY_TENANT_ID" includeFrom="V_USER_CREATED_BY.TENANT_ID" hidden="true" />
            <field name="MODIFIED_BY_TENANT_ID" includeFrom="V_USER_MODIFIED_BY.TENANT_ID" hidden="true" />
            <field name="PRODUCTCATEGORY_TENANT_ID" includeFrom="T_PRODUCTCATEGORY.TENANT_ID" hidden="true" />
        </fields>
        <operationBindings>
        </operationBindings>
    </DataSource>
    T_PRODUCT_CATEGORY.ds.xml:
    Code:
    <DataSource dbName="Oracle" tableName="T_PRODUCTCATEGORY" ID="T_PRODUCTCATEGORY" serverType="sql"
        serverConstructor="com.lmscompany.lms.server.LMSSQLDataSource">
        <fields>
            <field primaryKey="true" hidden="true" name="ID" type="sequence" />
            <field hidden="true" name="TENANT_ID" type="integer" canEdit="false" />
            <field foreignKey="V_USER_CREATED_BY.ID" relatedTableAlias="USER_CREATED_BY" name="CREATED_BY" title="Erstellt von" type="creator" />
            <field name="CREATED_AT" title="Erstellt am" type="creatorTimestamp" />
            <field foreignKey="V_USER_MODIFIED_BY.ID" relatedTableAlias="USER_MODIFIED_BY" name="MODIFIED_BY" title="Geändert von" type="modifier" />
            <field name="MODIFIED_AT" title="Geändert am" type="modifierTimestamp" />
            <field name="SHORTNAME" title="Kurzname" length="30" type="text" escapeHTML="true" required="true">
                <validators>
                    <validator type="isUnique" errorMessage="Der Kurzname wird bereits verwendet!" />
                </validators>
            </field>
            <field name="NAME" title="Name" length="60" type="text" escapeHTML="true" required="true">
                <validators>
                    <validator type="isUnique" errorMessage="Der Name wird bereits verwendet!" />
                </validators>
            </field>
            <field name="DESCRIPTION" title="Beschreibung" length="1000" type="text" escapeHTML="true" />
        </fields>
        <operationBindings>
            <operationBinding operationType="add" />
            <operationBinding operationType="update" />
        </operationBindings>
    </DataSource>

    I attached my test case as files (add employees2 in the DataSourceLoader-string in the html as well!).
    Here is the add-log for the testcase:
    Code:
    === 2015-10-09 23:36:50,914 [3-31] DEBUG RPCManager - Request #1 (DSRequest) payload: {
        values:{
            Name:"TEST",
            ReportsTo:4,
            ReportsToName:"Charles Madigen",
            Job:"TEST1"
        },
        operationConfig:{
            dataSource:"employees",
            repo:null,
            operationType:"add",
            textMatchStyle:"exact"
        },
        componentId:"isc_ListGrid_0",
        appID:"builtinApplication",
        operation:"employees_add",
        oldValues:{
            Name:"TEST",
            ReportsTo:4,
            ReportsToName:"Charles Madigen",
            Job:"TEST1"
        },
        criteria:{
        }
    }
    === 2015-10-09 23:36:50,914 [3-31] INFO  IDACall - Performing 1 operation(s)
    === 2015-10-09 23:36:50,914 [3-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'employees'
    === 2015-10-09 23:36:50,914 [3-31] DEBUG PoolableDataSourceFactory - Activated DataSource 29 of type 'employees'
    === 2015-10-09 23:36:50,915 [3-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'employees2'
    === 2015-10-09 23:36:50,915 [3-31] DEBUG PoolableDataSourceFactory - Activated DataSource 25 of type 'employees2'
    === 2015-10-09 23:36:50,915 [3-31] DEBUG Relation - Caching instance of toDS 'employees2' in the DSRequest map
    === 2015-10-09 23:36:50,915 [3-31] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2015-10-09 23:36:50,915 [3-31] DEBUG DeclarativeSecurity - DataSource employees is not in the pre-checked list, processing...
    === 2015-10-09 23:36:50,916 [3-31] DEBUG AppBase - [builtinApplication.employees_add] No userTypes defined, allowing anyone access to all operations for this application
    === 2015-10-09 23:36:50,916 [3-31] DEBUG AppBase - [builtinApplication.employees_add] No public zero-argument method named '_employees_add' found, performing generic datasource operation
    === 2015-10-09 23:36:50,917 [3-31] DEBUG DeclarativeSecurity - [builtinApplication.employees_add] Processing security checks for DataSource null, field null
    === 2015-10-09 23:36:50,918 [3-31] DEBUG AppBase - [builtinApplication.employees_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2015-10-09 23:36:50,918 [3-31] DEBUG AppBase - [builtinApplication.employees_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2015-10-09 23:36:50,919 [3-31] INFO  SQLDataSource - [builtinApplication.employees_add, builtinApplication.null] Performing fetch operation with
        outputs: [Name, EmployeeId]    criteria: {Name:"TEST"}    values: {Name:"TEST"}
    === 2015-10-09 23:36:50,920 [3-31] INFO  SQLDataSource - [builtinApplication.employees_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2015-10-09 23:36:50,921 [3-31] INFO  SQLDataSource - [builtinApplication.employees_add, builtinApplication.null] 29: Executing SQL query on 'OracleAdmin': SELECT employeeTable.EmployeeId, employeeTable.Name FROM employeeTable WHERE (LOWER(employeeTable.Name)='test')
    === 2015-10-09 23:36:50,921 [3-31] DEBUG PoolableSQLConnectionFactory - [builtinApplication.employees_add, builtinApplication.null] Executing pingTest 'select 1 from dual' on connection 1265710057
    === 2015-10-09 23:36:50,923 [3-31] DEBUG SQLConnectionManager - [builtinApplication.employees_add, builtinApplication.null] Borrowed connection '1265710057'
    === 2015-10-09 23:36:50,923 [3-31] DEBUG SQLTransaction - [builtinApplication.employees_add, builtinApplication.null] Started new OracleAdmin transaction "1265710057"
    === 2015-10-09 23:36:50,923 [3-31] DEBUG SQLDriver - [builtinApplication.employees_add, builtinApplication.null] About to execute SQL query in 'OracleAdmin' using connection '1265710057'
    === 2015-10-09 23:36:50,923 [3-31] INFO  SQLDriver - [builtinApplication.employees_add, builtinApplication.null] Executing SQL query on 'OracleAdmin': SELECT employeeTable.EmployeeId, employeeTable.Name FROM employeeTable WHERE (LOWER(employeeTable.Name)='test')
    === 2015-10-09 23:36:50,930 [3-31] INFO  DSResponse - [builtinApplication.employees_add, builtinApplication.null] DSResponse: List with 0 items
    === 2015-10-09 23:36:50,931 [3-31] DEBUG DSRequest - [builtinApplication.employees_add] freeOnExecute is false for request of type fetch on DataSource employees - not freeing resources!
    === 2015-10-09 23:36:50,932 [3-31] INFO  SQLDataSource - [builtinApplication.employees_add] Performing add operation with
        criteria: {Name:"TEST",ReportsTo:4,ReportsToName:"Charles Madigen",Job:"TEST1"}    values: {Name:"TEST",ReportsTo:4,ReportsToName:"Charles Madigen",Job:"TEST1"}
    === 2015-10-09 23:36:50,933 [3-31] INFO  SQLValuesClause - [builtinApplication.employees_add] [B]Ignored data for non-existent or included columns: [ReportsToName][/B]
    === 2015-10-09 23:36:50,933 [3-31] DEBUG SQLValuesClause - [builtinApplication.employees_add] Sequences: {EmployeeId=__default}
    === 2015-10-09 23:36:50,935 [3-31] DEBUG SQLDriver - [builtinApplication.employees_add] About to execute SQL update in 'OracleAdmin' using connection'1265710057'
    === 2015-10-09 23:36:50,935 [3-31] INFO  SQLDriver - [builtinApplication.employees_add] Executing SQL update on 'OracleAdmin': INSERT INTO employeeTable (Job, Name, ReportsTo, EmployeeId) VALUES ('TEST1', 'TEST', 4, employeeTable_EmployeeId.NextVal)
    === 2015-10-09 23:36:50,939 [3-31] DEBUG SQLDriver - [builtinApplication.employees_add] SequenceMode is not JDBC_DRIVER, skipping search for generated values
    === 2015-10-09 23:36:50,939 [3-31] DEBUG SQLDataSource - [builtinApplication.employees_add] add operation affected 1 rows
    === 2015-10-09 23:36:50,942 [3-31] DEBUG SQLDriver - [builtinApplication.employees_add] About to execute SQL query in 'OracleAdmin' using connection '1265710057'
    === 2015-10-09 23:36:50,942 [3-31] INFO  SQLDriver - [builtinApplication.employees_add] Executing SQL query on 'OracleAdmin': SELECT employeeTable_EmployeeId.CurrVal FROM DUAL
    === 2015-10-09 23:36:50,945 [3-31] INFO  SQLDataSource - [builtinApplication.employees_add] primaryKeys: {EmployeeId=1000}
    === 2015-10-09 23:36:50,946 [3-31] DEBUG ISCKeyedObjectPool - [builtinApplication.employees_add] Borrowing object for 'employees'
    === 2015-10-09 23:36:50,949 [3-31] DEBUG PoolableDataSourceFactory - [builtinApplication.employees_add] Created DataSource 36 of type 'employees' and assigned it to thread qtp1028027903-31
    === 2015-10-09 23:36:50,949 [3-31] DEBUG PoolableDataSourceFactory - [builtinApplication.employees_add] Created DataSource 36 of type 'employees' in the pooling flow
    === 2015-10-09 23:36:50,949 [3-31] DEBUG PoolableDataSourceFactory - [builtinApplication.employees_add] Activated DataSource 36 of type 'employees'
    === 2015-10-09 23:36:50,949 [3-31] DEBUG DeclarativeSecurity - [builtinApplication.employees_add] Processing security checks for DataSource null, field null
    === 2015-10-09 23:36:50,950 [3-31] DEBUG DeclarativeSecurity - [builtinApplication.employees_add] DataSource employees is not in the pre-checked list, processing...
    === 2015-10-09 23:36:50,950 [3-31] DEBUG DeclarativeSecurity - [builtinApplication.employees_add] Processing security checks for DataSource employees2, field EmployeeId
    === 2015-10-09 23:36:50,950 [3-31] DEBUG DeclarativeSecurity - [builtinApplication.employees_add] DataSource employees2 is not in the pre-checked list, processing...
    === 2015-10-09 23:36:50,950 [3-31] DEBUG DeclarativeSecurity - [builtinApplication.employees_add] Processing security checks for DataSource employees2, field Name
    === 2015-10-09 23:36:50,950 [3-31] DEBUG DeclarativeSecurity - [builtinApplication.employees_add] DataSource employees2 is not in the pre-checked list, processing...
    === 2015-10-09 23:36:50,951 [3-31] DEBUG AppBase - [builtinApplication.employees_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2015-10-09 23:36:50,951 [3-31] DEBUG AppBase - [builtinApplication.employees_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2015-10-09 23:36:50,952 [3-31] INFO  SQLDataSource - [builtinApplication.employees_add, builtinApplication.null] Performing fetch operation with
        criteria: {EmployeeId:"1000"}    values: {EmployeeId:"1000"}
    === 2015-10-09 23:36:50,953 [3-31] INFO  SQLDataSource - [builtinApplication.employees_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause AND $defaultJoinWhereClause
    === 2015-10-09 23:36:50,954 [3-31] INFO  SQLDataSource - [builtinApplication.employees_add, builtinApplication.null] 19: Executing SQL query on 'OracleAdmin': SELECT employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Job, employeeTable.Email, employeeTable.EmployeeType, employeeTable.EmployeeStatus, employeeTable.Salary, employeeTable.OrgUnit, employeeTable.Gender, employeeTable.MaritalStatus, bugHereAsWell.Name AS ReportsToName FROM employeeTable bugHereAsWell, employeeTable WHERE (employeeTable.EmployeeId=1000) AND employeeTable.ReportsTo = bugHereAsWell.EmployeeId
    === 2015-10-09 23:36:50,954 [3-31] DEBUG SQLDriver - [builtinApplication.employees_add, builtinApplication.null] About to execute SQL query in 'OracleAdmin' using connection '1265710057'
    === 2015-10-09 23:36:50,954 [3-31] INFO  SQLDriver - [builtinApplication.employees_add, builtinApplication.null] Executing SQL query on 'OracleAdmin': SELECT employeeTable.EmployeeId, employeeTable.Name, employeeTable.ReportsTo, employeeTable.Job, employeeTable.Email, employeeTable.EmployeeType, employeeTable.EmployeeStatus, employeeTable.Salary, employeeTable.OrgUnit, employeeTable.Gender, employeeTable.MaritalStatus, bugHereAsWell.Name AS ReportsToName FROM employeeTable bugHereAsWell, employeeTable WHERE (employeeTable.EmployeeId=1000) AND employeeTable.ReportsTo = bugHereAsWell.EmployeeId
    === 2015-10-09 23:36:50,960 [3-31] INFO  DSResponse - [builtinApplication.employees_add, builtinApplication.null] DSResponse: List with 1 items
    === 2015-10-09 23:36:50,961 [3-31] DEBUG DSRequest - [builtinApplication.employees_add] freeOnExecute is false for request of type fetch on DataSource employees - not freeing resources!
    === 2015-10-09 23:36:50,961 [3-31] INFO  DSResponse - [builtinApplication.employees_add] DSResponse: List with 1 items
    === 2015-10-09 23:36:50,961 [3-31] DEBUG DSRequest - freeOnExecute is false for request of type add on DataSource employees - not freeing resources!
    === 2015-10-09 23:36:50,961 [3-31] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
    === 2015-10-09 23:36:50,961 [3-31] DEBUG SQLTransaction - Committing OracleAdmin transaction "1265710057"
    === 2015-10-09 23:36:50,963 [3-31] DEBUG RPCManager - non-DMI response, dropExtraFields: false
    === 2015-10-09 23:36:50,964 [3-31] DEBUG SQLTransaction - getConnection() found transactional connection for OracleAdmin with hashcode "1265710057"
    === 2015-10-09 23:36:50,964 [3-31] DEBUG SQLTransaction - Ending OracleAdmin transaction "1265710057"
    === 2015-10-09 23:36:50,965 [3-31] DEBUG SQLConnectionManager - About to close connection with hashcode "1265710057"
    === 2015-10-09 23:36:50,965 [3-31] DEBUG PoolableSQLConnectionFactory - Executing pingTest 'select 1 from dual' on connection 1265710057
    === 2015-10-09 23:36:50,966 [3-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 25 of type 'employees2'
    === 2015-10-09 23:36:50,966 [3-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 36 of type 'employees'
    === 2015-10-09 23:36:50,966 [3-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 19 of type 'employees'
    === 2015-10-09 23:36:50,966 [3-31] DEBUG SQLTransaction - getConnection() found transactional connection for OracleAdmin (connection is null)
    === 2015-10-09 23:36:50,966 [3-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 29 of type 'employees'
    === 2015-10-09 23:36:50,967 [3-31] DEBUG DSRequest - Ignoring freeResources call because this is not a primary request!
    === 2015-10-09 23:36:50,967 [3-31] DEBUG DSRequest - Ignoring freeQueueResources call because this is not a primary request!
    === 2015-10-09 23:36:50,967 [3-31] INFO  Compression - /builtinds/sc/IDACall: 239 -> 196 bytes
    Please note the "Ignored data for non-existent or included columns: [ReportsToName]". This is missing in the erroneous one, which does two unique-check queries.
    I'd think that this one is a pretty severe one.

    Best regards
    Blama
    Attached Files
    Last edited by Blama; 9 Jan 2017, 02:18. Reason: Removed sensitive information

    #2
    Hi Isomorphic,

    did you figure out what is causing this? I know this is not a perfect testcase, but it shows the error and the area responsible for this is hopefully not to big.

    Best regards
    Blama

    Comment


      #3
      Hi Isomorphic,

      I just restested with SNAPSHOT_v10.1d_2015-10-13 which does not show the behavior. I then tested again in the same installation where the log is from with *no changes* (still on v10.0p_2015-10-08, no new build/deploy. I restarted the server, though, but this should not matter). Now it does not show the issue. I'm pretty confused now but I know what I saw (and I do have the log). Is there a chance that this is depending on something else that can make the bug spurious? I do not think so, but the observation made is more than strange.

      Best regards
      Blama

      Comment


        #4
        Hi Blama,
        Sorry for the silence - this is assigned to a developer, but nothing to report yet.
        We'll take a look and see if we can determine why this would be happening, bearing in mind your observations about it being not always reproducible / potentially reliant on another factor, and get back to you.

        Regards
        Isomorphic Software

        Comment


          #5
          We cannot reproduce this, and nor can we speculate as to how it might arise. We agree that your log seems to show unequivocally that we are running a validation on an included field, but the code which deals with copying the attributes of included fields to the target field in the including DataSource explicitly excludes all validators, and that part of the code has not changed since 2012.

          As a matter of interest, we see the exact pattern shown in your log if an isUnique validator is manually applied to the included field - is it possible that some kind of cut/paste error meant that the PRODUCTCATEGORY_NAME field actually did have such a validator defined at the time of your first test? If not then we're stumped - we will need a repro case to investigate further.

          Regards
          ​Isomorphic Software Support

          Comment


            #6
            Hi Isomorphic,

            besides some days passing and a server restart nothing was changed for sure. As it was a one time thing and I can't reproduce lets call it a mystery.

            Please note though that I don't think the error (if any) is with the copying the validators (I thought it was copied indeed, but the framework never needed to run the validators here because of the following).
            IMHO the problem started here: My log (contrary to the provided testcase) does not include this row: "Ignored data for non-existent or included columns: [ReportsToName]".
            If the data would have get filtered away, a validator later on would have had no work in the first place.

            Best regards
            Blama

            PS: Thanks for investigating here!

            Comment


              #7
              Hi Isomorphic,

              exact the same thing is happening again now.
              "Funny" thing is that it does happen on the production server, but not on my test machine (both using v10.1p_2016-11-03 and the same source code). I again failed to create a testcase for it.
              I will post both logs, though. Perhaps this does help.

              Best regards
              Blama

              Comment


                #8
                Validation error server log (timestamps removed for better diff):
                Code:
                DEBUG RPCManager - Processing 1 requests.
                DEBUG RPCManager - Request #1 (DSRequest) payload: {
                    values:{
                        AVAILABLE:true,
                        PRODUCTCATEGORY_ID:132,
                        PRODUCTCATEGORY_NAME:"Hardware",
                        SHORTNAME:"TEST",
                        NAME:"TEST"
                    },
                    operationConfig:{
                        dataSource:"T_PRODUCT",
                        repo:null,
                        operationType:"add",
                        textMatchStyle:"exact"
                    },
                    componentId:"isc_ProductProductcategoryList_0",
                    appID:"builtinApplication",
                    operation:"T_PRODUCT_add",
                    oldValues:{
                        AVAILABLE:true,
                        PRODUCTCATEGORY_ID:132,
                        PRODUCTCATEGORY_NAME:"Hardware",
                        SHORTNAME:"TEST",
                        NAME:"TEST"
                    },
                    criteria:{
                    }
                }
                INFO  LMSIDACall - Performing 1 operation(s)
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add] No userTypes defined, allowing anyone access to all operations for this application
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add] No public zero-argument method named '_T_PRODUCT_add' found, performing generic datasource operation
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Performing fetch operation with
                    outputs: [PRODUCTCATEGORY_NAME, ID]    criteria: {PRODUCTCATEGORY_NAME:"Hardware",TENANT_ID:15}    values: {PRODUCTCATEGORY_NAME:"Hardware",TENANT_ID:15}
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE $defaultWhereClause
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] 71541: Executing SQL query on 'Oracle': SELECT T_PRODUCT.ID, T_PRODUCTCATEGORY.NAME AS PRODUCTCATEGORY_NAME FROM T_PRODUCT JOIN T_PRODUCTCATEGORY ON T_PRODUCT.PRODUCTCATEGORY_ID = T_PRODUCTCATEGORY.ID WHERE (LOWER(T_PRODUCTCATEGORY.NAME)='hardware' AND T_PRODUCT.TENANT_ID=15)
                DEBUG SQLTransaction - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Started new Oracle transaction "138153241"
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Setting DSRequest as being part of a transaction
                INFO  SQLDriver - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Executing SQL query on 'Oracle' using connection '138153241': SELECT T_PRODUCT.ID, T_PRODUCTCATEGORY.NAME AS PRODUCTCATEGORY_NAME FROM T_PRODUCT JOIN T_PRODUCTCATEGORY ON T_PRODUCT.PRODUCTCATEGORY_ID = T_PRODUCTCATEGORY.ID WHERE (LOWER(T_PRODUCTCATEGORY.NAME)='hardware' AND T_PRODUCT.TENANT_ID=15)
                INFO  DSResponse - [builtinApplication.T_PRODUCT_add] DSResponse: List with 3 items
                DEBUG ValidationContext - [builtinApplication.T_PRODUCT_add] Adding validation errors at path '/T_PRODUCT/PRODUCTCATEGORY_NAME/PRODUCTCATEGORY_NAME': {errorMessage=Der Name wird bereits verwendet!}
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Performing fetch operation with
                    outputs: [SHORTNAME, ID]    criteria: {SHORTNAME:"TEST",TENANT_ID:15}    values: {SHORTNAME:"TEST",TENANT_ID:15}
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] 71541: Executing SQL query on 'Oracle': SELECT T_PRODUCT.ID, T_PRODUCT.SHORTNAME FROM T_PRODUCT WHERE (LOWER(T_PRODUCT.SHORTNAME)='test' AND T_PRODUCT.TENANT_ID=15)
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Setting DSRequest as being part of a transaction
                INFO  SQLDriver - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Executing SQL query on 'Oracle' using connection '138153241': SELECT T_PRODUCT.ID, T_PRODUCT.SHORTNAME FROM T_PRODUCT WHERE (LOWER(T_PRODUCT.SHORTNAME)='test' AND T_PRODUCT.TENANT_ID=15)
                INFO  DSResponse - [builtinApplication.T_PRODUCT_add] DSResponse: List with 0 items
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Performing fetch operation with
                    outputs: [ID, NAME]    criteria: {TENANT_ID:15,NAME:"TEST"}    values: {TENANT_ID:15,NAME:"TEST"}
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] 71541: Executing SQL query on 'Oracle': SELECT T_PRODUCT.ID, T_PRODUCT.NAME FROM T_PRODUCT WHERE (T_PRODUCT.TENANT_ID=15 AND LOWER(T_PRODUCT.NAME)='test')
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Setting DSRequest as being part of a transaction
                INFO  SQLDriver - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Executing SQL query on 'Oracle' using connection '138153241': SELECT T_PRODUCT.ID, T_PRODUCT.NAME FROM T_PRODUCT WHERE (T_PRODUCT.TENANT_ID=15 AND LOWER(T_PRODUCT.NAME)='test')
                INFO  DSResponse - [builtinApplication.T_PRODUCT_add] DSResponse: List with 0 items
                INFO  Validation - [builtinApplication.T_PRODUCT_add] Validation error: [
                    {
                        PRODUCTCATEGORY_NAME:{
                            errorMessage:"Der Name wird bereits verwendet!"
                        }
                    }
                ]
                DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
                DEBUG SQLTransaction - Rolling back Oracle transaction "138153241"
                DEBUG SQLTransaction - Rolling back Oracle transaction "138153241"
                DEBUG SQLTransaction - Rolling back Oracle transaction "138153241"
                DEBUG SQLTransaction - Rolling back Oracle transaction "138153241"
                DEBUG RPCManager - non-DMI response, dropExtraFields: false
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 71541
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 72877
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 72876
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 72876
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 72877
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 72878
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 72878
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 7426
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 7426
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 71541
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 71541
                DEBUG SQLTransaction - getConnection() looked for transactional connection for Oracle:  hashcode "138153241"
                DEBUG SQLTransaction - Ending Oracle transaction "138153241"
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 71541
                DEBUG SQLTransaction - getConnection() looked for transactional connection for Oracle:  (connection is null)
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 71541
                DEBUG SQLTransaction - getConnection() looked for transactional connection for Oracle:  (connection is null)
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 71541
                INFO  Compression - /lms/lms/sc/IDACall: 240 -> 209 bytes
                Successful add log (timestamps removed for better diff):
                Code:
                DEBUG RPCManager - Processing 1 requests.
                DEBUG RPCManager - Request #1 (DSRequest) payload: {
                    values:{
                        AVAILABLE:true,
                        PRODUCTCATEGORY_ID:13,
                        PRODUCTCATEGORY_NAME:"Hardware",
                        SHORTNAME:"TEST",
                        NAME:"TEST"
                    },
                    operationConfig:{
                        dataSource:"T_PRODUCT",
                        repo:null,
                        operationType:"add",
                        textMatchStyle:"exact"
                    },
                    componentId:"isc_ProductProductcategoryList_0",
                    appID:"builtinApplication",
                    operation:"T_PRODUCT_add",
                    oldValues:{
                        AVAILABLE:true,
                        PRODUCTCATEGORY_ID:13,
                        PRODUCTCATEGORY_NAME:"Hardware",
                        SHORTNAME:"TEST",
                        NAME:"TEST"
                    },
                    criteria:{
                    }
                }
                INFO  LMSIDACall - Performing 1 operation(s)
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add] No userTypes defined, allowing anyone access to all operations for this application
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add] No public zero-argument method named '_T_PRODUCT_add' found, performing generic datasource operation
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Performing fetch operation with
                    outputs: [SHORTNAME, ID]    criteria: {SHORTNAME:"TEST",TENANT_ID:1}    values: {SHORTNAME:"TEST",TENANT_ID:1}
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] 846: Executing SQL query on 'Oracle': SELECT T_PRODUCT.ID, T_PRODUCT.SHORTNAME FROM T_PRODUCT WHERE (LOWER(T_PRODUCT.SHORTNAME)='test' AND T_PRODUCT.TENANT_ID=1)
                DEBUG SQLTransaction - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Started new Oracle transaction "295365807"
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Setting DSRequest as being part of a transaction
                INFO  SQLDriver - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Executing SQL query on 'Oracle' using connection '295365807': SELECT T_PRODUCT.ID, T_PRODUCT.SHORTNAME FROM T_PRODUCT WHERE (LOWER(T_PRODUCT.SHORTNAME)='test' AND T_PRODUCT.TENANT_ID=1)
                INFO  DSResponse - [builtinApplication.T_PRODUCT_add] DSResponse: List with 0 items
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Performing fetch operation with
                    outputs: [ID, NAME]    criteria: {TENANT_ID:1,NAME:"TEST"}    values: {TENANT_ID:1,NAME:"TEST"}
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] 846: Executing SQL query on 'Oracle': SELECT T_PRODUCT.ID, T_PRODUCT.NAME FROM T_PRODUCT WHERE (T_PRODUCT.TENANT_ID=1 AND LOWER(T_PRODUCT.NAME)='test')
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Setting DSRequest as being part of a transaction
                INFO  SQLDriver - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Executing SQL query on 'Oracle' using connection '295365807': SELECT T_PRODUCT.ID, T_PRODUCT.NAME FROM T_PRODUCT WHERE (T_PRODUCT.TENANT_ID=1 AND LOWER(T_PRODUCT.NAME)='test')
                INFO  DSResponse - [builtinApplication.T_PRODUCT_add] DSResponse: List with 0 items
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add] Performing add operation with
                    criteria: {AVAILABLE:true,PRODUCTCATEGORY_ID:13,PRODUCTCATEGORY_NAME:"Hardware",SHORTNAME:"TEST",NAME:"TEST",CREATED_BY:"1",CREATED_AT:new Date(1478609414484),MODIFIED_BY:"1",MODIFIED_AT:new Date(1478609414484)}    values: {AVAILABLE:true,PRODUCTCATEGORY_ID:13,PRODUCTCATEGORY_NAME:"Hardware",SHORTNAME:"TEST",NAME:"TEST",CREATED_BY:"1",CREATED_AT:new Date(1478609414484),MODIFIED_BY:"1",MODIFIED_AT:new Date(1478609414484),TENANT_ID:1}
                INFO  SQLValuesClause - [builtinApplication.T_PRODUCT_add] Ignored data for non-existent or included columns: [PRODUCTCATEGORY_NAME]
                DEBUG SQLValuesClause - [builtinApplication.T_PRODUCT_add] Sequences: {ID=__default}
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add] Setting DSRequest as being part of a transaction
                INFO  SQLDriver - [builtinApplication.T_PRODUCT_add] Executing SQL query on 'Oracle' using connection '295365807': INSERT INTO T_PRODUCT (AVAILABLE, CREATED_AT, CREATED_BY, MODIFIED_AT, MODIFIED_BY, NAME, PRODUCTCATEGORY_ID, SHORTNAME, TENANT_ID, ID) VALUES ('Y', TO_DATE('2016-11-08 13:50:14','YYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2016-11-08 13:50:14','YYYY-MM-DD HH24:MI:SS'), '1', 'TEST', 13, 'TEST', 1, T_PRODUCT_ID.NextVal)
                DEBUG SQLDriver - [builtinApplication.T_PRODUCT_add] SequenceMode is not JDBC_DRIVER, skipping search for generated values
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add] add operation affected 1 rows
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add] Setting DSRequest as being part of a transaction
                INFO  SQLDriver - [builtinApplication.T_PRODUCT_add] Executing SQL query on 'Oracle' using connection '295365807': SELECT T_PRODUCT_ID.CurrVal FROM DUAL
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add] primaryKeys: {ID=1116}
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add] Oracle getLastRow(): using default operationBinding
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
                DEBUG AppBase - [builtinApplication.T_PRODUCT_add, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Performing fetch operation with
                    criteria: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"TENANT_ID",value:1,operator:"equals"},{fieldName:"ID",value:"1116",operator:"iEquals"},{fieldName:"CREATED_BY_TENANT_ID",value:1,operator:"equals"},{fieldName:"MODIFIED_BY_TENANT_ID",value:1,operator:"equals"},{fieldName:"PRODUCTCATEGORY_TENANT_ID",value:1,operator:"equals"}],operator:"and"}    values: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"TENANT_ID",value:1,operator:"equals"},{fieldName:"ID",value:"1116",operator:"iEquals"},{fieldName:"CREATED_BY_TENANT_ID",value:1,operator:"equals"},{fieldName:"MODIFIED_BY_TENANT_ID",value:1,operator:"equals"},{fieldName:"PRODUCTCATEGORY_TENANT_ID",value:1,operator:"equals"}],operator:"and"}
                INFO  SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE $defaultWhereClause
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] JDBC driver windowed select rows 0->-1, result size 1. Query: SELECT T_PRODUCT.ID, T_PRODUCT.TENANT_ID, T_PRODUCT.CREATED_BY, T_PRODUCT.CREATED_AT, T_PRODUCT.MODIFIED_BY, T_PRODUCT.MODIFIED_AT, T_PRODUCT.SHORTNAME, T_PRODUCT.NAME, T_PRODUCT.DESCRIPTION, T_PRODUCT.PRODUCTCATEGORY_ID, T_PRODUCT.AVAILABLE, T_PRODUCTCATEGORY.NAME AS PRODUCTCATEGORY_NAME, USER_CREATED_BY.TENANT_ID AS CREATED_BY_TENANT_ID, USER_MODIFIED_BY.TENANT_ID AS MODIFIED_BY_TENANT_ID, T_PRODUCTCATEGORY.TENANT_ID AS PRODUCTCATEGORY_TENANT_ID FROM T_PRODUCT JOIN T_PRODUCTCATEGORY ON T_PRODUCT.PRODUCTCATEGORY_ID = T_PRODUCTCATEGORY.ID JOIN MV_USER_DATA USER_CREATED_BY ON T_PRODUCT.CREATED_BY = USER_CREATED_BY.ID JOIN MV_USER_DATA USER_MODIFIED_BY ON T_PRODUCT.MODIFIED_BY = USER_MODIFIED_BY.ID WHERE ((T_PRODUCT.TENANT_ID = 1 AND T_PRODUCT.TENANT_ID IS NOT NULL) AND (LOWER(T_PRODUCT.ID) = LOWER('1116') AND T_PRODUCT.ID IS NOT NULL) AND (USER_CREATED_BY.TENANT_ID = 1 AND USER_CREATED_BY.TENANT_ID IS NOT NULL) AND (USER_MODIFIED_BY.TENANT_ID = 1 AND USER_MODIFIED_BY.TENANT_ID IS NOT NULL) AND (T_PRODUCTCATEGORY.TENANT_ID = 1 AND T_PRODUCTCATEGORY.TENANT_ID IS NOT NULL))
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Setting DSRequest as being part of a transaction
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Using paging strategy 'jdbcScroll' - scrolling to absolute position 1
                DEBUG SQLDataSource - [builtinApplication.T_PRODUCT_add, builtinApplication.null] Scrolling / positioning took 0ms
                INFO  DSResponse - [builtinApplication.T_PRODUCT_add] DSResponse: List with 1 items
                INFO  DSResponse - DSResponse: List with 1 items
                DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
                DEBUG SQLTransaction - Committing Oracle transaction "295365807"
                DEBUG SQLTransaction - Committing Oracle transaction "295365807"
                DEBUG SQLTransaction - Committing Oracle transaction "295365807"
                DEBUG SQLTransaction - Committing Oracle transaction "295365807"
                DEBUG RPCManager - non-DMI response, dropExtraFields: false
                DEBUG SQLTransaction - getConnection() looked for transactional connection for Oracle:  hashcode "295365807"
                DEBUG SQLTransaction - Ending Oracle transaction "295365807"
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 846
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 818
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 817
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 817
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 818
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 819
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 819
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 371
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 371
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 846
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 846
                DEBUG SQLTransaction - getConnection() looked for transactional connection for Oracle:  (connection is null)
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 846
                DEBUG SQLTransaction - getConnection() looked for transactional connection for Oracle:  (connection is null)
                DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 846
                INFO  Compression - /lms/lms/sc/IDACall: 450 -> 280 bytes
                The hint on the missing "Ignored data for non-existent or included columns" in the validation error case was most likely not helpful, as this happens at add-time, which the unsuccessful case never reaches.
                The question is:
                • Why is the unique check done for the included field?
                It would be great if you could look into this one. I'll help where I can, but as I myself see this only spurious, I don't know what I can do?

                Best regards
                Blama
                Last edited by Blama; 8 Nov 2016, 05:29.

                Comment


                  #9
                  Considering the inconsistency when issue shows up on your side, it is complicated to assume even theoretical scenario. We are still investigating this, but any ideas are welcome.

                  Comment


                    #10
                    Hi Isomorphic,

                    I'll try to remote debug that if it ever happens again in production - I did not see it here in development so far.
                    Unfortunately I did not save the DataSourceLoader output this time, but will do so next time.

                    I could create an Oracle based testcase with the exact DataSources I'm using, but as it is spurious and the DataSource is not fancy in any way, I don't know if this will help.

                    Best regards
                    Blama

                    Comment


                      #11
                      Hi Isomorphic,

                      it is happening again, but only in production (v10.1p_2016-11-25), so I can't debug here.
                      It turns out that comparing the DataSourceLoader Call for the two DataSources in question actually results the same DS definitions with no validator returned for the included field.
                      This time it is happening for my T_USER DataSource, which has an includeFrom Field to T_RESELLER.NAME, named RESELLER_NAME:

                      DataSourceLoader Call (you have to scroll in order to see the result):
                      Code:
                      URL
                      http://lms.localhost:8080/lms/lms/sc/DataSourceLoader?dataSource=T_USER,T_RESELLER
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         if (window.isc == undefined || window.isc.DataSource == undefined){  alert("Can't load DataSources - SmartClient runtime not loaded");}isc.DataSource.create({allowAdvancedCriteria:true,xmlns:"lmscompany/ds",serverType:"sql",operationBindings:[{operationType:"add"},{operationType:"update"},{operationId:"updateOwnUserSettings",operationType:"update"},{operationType:"validate"},{operationType:"fetch"},{outputs:"ID, TENANT_ID, GIVENNAME, SURNAME, LOGINNAME, BELONGSTO_COMPANY_ID, COMPANY_NAME, BELONGSTO_DISTRIBUTOR_ID, DISTRIBUTOR_NAME, BELONGSTO_RESELLER_ID, RESELLER_NAME, LEGALENTITYNAME, ROLELIST, VIEWLIST",operationId:"fetchUserIdForLoginname",operationType:"fetch"},{outputs:"ID, FULLNAME, RESELLER_BRANCH",operationId:"fetchColleagues",operationType:"fetch"},{operationId:"resetUserPassword",operationType:"custom"},{operationId:"writeMailPasswordReset",operationType:"fetch",serverOnly:"true"},{operationId:"writeMailNewUser",operationType:"fetch",serverOnly:"true"}],ID:"T_USER",fields:[{name:"ID",hidden:true,type:"sequence",validators:[],primaryKey:true},{name:"TENANT_ID",hidden:true,type:"integer",validators:[],canEdit:false},{hidden:true,validators:[],canEdit:false,name:"CREATED_BY",displayField:"CREATED_BY_NAME",type:"creator",title:"Erstellt von",foreignKey:"V_USER_CREATED_BY.ID",relatedTableAlias:"USER_CREATED_BY"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:61,name:"CREATED_BY_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:134,name:"CREATED_BY_NAME_TOOLTIP",canSave:false,type:"text",title:"Name und Firmenname"},{name:"CREATED_AT",type:"creatorTimestamp",title:"Erstellt am",hidden:true,validators:[],canEdit:false},{hidden:true,validators:[],canEdit:false,name:"MODIFIED_BY",displayField:"MODIFIED_BY_NAME",type:"modifier",title:"Geändert von",foreignKey:"V_USER_MODIFIED_BY.ID",relatedTableAlias:"USER_MODIFIED_BY"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:61,name:"MODIFIED_BY_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:134,name:"MODIFIED_BY_NAME_TOOLTIP",canSave:false,type:"text",title:"Name und Firmenname"},{name:"MODIFIED_AT",type:"modifierTimestamp",title:"Geändert am",hidden:true,validators:[],canEdit:false},{name:"BELONGSTO_COMPANY_ID",type:"integer",title:"Firma",foreignKey:"T_COMPANY.ID",validators:[],joinType:"outer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:70,name:"COMPANY_NAME",canSave:false,type:"text",title:"Firmenname"},{name:"BELONGSTO_DISTRIBUTOR_ID",type:"integer",title:"Distributor",foreignKey:"T_DISTRIBUTOR.ID",validators:[],joinType:"outer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:70,name:"DISTRIBUTOR_NAME",canSave:false,type:"text",title:"Firmenname"},{name:"BELONGSTO_RESELLER_ID",type:"integer",title:"Reseller",foreignKey:"T_RESELLER.ID",validators:[],joinType:"outer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,name:"RESELLER_NAME",length:70,type:"text",title:"Firmenname"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,name:"RESELLER_BRANCH",type:"boolean",title:"Ist Niederlassung?"},{escapeHTML:true,validators:[],canEdit:false,name:"RESELLER_ENABLED",title:"Reseller aktiv?",type:"boolean"},{escapeHTML:true,validators:[],canEdit:false,name:"DISTRIBUTOR_ENABLED",title:"Distributor aktiv?",type:"boolean"},{escapeHTML:true,validators:[],canEdit:false,length:1,name:"LEGALENTITYTYPE",canSave:false,type:"text"},{name:"LEGALENTITYORDER",canSave:false,type:"integer",validators:[],canEdit:false},{validators:[],canEdit:false,length:70,name:"LEGALENTITYNAME",canSave:false,type:"text"},{escapeHTML:true,validators:[],length:1,name:"GENDER_SHORTNAME",type:"text",title:"Anrede",required:true},{length:30,name:"GIVENNAME",escapeHTML:true,type:"text",title:"Vorname",validators:[]},{escapeHTML:true,validators:[],length:30,name:"SURNAME",type:"text",title:"Nachname",required:true},{escapeHTML:true,validators:[{errorMessage:"Der Benutzername wird schon verwendet!",type:"isUnique"},{expression:"^[a-zA-Z0-9]{4,15}$",errorMessage:"Der Loginname muss aus 4-15 Buchstaben oder Ziffern bestehen (Groß- und Kleinschreibung beachten)!",type:"regexp"}],length:20,name:"LOGINNAME",type:"text",title:"Loginname",required:true},{length:1,name:"ADMINUSER",type:"boolean",title:"Adminuser?",validators:[]},{escapeHTML:true,validators:[],length:50,name:"FUNCTION",type:"text",title:"Funktion",required:true},{escapeHTML:true,validators:[],length:60,name:"BCRYPTHASH",type:"text",title:"Passwort"},{escapeHTML:true,validators:[{expression:"^((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^\\s\\w\\d]).{8,20})$",errorMessage:"Bitte wählen Sie ein Passwort mit 8-20 Zeichen, das jeweils mindestens einen Klein- bzw. Großbuchstaben, eine Ziffer und ein Sonderzeichen enthält. Folgende Fehler liegen vor:",type:"regexp"},{expression:"^((?=.*\\d).*)$",errorMessage:"Keine Ziffer enthalten",type:"regexp"},{expression:"^((?=.*[a-z]).*)$",errorMessage:"Kein Kleinbuchstabe enthalten.",type:"regexp"},{expression:"^((?=.*[A-Z]).*)$",errorMessage:"Kein Großbuchstabe enthalten.",type:"regexp"},{expression:"^((?=.*[^\\s\\w\\d]).*)$",errorMessage:"Kein Sonderzeichen enthalten.",type:"regexp"},{expression:"^.{0,20}$",errorMessage:"Zu lang.",type:"regexp"},{expression:"^.{8,}$",errorMessage:"Zu kurz.",type:"regexp"}],canEdit:true,length:60,name:"PASSWORD1",type:"text",title:"Passwort"},{escapeHTML:true,validators:[{otherField:"PASSWORD1",errorMessage:"Passwort und Passwortwiederholung müssen übereinstimmen!",type:"matchesField"}],canEdit:true,length:60,name:"PASSWORD2",type:"text",title:"Passwortwiederholung"},{validators:[{errorMessage:"Bitte beachten Sie, dass das Startdatum nicht größer als das Enddatum sein darf (sofern ein Enddatum gesetzt ist)!",type:"serverCustom"}],canEdit:true,name:"VALIDFROM",type:"date",title:"Account aktiv von",required:true},{name:"VALIDTO",type:"date",title:"Account aktiv bis",validators:[{errorMessage:"Bitte beachten Sie, dass das Startdatum nicht größer als das Enddatum sein darf (sofern ein Enddatum gesetzt ist)!",type:"serverCustom"}],canEdit:true},{escapeHTML:true,validators:[],name:"VALIDNOW",canSave:false,type:"boolean",title:"Account aktuell aktiv?"},{name:"INVALIDLOGINATTEMPTS",type:"integer",title:"Anzahl fehlerhafter Logins",required:true,validators:[]},{name:"LASTLOGIN",type:"datetime",title:"Letztes Login am",validators:[]},{escapeHTML:true,validators:[],length:50,name:"EMAIL",type:"emailType",title:"Email",required:true},{escapeHTML:true,validators:[{expression:"([0-9]{3,5})([ .-]?)([0-9]*)",errorMessage:"Bitte geben Sie eine gültige Telefonnummer ein!",type:"regexp"}],length:50,name:"PHONENUMBER",type:"text",title:"Telefonnummer"},{escapeHTML:true,validators:[],canEdit:false,length:61,name:"FULLNAME",canSave:false,type:"text",title:"Name"},{escapeHTML:true,validators:[],canEdit:false,length:61,name:"FULLNAME_INITIALS_GIVENNAME",canSave:false,type:"text",title:"Name"},{escapeHTML:true,validators:[],canEdit:false,length:61,name:"FULLNAME_INITIALS_BOTH",canSave:false,type:"text",title:"Name"},{escapeHTML:true,validators:[],canEdit:false,length:116,name:"EMAILENTRY",canSave:false,type:"text",title:"Name+Email"},{escapeHTML:true,validators:[],canEdit:false,length:4000,name:"ROLELIST",type:"text",title:"Zugeordnete Rollen"},{escapeHTML:true,validators:[],canEdit:false,length:4000,name:"VIEWLIST",type:"text",title:"Zugeordnete Views"},{escapeHTML:true,validators:[],canEdit:false,name:"RESELLERLIST",length:500,title:"Betreute Partner",type:"text"},{escapeHTML:true,validators:[],canEdit:false,name:"RESELLERID_LIST_SEP",length:500,title:"Betreute Partner",type:"text"},{hidden:true,validators:[],canEdit:false,name:"COMPANY_TENANT_ID",type:"integer"},{hidden:true,validators:[],canEdit:false,name:"DISTRIBUTOR_TENANT_ID",type:"integer"},{hidden:true,validators:[],canEdit:false,name:"RESELLER_TENANT_ID",type:"integer"},{hidden:true,validators:[],canEdit:false,name:"USER_ROLELIST_TENANT_ID",type:"integer"}]}) isc.DataSource.create({allowAdvancedCriteria:true,xmlns:"lmscompany/ds",serverType:"sql",operationBindings:[{operationType:"add"},{operationType:"update"},{operationType:"validate"},{operationType:"fetch"},{operationId:"fetchDirectionDown",operationType:"fetch"}],ID:"T_RESELLER",fields:[{hidden:true,validators:[],joinType:"outer",name:"ID",type:"sequence",foreignKey:"V_CURRENT_ACCOUNT_COUNT.RESELLER_ID",primaryKey:true},{name:"TENANT_ID",hidden:true,type:"integer",validators:[],canEdit:false},{hidden:true,validators:[],canEdit:false,name:"CREATED_BY",displayField:"CREATED_BY_NAME",type:"creator",title:"Erstellt von",foreignKey:"V_USER_CREATED_BY.ID",relatedTableAlias:"USER_CREATED_BY"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:61,name:"CREATED_BY_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:134,name:"CREATED_BY_NAME_TOOLTIP",canSave:false,type:"text",title:"Name und Firmenname"},{name:"CREATED_AT",type:"creatorTimestamp",title:"Erstellt am",hidden:true,validators:[],canEdit:false},{hidden:true,validators:[],canEdit:false,name:"MODIFIED_BY",displayField:"MODIFIED_BY_NAME",type:"modifier",title:"Geändert von",foreignKey:"V_USER_MODIFIED_BY.ID",relatedTableAlias:"USER_MODIFIED_BY"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:61,name:"MODIFIED_BY_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:134,name:"MODIFIED_BY_NAME_TOOLTIP",canSave:false,type:"text",title:"Name und Firmenname"},{name:"MODIFIED_AT",type:"modifierTimestamp",title:"Geändert am",hidden:true,validators:[],canEdit:false},{escapeHTML:true,validators:[{caseSensitive:"true",errorMessage:"Der QuellID wird bereits verwendet!",type:"isUnique"}],length:50,name:"SOURCEUID",type:"text",title:"Reseller-ID Quelle"},{escapeHTML:true,validators:[{errorMessage:"Der Name wird bereits verwendet!",type:"isUnique"}],length:70,name:"NAME",type:"text",title:"Firmenname",required:true},{name:"MAXACCOUNTS",type:"integer",title:"Max. Anzahl Accounts",required:true,validators:[{min:1.0,errorMessage:"Die Anzahl der Accounts muss größer 0 sein!",type:"integerRange"}]},{name:"REVENUE",type:"integer",title:"Geschätzter Jahresumsatz",validators:[{min:0.0,max:1.0E8,errorMessage:"Der geschätzte Umsatz muss zwischen 0 und 100.000.000 EUR liegen!",type:"integerRange"}]},{name:"NUMBEROFEMPLOYEES",type:"integer",title:"Geschätzte Anzahl Mitarbeiter",validators:[{min:1.0,errorMessage:"Die Anzahl der Mitarbeiter muss größer 0 sein!",type:"integerRange"}]},{length:60,name:"BUSINESSPURPOSE",escapeHTML:true,type:"text",title:"Geschäftsgegenstand",validators:[]},{escapeHTML:true,validators:[],name:"ENABLED",type:"boolean",title:"Aktiv?",required:true},{escapeHTML:true,validators:[],name:"BRANCH",type:"boolean",title:"Ist Niederlassung?",required:true},{name:"LEAD_MAXDISTANCE",canFilter:false,type:"integer",title:"Max. Entfernung zum Kunden",validators:[]},{sortByField:"CATEGORY1_POSITION",validators:[],joinType:"outer",name:"CATEGORY1_ID",displayField:"CATEGORY1_NAME",canFilter:false,type:"integer",foreignKey:"T_CATEGORY1.ID"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:60,name:"CATEGORY1_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,validators:[],canEdit:false,name:"CATEGORY1_POSITION",canSave:false,editorType:"SpinnerItem",type:"integer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,name:"CATEGORY1_AVAILABLE",canSave:false,type:"boolean",title:"Verfügbar?"},{sortByField:"CATEGORY2_POSITION",validators:[],joinType:"outer",name:"CATEGORY2_ID",displayField:"CATEGORY2_NAME",canFilter:false,type:"integer",foreignKey:"T_CATEGORY2.ID"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:60,name:"CATEGORY2_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,validators:[],canEdit:false,name:"CATEGORY2_POSITION",canSave:false,editorType:"SpinnerItem",type:"integer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,name:"CATEGORY2_AVAILABLE",canSave:false,type:"boolean",title:"Verfügbar?"},{sortByField:"CATEGORY3_POSITION",validators:[],joinType:"outer",name:"CATEGORY3_ID",displayField:"CATEGORY3_NAME",canFilter:false,type:"integer",foreignKey:"T_CATEGORY3.ID"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:60,name:"CATEGORY3_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,validators:[],canEdit:false,name:"CATEGORY3_POSITION",canSave:false,editorType:"SpinnerItem",type:"integer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,name:"CATEGORY3_AVAILABLE",canSave:false,type:"boolean",title:"Verfügbar?"},{sortByField:"CATEGORY4_POSITION",validators:[],joinType:"outer",name:"CATEGORY4_ID",displayField:"CATEGORY4_NAME",canFilter:false,type:"integer",foreignKey:"T_CATEGORY4.ID"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:60,name:"CATEGORY4_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,validators:[],canEdit:false,name:"CATEGORY4_POSITION",canSave:false,editorType:"SpinnerItem",type:"integer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,name:"CATEGORY4_AVAILABLE",canSave:false,type:"boolean",title:"Verfügbar?"},{sortByField:"CATEGORY5_POSITION",validators:[],joinType:"outer",name:"CATEGORY5_ID",displayField:"CATEGORY5_NAME",canFilter:false,type:"integer",foreignKey:"T_CATEGORY5.ID"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:60,name:"CATEGORY5_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,validators:[],canEdit:false,name:"CATEGORY5_POSITION",canSave:false,editorType:"SpinnerItem",type:"integer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,name:"CATEGORY5_AVAILABLE",canSave:false,type:"boolean",title:"Verfügbar?"},{sortByField:"CATEGORY6_POSITION",validators:[],joinType:"outer",name:"CATEGORY6_ID",displayField:"CATEGORY6_NAME",canFilter:false,type:"integer",foreignKey:"T_CATEGORY6.ID"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:60,name:"CATEGORY6_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,validators:[],canEdit:false,name:"CATEGORY6_POSITION",canSave:false,editorType:"SpinnerItem",type:"integer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,name:"CATEGORY6_AVAILABLE",canSave:false,type:"boolean",title:"Verfügbar?"},{sortByField:"CATEGORY7_POSITION",validators:[],joinType:"outer",name:"CATEGORY7_ID",displayField:"CATEGORY7_NAME",canFilter:false,type:"integer",foreignKey:"T_CATEGORY7.ID"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:60,name:"CATEGORY7_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,validators:[],canEdit:false,name:"CATEGORY7_POSITION",canSave:false,editorType:"SpinnerItem",type:"integer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,name:"CATEGORY7_AVAILABLE",canSave:false,type:"boolean",title:"Verfügbar?"},{sortByField:"CATEGORY8_POSITION",validators:[],joinType:"outer",name:"CATEGORY8_ID",displayField:"CATEGORY8_NAME",canFilter:false,type:"integer",foreignKey:"T_CATEGORY8.ID"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:60,name:"CATEGORY8_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,validators:[],canEdit:false,name:"CATEGORY8_POSITION",canSave:false,editorType:"SpinnerItem",type:"integer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,name:"CATEGORY8_AVAILABLE",canSave:false,type:"boolean",title:"Verfügbar?"},{sortByField:"CATEGORY9_POSITION",validators:[],joinType:"outer",name:"CATEGORY9_ID",displayField:"CATEGORY9_NAME",canFilter:false,type:"integer",foreignKey:"T_CATEGORY9.ID"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,length:60,name:"CATEGORY9_NAME",canSave:false,type:"text",title:"Name"},{hidden:true,validators:[],canEdit:false,name:"CATEGORY9_POSITION",canSave:false,editorType:"SpinnerItem",type:"integer"},{hidden:true,escapeHTML:true,validators:[],canEdit:false,name:"CATEGORY9_AVAILABLE",canSave:false,type:"boolean",title:"Verfügbar?"},{validators:[],canEdit:false,name:"CURRENT_ACCOUNT_COUNT",type:"integer",title:"Aktuelle Anzahl aktiver Accounts"},{escapeHTML:true,validators:[],canEdit:false,name:"ADDRESS_STREET",length:50,type:"text",title:"Straße"},{escapeHTML:true,validators:[],canEdit:false,name:"ADDRESS_CITY",length:50,type:"text",title:"Stadt"},{escapeHTML:true,validators:[],canEdit:false,name:"ADDRESS_ZIPCODE",length:10,type:"text",title:"Postleitzahl"},{escapeHTML:true,validators:[],canEdit:false,name:"ADDRESS_ZIPCODEPLUSCITY",length:61,canSave:false,title:"Adresse",type:"text"},{validators:[],canEdit:false,joinType:"outer",name:"ADDRESS_COUNTRY_ID",type:"integer",title:"Land",relatedTableAlias:"country"},{escapeHTML:true,validators:[],canEdit:false,name:"ADDRESS_COUNTRYZIPCITY",length:63,canSave:false,title:"Adresse",type:"text"},{hidden:true,escapeHTML:false,validators:[],canEdit:false,name:"ADD_COUNTRY_ISO_3166_1_ALPHA_2",length:2,type:"text"},{escapeHTML:true,validators:[],canEdit:false,name:"DISTRIBUTORLIST",length:500,title:"Zugeordnete Distributoren",type:"text"},{escapeHTML:true,validators:[],canEdit:false,name:"DISTRIBUTORID_LIST_SEP",length:500,title:"Zugeordnete Distributoren",type:"text"},{escapeHTML:true,validators:[],canEdit:false,name:"USERLIST",length:500,title:"Partnermanager",type:"text"},{escapeHTML:true,validators:[],canEdit:false,name:"USERID_LIST_SEP",length:500,title:"Partnermanager",type:"text"},{escapeHTML:true,validators:[],canEdit:false,name:"PRODUCTLIST",length:500,title:"Zugeordnete Produkte",type:"text"},{escapeHTML:true,validators:[],canEdit:false,name:"PRODUCTID_LIST_SEP",length:500,title:"Zugeordnete Produkte",type:"text"},{hidden:true,validators:[],canEdit:false,name:"CURRENT_ACCOUNT_CNT_TENANT_ID",type:"integer"}]})
                      Please see that there is no validator returned for field RESELLER_NAME.

                      The DataSources look like this:
                      T_USER.ds.xml:
                      Code:
                      <DataSource xmlns="lmscompany/ds" xmlns:fmt="lmscompany/fmt" dbName="Oracle" tableName="T_USER" ID="T_USER" serverType="sql"
                          serverConstructor="com.lmscompany.lms.server.LMSSQLDataSource">
                          <fmt:bundle basename="com.lmscompany.lms.server.i18n.DSXMLResources-utf8" encoding="utf-8" />
                          <fields>
                              <field primaryKey="true" hidden="true" name="ID" type="sequence" />
                              <field hidden="true" name="TENANT_ID" type="integer" canEdit="false" />
                              <field foreignKey="V_USER_CREATED_BY.ID" relatedTableAlias="USER_CREATED_BY" name="CREATED_BY" displayField="CREATED_BY_NAME" type="creator">
                                  <title><fmt:message key="createdBy" /></title>
                              </field>
                              <field name="CREATED_BY_NAME" includeFrom="V_USER_CREATED_BY.FULLNAME_INITIALS_GIVENNAME" length="61" hidden="true" />
                              <field name="CREATED_BY_NAME_TOOLTIP" includeFrom="V_USER_CREATED_BY.FULLNAME_LEGALENTITYNAME" length="134" hidden="true" />
                              <field name="CREATED_AT" type="creatorTimestamp">
                                  <title><fmt:message key="createdAt" /></title>
                              </field>
                              <field foreignKey="V_USER_MODIFIED_BY.ID" relatedTableAlias="USER_MODIFIED_BY" name="MODIFIED_BY" displayField="MODIFIED_BY_NAME" type="modifier">
                                  <title><fmt:message key="modifiedBy" /></title>
                              </field>
                              <field name="MODIFIED_BY_NAME" includeFrom="V_USER_MODIFIED_BY.FULLNAME_INITIALS_GIVENNAME" length="61" hidden="true" />
                              <field name="MODIFIED_BY_NAME_TOOLTIP" includeFrom="V_USER_MODIFIED_BY.FULLNAME_LEGALENTITYNAME" length="134" hidden="true" />
                              <field name="MODIFIED_AT" type="modifierTimestamp">
                                  <title><fmt:message key="modifiedAt" /></title>
                              </field>
                      
                              <field foreignKey="T_COMPANY.ID" joinType="outer" name="BELONGSTO_COMPANY_ID" type="integer">
                                  <title><fmt:message key="company" /></title>
                              </field>
                              <field name="COMPANY_NAME" includeFrom="T_COMPANY.NAME" length="70" canSave="false" hidden="true" />
                              <field foreignKey="T_DISTRIBUTOR.ID" joinType="outer" name="BELONGSTO_DISTRIBUTOR_ID" type="integer">
                                  <title><fmt:message key="distributor" /></title>
                              </field>
                              <field name="DISTRIBUTOR_NAME" includeFrom="T_DISTRIBUTOR.NAME" length="70" canSave="false" hidden="true" />
                              <field foreignKey="T_RESELLER.ID" joinType="outer" name="BELONGSTO_RESELLER_ID" type="integer">
                                  <title><fmt:message key="reseller" /></title>
                              </field>
                              <field name="RESELLER_NAME" includeFrom="T_RESELLER.NAME" hidden="true" />
                              <field name="RESELLER_BRANCH" includeFrom="T_RESELLER.BRANCH" hidden="true" />
                              <field name="RESELLER_ENABLED" includeFrom="T_RESELLER.ENABLED">
                                  <title><fmt:message key="resellerActiveQM" /></title>
                              </field>
                              <field name="DISTRIBUTOR_ENABLED" includeFrom="T_DISTRIBUTOR.ENABLED">
                                  <title><fmt:message key="distributorActiveQM" /></title>
                              </field>
                      
                              <field name="LEGALENTITYTYPE" length="1" type="text" escapeHTML="true" canEdit="false" canSave="false" />
                              <field name="LEGALENTITYORDER" type="integer" canEdit="false" canSave="false" />
                              <field name="LEGALENTITYNAME" type="text" length="70" canEdit="false" canSave="false"
                                  customSelectExpression="CASE t_user.legalentitytype WHEN 'C' THEN t_company.name WHEN 'D' THEN t_distributor.name WHEN 'R' THEN t_reseller.name END" />
                              <field name="GENDER_SHORTNAME" length="1" type="text" escapeHTML="true" required="true">
                                  <title><fmt:message key="salutation" /></title>
                              </field>
                              <field name="GIVENNAME" length="30" type="text" escapeHTML="true">
                                  <title><fmt:message key="givenName" /></title>
                              </field>
                              <field name="SURNAME" length="30" type="text" escapeHTML="true" required="true">
                                  <title><fmt:message key="surname" /></title>
                              </field>
                              <field name="LOGINNAME" length="20" type="text" escapeHTML="true" required="true">
                                  <title><fmt:message key="loginName" /></title>
                                  <validators>
                                      <validator type="isUnique">
                                          <errorMessage><fmt:message key="validatorUserNameInUse" /></errorMessage>
                                      </validator>
                                      <validator type="regexp" expression="^[a-zA-Z0-9]{4,15}$">
                                          <errorMessage><fmt:message key="validatorUserNameComplexity" /></errorMessage>
                                      </validator>
                                  </validators>
                              </field>
                              <field name="ADMINUSER" length="1" type="boolean" sqlStorageStrategy="singleCharYN">
                                  <title><fmt:message key="adminuserQM" /></title>
                              </field>
                              <field name="FUNCTION" length="50" type="text" escapeHTML="true" required="true">
                                  <title><fmt:message key="function" /></title>
                              </field>
                              <field name="BCRYPTHASH" customSelectExpression="''" customUpdateExpression="$values.BCRYPTHASH" length="60" type="text" escapeHTML="true">
                                  <title><fmt:message key="password" /></title>
                              </field>
                              <field name="PASSWORD1" customSelectExpression="''" length="60" type="text" escapeHTML="true" canEdit="true">
                                  <title><fmt:message key="password" /></title>
                                  <validators>
                                      <validator type="regexp" expression="^((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^\s\w\d]).{8,20})$">
                                          <errorMessage><fmt:message key="validatorPasswordComplexity" /></errorMessage>
                                      </validator>
                                      <validator type="regexp" expression="^((?=.*\d).*)$">
                                          <errorMessage><fmt:message key="validatorPasswordNoDigit" /></errorMessage>
                                      </validator>
                                      <validator type="regexp" expression="^((?=.*[a-z]).*)$">
                                          <errorMessage><fmt:message key="validatorPasswordNoLowerCaseLetter" /></errorMessage>
                                      </validator>
                                      <validator type="regexp" expression="^((?=.*[A-Z]).*)$">
                                          <errorMessage><fmt:message key="validatorPasswordNoUpperCaseLetter" /></errorMessage>
                                      </validator>
                                      <validator type="regexp" expression="^((?=.*[^\s\w\d]).*)$">
                                          <errorMessage><fmt:message key="validatorPasswordNoSpecialCharacter" /></errorMessage>
                                      </validator>
                                      <validator type="regexp" expression="^.{0,20}$">
                                          <errorMessage><fmt:message key="validatorPasswordTooLong" /></errorMessage>
                                      </validator>
                                      <validator type="regexp" expression="^.{8,}$">
                                          <errorMessage><fmt:message key="validatorPasswordTooShort" /></errorMessage>
                                      </validator>
                                  </validators>
                              </field>
                              <field name="PASSWORD2" customSelectExpression="''" length="60" type="text" escapeHTML="true" canEdit="true">
                                  <title><fmt:message key="passwordVerify" /></title>
                                  <validators>
                                      <validator type="matchesField" otherField="PASSWORD1">
                                          <errorMessage><fmt:message key="validatorPasswordPasswordVerification" /></errorMessage>
                                      </validator>
                                  </validators>
                              </field>
                              <field name="VALIDFROM" type="date" required="true" canEdit="true">
                                  <title><fmt:message key="accountActiveFrom" /></title>
                                  <validators>
                                      <!-- Erklärung unter http://forums.smartclient.com/showthread.php?p=108718#post108718
                                                            #if((! $!record.VALIDTO) && ("$!record.VALIDTO" == ""))
                                      -->
                                      <validator type="serverCustom">
                                          <serverCondition><![CDATA[
                                            #if(         "$!record.VALIDTO" != "" )
                                              #set( $gb = $!record.VALIDTO.getTime() )
                                            ##elseif(     "$!dataSource.fetchById($record.ID).VALIDTO" != "" )
                                              ##set( $gb = $!dataSource.fetchById($record.ID).VALIDTO.getTime() )
                                            #else
                                              #set( $gb = -1 )
                                            #end
                                            
                                            $value.getTime() <= $gb || $gb == -1]]></serverCondition>
                                          <errorMessage><fmt:message key="validatorStartDateBeforeEndDate2" /></errorMessage>
                                      </validator>
                              <!--TODO: Add validator to prevent changing dates in the past
                                      <validator type="serverCustom">
                                          <serverCondition><![CDATA[
                                          ##Required field
                                          #set( $neu = $!value.getTime() )
                                          
                                          ##Can be NULL when adding new entry
                                          #if(          "$!dataSource.fetchById($record.ID).VALIDFROM" != "" )
                                              #set( $alt = $!dataSource.fetchById($record.ID).VALIDFROM.getTime() )
                                            #else
                                              #set( $alt = -1 )
                                            #end
                                            
                                            ##New created
                                            $alt == -1
                                            ##Unchanged
                                            || $neu == $alt
                                            ##Moved in future
                                            || ($transactionDate < $neu && $transactionDate < $alt)
                                            ]]></serverCondition>
                                          <errorMessage><fmt:message key="validatorModifyPassedStartDate"/></errorMessage>
                                      </validator>-->
                                  </validators>
                              </field>
                              <field name="VALIDTO" type="date" canEdit="true">
                                  <title><fmt:message key="accountActiveTo" /></title>
                                  <validators>
                                      <!-- Erklärung unter http://forums.smartclient.com/showthread.php?p=108718#post108718 -->
                                      <validator type="serverCustom">
                                          <serverCondition><![CDATA[
                                            #if(         "$!value" != "" )
                                              #set( $gb = $!value.getTime() )
                                            #else
                                              #set( $gb = -1 )
                                            #end
                      
                                            #if( "$!record.VALIDFROM" != "" )
                                              #set( $gv = $!record.VALIDFROM.getTime() )
                                            #else
                                              #set( $gv = $!dataSource.fetchById($record.ID).VALIDFROM.getTime() )
                                            #end
                                            $gv <= $gb || $gb == -1]]></serverCondition>
                                          <errorMessage><fmt:message key="validatorStartDateBeforeEndDate2" /></errorMessage>
                                      </validator>
                                  </validators>
                              </field>
                              <field name="VALIDNOW" type="boolean" sqlStorageStrategy="singleCharYN" escapeHTML="true" canSave="false"
                                  customSelectExpression="CASE WHEN TRUNC ( sysdate ) BETWEEN t_user.validfrom AND t_user.validto OR ( t_user.validfrom
                                  &lt;= TRUNC(sysdate) AND t_user.validto IS NULL) THEN 'Y' ELSE 'N' END">
                                  <title><fmt:message key="accountCurrentlyActive" /></title>
                              </field>
                              <field name="INVALIDLOGINATTEMPTS" type="integer" required="true">
                                  <title><fmt:message key="numberOfUnsuccessfulLogins" /></title>
                              </field>
                              <field name="LASTLOGIN" type="datetime">
                                  <title><fmt:message key="lastLoginAt" /></title>
                              </field>
                              <field name="EMAIL" length="50" type="emailType" escapeHTML="true" required="true">
                                  <title><fmt:message key="email" /></title>
                              </field>
                              <field name="PHONENUMBER" length="50" type="text" escapeHTML="true">
                                  <title><fmt:message key="telephoneNumber" /></title>
                                  <validators>
                                      <validator type="regexp" expression="([0-9]{3,5})([ .-]?)([0-9]*)">
                                          <errorMessage><fmt:message key="validatorValidTelephoneNumber" /></errorMessage>
                                      </validator>
                                  </validators>
                              </field>
                              <field name="FULLNAME" length="61" type="text" escapeHTML="true" canEdit="false" canSave="false">
                                  <title><fmt:message key="name" /></title>
                              </field>
                              <field name="FULLNAME_INITIALS_GIVENNAME" length="61" type="text" escapeHTML="true" canEdit="false" canSave="false">
                                  <title><fmt:message key="name" /></title>
                              </field>
                              <field name="FULLNAME_INITIALS_BOTH" length="61" type="text" escapeHTML="true" canEdit="false" canSave="false">
                                  <title><fmt:message key="name" /></title>
                              </field>
                              <field name="EMAILENTRY" length="116" type="text" escapeHTML="true" canEdit="false" canSave="false">
                                  <title><fmt:message key="nameEmail" /></title>
                              </field>
                              <field includeFrom="V_USER_ROLELIST.ROLELIST" length="4000" />
                              <field includeFrom="V_USER_VIEWLIST.VIEWLIST" length="4000" />
                              <field name="RESELLERLIST" includeFrom="V_PAM_RESELLERLIST.RESELLERLIST">
                                  <title><fmt:message key="supervisedPartners" /></title>
                              </field>
                              <field name="RESELLERID_LIST_SEP" includeFrom="V_PAM_RESELLERLIST.RESELLERID_LIST_SEP">
                                  <title><fmt:message key="supervisedPartners" /></title>
                              </field>
                      
                              <!-- TENANT_IDs for WHERE-clause generation -->
                              <field name="COMPANY_TENANT_ID" includeFrom="T_COMPANY.TENANT_ID" hidden="true" />
                              <field name="DISTRIBUTOR_TENANT_ID" includeFrom="T_DISTRIBUTOR.TENANT_ID" hidden="true" />
                              <field name="RESELLER_TENANT_ID" includeFrom="T_RESELLER.TENANT_ID" hidden="true" />
                              <field name="USER_ROLELIST_TENANT_ID" includeFrom="V_USER_ROLELIST.TENANT_ID" hidden="true" />
                          </fields>
                          <serverObject lookupStyle="new" className="com.lmscompany.lms.server.worker.T_USER" />
                          <operationBindings>
                              <operationBinding operationType="add"
                                  requiresRole="editCompanyUserSameLE, editDistributorUserChildLE, editDistributorUserSameLE, editResellerUserChildLE, editResellerUserSameLE" />
                      
                              <operationBinding operationType="update"
                                  requiresRole="editCompanyUserSameLE, editDistributorUserChildLE, editDistributorUserSameLE, editResellerUserChildLE, editResellerUserSameLE" />
                      
                              <operationBinding operationType="update" operationId="updateOwnUserSettings" serverMethod="updateOwnUserSettings" requiresRole="">
                                  <criteria fieldName="ID" operator="equals" value="$session.authenticatedUserID" />
                              </operationBinding>
                      
                              <operationBinding operationType="validate" />
                      
                              <operationBinding operationType="fetch" />
                      
                              <operationBinding operationType="fetch" operationId="fetchUserIdForLoginname" serverMethod="fetchUserIdForLoginname"
                                  outputs="ID, TENANT_ID, GIVENNAME, SURNAME, LOGINNAME, BELONGSTO_COMPANY_ID, COMPANY_NAME, BELONGSTO_DISTRIBUTOR_ID, DISTRIBUTOR_NAME, BELONGSTO_RESELLER_ID, RESELLER_NAME, LEGALENTITYNAME, ROLELIST, VIEWLIST" />
                      
                              <operationBinding operationType="fetch" operationId="fetchColleagues" serverMethod="fetchColleagues" outputs="ID, FULLNAME, RESELLER_BRANCH" />
                      
                              <operationBinding operationType="custom" operationId="resetUserPassword" serverMethod="resetUserPassword"
                                  requiresRole="editCompanyUserSameLE, editDistributorUserChildLE, editDistributorUserSameLE, editResellerUserChildLE, editResellerUserSameLE" />
                      
                              <!-- Server methods -->
                              <operationBinding operationType="fetch" operationId="writeMailPasswordReset" serverOnly="true">
                              <!-- methodArguments="$dsRequest, &quot;Caseworker&quot;" -->
                                  <mail contentType="text/html">
                                      <from>$customerSettings.customerMailFrom</from>
                                      <to>$EMAILENTRY</to>
                                      <bcc>$customerSettings.customerMailBCC</bcc>
                                      <subject>Ihr Benutzerpasswort wurde zurück gesetzt</subject>
                                      <templateFile>mails/userPasswordResetted.html</templateFile>
                                  </mail>
                              </operationBinding>
                      
                              <operationBinding operationType="fetch" operationId="writeMailNewUser" serverOnly="true">
                                  <mail contentType="text/html">
                                      <from>$customerSettings.customerMailFrom</from>
                                      <to>$EMAILENTRY</to>
                                      <bcc>$customerSettings.customerMailBCC</bcc>
                                      <subject>Ihr neuer Account wurde erstellt</subject>
                                      <templateFile>mails/newUser.html</templateFile>
                                  </mail>
                              </operationBinding>
                          </operationBindings>
                      </DataSource>
                      T_RESELLER.ds.xml:
                      Code:
                      <DataSource xmlns="lmscompany/ds" xmlns:fmt="lmscompany/fmt" dbName="Oracle" tableName="T_RESELLER" ID="T_RESELLER" serverType="sql"
                          serverConstructor="com.lmscompany.lms.server.LMSSQLDataSource">
                          <fmt:bundle basename="com.lmscompany.lms.server.i18n.DSXMLResources-utf8" encoding="utf-8" />
                          <fields>
                              <field primaryKey="true" hidden="true" name="ID" type="sequence" foreignKey="V_CURRENT_ACCOUNT_COUNT.RESELLER_ID" joinType="outer" />
                              <field hidden="true" name="TENANT_ID" type="integer" canEdit="false" />
                              <field foreignKey="V_USER_CREATED_BY.ID" relatedTableAlias="USER_CREATED_BY" name="CREATED_BY" displayField="CREATED_BY_NAME" type="creator">
                                  <title><fmt:message key="createdBy" /></title>
                              </field>
                              <field name="CREATED_BY_NAME" includeFrom="V_USER_CREATED_BY.FULLNAME_INITIALS_GIVENNAME" length="61" hidden="true" />
                              <field name="CREATED_BY_NAME_TOOLTIP" includeFrom="V_USER_CREATED_BY.FULLNAME_LEGALENTITYNAME" length="134" hidden="true" />
                              <field name="CREATED_AT" type="creatorTimestamp">
                                  <title><fmt:message key="createdAt" /></title>
                              </field>
                              <field foreignKey="V_USER_MODIFIED_BY.ID" relatedTableAlias="USER_MODIFIED_BY" name="MODIFIED_BY" displayField="MODIFIED_BY_NAME" type="modifier">
                                  <title><fmt:message key="modifiedBy" /></title>
                              </field>
                              <field name="MODIFIED_BY_NAME" includeFrom="V_USER_MODIFIED_BY.FULLNAME_INITIALS_GIVENNAME" length="61" hidden="true" />
                              <field name="MODIFIED_BY_NAME_TOOLTIP" includeFrom="V_USER_MODIFIED_BY.FULLNAME_LEGALENTITYNAME" length="134" hidden="true" />
                              <field name="MODIFIED_AT" type="modifierTimestamp">
                                  <title><fmt:message key="modifiedAt" /></title>
                              </field>
                              <field name="SOURCEUID" length="50" type="text" escapeHTML="true">
                                  <title><fmt:message key="resellerIDSource" /></title>
                                  <validators>
                                      <validator type="isUnique" caseSensitive="true">
                                          <errorMessage><fmt:message key="validatorSourceIDInUse" /></errorMessage>
                                      </validator>
                                  </validators>
                              </field>
                              <field name="NAME" length="70" type="text" escapeHTML="true" required="true">
                                  <title><fmt:message key="companyName" /></title>
                                  <validators>
                                      <validator type="isUnique">
                                          <errorMessage><fmt:message key="validatorNameInUse" /></errorMessage>
                                      </validator>
                                  </validators>
                              </field>
                              <field name="MAXACCOUNTS" type="integer" required="true">
                                  <title><fmt:message key="maxNumberOfAccounts" /></title>
                                  <validators>
                                      <validator type="integerRange" min="1">
                                          <errorMessage><fmt:message key="validatorNumberOfAccounts" /></errorMessage>
                                      </validator>
                                  </validators>
                              </field>
                              <field name="REVENUE" type="integer">
                                  <title><fmt:message key="approxRevenue" /></title>
                                  <validators>
                                      <validator type="integerRange" min="0" max="100000000">
                                          <errorMessage><fmt:message key="validatorCustomerRevenue" /></errorMessage>
                                      </validator>
                                  </validators>
                              </field>
                      
                              <field name="NUMBEROFEMPLOYEES" type="integer">
                                  <title><fmt:message key="approxNumberOfEmployees" /></title>
                                  <validators>
                                      <validator type="integerRange" min="1">
                                          <errorMessage><fmt:message key="validatorNumberOfEmployees" /></errorMessage>
                                      </validator>
                                  </validators>
                              </field>
                              <field name="BUSINESSPURPOSE" length="60" type="text" escapeHTML="true">
                                  <title><fmt:message key="businessPurpose" /></title>
                              </field>
                              <field name="ENABLED" type="boolean" escapeHTML="true" sqlStorageStrategy="singleCharYN" required="true">
                                  <title><fmt:message key="activeQM" /></title>
                              </field>
                      
                              <field name="BRANCH" type="boolean" escapeHTML="true" sqlStorageStrategy="singleCharYN" required="true">
                                  <title><fmt:message key="isBranch" /></title>
                              </field>
                      
                              <field name="LEAD_MAXDISTANCE" type="integer" canFilter="false">
                                  <title><fmt:message key="maxDistanceToLead" /></title>
                              </field>
                      
                              <field foreignKey="T_CATEGORY1.ID" joinType="outer" name="CATEGORY1_ID" displayField="CATEGORY1_NAME" sortByField="CATEGORY1_POSITION" type="integer"
                                  canFilter="false" />
                              <field name="CATEGORY1_NAME" includeFrom="T_CATEGORY1.NAME" length="60" canSave="false" hidden="true" />
                              <field name="CATEGORY1_POSITION" includeFrom="T_CATEGORY1.POSITION" canSave="false" hidden="true" />
                              <field name="CATEGORY1_AVAILABLE" includeFrom="T_CATEGORY1.AVAILABLE" canSave="false" hidden="true" />
                      
                              <field foreignKey="T_CATEGORY2.ID" joinType="outer" name="CATEGORY2_ID" displayField="CATEGORY2_NAME" sortByField="CATEGORY2_POSITION" type="integer"
                                  canFilter="false" />
                              <field name="CATEGORY2_NAME" includeFrom="T_CATEGORY2.NAME" length="60" canSave="false" hidden="true" />
                              <field name="CATEGORY2_POSITION" includeFrom="T_CATEGORY2.POSITION" canSave="false" hidden="true" />
                              <field name="CATEGORY2_AVAILABLE" includeFrom="T_CATEGORY2.AVAILABLE" canSave="false" hidden="true" />
                      
                              <field foreignKey="T_CATEGORY3.ID" joinType="outer" name="CATEGORY3_ID" displayField="CATEGORY3_NAME" sortByField="CATEGORY3_POSITION" type="integer"
                                  canFilter="false" />
                              <field name="CATEGORY3_NAME" includeFrom="T_CATEGORY3.NAME" length="60" canSave="false" hidden="true" />
                              <field name="CATEGORY3_POSITION" includeFrom="T_CATEGORY3.POSITION" canSave="false" hidden="true" />
                              <field name="CATEGORY3_AVAILABLE" includeFrom="T_CATEGORY3.AVAILABLE" canSave="false" hidden="true" />
                      
                              <field foreignKey="T_CATEGORY4.ID" joinType="outer" name="CATEGORY4_ID" displayField="CATEGORY4_NAME" sortByField="CATEGORY4_POSITION" type="integer"
                                  canFilter="false" />
                              <field name="CATEGORY4_NAME" includeFrom="T_CATEGORY4.NAME" length="60" canSave="false" hidden="true" />
                              <field name="CATEGORY4_POSITION" includeFrom="T_CATEGORY4.POSITION" canSave="false" hidden="true" />
                              <field name="CATEGORY4_AVAILABLE" includeFrom="T_CATEGORY4.AVAILABLE" canSave="false" hidden="true" />
                      
                              <field foreignKey="T_CATEGORY5.ID" joinType="outer" name="CATEGORY5_ID" displayField="CATEGORY5_NAME" sortByField="CATEGORY5_POSITION" type="integer"
                                  canFilter="false" />
                              <field name="CATEGORY5_NAME" includeFrom="T_CATEGORY5.NAME" length="60" canSave="false" hidden="true" />
                              <field name="CATEGORY5_POSITION" includeFrom="T_CATEGORY5.POSITION" canSave="false" hidden="true" />
                              <field name="CATEGORY5_AVAILABLE" includeFrom="T_CATEGORY5.AVAILABLE" canSave="false" hidden="true" />
                      
                              <field foreignKey="T_CATEGORY6.ID" joinType="outer" name="CATEGORY6_ID" displayField="CATEGORY6_NAME" sortByField="CATEGORY6_POSITION" type="integer"
                                  canFilter="false" />
                              <field name="CATEGORY6_NAME" includeFrom="T_CATEGORY6.NAME" length="60" canSave="false" hidden="true" />
                              <field name="CATEGORY6_POSITION" includeFrom="T_CATEGORY6.POSITION" canSave="false" hidden="true" />
                              <field name="CATEGORY6_AVAILABLE" includeFrom="T_CATEGORY6.AVAILABLE" canSave="false" hidden="true" />
                      
                              <field foreignKey="T_CATEGORY7.ID" joinType="outer" name="CATEGORY7_ID" displayField="CATEGORY7_NAME" sortByField="CATEGORY7_POSITION" type="integer"
                                  canFilter="false" />
                              <field name="CATEGORY7_NAME" includeFrom="T_CATEGORY7.NAME" length="60" canSave="false" hidden="true" />
                              <field name="CATEGORY7_POSITION" includeFrom="T_CATEGORY7.POSITION" canSave="false" hidden="true" />
                              <field name="CATEGORY7_AVAILABLE" includeFrom="T_CATEGORY7.AVAILABLE" canSave="false" hidden="true" />
                      
                              <field foreignKey="T_CATEGORY8.ID" joinType="outer" name="CATEGORY8_ID" displayField="CATEGORY8_NAME" sortByField="CATEGORY8_POSITION" type="integer"
                                  canFilter="false" />
                              <field name="CATEGORY8_NAME" includeFrom="T_CATEGORY8.NAME" length="60" canSave="false" hidden="true" />
                              <field name="CATEGORY8_POSITION" includeFrom="T_CATEGORY8.POSITION" canSave="false" hidden="true" />
                              <field name="CATEGORY8_AVAILABLE" includeFrom="T_CATEGORY8.AVAILABLE" canSave="false" hidden="true" />
                      
                              <field foreignKey="T_CATEGORY9.ID" joinType="outer" name="CATEGORY9_ID" displayField="CATEGORY9_NAME" sortByField="CATEGORY9_POSITION" type="integer"
                                  canFilter="false" />
                              <field name="CATEGORY9_NAME" includeFrom="T_CATEGORY9.NAME" length="60" canSave="false" hidden="true" />
                              <field name="CATEGORY9_POSITION" includeFrom="T_CATEGORY9.POSITION" canSave="false" hidden="true" />
                              <field name="CATEGORY9_AVAILABLE" includeFrom="T_CATEGORY9.AVAILABLE" canSave="false" hidden="true" />
                      
                              <field includeFrom="V_CURRENT_ACCOUNT_COUNT.CURRENT_ACCOUNT_COUNT" />
                      
                              <field name="ADDRESS_STREET" includeFrom="T_ADDRESS.STREET" />
                              <field name="ADDRESS_CITY" includeFrom="T_ADDRESS.CITY" />
                              <field name="ADDRESS_ZIPCODE" includeFrom="T_ADDRESS.ZIPCODE" />
                              <field name="ADDRESS_ZIPCODEPLUSCITY" includeFrom="T_ADDRESS.ZIPCODEPLUSCITY">
                                  <title><fmt:message key="address" /></title>
                              </field>
                              <field name="ADDRESS_COUNTRY_ID" includeFrom="T_ADDRESS.COUNTRY_ID" />
                              <field name="ADDRESS_COUNTRYZIPCITY" includeFrom="T_ADDRESS.COUNTRYZIPCITY">
                                  <title><fmt:message key="address" /></title>
                              </field>
                              <!-- Needed to force the join generation to T_COUNTRY the customSelectExpression of ADDRESS_COUNTRYZIPCITY -->
                              <field name="ADD_COUNTRY_ISO_3166_1_ALPHA_2" includeFrom="T_ADDRESS.COUNTRY_ISO_3166_1_ALPHA_2" hidden="true" />
                      
                              <field name="DISTRIBUTORLIST" includeFrom="V_RESELLER_DISTRIBUTORLIST.DISTRIBUTORLIST">
                                  <title><fmt:message key="assignedDistributors" /></title>
                              </field>
                              <field name="DISTRIBUTORID_LIST_SEP" includeFrom="V_RESELLER_DISTRIBUTORLIST.DISTRIBUTORID_LIST_SEP">
                                  <title><fmt:message key="assignedDistributors" /></title>
                              </field>
                      
                              <field name="USERLIST" includeFrom="V_RESELLER_PAMLIST.USERLIST">
                                  <title><fmt:message key="partnerManager" /></title>
                              </field>
                              <field name="USERID_LIST_SEP" includeFrom="V_RESELLER_PAMLIST.USERID_LIST_SEP">
                                  <title><fmt:message key="partnerManager" /></title>
                              </field>
                      
                              <field name="PRODUCTLIST" includeFrom="V_RESELLER_PRODUCTLIST.PRODUCTLIST">
                                  <title><fmt:message key="assignedProducts" /></title>
                              </field>
                              <field name="PRODUCTID_LIST_SEP" includeFrom="V_RESELLER_PRODUCTLIST.PRODUCTID_LIST_SEP">
                                  <title><fmt:message key="assignedProducts" /></title>
                              </field>
                      
                              <!-- TENANT_IDs for WHERE-clause generation -->
                              <field name="CURRENT_ACCOUNT_CNT_TENANT_ID" includeFrom="V_CURRENT_ACCOUNT_COUNT.TENANT_ID" hidden="true" />
                              <!--
                              <field name="USER_CREATED_BY_TENANT_ID" includeFrom="V_USER_CREATED_BY.TENANT_ID" hidden="true" />
                              <field name="USER_MODIFIED_BY_TENANT_ID" includeFrom="V_USER_MODIFIED_BY.TENANT_ID" hidden="true" />
                      
                              <field name="CATEGORY1_TENANT_ID" includeFrom="T_CATEGORY1.TENANT_ID" hidden="true" />
                              <field name="CATEGORY2_TENANT_ID" includeFrom="T_CATEGORY2.TENANT_ID" hidden="true" />
                              <field name="CATEGORY3_TENANT_ID" includeFrom="T_CATEGORY3.TENANT_ID" hidden="true" />
                              <field name="CATEGORY4_TENANT_ID" includeFrom="T_CATEGORY4.TENANT_ID" hidden="true" />
                              <field name="CATEGORY5_TENANT_ID" includeFrom="T_CATEGORY5.TENANT_ID" hidden="true" />
                              <field name="CATEGORY6_TENANT_ID" includeFrom="T_CATEGORY6.TENANT_ID" hidden="true" />
                              <field name="CATEGORY7_TENANT_ID" includeFrom="T_CATEGORY7.TENANT_ID" hidden="true" />
                              <field name="CATEGORY8_TENANT_ID" includeFrom="T_CATEGORY8.TENANT_ID" hidden="true" />
                              <field name="CATEGORY9_TENANT_ID" includeFrom="T_CATEGORY9.TENANT_ID" hidden="true" />
                              -->
                          </fields>
                          <serverObject lookupStyle="new" className="com.lmscompany.lms.server.worker.T_RESELLER" />
                          <operationBindings>
                              <operationBinding operationType="add" requiresRole="editResellerChildLE" />
                              <operationBinding operationType="update" requiresRole="editResellerChildLE, editResellerSameLE" />
                              <operationBinding operationType="validate" requiresRole="editResellerChildLE, editResellerSameLE" />
                              <operationBinding operationType="fetch" />
                              <operationBinding operationType="fetch" operationId="fetchDirectionDown" serverMethod="fetchDirectionDown" />
                          </operationBindings>
                      </DataSource>
                      So right now my conclusion is that the bug has to be somewhere on the server side, but is not easily reproduced.

                      I wanted to post the logs for a request with validation error next. Trying this it turned out that the update actually worked.
                      I retried with the 1st entry - it still does not work there. This is reproduceable. One row from a DS is updateable, one is not. I will now get the logs for a good and a bad request and update here.

                      Best regards
                      Blama
                      Last edited by Blama; 9 Jan 2017, 04:43.

                      Comment


                        #12
                        Bad news here. The "successful" request does the unique check as well. But as no other user is registered for this reseller, this does not result in a validation error.

                        Code:
                        === 2017-01-09 11:09:37,482 [c-41] DEBUG RPCManager - Processing 1 requests.
                        === 2017-01-09 11:09:37,482 [c-41] DEBUG RPCManager - Request #1 (DSRequest) payload: {
                            criteria:{
                                ID:1720
                            },
                            values:{
                                FULLNAME_INITIALS_GIVENNAME:"E. Maier",
                                EMAILENTRY:"\"Erika Maier\" <***@gmail.com>",
                                CREATED_AT:new Date(1445871287000),
                                MODIFIED_BY:"1",
                                RESELLERID_LIST_SEP:", ,",
                                EMAIL:"***@gmail.com",
                                RESELLER_ENABLED:true,
                                ADMINUSER:false,
                                LEGALENTITYNAME:"Hansestadt Softwarekontor (HH)",
                                ROLELIST:"Benutzer",
                                ID:1720,
                                FULLNAME:"Erika Maier",
                                GIVENNAME:"Erika",
                                FULLNAME_INITIALS_BOTH:"E. M.",
                                CREATED_BY:"1",
                                MODIFIED_AT:new Date(1445871287000),
                                MODIFIED_BY_NAME_TOOLTIP:"Administrator (*** gmbh TESTACCOUNT)",
                                USER_ROLELIST_TENANT_ID:1,
                                SURNAME:"Maier2",
                                LEGALENTITYTYPE:"R",
                                CREATED_BY_NAME_TOOLTIP:"Administrator (*** gmbh TESTACCOUNT)",
                                CREATED_BY_NAME:"Administrator",
                                RESELLER_BRANCH:false,
                                FUNCTION:"Funktion",
                                VALIDFROM:new Date(1445814000000),
                                INVALIDLOGINATTEMPTS:0,
                                BELONGSTO_RESELLER_ID:32,
                                VALIDNOW:true,
                                MODIFIED_BY_NAME:"Administrator",
                                GENDER_SHORTNAME:"F",
                                RESELLER_NAME:"Hansestadt Softwarekontor (HH)",
                                TENANT_ID:1,
                                VIEWLIST:"addCommentToPickedLeadOwn, addLeadEasy, editPickedLeadContactOwn, editPickedLeadMasterdataOwn, editPickedLeadStatusOwn, handoverPickedLead, movePickedLeadToUserOwn, pickLead, requestDealreg, viewPicklistReseller, viewResellerPerformanceReseller, viewResellerPerformanceResellerUser",
                                LEGALENTITYORDER:3,
                                LOGINNAME:"r5user1",
                                RESELLER_TENANT_ID:1,
                                VALIDTO:null,
                                PASSWORD1:null,
                                PASSWORD2:null
                            },
                            operationConfig:{
                                dataSource:"T_USER",
                                repo:null,
                                operationType:"update",
                                textMatchStyle:"exact"
                            },
                            componentId:"isc_AddEditUserMasterdata_1_2",
                            appID:"builtinApplication",
                            operation:"T_USER_update",
                            oldValues:{
                                FULLNAME_INITIALS_GIVENNAME:"E. Maier",
                                EMAILENTRY:"\"Erika Maier\" <***@gmail.com>",
                                CREATED_AT:new Date(1445871287000),
                                MODIFIED_BY:"1",
                                RESELLERID_LIST_SEP:", ,",
                                EMAIL:"***@gmail.com",
                                RESELLER_ENABLED:true,
                                ADMINUSER:false,
                                LEGALENTITYNAME:"Hansestadt Softwarekontor (HH)",
                                ROLELIST:"Benutzer",
                                ID:1720,
                                FULLNAME:"Erika Maier",
                                GIVENNAME:"Erika",
                                FULLNAME_INITIALS_BOTH:"E. M.",
                                CREATED_BY:"1",
                                MODIFIED_AT:new Date(1445871287000),
                                MODIFIED_BY_NAME_TOOLTIP:"Administrator (*** gmbh TESTACCOUNT)",
                                USER_ROLELIST_TENANT_ID:1,
                                SURNAME:"Maier",
                                LEGALENTITYTYPE:"R",
                                CREATED_BY_NAME_TOOLTIP:"Administrator (*** gmbh TESTACCOUNT)",
                                CREATED_BY_NAME:"Administrator",
                                RESELLER_BRANCH:false,
                                FUNCTION:"Funktion",
                                VALIDFROM:new Date(1445814000000),
                                INVALIDLOGINATTEMPTS:0,
                                BELONGSTO_RESELLER_ID:32,
                                VALIDNOW:true,
                                MODIFIED_BY_NAME:"Administrator",
                                GENDER_SHORTNAME:"F",
                                RESELLER_NAME:"Hansestadt Softwarekontor (HH)",
                                TENANT_ID:1,
                                VIEWLIST:"addCommentToPickedLeadOwn, addLeadEasy, editPickedLeadContactOwn, editPickedLeadMasterdataOwn, editPickedLeadStatusOwn, handoverPickedLead, movePickedLeadToUserOwn, pickLead, requestDealreg, viewPicklistReseller, viewResellerPerformanceReseller, viewResellerPerformanceResellerUser",
                                LEGALENTITYORDER:3,
                                LOGINNAME:"r5user1",
                                RESELLER_TENANT_ID:1
                            }
                        }
                        === 2017-01-09 11:09:37,482 [c-41] INFO  LMSIDACall - Performing 1 operation(s)
                        === 2017-01-09 11:09:37,489 [c-41] DEBUG SQLDataSource - DataSource 212834 acquired SQLDriver instance 1001794051 during initialization
                        === 2017-01-09 11:09:37,489 [c-41] DEBUG SQLDataSource - DataSource 212835 acquired SQLDriver instance 1115749341 during initialization
                        === 2017-01-09 11:09:37,489 [c-41] DEBUG ServerObject - Couldn't find a public method named: fetch on class: com.lmscompany.lms.server.worker.T_USER
                        === 2017-01-09 11:09:37,489 [c-41] DEBUG DataSourceDMI - DataSourceDMI: no public method name: fetch available on class: com.lmscompany.lms.server.worker.T_USER - defaulting to builtin operations.
                        === 2017-01-09 11:09:37,489 [c-41] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
                        === 2017-01-09 11:09:37,489 [c-41] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
                        === 2017-01-09 11:09:37,490 [c-41] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
                            criteria: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"TENANT_ID",value:1,operator:"equals"},{fieldName:"ID",value:1720,operator:"equals"},{criteria:[{fieldName:"COMPANY_TENANT_ID",value:1,operator:"equals"},{fieldName:"COMPANY_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"DISTRIBUTOR_TENANT_ID",value:1,operator:"equals"},{fieldName:"DISTRIBUTOR_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"RESELLER_TENANT_ID",value:1,operator:"equals"},{fieldName:"RESELLER_TENANT_ID",operator:"isNull"}],operator:"or"},{fieldName:"USER_ROLELIST_TENANT_ID",value:1,operator:"equals"}],operator:"and"}    values: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"TENANT_ID",value:1,operator:"equals"},{fieldName:"ID",value:1720,operator:"equals"},{criteria:[{fieldName:"COMPANY_TENANT_ID",value:1,operator:"equals"},{fieldName:"COMPANY_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"DISTRIBUTOR_TENANT_ID",value:1,operator:"equals"},{fieldName:"DISTRIBUTOR_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"RESELLER_TENANT_ID",value:1,operator:"equals"},{fieldName:"RESELLER_TENANT_ID",operator:"isNull"}],operator:"or"},{fieldName:"USER_ROLELIST_TENANT_ID",value:1,operator:"equals"}],operator:"and"}
                        === 2017-01-09 11:09:37,490 [c-41] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE $defaultWhereClause
                        === 2017-01-09 11:09:37,490 [c-41] INFO  SQLDataSource - [builtinApplication.null] 212822: Executing SQL query on 'Oracle': SELECT T_USER.ID, T_USER.TENANT_ID, T_USER.CREATED_BY, T_USER.CREATED_AT, T_USER.MODIFIED_BY, T_USER.MODIFIED_AT, T_USER.BELONGSTO_COMPANY_ID, T_USER.BELONGSTO_DISTRIBUTOR_ID, T_USER.BELONGSTO_RESELLER_ID, T_USER.LEGALENTITYTYPE, T_USER.LEGALENTITYORDER, CASE t_user.legalentitytype WHEN 'C' THEN t_company.name WHEN 'D' THEN t_distributor.name WHEN 'R' THEN t_reseller.name END AS LEGALENTITYNAME, T_USER.GENDER_SHORTNAME, T_USER.GIVENNAME, T_USER.SURNAME, T_USER.LOGINNAME, T_USER.ADMINUSER, T_USER.FUNCTION, '' AS BCRYPTHASH, '' AS PASSWORD1, '' AS PASSWORD2, T_USER.VALIDFROM, T_USER.VALIDTO, CASE WHEN TRUNC ( sysdate ) BETWEEN t_user.validfrom AND t_user.validto OR ( t_user.validfrom     <= TRUNC(sysdate) AND t_user.validto IS NULL) THEN 'Y' ELSE 'N' END AS VALIDNOW, T_USER.INVALIDLOGINATTEMPTS, T_USER.LASTLOGIN, T_USER.EMAIL, T_USER.PHONENUMBER, T_USER.FULLNAME, T_USER.FULLNAME_INITIALS_GIVENNAME, T_USER.FULLNAME_INITIALS_BOTH, T_USER.EMAILENTRY, USER_CREATED_BY.FULLNAME_INITIALS_GIVENNAME AS CREATED_BY_NAME, USER_CREATED_BY.FULLNAME_LEGALENTITYNAME AS CREATED_BY_NAME_TOOLTIP, USER_MODIFIED_BY.FULLNAME_INITIALS_GIVENNAME AS MODIFIED_BY_NAME, USER_MODIFIED_BY.FULLNAME_LEGALENTITYNAME AS MODIFIED_BY_NAME_TOOLTIP, T_COMPANY.NAME AS COMPANY_NAME, T_DISTRIBUTOR.NAME AS DISTRIBUTOR_NAME, T_RESELLER.NAME AS RESELLER_NAME, T_RESELLER.BRANCH AS RESELLER_BRANCH, T_RESELLER.ENABLED AS RESELLER_ENABLED, T_DISTRIBUTOR.ENABLED AS DISTRIBUTOR_ENABLED, V_USER_ROLELIST.ROLELIST, V_USER_VIEWLIST.VIEWLIST, V_PAM_RESELLERLIST.RESELLERLIST, V_PAM_RESELLERLIST.RESELLERID_LIST_SEP, T_COMPANY.TENANT_ID AS COMPANY_TENANT_ID, T_DISTRIBUTOR.TENANT_ID AS DISTRIBUTOR_TENANT_ID, T_RESELLER.TENANT_ID AS RESELLER_TENANT_ID, V_USER_ROLELIST.TENANT_ID AS USER_ROLELIST_TENANT_ID FROM T_USER JOIN MV_USER_DATA USER_CREATED_BY ON T_USER.CREATED_BY = USER_CREATED_BY.ID JOIN MV_USER_DATA USER_MODIFIED_BY ON T_USER.MODIFIED_BY = USER_MODIFIED_BY.ID LEFT OUTER JOIN T_COMPANY ON T_USER.BELONGSTO_COMPANY_ID = T_COMPANY.ID LEFT OUTER JOIN T_DISTRIBUTOR ON T_USER.BELONGSTO_DISTRIBUTOR_ID = T_DISTRIBUTOR.ID LEFT OUTER JOIN T_RESELLER ON T_USER.BELONGSTO_RESELLER_ID = T_RESELLER.ID LEFT OUTER JOIN V_USER_ROLELIST ON T_USER.ID = V_USER_ROLELIST.USER_ID LEFT OUTER JOIN V_USER_VIEWLIST ON T_USER.ID = V_USER_VIEWLIST.USER_ID JOIN V_PAM_RESELLERLIST ON T_USER.ID = V_PAM_RESELLERLIST.USER_ID WHERE ((T_USER.TENANT_ID = 1 AND T_USER.TENANT_ID IS NOT NULL) AND (T_USER.ID = 1720 AND T_USER.ID IS NOT NULL) AND ((T_COMPANY.TENANT_ID = 1 AND T_COMPANY.TENANT_ID IS NOT NULL) OR (T_COMPANY.TENANT_ID IS NULL)) AND ((T_DISTRIBUTOR.TENANT_ID = 1 AND T_DISTRIBUTOR.TENANT_ID IS NOT NULL) OR (T_DISTRIBUTOR.TENANT_ID IS NULL)) AND ((T_RESELLER.TENANT_ID = 1 AND T_RESELLER.TENANT_ID IS NOT NULL) OR (T_RESELLER.TENANT_ID IS NULL)) AND (V_USER_ROLELIST.TENANT_ID = 1 AND V_USER_ROLELIST.TENANT_ID IS NOT NULL))
                        === 2017-01-09 11:09:37,491 [c-41] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'Oracle' using connection '1128120992': SELECT T_USER.ID, T_USER.TENANT_ID, T_USER.CREATED_BY, T_USER.CREATED_AT, T_USER.MODIFIED_BY, T_USER.MODIFIED_AT, T_USER.BELONGSTO_COMPANY_ID, T_USER.BELONGSTO_DISTRIBUTOR_ID, T_USER.BELONGSTO_RESELLER_ID, T_USER.LEGALENTITYTYPE, T_USER.LEGALENTITYORDER, CASE t_user.legalentitytype WHEN 'C' THEN t_company.name WHEN 'D' THEN t_distributor.name WHEN 'R' THEN t_reseller.name END AS LEGALENTITYNAME, T_USER.GENDER_SHORTNAME, T_USER.GIVENNAME, T_USER.SURNAME, T_USER.LOGINNAME, T_USER.ADMINUSER, T_USER.FUNCTION, '' AS BCRYPTHASH, '' AS PASSWORD1, '' AS PASSWORD2, T_USER.VALIDFROM, T_USER.VALIDTO, CASE WHEN TRUNC ( sysdate ) BETWEEN t_user.validfrom AND t_user.validto OR ( t_user.validfrom     <= TRUNC(sysdate) AND t_user.validto IS NULL) THEN 'Y' ELSE 'N' END AS VALIDNOW, T_USER.INVALIDLOGINATTEMPTS, T_USER.LASTLOGIN, T_USER.EMAIL, T_USER.PHONENUMBER, T_USER.FULLNAME, T_USER.FULLNAME_INITIALS_GIVENNAME, T_USER.FULLNAME_INITIALS_BOTH, T_USER.EMAILENTRY, USER_CREATED_BY.FULLNAME_INITIALS_GIVENNAME AS CREATED_BY_NAME, USER_CREATED_BY.FULLNAME_LEGALENTITYNAME AS CREATED_BY_NAME_TOOLTIP, USER_MODIFIED_BY.FULLNAME_INITIALS_GIVENNAME AS MODIFIED_BY_NAME, USER_MODIFIED_BY.FULLNAME_LEGALENTITYNAME AS MODIFIED_BY_NAME_TOOLTIP, T_COMPANY.NAME AS COMPANY_NAME, T_DISTRIBUTOR.NAME AS DISTRIBUTOR_NAME, T_RESELLER.NAME AS RESELLER_NAME, T_RESELLER.BRANCH AS RESELLER_BRANCH, T_RESELLER.ENABLED AS RESELLER_ENABLED, T_DISTRIBUTOR.ENABLED AS DISTRIBUTOR_ENABLED, V_USER_ROLELIST.ROLELIST, V_USER_VIEWLIST.VIEWLIST, V_PAM_RESELLERLIST.RESELLERLIST, V_PAM_RESELLERLIST.RESELLERID_LIST_SEP, T_COMPANY.TENANT_ID AS COMPANY_TENANT_ID, T_DISTRIBUTOR.TENANT_ID AS DISTRIBUTOR_TENANT_ID, T_RESELLER.TENANT_ID AS RESELLER_TENANT_ID, V_USER_ROLELIST.TENANT_ID AS USER_ROLELIST_TENANT_ID FROM T_USER JOIN MV_USER_DATA USER_CREATED_BY ON T_USER.CREATED_BY = USER_CREATED_BY.ID JOIN MV_USER_DATA USER_MODIFIED_BY ON T_USER.MODIFIED_BY = USER_MODIFIED_BY.ID LEFT OUTER JOIN T_COMPANY ON T_USER.BELONGSTO_COMPANY_ID = T_COMPANY.ID LEFT OUTER JOIN T_DISTRIBUTOR ON T_USER.BELONGSTO_DISTRIBUTOR_ID = T_DISTRIBUTOR.ID LEFT OUTER JOIN T_RESELLER ON T_USER.BELONGSTO_RESELLER_ID = T_RESELLER.ID LEFT OUTER JOIN V_USER_ROLELIST ON T_USER.ID = V_USER_ROLELIST.USER_ID LEFT OUTER JOIN V_USER_VIEWLIST ON T_USER.ID = V_USER_VIEWLIST.USER_ID JOIN V_PAM_RESELLERLIST ON T_USER.ID = V_PAM_RESELLERLIST.USER_ID WHERE ((T_USER.TENANT_ID = 1 AND T_USER.TENANT_ID IS NOT NULL) AND (T_USER.ID = 1720 AND T_USER.ID IS NOT NULL) AND ((T_COMPANY.TENANT_ID = 1 AND T_COMPANY.TENANT_ID IS NOT NULL) OR (T_COMPANY.TENANT_ID IS NULL)) AND ((T_DISTRIBUTOR.TENANT_ID = 1 AND T_DISTRIBUTOR.TENANT_ID IS NOT NULL) OR (T_DISTRIBUTOR.TENANT_ID IS NULL)) AND ((T_RESELLER.TENANT_ID = 1 AND T_RESELLER.TENANT_ID IS NOT NULL) OR (T_RESELLER.TENANT_ID IS NULL)) AND (V_USER_ROLELIST.TENANT_ID = 1 AND V_USER_ROLELIST.TENANT_ID IS NOT NULL))
                        === 2017-01-09 11:09:37,777 [c-41] INFO  DSResponse - DSResponse: List with 1 items
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212822
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDriver - Freeing SQLDriver dbConnection 1128120992 for SQLDriver instance 1868441341
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211542
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211542
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212834
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212834
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211691
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211691
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212835
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212835
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212823
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212823
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211654
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211654
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212826
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212826
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 111322
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 111322
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212824
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212825
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212825
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212824
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212822
                        === 2017-01-09 11:09:37,777 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212822
                        === 2017-01-09 11:09:37,778 [c-41] DEBUG ServerObject - Couldn't find a public method named: fetch on class: com.lmscompany.lms.server.worker.T_USER
                        === 2017-01-09 11:09:37,778 [c-41] DEBUG DataSourceDMI - DataSourceDMI: no public method name: fetch available on class: com.lmscompany.lms.server.worker.T_USER - defaulting to builtin operations.
                        === 2017-01-09 11:09:37,778 [c-41] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
                        === 2017-01-09 11:09:37,778 [c-41] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
                        [B]=== 2017-01-09 11:09:37,778 [c-41] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
                            outputs: [RESELLER_NAME, ID]    criteria: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"RESELLER_NAME",value:"Hansestadt Softwarekontor (HH)",operator:"iEquals"},{criteria:[{fieldName:"ID",value:1720,operator:"notEqual"}],operator:"or"},{fieldName:"TENANT_ID",value:1,operator:"equals"}],operator:"and"}    values: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"RESELLER_NAME",value:"Hansestadt Softwarekontor (HH)",operator:"iEquals"},{criteria:[{fieldName:"ID",value:1720,operator:"notEqual"}],operator:"or"},{fieldName:"TENANT_ID",value:1,operator:"equals"}],operator:"and"}
                        === 2017-01-09 11:09:37,778 [c-41] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE $defaultWhereClause
                        === 2017-01-09 11:09:37,778 [c-41] INFO  SQLDataSource - [builtinApplication.null] 212822: Executing SQL query on 'Oracle': SELECT T_USER.ID, T_RESELLER.NAME AS RESELLER_NAME FROM T_USER LEFT OUTER JOIN T_RESELLER ON T_USER.BELONGSTO_RESELLER_ID = T_RESELLER.ID WHERE ((LOWER(T_RESELLER.NAME) = LOWER('hansestadt softwarekontor (hh)') AND T_RESELLER.NAME IS NOT NULL) AND ((T_USER.ID <> 1720 OR T_USER.ID IS NULL)) AND (T_USER.TENANT_ID = 1 AND T_USER.TENANT_ID IS NOT NULL))
                        === 2017-01-09 11:09:37,779 [c-41] DEBUG SQLTransaction - [builtinApplication.null] Started new Oracle transaction "1128120992"
                        === 2017-01-09 11:09:37,779 [c-41] DEBUG SQLDataSource - [builtinApplication.null] Setting DSRequest as being part of a transaction
                        === 2017-01-09 11:09:37,779 [c-41] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'Oracle' using connection '1128120992': SELECT T_USER.ID, T_RESELLER.NAME AS RESELLER_NAME FROM T_USER LEFT OUTER JOIN T_RESELLER ON T_USER.BELONGSTO_RESELLER_ID = T_RESELLER.ID WHERE ((LOWER(T_RESELLER.NAME) = LOWER('hansestadt softwarekontor (hh)') AND T_RESELLER.NAME IS NOT NULL) AND ((T_USER.ID <> 1720 OR T_USER.ID IS NULL)) AND (T_USER.TENANT_ID = 1 AND T_USER.TENANT_ID IS NOT NULL))
                        === 2017-01-09 11:09:37,785 [c-41] INFO  DSResponse - DSResponse: List with 0 items[/B]
                        === 2017-01-09 11:09:37,785 [c-41] DEBUG ServerObject - Couldn't find a public method named: fetch on class: com.lmscompany.lms.server.worker.T_USER
                        === 2017-01-09 11:09:37,785 [c-41] DEBUG DataSourceDMI - DataSourceDMI: no public method name: fetch available on class: com.lmscompany.lms.server.worker.T_USER - defaulting to builtin operations.
                        === 2017-01-09 11:09:37,785 [c-41] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
                        === 2017-01-09 11:09:37,785 [c-41] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
                        === 2017-01-09 11:09:37,785 [c-41] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
                            criteria: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"TENANT_ID",value:1,operator:"equals"},{fieldName:"ID",value:1720,operator:"equals"},{criteria:[{fieldName:"COMPANY_TENANT_ID",value:1,operator:"equals"},{fieldName:"COMPANY_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"DISTRIBUTOR_TENANT_ID",value:1,operator:"equals"},{fieldName:"DISTRIBUTOR_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"RESELLER_TENANT_ID",value:1,operator:"equals"},{fieldName:"RESELLER_TENANT_ID",operator:"isNull"}],operator:"or"},{fieldName:"USER_ROLELIST_TENANT_ID",value:1,operator:"equals"}],operator:"and"}    values: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"TENANT_ID",value:1,operator:"equals"},{fieldName:"ID",value:1720,operator:"equals"},{criteria:[{fieldName:"COMPANY_TENANT_ID",value:1,operator:"equals"},{fieldName:"COMPANY_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"DISTRIBUTOR_TENANT_ID",value:1,operator:"equals"},{fieldName:"DISTRIBUTOR_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"RESELLER_TENANT_ID",value:1,operator:"equals"},{fieldName:"RESELLER_TENANT_ID",operator:"isNull"}],operator:"or"},{fieldName:"USER_ROLELIST_TENANT_ID",value:1,operator:"equals"}],operator:"and"}
                        === 2017-01-09 11:09:37,786 [c-41] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE $defaultWhereClause
                        === 2017-01-09 11:09:37,786 [c-41] INFO  SQLDataSource - [builtinApplication.null] 212798: Executing SQL query on 'Oracle': SELECT T_USER.ID, T_USER.TENANT_ID, T_USER.CREATED_BY, T_USER.CREATED_AT, T_USER.MODIFIED_BY, T_USER.MODIFIED_AT, T_USER.BELONGSTO_COMPANY_ID, T_USER.BELONGSTO_DISTRIBUTOR_ID, T_USER.BELONGSTO_RESELLER_ID, T_USER.LEGALENTITYTYPE, T_USER.LEGALENTITYORDER, CASE t_user.legalentitytype WHEN 'C' THEN t_company.name WHEN 'D' THEN t_distributor.name WHEN 'R' THEN t_reseller.name END AS LEGALENTITYNAME, T_USER.GENDER_SHORTNAME, T_USER.GIVENNAME, T_USER.SURNAME, T_USER.LOGINNAME, T_USER.ADMINUSER, T_USER.FUNCTION, '' AS BCRYPTHASH, '' AS PASSWORD1, '' AS PASSWORD2, T_USER.VALIDFROM, T_USER.VALIDTO, CASE WHEN TRUNC ( sysdate ) BETWEEN t_user.validfrom AND t_user.validto OR ( t_user.validfrom     <= TRUNC(sysdate) AND t_user.validto IS NULL) THEN 'Y' ELSE 'N' END AS VALIDNOW, T_USER.INVALIDLOGINATTEMPTS, T_USER.LASTLOGIN, T_USER.EMAIL, T_USER.PHONENUMBER, T_USER.FULLNAME, T_USER.FULLNAME_INITIALS_GIVENNAME, T_USER.FULLNAME_INITIALS_BOTH, T_USER.EMAILENTRY, USER_CREATED_BY.FULLNAME_INITIALS_GIVENNAME AS CREATED_BY_NAME, USER_CREATED_BY.FULLNAME_LEGALENTITYNAME AS CREATED_BY_NAME_TOOLTIP, USER_MODIFIED_BY.FULLNAME_INITIALS_GIVENNAME AS MODIFIED_BY_NAME, USER_MODIFIED_BY.FULLNAME_LEGALENTITYNAME AS MODIFIED_BY_NAME_TOOLTIP, T_COMPANY.NAME AS COMPANY_NAME, T_DISTRIBUTOR.NAME AS DISTRIBUTOR_NAME, T_RESELLER.NAME AS RESELLER_NAME, T_RESELLER.BRANCH AS RESELLER_BRANCH, T_RESELLER.ENABLED AS RESELLER_ENABLED, T_DISTRIBUTOR.ENABLED AS DISTRIBUTOR_ENABLED, V_USER_ROLELIST.ROLELIST, V_USER_VIEWLIST.VIEWLIST, V_PAM_RESELLERLIST.RESELLERLIST, V_PAM_RESELLERLIST.RESELLERID_LIST_SEP, T_COMPANY.TENANT_ID AS COMPANY_TENANT_ID, T_DISTRIBUTOR.TENANT_ID AS DISTRIBUTOR_TENANT_ID, T_RESELLER.TENANT_ID AS RESELLER_TENANT_ID, V_USER_ROLELIST.TENANT_ID AS USER_ROLELIST_TENANT_ID FROM T_USER JOIN MV_USER_DATA USER_CREATED_BY ON T_USER.CREATED_BY = USER_CREATED_BY.ID JOIN MV_USER_DATA USER_MODIFIED_BY ON T_USER.MODIFIED_BY = USER_MODIFIED_BY.ID LEFT OUTER JOIN T_COMPANY ON T_USER.BELONGSTO_COMPANY_ID = T_COMPANY.ID LEFT OUTER JOIN T_DISTRIBUTOR ON T_USER.BELONGSTO_DISTRIBUTOR_ID = T_DISTRIBUTOR.ID LEFT OUTER JOIN T_RESELLER ON T_USER.BELONGSTO_RESELLER_ID = T_RESELLER.ID LEFT OUTER JOIN V_USER_ROLELIST ON T_USER.ID = V_USER_ROLELIST.USER_ID LEFT OUTER JOIN V_USER_VIEWLIST ON T_USER.ID = V_USER_VIEWLIST.USER_ID JOIN V_PAM_RESELLERLIST ON T_USER.ID = V_PAM_RESELLERLIST.USER_ID WHERE ((T_USER.TENANT_ID = 1 AND T_USER.TENANT_ID IS NOT NULL) AND (T_USER.ID = 1720 AND T_USER.ID IS NOT NULL) AND ((T_COMPANY.TENANT_ID = 1 AND T_COMPANY.TENANT_ID IS NOT NULL) OR (T_COMPANY.TENANT_ID IS NULL)) AND ((T_DISTRIBUTOR.TENANT_ID = 1 AND T_DISTRIBUTOR.TENANT_ID IS NOT NULL) OR (T_DISTRIBUTOR.TENANT_ID IS NULL)) AND ((T_RESELLER.TENANT_ID = 1 AND T_RESELLER.TENANT_ID IS NOT NULL) OR (T_RESELLER.TENANT_ID IS NULL)) AND (V_USER_ROLELIST.TENANT_ID = 1 AND V_USER_ROLELIST.TENANT_ID IS NOT NULL))
                        === 2017-01-09 11:09:37,786 [c-41] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'Oracle' using connection '1512086347': SELECT T_USER.ID, T_USER.TENANT_ID, T_USER.CREATED_BY, T_USER.CREATED_AT, T_USER.MODIFIED_BY, T_USER.MODIFIED_AT, T_USER.BELONGSTO_COMPANY_ID, T_USER.BELONGSTO_DISTRIBUTOR_ID, T_USER.BELONGSTO_RESELLER_ID, T_USER.LEGALENTITYTYPE, T_USER.LEGALENTITYORDER, CASE t_user.legalentitytype WHEN 'C' THEN t_company.name WHEN 'D' THEN t_distributor.name WHEN 'R' THEN t_reseller.name END AS LEGALENTITYNAME, T_USER.GENDER_SHORTNAME, T_USER.GIVENNAME, T_USER.SURNAME, T_USER.LOGINNAME, T_USER.ADMINUSER, T_USER.FUNCTION, '' AS BCRYPTHASH, '' AS PASSWORD1, '' AS PASSWORD2, T_USER.VALIDFROM, T_USER.VALIDTO, CASE WHEN TRUNC ( sysdate ) BETWEEN t_user.validfrom AND t_user.validto OR ( t_user.validfrom     <= TRUNC(sysdate) AND t_user.validto IS NULL) THEN 'Y' ELSE 'N' END AS VALIDNOW, T_USER.INVALIDLOGINATTEMPTS, T_USER.LASTLOGIN, T_USER.EMAIL, T_USER.PHONENUMBER, T_USER.FULLNAME, T_USER.FULLNAME_INITIALS_GIVENNAME, T_USER.FULLNAME_INITIALS_BOTH, T_USER.EMAILENTRY, USER_CREATED_BY.FULLNAME_INITIALS_GIVENNAME AS CREATED_BY_NAME, USER_CREATED_BY.FULLNAME_LEGALENTITYNAME AS CREATED_BY_NAME_TOOLTIP, USER_MODIFIED_BY.FULLNAME_INITIALS_GIVENNAME AS MODIFIED_BY_NAME, USER_MODIFIED_BY.FULLNAME_LEGALENTITYNAME AS MODIFIED_BY_NAME_TOOLTIP, T_COMPANY.NAME AS COMPANY_NAME, T_DISTRIBUTOR.NAME AS DISTRIBUTOR_NAME, T_RESELLER.NAME AS RESELLER_NAME, T_RESELLER.BRANCH AS RESELLER_BRANCH, T_RESELLER.ENABLED AS RESELLER_ENABLED, T_DISTRIBUTOR.ENABLED AS DISTRIBUTOR_ENABLED, V_USER_ROLELIST.ROLELIST, V_USER_VIEWLIST.VIEWLIST, V_PAM_RESELLERLIST.RESELLERLIST, V_PAM_RESELLERLIST.RESELLERID_LIST_SEP, T_COMPANY.TENANT_ID AS COMPANY_TENANT_ID, T_DISTRIBUTOR.TENANT_ID AS DISTRIBUTOR_TENANT_ID, T_RESELLER.TENANT_ID AS RESELLER_TENANT_ID, V_USER_ROLELIST.TENANT_ID AS USER_ROLELIST_TENANT_ID FROM T_USER JOIN MV_USER_DATA USER_CREATED_BY ON T_USER.CREATED_BY = USER_CREATED_BY.ID JOIN MV_USER_DATA USER_MODIFIED_BY ON T_USER.MODIFIED_BY = USER_MODIFIED_BY.ID LEFT OUTER JOIN T_COMPANY ON T_USER.BELONGSTO_COMPANY_ID = T_COMPANY.ID LEFT OUTER JOIN T_DISTRIBUTOR ON T_USER.BELONGSTO_DISTRIBUTOR_ID = T_DISTRIBUTOR.ID LEFT OUTER JOIN T_RESELLER ON T_USER.BELONGSTO_RESELLER_ID = T_RESELLER.ID LEFT OUTER JOIN V_USER_ROLELIST ON T_USER.ID = V_USER_ROLELIST.USER_ID LEFT OUTER JOIN V_USER_VIEWLIST ON T_USER.ID = V_USER_VIEWLIST.USER_ID JOIN V_PAM_RESELLERLIST ON T_USER.ID = V_PAM_RESELLERLIST.USER_ID WHERE ((T_USER.TENANT_ID = 1 AND T_USER.TENANT_ID IS NOT NULL) AND (T_USER.ID = 1720 AND T_USER.ID IS NOT NULL) AND ((T_COMPANY.TENANT_ID = 1 AND T_COMPANY.TENANT_ID IS NOT NULL) OR (T_COMPANY.TENANT_ID IS NULL)) AND ((T_DISTRIBUTOR.TENANT_ID = 1 AND T_DISTRIBUTOR.TENANT_ID IS NOT NULL) OR (T_DISTRIBUTOR.TENANT_ID IS NULL)) AND ((T_RESELLER.TENANT_ID = 1 AND T_RESELLER.TENANT_ID IS NOT NULL) OR (T_RESELLER.TENANT_ID IS NULL)) AND (V_USER_ROLELIST.TENANT_ID = 1 AND V_USER_ROLELIST.TENANT_ID IS NOT NULL))
                        === 2017-01-09 11:09:37,788 [c-41] INFO  DSResponse - DSResponse: List with 1 items
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212798
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDriver - Freeing SQLDriver dbConnection 1512086347 for SQLDriver instance 1663732715
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212824
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212823
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212823
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212824
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212825
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212825
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211542
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211542
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212834
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212834
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212835
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212835
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211654
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211654
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212826
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212826
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 111322
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 111322
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212798
                        === 2017-01-09 11:09:37,788 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212798
                        === 2017-01-09 11:09:37,789 [c-41] DEBUG ServerObject - Couldn't find a public method named: fetch on class: com.lmscompany.lms.server.worker.T_USER
                        === 2017-01-09 11:09:37,789 [c-41] DEBUG DataSourceDMI - DataSourceDMI: no public method name: fetch available on class: com.lmscompany.lms.server.worker.T_USER - defaulting to builtin operations.
                        === 2017-01-09 11:09:37,789 [c-41] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
                        === 2017-01-09 11:09:37,789 [c-41] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
                        === 2017-01-09 11:09:37,789 [c-41] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
                            outputs: [ID, LOGINNAME]    criteria: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"LOGINNAME",value:"r5user1",operator:"iEquals"},{criteria:[{fieldName:"ID",value:1720,operator:"notEqual"}],operator:"or"},{fieldName:"TENANT_ID",value:1,operator:"equals"}],operator:"and"}    values: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"LOGINNAME",value:"r5user1",operator:"iEquals"},{criteria:[{fieldName:"ID",value:1720,operator:"notEqual"}],operator:"or"},{fieldName:"TENANT_ID",value:1,operator:"equals"}],operator:"and"}
                        === 2017-01-09 11:09:37,789 [c-41] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
                        === 2017-01-09 11:09:37,789 [c-41] INFO  SQLDataSource - [builtinApplication.null] 212798: Executing SQL query on 'Oracle': SELECT T_USER.ID, T_USER.LOGINNAME FROM T_USER WHERE ((LOWER(T_USER.LOGINNAME) = LOWER('r5user1') AND T_USER.LOGINNAME IS NOT NULL) AND ((T_USER.ID <> 1720 OR T_USER.ID IS NULL)) AND (T_USER.TENANT_ID = 1 AND T_USER.TENANT_ID IS NOT NULL))
                        === 2017-01-09 11:09:37,789 [c-41] DEBUG SQLDataSource - [builtinApplication.null] Setting DSRequest as being part of a transaction
                        === 2017-01-09 11:09:37,789 [c-41] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'Oracle' using connection '1128120992': SELECT T_USER.ID, T_USER.LOGINNAME FROM T_USER WHERE ((LOWER(T_USER.LOGINNAME) = LOWER('r5user1') AND T_USER.LOGINNAME IS NOT NULL) AND ((T_USER.ID <> 1720 OR T_USER.ID IS NULL)) AND (T_USER.TENANT_ID = 1 AND T_USER.TENANT_ID IS NOT NULL))
                        === 2017-01-09 11:09:37,794 [c-41] INFO  DSResponse - DSResponse: List with 0 items
                        === 2017-01-09 11:09:37,795 [c-41] DEBUG AppBase - [builtinApplication.T_USER_update] No userTypes defined, allowing anyone access to all operations for this application
                        === 2017-01-09 11:09:37,795 [c-41] DEBUG AppBase - [builtinApplication.T_USER_update] No public zero-argument method named '_T_USER_update' found, performing generic datasource operation
                        === 2017-01-09 11:09:37,795 [c-41] INFO  SQLDataSource - [builtinApplication.T_USER_update] Performing update operation with
                            criteria: {TENANT_ID:1,ID:1720}    values: {MODIFIED_BY:"1",RESELLERID_LIST_SEP:", ,",EMAIL:"***@gmail.com",RESELLER_ENABLED:true,ADMINUSER:false,ROLELIST:"Benutzer",ID:1720,GIVENNAME:"Erika",MODIFIED_AT:new Date(1483956577483),USER_ROLELIST_TENANT_ID:1,SURNAME:"Maier2",RESELLER_BRANCH:false,FUNCTION:"Funktion",VALIDFROM:new Date(1445814000000),INVALIDLOGINATTEMPTS:0,BELONGSTO_RESELLER_ID:32,GENDER_SHORTNAME:"F",RESELLER_NAME:"Hansestadt Softwarekontor (HH)",TENANT_ID:1,VIEWLIST:"addCommentToPickedLeadOwn, addLeadEasy, editPickedLeadContactOwn, editPickedLeadMasterdataOwn, editPickedLeadStatusOwn, handoverPickedLead, movePickedLeadToUserOwn, pickLead, requestDealreg, viewPicklistReseller, viewResellerPerformanceReseller, viewResellerPerformanceResellerUser",LOGINNAME:"r5user1",RESELLER_TENANT_ID:1,VALIDTO:null,PASSWORD1:null,PASSWORD2:null}
                        === 2017-01-09 11:09:37,795 [c-41] INFO  SQLValuesClause - [builtinApplication.T_USER_update] Ignored data for non-existent or included columns: [RESELLERID_LIST_SEP, RESELLER_ENABLED, ROLELIST, USER_ROLELIST_TENANT_ID, RESELLER_BRANCH, RESELLER_NAME, VIEWLIST, RESELLER_TENANT_ID]
                        === 2017-01-09 11:09:37,795 [c-41] INFO  SQLValuesClause - [builtinApplication.T_USER_update] Ignoring value for PASSWORD1 since it has a customSelectExpression or customSQLExpression but no customUpdateExpression
                        === 2017-01-09 11:09:37,795 [c-41] INFO  SQLValuesClause - [builtinApplication.T_USER_update] Ignoring value for PASSWORD2 since it has a customSelectExpression or customSQLExpression but no customUpdateExpression
                        === 2017-01-09 11:09:37,795 [c-41] DEBUG SQLDataSource - [builtinApplication.T_USER_update] Setting DSRequest as being part of a transaction
                        === 2017-01-09 11:09:37,795 [c-41] INFO  SQLDriver - [builtinApplication.T_USER_update] Executing SQL query on 'Oracle' using connection '1128120992': UPDATE T_USER SET ADMINUSER='N', BELONGSTO_RESELLER_ID=32, EMAIL='***@gmail.com', FUNCTION='Funktion', GENDER_SHORTNAME='F', GIVENNAME='Erika', INVALIDLOGINATTEMPTS=0, LOGINNAME='r5user1', MODIFIED_AT=TO_DATE('2017-01-09 11:09:37','YYYY-MM-DD HH24:MI:SS'), MODIFIED_BY='1', SURNAME='Maier2', TENANT_ID=1, VALIDFROM=TO_DATE('2015-10-26 00:00:00','YYYY-MM-DD HH24:MI:SS'), VALIDTO=NULL WHERE (T_USER.TENANT_ID=1 AND T_USER.ID=1720)
                        === 2017-01-09 11:09:37,810 [c-41] DEBUG SQLDataSource - [builtinApplication.T_USER_update] update operation affected 1 rows
                        === 2017-01-09 11:09:37,810 [c-41] INFO  SQLDataSource - [builtinApplication.T_USER_update] primaryKeys: {ID=1720}
                        === 2017-01-09 11:09:37,811 [c-41] INFO  SQLDataSource - [builtinApplication.T_USER_update] Oracle getLastRow(): using default operationBinding
                        === 2017-01-09 11:09:37,811 [c-41] DEBUG ServerObject - [builtinApplication.T_USER_update] Couldn't find a public method named: fetch on class: com.lmscompany.lms.server.worker.T_USER
                        === 2017-01-09 11:09:37,811 [c-41] DEBUG DataSourceDMI - [builtinApplication.T_USER_update] DataSourceDMI: no public method name: fetch available on class: com.lmscompany.lms.server.worker.T_USER - defaulting to builtin operations.
                        === 2017-01-09 11:09:37,811 [c-41] DEBUG AppBase - [builtinApplication.T_USER_update, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
                        === 2017-01-09 11:09:37,811 [c-41] DEBUG AppBase - [builtinApplication.T_USER_update, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
                        === 2017-01-09 11:09:37,811 [c-41] INFO  SQLDataSource - [builtinApplication.T_USER_update, builtinApplication.null] Performing fetch operation with
                            criteria: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"TENANT_ID",value:1,operator:"equals"},{fieldName:"ID",value:1720,operator:"equals"},{criteria:[{fieldName:"COMPANY_TENANT_ID",value:1,operator:"equals"},{fieldName:"COMPANY_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"DISTRIBUTOR_TENANT_ID",value:1,operator:"equals"},{fieldName:"DISTRIBUTOR_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"RESELLER_TENANT_ID",value:1,operator:"equals"},{fieldName:"RESELLER_TENANT_ID",operator:"isNull"}],operator:"or"},{fieldName:"USER_ROLELIST_TENANT_ID",value:1,operator:"equals"}],operator:"and"}    values: {_constructor:"AdvancedCriteria",criteria:[{fieldName:"TENANT_ID",value:1,operator:"equals"},{fieldName:"ID",value:1720,operator:"equals"},{criteria:[{fieldName:"COMPANY_TENANT_ID",value:1,operator:"equals"},{fieldName:"COMPANY_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"DISTRIBUTOR_TENANT_ID",value:1,operator:"equals"},{fieldName:"DISTRIBUTOR_TENANT_ID",operator:"isNull"}],operator:"or"},{criteria:[{fieldName:"RESELLER_TENANT_ID",value:1,operator:"equals"},{fieldName:"RESELLER_TENANT_ID",operator:"isNull"}],operator:"or"},{fieldName:"USER_ROLELIST_TENANT_ID",value:1,operator:"equals"}],operator:"and"}
                        === 2017-01-09 11:09:37,812 [c-41] INFO  SQLDataSource - [builtinApplication.T_USER_update, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause$defaultAnsiJoinClause WHERE $defaultWhereClause
                        === 2017-01-09 11:09:37,812 [c-41] DEBUG SQLDataSource - [builtinApplication.T_USER_update, builtinApplication.null] JDBC driver windowed select rows 0->-1, result size 1. Query: SELECT T_USER.ID, T_USER.TENANT_ID, T_USER.CREATED_BY, T_USER.CREATED_AT, T_USER.MODIFIED_BY, T_USER.MODIFIED_AT, T_USER.BELONGSTO_COMPANY_ID, T_USER.BELONGSTO_DISTRIBUTOR_ID, T_USER.BELONGSTO_RESELLER_ID, T_USER.LEGALENTITYTYPE, T_USER.LEGALENTITYORDER, CASE t_user.legalentitytype WHEN 'C' THEN t_company.name WHEN 'D' THEN t_distributor.name WHEN 'R' THEN t_reseller.name END AS LEGALENTITYNAME, T_USER.GENDER_SHORTNAME, T_USER.GIVENNAME, T_USER.SURNAME, T_USER.LOGINNAME, T_USER.ADMINUSER, T_USER.FUNCTION, '' AS BCRYPTHASH, '' AS PASSWORD1, '' AS PASSWORD2, T_USER.VALIDFROM, T_USER.VALIDTO, CASE WHEN TRUNC ( sysdate ) BETWEEN t_user.validfrom AND t_user.validto OR ( t_user.validfrom     <= TRUNC(sysdate) AND t_user.validto IS NULL) THEN 'Y' ELSE 'N' END AS VALIDNOW, T_USER.INVALIDLOGINATTEMPTS, T_USER.LASTLOGIN, T_USER.EMAIL, T_USER.PHONENUMBER, T_USER.FULLNAME, T_USER.FULLNAME_INITIALS_GIVENNAME, T_USER.FULLNAME_INITIALS_BOTH, T_USER.EMAILENTRY, USER_CREATED_BY.FULLNAME_INITIALS_GIVENNAME AS CREATED_BY_NAME, USER_CREATED_BY.FULLNAME_LEGALENTITYNAME AS CREATED_BY_NAME_TOOLTIP, USER_MODIFIED_BY.FULLNAME_INITIALS_GIVENNAME AS MODIFIED_BY_NAME, USER_MODIFIED_BY.FULLNAME_LEGALENTITYNAME AS MODIFIED_BY_NAME_TOOLTIP, T_COMPANY.NAME AS COMPANY_NAME, T_DISTRIBUTOR.NAME AS DISTRIBUTOR_NAME, T_RESELLER.NAME AS RESELLER_NAME, T_RESELLER.BRANCH AS RESELLER_BRANCH, T_RESELLER.ENABLED AS RESELLER_ENABLED, T_DISTRIBUTOR.ENABLED AS DISTRIBUTOR_ENABLED, V_USER_ROLELIST.ROLELIST, V_USER_VIEWLIST.VIEWLIST, V_PAM_RESELLERLIST.RESELLERLIST, V_PAM_RESELLERLIST.RESELLERID_LIST_SEP, T_COMPANY.TENANT_ID AS COMPANY_TENANT_ID, T_DISTRIBUTOR.TENANT_ID AS DISTRIBUTOR_TENANT_ID, T_RESELLER.TENANT_ID AS RESELLER_TENANT_ID, V_USER_ROLELIST.TENANT_ID AS USER_ROLELIST_TENANT_ID FROM T_USER JOIN MV_USER_DATA USER_CREATED_BY ON T_USER.CREATED_BY = USER_CREATED_BY.ID JOIN MV_USER_DATA USER_MODIFIED_BY ON T_USER.MODIFIED_BY = USER_MODIFIED_BY.ID LEFT OUTER JOIN T_COMPANY ON T_USER.BELONGSTO_COMPANY_ID = T_COMPANY.ID LEFT OUTER JOIN T_DISTRIBUTOR ON T_USER.BELONGSTO_DISTRIBUTOR_ID = T_DISTRIBUTOR.ID LEFT OUTER JOIN T_RESELLER ON T_USER.BELONGSTO_RESELLER_ID = T_RESELLER.ID LEFT OUTER JOIN V_USER_ROLELIST ON T_USER.ID = V_USER_ROLELIST.USER_ID LEFT OUTER JOIN V_USER_VIEWLIST ON T_USER.ID = V_USER_VIEWLIST.USER_ID JOIN V_PAM_RESELLERLIST ON T_USER.ID = V_PAM_RESELLERLIST.USER_ID WHERE ((T_USER.TENANT_ID = 1 AND T_USER.TENANT_ID IS NOT NULL) AND (T_USER.ID = 1720 AND T_USER.ID IS NOT NULL) AND ((T_COMPANY.TENANT_ID = 1 AND T_COMPANY.TENANT_ID IS NOT NULL) OR (T_COMPANY.TENANT_ID IS NULL)) AND ((T_DISTRIBUTOR.TENANT_ID = 1 AND T_DISTRIBUTOR.TENANT_ID IS NOT NULL) OR (T_DISTRIBUTOR.TENANT_ID IS NULL)) AND ((T_RESELLER.TENANT_ID = 1 AND T_RESELLER.TENANT_ID IS NOT NULL) OR (T_RESELLER.TENANT_ID IS NULL)) AND (V_USER_ROLELIST.TENANT_ID = 1 AND V_USER_ROLELIST.TENANT_ID IS NOT NULL))
                        === 2017-01-09 11:09:37,812 [c-41] DEBUG SQLDataSource - [builtinApplication.T_USER_update, builtinApplication.null] Setting DSRequest as being part of a transaction
                        === 2017-01-09 11:09:37,813 [c-41] DEBUG SQLDataSource - [builtinApplication.T_USER_update, builtinApplication.null] Using paging strategy 'jdbcScroll' - scrolling to absolute position 1
                        === 2017-01-09 11:09:37,813 [c-41] DEBUG SQLDataSource - [builtinApplication.T_USER_update, builtinApplication.null] Scrolling / positioning took 0ms
                        === 2017-01-09 11:09:37,813 [c-41] INFO  DSResponse - [builtinApplication.T_USER_update] DSResponse: List with 1 items
                        === 2017-01-09 11:09:37,813 [c-41] INFO  DSResponse - DSResponse: List with 1 items
                        === 2017-01-09 11:09:37,813 [c-41] INFO  DSResponse - DSResponse: List with 1 items
                        === 2017-01-09 11:09:37,813 [c-41] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
                        === 2017-01-09 11:09:37,813 [c-41] DEBUG SQLTransaction - Committing Oracle transaction "1128120992"
                        === 2017-01-09 11:09:37,882 [c-41] DEBUG SQLTransaction - Committing Oracle transaction "1128120992"
                        === 2017-01-09 11:09:37,882 [c-41] DEBUG SQLTransaction - Committing Oracle transaction "1128120992"
                        === 2017-01-09 11:09:37,882 [c-41] DEBUG SQLTransaction - Committing Oracle transaction "1128120992"
                        === 2017-01-09 11:09:37,882 [c-41] DEBUG RPCManager - DMI response, dropExtraFields: true
                        === 2017-01-09 11:09:37,882 [c-41] DEBUG SQLTransaction - getConnection() looked for transactional connection for Oracle:  hashcode "1128120992"
                        === 2017-01-09 11:09:37,882 [c-41] DEBUG SQLTransaction - Ending Oracle transaction "1128120992"
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212827
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212787
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212788
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212788
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212787
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212786
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212786
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211683
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211683
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211681
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 211681
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212756
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212756
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212827
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212827
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLTransaction - getConnection() looked for transactional connection for Oracle:  (connection is null)
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212822
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212822
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212822
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLTransaction - getConnection() looked for transactional connection for Oracle:  (connection is null)
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212798
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212798
                        === 2017-01-09 11:09:37,883 [c-41] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 212798
                        === 2017-01-09 11:09:37,883 [c-41] INFO  Compression - /demo/lms/sc/IDACall: 1458 -> 734 bytes
                        So basically nothing new here - this time the logs are for another DS-to-DS-foreignKey relation, but the root cause is most likely the same.
                        In the meantime I restarted Tomcat on the server and the issue is gone there for now. The server has been running for 4 days only before, so it happened quite fast this time.
                        On the one hand this is good because I can perhaps reproduce then some time in the future on my dev machine, on the other hand this is bad because this means I should restart the server quite often in order to avoid the issue happening at the customer side.

                        Best regards
                        Blama

                        Comment


                          #13
                          Hi Isomorphic,

                          it just happened again, this time in less than 24 hours.
                          I still do have the problem that I can't provide you with a testcase or stack trace, but it would be really great if you could think about anything that could cause this behavior.

                          I will now create a new field with the same nativeName as the name of the original field and no isUnique-validatorand includeFrom this field in order to fix the symptom.
                          I will also try to create heavy load on my dev machine for 24h hours and see if this causes the error to happen on that machine.

                          Ideas:
                          • Do the server side request processing and the DataSourceLoader servlet use the same technique in order to process the .ds.xml?
                            In the last post I showed that the request processing has the problem but the DataSourceLoader loader result looked as expected.
                          • Can I enable more logging in order to make the analysis possible from the log files? If so, which classes should be logged on which level?
                          Thank you & Best regards
                          Blama

                          Comment


                            #14
                            Your results suggest that you somehow have two slightly different copies of your DataSource in the pool. You could verify this by repeatedly asking for copies of the same DataSource using DataSourceManager.get(), until you've got the entire pool, and look for the differences you've noticed. You could put code that examines the pool into a DMI or servlet so that you can trigger it when you see your server behaving in this odd way.

                            If you can verify that this is what's going on, some possible causes:
                            1. two different .ds.xml files with the same ID are actually around. Possibly a deployment script is faulty, and one version of the file is present at server startup, then later replaced
                            2. invalidly using a DataSource from two different threads simultaneously. DataSources are not thread-safe
                            3. metadata information from your DB is changing at runtime, such that autoDeriveSchema ends up behaving differently at different times

                            Comment


                              #15
                              In addition to the above - we're sorry to see you're having trouble, but at the moment, we haven't been able to reproduce this one. We're still hoping that you can create a test case that clearly shows this is a framework bug.

                              Comment

                              Working...
                              X