Announcement

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

  • summaryRow problem with queueing

    SmartClient Version: SNAPSHOT_v12.1d_2019-05-15/EVAL Development Only (expires 2019.07.14_07.21.56) Licensed to: Isomorphic Software (#ISC_EVAL_NIGHTLY)
    and
    SmartClient Version: v11.1p_2019-05-15/Enterprise Development Only (built 2019-05-15)

    Hello, I've just found that when you have a summaryRowDataSource and issue a queue of operations on the grid/dataSource, the resultSet will trigger a summaryRow fetch for every operation, despite the queue.

    Please try this test case:

    Code:
    isc.ListGrid.create({
        ID: "countryList",
        height:"100%", width:"100%", alternateRecordStyles:true, 
        dataSource: supplyItem,
        showGridSummary: true,
        summaryRowDataSource: supplyItem,
        summaryRowFetchRequestProperties: {operationId: "summary"},
        autoFetchData:true
    })
    The dataSource with the 'summary' fetch:

    Code:
    <DataSource isSampleDS="true"
        ID="supplyItem"
        serverType="sql"
        tableName="supplyItem"
        titleField="itemName"
        testFileName="/examples/shared/ds/test_data/supplyItem.data.xml"
        dbImportFileName="/examples/shared/ds/test_data/supplyItemLarge.data.xml"
    >
        <fields>
            <field name="itemID"      type="sequence" hidden="true"       primaryKey="true"/>
            <field name="itemName"    type="text"     title="Item"        length="128"       required="true"/>
            <field name="SKU"         type="text"     title="SKU"         length="10"        required="true"/>
            <field name="description" type="text"     title="Description" length="2000"/>
            <field name="category"    type="text"     title="Category"    length="128"       required="true"
                   foreignKey="supplyCategory.categoryName"/>
            <field name="units"       type="enum"     title="Units"       length="5">
                <valueMap>
                    <value>Roll</value>
                    <value>Ea</value>
                    <value>Pkt</value>
                    <value>Set</value>
                    <value>Tube</value>
                    <value>Pad</value>
                    <value>Ream</value>
                    <value>Tin</value>
                    <value>Bag</value>
                    <value>Ctn</value>
                    <value>Box</value>
                </valueMap>
            </field>
            <field name="unitCost"    type="float"    title="Unit Cost"   required="true">
                <validators>
                    <validator type="floatRange" min="0" errorMessage="Please enter a valid (positive) cost"/>
                    <validator type="floatPrecision" precision="2" errorMessage="The maximum allowed precision is 2"/>
                </validators>
            </field>
            <field name="inStock"   type="boolean"  title="In Stock"/>
            <field name="nextShipment"  type="date" title="Next Shipment"/>
        </fields>
           <operationBindings>
           <operationBinding operationType="fetch" operationId="summary">
                <summaryFunctions>
                    <unitCost>sum</unitCost>
                </summaryFunctions>
            </operationBinding>
        </operationBindings>
    </DataSource>
    Then execute this code:

    Code:
    isc.RPCManager.startQueue()
    countryList.removeData({ itemID:3 })
    countryList.removeData({ itemID:4 })
    isc.RPCManager.sendQueue()
    You'll see the queue with two requests, and then two fetches for the summary row:


    Click image for larger version

Name:	2019-05-17 13.22.43.jpg
Views:	1
Size:	50.5 KB
ID:	257825

  • #2
    Also, I don't know if and how may be related, but in my application, these multiple summary row fetches, sometimes trigger an apparently nonsense error:
    Code:
    2019-05-19T13:02:48,312 WARN  RequestContext dsRequest.execute() failed:  
    java.lang.NullPointerException: null
        at com.isomorphic.sql.SQLSelectClause.addSQLForJoinedFields(SQLSelectClause.java:508) ~[isomorphic_sql.jar:?]
        at com.isomorphic.sql.SQLSelectClause.getSQLString(SQLSelectClause.java:429) ~[isomorphic_sql.jar:?]
        at com.isomorphic.sql.SQLSelectClause.getSQLString(SQLSelectClause.java:172) ~[isomorphic_sql.jar:?]
        at com.isomorphic.sql.SQLDataSource.getClausesContext(SQLDataSource.java:3205) ~[isomorphic_sql.jar:?]
        at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1706) ~[isomorphic_sql.jar:?]
        at com.isomorphic.sql.SQLDataSource.processRequest(SQLDataSource.java:440) ~[isomorphic_sql.jar:?]
        at com.isomorphic.sql.SQLDataSource.executeFetch(SQLDataSource.java:385) ~[isomorphic_sql.jar:?]
        at com.isomorphic.datasource.DataSource.execute(DataSource.java:2456) ~[isomorphic_core_rpc.jar:?]
        at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:646) ~[isomorphic_core_rpc.jar:?]
        at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:547) ~[isomorphic_core_rpc.jar:?]
        at com.isomorphic.application.AppBase.execute(AppBase.java:490) ~[isomorphic_core_rpc.jar:?]
        at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2889) ~[isomorphic_core_rpc.jar:?]
        at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:230) [isomorphic_core_rpc.jar:?]
    with the debugger I see that relatedDS.getTable() is null, and if I step into the getTable method actually this.table becomes correctly valued.

    This happens on joined fields, inherited from a base dataSource. But it doesn't help if I repeat those fields in the inheriting dataSource.
    Last edited by claudiobosticco; Today, 03:15.

    Comment

    Working...
    X