📄 storecostcontroller.java
字号:
* <p> * * * @param validColumns A description of which columns to return from * row on the page into "templateRow." templateRow, * and validColumns work together to * describe the row to be returned by the fetch - * see RowUtil for description of how these three * parameters work together to describe a fetched * "row". * * @param access_type Describe the type of access the query will be * performing to the ScanController. * * STORECOST_CLUSTERED - The location of one scan * is likely clustered "close" to the previous * scan. For instance if the query plan were * to used repeated "reopenScan()'s" to probe * for the next key in an index, then this flag * should be be specified. If this flag is not * set then each scan will be costed independant * of any other predicted scan access. * * @return The cost of the fetch. * * @exception StandardException Standard exception policy. * * @see RowUtil **/ public double getFetchFromFullKeyCost( FormatableBitSet validColumns, int access_type) throws StandardException; /** * Calculate the cost of a scan. * <p> * Cause this object to calculate the cost of performing the described * scan. The interface is setup such that first a call is made to * calcualteScanCost(), and then subsequent calls to accessor routines * are made to get various pieces of information about the cost of * the scan. * <p> * For the purposes of costing this routine is going to assume that * a page will remain in cache between the time one next()/fetchNext() * call and a subsequent next()/fetchNext() call is made within a scan. * <p> * The result of costing the scan is placed in the "cost_result". * The cost of the scan is stored by calling * cost_result.setEstimatedCost(cost). * The estimated row count is stored by calling * cost_result.setEstimatedRowCount(row_count). * <p> * The estimated cost of the scan assumes the caller will * execute a fetchNext() loop for every row that qualifies between * start and stop position. Note that this cost is different than * execution a next(),fetch() loop; or if the scan is going to be * terminated by client prior to reaching the stop condition. * <p> * The estimated number of rows returned from the scan * assumes the caller will execute a fetchNext() loop for every * row that qualifies between start and stop position. * <p> * * * @param scan_type The type of scan that will be executed. There * are currently 2 types: * STORECOST_SCAN_NORMAL - scans will be executed * using the standard next/fetch, where each fetch * can retrieve 1 or many rows (if fetchNextGroup() * interface is used). * * STORECOST_SCAN_SET - The entire result set will * be retrieved using the the fetchSet() interface. * * @param row_count Estimated total row count of the table. The * current system tracks row counts in heaps better * than btree's (btree's have "rows" which are not * user rows - branch rows, control rows), so * if available the client should * pass in the base table's row count into this * routine to be used as the index's row count. * If the caller has no idea, pass in -1. * * @param group_size The number of rows to be returned by a single * fetch call for STORECOST_SCAN_NORMAL scans. * * @param forUpdate Should be true if the caller intends to update * through the scan. * * @param scanColumnList A description of which columns to return from * every fetch in the scan. template, * and scanColumnList work together * to describe the row to be returned by the scan - * see RowUtil for description of how these three * parameters work together to describe a "row". * * @param template A prototypical row which the scan may use to * maintain its position in the conglomerate. Not * all access method scan types will require this, * if they don't it's ok to pass in null. * In order to scan a conglomerate one must * allocate 2 separate "row" templates. The "row" * template passed into openScan is for the private * use of the scan itself, and no access to it * should be made by the caller while the scan is * still open. Because of this the scanner must * allocate another "row" template to hold the * values returned from fetch(). Note that this * template must be for the full row, whether a * partial row scan is being executed or not. * * @param startKeyValue An indexable row which holds a (partial) key * value which, in combination with the * startSearchOperator, defines the starting * position of the scan. If null, the starting * position of the scan is the first row of the * conglomerate. The startKeyValue must only * reference columns included in the scanColumnList. * * @param startSearchOperator * an operator which defines how the startKeyValue * is to be searched for. If startSearchOperation * is ScanController.GE, the scan starts on the * first row which is greater than or equal to the * startKeyValue. If startSearchOperation is * ScanController.GT, the scan starts on the first * row whose key is greater than startKeyValue. The * startSearchOperation parameter is ignored if the * startKeyValue parameter is null. * * @param stopKeyValue An indexable row which holds a (partial) key * value which, in combination with the * stopSearchOperator, defines the ending position * of the scan. If null, the ending position of the * scan is the last row of the conglomerate. The * stopKeyValue must only reference columns included * in the scanColumnList. * * @param stopSearchOperator * an operator which defines how the stopKeyValue * is used to determine the scan stopping position. * If stopSearchOperation is ScanController.GE, the * scan stops just before the first row which is * greater than or equal to the stopKeyValue. If * stopSearchOperation is ScanController.GT, the * scan stops just before the first row whose key * is greater than startKeyValue. The * stopSearchOperation parameter is ignored if the * stopKeyValue parameter is null. * * * @param access_type Describe the type of access the query will be * performing to the ScanController. * * STORECOST_CLUSTERED - The location of one scan * is likely clustered "close" to the previous * scan. For instance if the query plan were * to used repeated "reopenScan()'s" to probe * for the next key in an index, then this flag * should be be specified. If this flag is not * set then each scan will be costed independant * of any other predicted scan access. * * * @exception StandardException Standard exception policy. * * @see RowUtil **/ public void getScanCost( int scan_type, long row_count, int group_size, boolean forUpdate, FormatableBitSet scanColumnList, DataValueDescriptor[] template, DataValueDescriptor[] startKeyValue, int startSearchOperator, DataValueDescriptor[] stopKeyValue, int stopSearchOperator, boolean reopen_scan, int access_type, StoreCostResult cost_result) throws StandardException; /** * Return an "empty" row location object of the correct type. * <p> * * @return The empty Rowlocation. * * @exception StandardException Standard exception policy. **/ RowLocation newRowLocationTemplate() throws StandardException;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -