📄 transactioncontroller.java
字号:
the qualification in conjunctive normal form (CNF). Conjunctive normal form is an "and'd" set of "or'd" Qualifiers. <P> For example x = 5 would be represented is pseudo code as: qualifier_cnf[][] = new Qualifier[1]; qualifier_cnf[0] = new Qualifier[1]; qualifier_cnr[0][0] = new Qualifer(x = 5) <P> For example (x = 5) or (y = 6) would be represented is pseudo code as: qualifier_cnf[][] = new Qualifier[1]; qualifier_cnf[0] = new Qualifier[2]; qualifier_cnr[0][0] = new Qualifer(x = 5) qualifier_cnr[0][1] = new Qualifer(y = 6) <P> For example ((x = 5) or (x = 6)) and ((y = 1) or (y = 2)) would be represented is pseudo code as: qualifier_cnf[][] = new Qualifier[2]; qualifier_cnf[0] = new Qualifier[2]; qualifier_cnr[0][0] = new Qualifer(x = 5) qualifier_cnr[0][1] = new Qualifer(x = 6) qualifier_cnr[0][0] = new Qualifer(y = 5) qualifier_cnr[0][1] = new Qualifer(y = 6) <P> For each row the CNF qualfier is processed and it is determined whether or not the row should be returned to the caller. The following pseudo-code describes how this is done: <blockquote><pre> if (qualifier != null) { <blockquote><pre> for (int and_clause; and_clause < qualifier.length; and_clause++) { boolean or_qualifies = false; for (int or_clause; or_clause < qualifier[and_clause].length; or_clause++) { <blockquote><pre> DataValueDescriptor key = qualifier[and_clause][or_clause].getOrderable(); DataValueDescriptor row_col = get row column[qualifier[and_clause][or_clause].getColumnId()]; boolean or_qualifies = row_col.compare(qualifier[i].getOperator, <blockquote><pre> key, qualifier[i].getOrderedNulls, qualifier[i].getUnknownRV); </blockquote></pre> if (or_qualifies) { break; } } if (!or_qualifies) { <blockquote><pre> don't return this row to the client - proceed to next row; </blockquote></pre> } </blockquote></pre> } </blockquote></pre> } </blockquote></pre> @param conglomId The identifier of the conglomerate to open the scan for. @param hold If true, this scan will be maintained open over commits. @param open_mode Specifiy flags to control opening of table. OPENMODE_FORUPDATE - if set open the table for update otherwise open table shared. @param lock_level One of (MODE_TABLE, MODE_RECORD). @param isolation_level The isolation level to lock the conglomerate at. One of (ISOLATION_READ_COMMITTED, ISOLATION_REPEATABLE_READ or ISOLATION_SERIALIZABLE). @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 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 qualifier A 2 dimensional array encoding a conjunctive normal form (CNF) datastructure of of qualifiers which, applied to each key, restrict the rows returned by the scan. Rows for which the CNF expression returns false are not returned by the scan. If null, all rows are returned. Qualifiers can only reference columns which are included in the scanColumnList. The column id that a qualifier returns is the column id the table, not the column id in the partial row being returned. For detailed description of 2-dimensional array passing @see Qualifier @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. @exception StandardException if the scan could not be opened for some reason. Throws SQLState.STORE_CONGLOMERATE_DOES_NOT_EXIST if the conglomId being requested does not exist for some reason (ie. someone has dropped it). @see RowUtil @see ScanController **/ ScanController openScan( long conglomId, boolean hold, int open_mode, int lock_level, int isolation_level, FormatableBitSet scanColumnList, DataValueDescriptor[] startKeyValue, int startSearchOperator, Qualifier qualifier[][], DataValueDescriptor[] stopKeyValue, int stopSearchOperator) throws StandardException; /** * Open a scan on a conglomerate, optionally providing compiled info. * <p> * Same as openScan(), except that one can optionally provide * "compiled" static_info and/or dynamic_info. This compiled information * must have be gotten from getDynamicCompiledConglomInfo() and/or * getStaticCompiledConglomInfo() calls on the same conglomid being opened. * It is up to caller that "compiled" information is still valid and * is appropriately multi-threaded protected. * <p> * * @see TransactionController#openScan * @see TransactionController#getDynamicCompiledConglomInfo * @see TransactionController#getStaticCompiledConglomInfo * @see DynamicCompiledOpenConglomInfo * @see StaticCompiledOpenConglomInfo * * @return The identifier to be used to open the conglomerate later. * * @param open_mode see openScan() * @param lock_level see openScan() * @param isolation_level see openScan() * @param scanColumnList see openScan() * @param startKeyValue see openScan() * @param startSearchOperator see openScan() * @param qualifier see openScan() * @param stopKeyValue see openScan() * @param stopSearchOperator see openScan() * @param static_info object returned from * getStaticCompiledConglomInfo() call on this id. * @param dynamic_info object returned from * getDynamicCompiledConglomInfo() call on this id. * * @exception StandardException Standard exception policy. **/ ScanController openCompiledScan( boolean hold, int open_mode, int lock_level, int isolation_level, FormatableBitSet scanColumnList, DataValueDescriptor[] startKeyValue, int startSearchOperator, Qualifier qualifier[][], DataValueDescriptor[] stopKeyValue, int stopSearchOperator, StaticCompiledOpenConglomInfo static_info, DynamicCompiledOpenConglomInfo dynamic_info) throws StandardException; /** * Open a scan which gets copies of multiple rows at a time. * <p> * All inputs work exactly as in openScan(). The return is * a GroupFetchScanController, which only allows fetches of groups * of rows from the conglomerate. * <p> * * @return The GroupFetchScanController to be used to fetch the rows. * * @param conglomId see openScan() * @param open_mode see openScan() * @param lock_level see openScan() * @param isolation_level see openScan() * @param scanColumnList see openScan() * @param startKeyValue see openScan() * @param startSearchOperator see openScan() * @param qualifier see openScan() * @param stopKeyValue see openScan() * @param stopSearchOperator see openScan() * * @exception StandardException Standard exception policy. * * @see ScanController * @see GroupFetchScanController **/ GroupFetchScanController openGroupFetchScan( long conglomId, boolean hold, int open_mode, int lock_level, int isolation_level, FormatableBitSet scanColumnList, DataValueDescriptor[] startKeyValue, int startSearchOperator, Qualifier qualifier[][], DataValueDescriptor[] stopKeyValue, int stopSearchOperator) throws StandardException; /** * Compress table in place. * <p> * Returns a GroupFetchScanController which can be used to move rows * around in a table, creating a block of free pages at the end of the * table. The process will move rows from the end of the table toward * the beginning. The GroupFetchScanController will return the * old row location, the new row location, and the actual data of any * row moved. Note that this scan only returns moved rows, not an * entire set of rows, the scan is designed specifically to be * used by either explicit user call of the SYSCS_ONLINE_COMPRESS_TABLE() * procedure, or internal background calls to compress the table. * * The old and new row locations are returned so that the caller can * update any indexes necessary. * * This scan always returns all collumns of the row. * * All inputs work exactly as in openScan(). The return is * a GroupFetchScanController, which only allows fetches of groups * of rows from the conglomerate. * <p> * * @return The GroupFetchScanController to be used to fetch the rows. * * @param conglomId see openScan() * @param hold see openScan() * @param open_mode see openScan() * @param lock_level see openScan() * @param isolation_level see openScan() * * @exception StandardException Standard exception policy. * * @see ScanController * @see GroupFetchScanController **/ GroupFetchScanController defragmentConglomerate( long conglomId, boolean online, boolean hold, int open_mode,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -