Inherited by append_file_i.
Inheritance diagram for scan_file_i:


To iterate over the records in a file, construct an instance of this class, and use its next, next_page and eof methods to located the records in the file. The methods next and next_page return a pin_i, which lets you manipulate the record (pin it in the buffer pool while you use it). It is unwise to delete or insert records while you have a scan open on the file (in the same transaction).
stid_t fid(1,7); scan_file_i scan(fid); pin_i* cursor(NULL); bool eof(false); do { w_rc_t rc = scan.next(cursor, 0, eof); if(rc.is_error()) { // handle error ... } if(eof) break; // handle record ... const char *body = cursor->body(); ... } while (1);
create_rec.cpp, log_exceed.cpp, sort_stream.cpp, and vtable_example.cpp.
Definition at line 437 of file scan.h.
Public Member Functions | |
| NORET | scan_file_i (const stid_t &stid, const rid_t &start, concurrency_t cc=t_cc_file, bool prefetch=false, lock_mode_t ignored=SH) | 
| Construct an iterator over the given store (file).   | |
| NORET | scan_file_i (const stid_t &stid, concurrency_t cc=t_cc_file, bool prefetch=false, lock_mode_t ignored=SH) | 
| Construct an iterator over the given store (file).   | |
| void | cursor (pin_i *&pin_ptr, bool &eof) | 
| Return the pin_i that represents the scan state.   | |
| rc_t | next (pin_i *&pin_ptr, smsize_t start_offset, bool &eof) | 
| Advance to the next record of the file.   | |
| rc_t | next_page (pin_i *&pin_ptr, smsize_t start_offset, bool &eof) | 
| Advance to the first record on the next page in the file.   | |
| void | finish () | 
| Free resources acquired by this iterator. Useful if you are finished with the scan but not ready to delete it.  | |
| bool | eof () | 
| End of file was reached. Cursor is not usable.  | |
| const rc_t & | error_code () const | 
| Error code returned from last method call.  | |
| tid_t | xid () const | 
| ID of the transaction that created this iterator.  | |
Public Attributes | |
| stid_t | stid | 
| rid_t | curr_rid | 
Protected Attributes | |
| tid_t | tid | 
| bool | _eof | 
| w_rc_t | _error_occurred | 
| pin_i | _cursor | 
| lpid_t | _next_pid | 
| concurrency_t | _cc | 
| lock_mode_t | _page_lock_mode | 
| lock_mode_t | _rec_lock_mode | 
| NORET scan_file_i::scan_file_i | ( | const stid_t & | stid, | |
| const rid_t & | start, | |||
| concurrency_t |  cc = t_cc_file,  | 
        |||
| bool |  prefetch = false,  | 
        |||
| lock_mode_t |  ignored = SH | |||
| ) | 
Construct an iterator over the given store (file).
| [in] | stid | ID of the file over which to iterate. | 
| [in] | start | ID of the first record of interest, can be used to start a scan in the middle of the file. | 
| [in] | cc | Locking granularity to be used. See discussion for other constructor. | 
| [in] | prefetch | If true, a background thread will pre-fetch pages in support of this scan. For this to work the server option sm_prefetch must be enabled. | 
| [in] | ignored | not used | 
| NORET scan_file_i::scan_file_i | ( | const stid_t & | stid, | |
| concurrency_t |  cc = t_cc_file,  | 
        |||
| bool |  prefetch = false,  | 
        |||
| lock_mode_t |  ignored = SH | |||
| ) | 
Construct an iterator over the given store (file).
| [in] | stid | ID of the file over which to iterate. | 
| [in] | cc | Locking granularity to be used. The following are permissible, and their implied store, page and record lock modes are given:
  | 
| [in] | prefetch | If true, a background thread will pre-fetch pages in support of this scan. For this to work the server option sm_prefetch must be enabled. | 
| [in] | ignored | not used | 
| void scan_file_i::cursor | ( | pin_i *& | pin_ptr, | |
| bool & | eof | |||
| ) |  [inline] | 
        
Advance to the next record of the file.
| [out] | pin_ptr | Populate the caller's pointer. | 
| [in] | start_offset | Pin the next record at this offset. Meaningful only for large records. | 
| [out] | eof | False if the pin_i points to a record, true if there were no next record to pin. | 
Reimplemented in append_file_i.
Advance to the first record on the next page in the file.
| [out] | pin_ptr | Populate the caller's pointer. This pin_i represents the state of this scan. | 
| [in] | start_offset | Pin the next record at this offset. This is meaningful only for large records. | 
| [out] | eof | False if the pin_i points to a record, true if there were no next record to pin. | 
 1.4.7