Interface SortCostController

    • Method Detail

      • close

        void close()
        Close the controller.

        Close the open controller. This method always succeeds, and never throws any exceptions. Callers must not use the StoreCostController after closing it; they are strongly advised to clear out the StoreCostController reference after closing.

      • getSortCost

        double getSortCost​(DataValueDescriptor[] template,
                           ColumnOrdering[] columnOrdering,
                           boolean alreadyInOrder,
                           long estimatedInputRows,
                           long estimatedExportRows,
                           int estimatedRowSize)
                    throws StandardException
        Calculate the cost of a sort.

        The cost of a sort includes the time spent in the sorter inserting the rows into the sort, and the time spent in the sorter returning the rows. Note that it does not include the cost of scanning the rows from the source table, for insert into the sort.

        Arguments to getSortCost(), should be the same as those to be passed to TransactionController.createSort().

        Parameters:
        template - A row which is prototypical for the sort. All rows inserted into the sort controller must have exactly the same number of columns as the template row. Every column in an inserted row must have the same type as the corresponding column in the template.
        columnOrdering - An array which specifies which columns participate in ordering - see interface ColumnOrdering for details. The column referenced in the 0th columnOrdering object is compared first, then the 1st, etc.
        alreadyInOrder - Indicates that the rows inserted into the sort controller will already be in order. This is used to perform aggregation only.
        estimatedInputRows - The number of rows that the caller estimates will be inserted into the sort. This number must be >= 0.
        estimatedExportRows - The number of rows that the caller estimates will be exported by the sorter. For instance if the sort is doing duplicate elimination and all rows are expected to be duplicates then the estimatedExportRows would be 1. If no duplicate eliminate is to be done then estimatedExportRows would be the same as estimatedInputRows. This number must be >= 0.
        estimatedRowSize - The estimated average row size of the rows being sorted. This is the client portion of the rowsize, it should not attempt to calculate Store's overhead. -1 indicates that the caller has no idea (and the sorter will use 100 bytes in that case. Used by the sort to make good choices about in-memory vs. external sorting, and to size merge runs. The client is not expected to estimate the per column/ per row overhead of raw store, just to make a guess about the storage associated with each row (ie. reasonable estimates for some implementations would be 4 for int, 8 for long, 102 for char(100), 202 for varchar(200), a number out of hat for user types, ...).
        Returns:
        The cost of the sort.
        Throws:
        StandardException - Standard exception policy.