Drizzled Public API Documentation

ha_myisam Class Referenceabstract
Inheritance diagram for ha_myisam:
drizzled::Cursor

Public Types

enum  { NONE =0, INDEX, RND }
 

Public Member Functions

 ha_myisam (drizzled::plugin::StorageEngine &engine, drizzled::Table &table_arg)
 
Cursorclone (drizzled::memory::Root *mem_root)
 
const char * index_type (uint32_t key_number)
 
int doStartIndexScan (uint32_t idx, bool sorted)
 
int doEndIndexScan ()
 
uint32_t checksum () const
 
int doOpen (const drizzled::identifier::Table &identifier, int mode, uint32_t test_if_locked)
 
int close (void)
 
int doInsertRecord (unsigned char *buf)
 
int doUpdateRecord (const unsigned char *old_data, unsigned char *new_data)
 
int doDeleteRecord (const unsigned char *buf)
 
int index_read_map (unsigned char *buf, const unsigned char *key, drizzled::key_part_map keypart_map, enum drizzled::ha_rkey_function find_flag)
 Positions an index cursor to the index specified in the handle. Fetches the row if available. If the key value is null, begin at the first key of the index.
 
int index_read_idx_map (unsigned char *buf, uint32_t index, const unsigned char *key, drizzled::key_part_map keypart_map, enum drizzled::ha_rkey_function find_flag)
 Positions an index cursor to the index specified in the handle. Fetches the row if available. If the key value is null, begin at the first key of the index.
 
int index_read_last_map (unsigned char *buf, const unsigned char *key, drizzled::key_part_map keypart_map)
 The following functions works like index_read, but it find the last row with the current key value or prefix.
 
int index_next (unsigned char *buf)
 
int index_prev (unsigned char *buf)
 
int index_first (unsigned char *buf)
 
int index_last (unsigned char *buf)
 
int index_next_same (unsigned char *buf, const unsigned char *key, uint32_t keylen)
 
int doStartTableScan (bool scan)
 
int rnd_next (unsigned char *buf)
 
int rnd_pos (unsigned char *buf, unsigned char *pos)
 
void position (const unsigned char *record)
 
int info (uint)
 
int extra (enum drizzled::ha_extra_function operation)
 
int extra_opt (enum drizzled::ha_extra_function operation, uint32_t cache_size)
 
int reset (void)
 
int external_lock (drizzled::Session *session, int lock_type)
 
int delete_all_rows (void)
 
int disable_indexes (uint32_t mode)
 
int enable_indexes (uint32_t mode)
 
int indexes_are_disabled (void)
 
void start_bulk_insert (drizzled::ha_rows rows)
 
int end_bulk_insert ()
 
drizzled::ha_rows records_in_range (uint32_t inx, drizzled::key_range *min_key, drizzled::key_range *max_key)
 
virtual void get_auto_increment (uint64_t offset, uint64_t increment, uint64_t nb_desired_values, uint64_t *first_value, uint64_t *nb_reserved_values)
 
MI_INFOfile_ptr (void)
 
int read_range_first (const drizzled::key_range *start_key, const drizzled::key_range *end_key, bool eq_range_arg, bool sorted)
 
int read_range_next ()
 
int reset_auto_increment (uint64_t value)
 
virtual bool isOrdered (void)
 
plugin::StorageEngine * getEngine () const
 
TableShare * getShare ()
 
Table * getTable () const
 
uint64_t getNextInsertId () const
 
uint64_t getAutoIncrement () const
 
int ha_open (const identifier::Table &identifier, int mode, int test_if_locked)
 
int startIndexScan (uint32_t idx, bool sorted) __attribute__((warn_unused_result))
 
int endIndexScan ()
 
int startTableScan (bool scan) __attribute__((warn_unused_result))
 
int endTableScan ()
 
int ha_reset ()
 
int ha_index_or_rnd_end ()
 
int ha_external_lock (Session *session, int lock_type)
 
int insertRecord (unsigned char *buf) __attribute__((warn_unused_result))
 
int updateRecord (const unsigned char *old_data, unsigned char *new_data) __attribute__((warn_unused_result))
 
int deleteRecord (const unsigned char *buf) __attribute__((warn_unused_result))
 
void ha_release_auto_increment ()
 
int ha_check (Session *)
 
void ha_start_bulk_insert (ha_rows rows)
 
int ha_end_bulk_insert ()
 
int ha_delete_all_rows ()
 
int ha_reset_auto_increment (uint64_t value)
 
int ha_analyze (Session *)
 
int ha_disable_indexes (uint32_t mode)
 
int ha_enable_indexes (uint32_t mode)
 
int ha_discard_or_import_tablespace (bool discard)
 
void closeMarkForDelete ()
 
void adjust_next_insert_id_after_explicit_value (uint64_t nr)
 
int update_auto_increment ()
 
virtual double scan_time (void)
 
virtual double read_time (uint32_t, uint32_t ranges, ha_rows rows)
 
virtual double index_only_read_time (uint32_t keynr, double records)
 
virtual ha_rows multi_range_read_info_const (uint32_t keyno, RANGE_SEQ_IF *seq, void *seq_init_param, uint32_t n_ranges, uint32_t *bufsz, uint32_t *flags, optimizer::CostVector *cost)
 
virtual int multi_range_read_info (uint32_t keyno, uint32_t n_ranges, uint32_t keys, uint32_t *bufsz, uint32_t *flags, optimizer::CostVector *cost)
 
virtual int multi_range_read_init (RANGE_SEQ_IF *seq, void *seq_init_param, uint32_t n_ranges, uint32_t mode)
 
virtual int multi_range_read_next (char **range_info)
 
virtual const key_map * keys_to_use_for_scanning ()
 
bool has_transactions ()
 
virtual bool is_fatal_error (int error, uint32_t flags)
 
virtual ha_rows records ()
 
virtual uint64_t tableSize ()
 
virtual uint64_t rowSize ()
 
virtual ha_rows estimate_rows_upper_bound ()
 
uint32_t get_index (void) const
 
int compare_key (key_range *range)
 
virtual int read_first_row (unsigned char *buf, uint32_t primary_key)
 
virtual int rnd_same (unsigned char *, uint32_t)
 
virtual int info (uint32_t)=0
 
virtual uint32_t calculate_key_hash_value (Field **)
 
virtual bool was_semi_consistent_read ()
 
virtual void try_semi_consistent_read (bool)
 
virtual void unlock_row (void)
 
void set_next_insert_id (uint64_t id)
 
void restore_auto_increment (uint64_t prev_insert_id)
 
virtual void append_create_info (String *)
 
virtual char * get_foreign_key_create_info (void)
 
virtual bool can_switch_engines (void)
 
virtual int get_foreign_key_list (Session *, List< ForeignKeyInfo > *)
 
virtual uint32_t referenced_by_foreign_key ()
 
virtual void free_foreign_key_create_info (char *)
 
virtual THR_LOCK_DATA ** store_lock (Session *, THR_LOCK_DATA **to, enum thr_lock_type)
 
virtual bool primary_key_is_clustered ()
 
virtual int cmp_ref (const unsigned char *ref1, const unsigned char *ref2)
 

Public Attributes

unsigned char * ref
 
unsigned char * dup_ref
 
ha_statistics stats
 
range_seq_t mrr_iter
 
RANGE_SEQ_IF mrr_funcs
 
uint32_t ranges_in_seq
 
bool mrr_is_output_sorted
 
bool mrr_have_range
 
bool eq_range
 
KEY_MULTI_RANGE mrr_cur_range
 
key_range save_end_range
 
key_range * end_range
 
KeyPartInfo * range_key_part
 
int key_compare_result_on_equal
 
uint32_t errkey
 
uint32_t key_used_on_scan
 
uint32_t active_index
 
uint32_t ref_length
 
enum drizzled::Cursor:: { ... }  inited
 
bool locked
 
uint64_t next_insert_id
 
uint64_t insert_id_for_cur_row
 
Discrete_interval auto_inc_interval_for_cur_row
 

Protected Member Functions

void ha_statistic_increment (uint64_t system_status_var::*offset) const
 
void ** ha_data (Session *) const
 

Protected Attributes

ha_rows estimation_rows_to_insert
 

Private Member Functions

int repair (drizzled::Session *session, MI_CHECK &param, bool optimize)
 

Private Attributes

MI_INFOfile
 
char * data_file_name
 
char * index_file_name
 
bool can_enable_indexes
 
bool is_ordered
 
drizzled::key_map keys_with_parts
 

Detailed Description

Definition at line 26 of file ha_myisam.h.

Member Function Documentation

virtual bool drizzled::Cursor::can_switch_engines ( void  )
inlinevirtualinherited

used in ALTER Table; if changing storage engine is allowed. e.g. not be allowed if table has foreign key constraints in engine.

Reimplemented in ha_innobase.

Definition at line 433 of file cursor.h.

Referenced by drizzled::internal_alter_table().

void drizzled::Cursor::closeMarkForDelete ( )
inherited

Drop table in the engine: public interface.

See Also
Cursor::drop_table()

Definition at line 735 of file cursor.cc.

int drizzled::Cursor::compare_key ( key_range range)
inherited

Compare if found key (in row) is over max-value.

Parameters
rangerange to compare to row. May be 0 for no range

key.cc::key_cmp()

Returns
The return value is SIGN(key_in_row - range_key):
  • 0 : Key is equal to range or 'range' == 0 (no range)
  • -1 : Key is less than range
  • 1 : Key is larger than range

Definition at line 1191 of file cursor.cc.

References drizzled::key_cmp().

int ha_myisam::delete_all_rows ( void  )
virtual

This is called to delete all rows in a table If the Cursor don't support this, then this function will return HA_ERR_WRONG_COMMAND and MySQL will delete the rows one by one.

Reimplemented from drizzled::Cursor.

Definition at line 1323 of file ha_myisam.cc.

int ha_myisam::doStartTableScan ( bool  scan)
virtual

doStartTableScan() can be called two times without doEndTableScan() in between (it only makes sense if scan=1). then the second call should prepare for the new table scan (e.g if rnd_init allocates the cursor, second call should position it to the start of the table, no need to deallocate and allocate it again

Implements drizzled::Cursor.

Definition at line 1168 of file ha_myisam.cc.

virtual ha_rows drizzled::Cursor::estimate_rows_upper_bound ( void  )
inlinevirtualinherited

Return upper bound of current number of records in the table (max. of how many records one will retrieve when doing a full table scan) If upper bound is not known, HA_POS_ERROR should be returned as a max possible upper bound.

Reimplemented in ha_innobase, and FunctionCursor.

Definition at line 288 of file cursor.h.

Referenced by drizzled::FileSort::run().

int ha_myisam::external_lock ( drizzled::Session ,
int   
)
virtual

Is not invoked for non-transactional temporary tables.

Tells the storage engine that we intend to read or write data from the table. This call is prefixed with a call to Cursor::store_lock() and is invoked only for those Cursor instances that stored the lock.

Calls to rnd_init/index_init are prefixed with this call. When table IO is complete, we call external_lock(F_UNLCK). A storage engine writer should expect that each call to ::external_lock(F_[RD|WR]LOCK is followed by a call to ::external_lock(F_UNLCK). If it is not, it is a bug in MySQL.

The name and signature originate from the first implementation in MyISAM, which would call fcntl to set/clear an advisory lock on the data file in this method.

Parameters
lock_typeF_RDLCK, F_WRLCK, F_UNLCK
Returns
non-0 in case of failure, 0 in case of success. When lock_type is F_UNLCK, the return value is ignored.

Reimplemented from drizzled::Cursor.

Definition at line 1337 of file ha_myisam.cc.

virtual char* drizzled::Cursor::get_foreign_key_create_info ( void  )
inlinevirtualinherited

If index == MAX_KEY then a check for table is made and if index < MAX_KEY then a check is made if the table has foreign keys and if a foreign key uses this index (and thus the index cannot be dropped).

Parameters
indexIndex to check if foreign key uses it
Return values
trueForeign key defined on table or index
falseNo foreign key defined

Reimplemented in ha_innobase.

Definition at line 428 of file cursor.h.

virtual int drizzled::Cursor::get_foreign_key_list ( Session ,
List< ForeignKeyInfo > *   
)
inlinevirtualinherited

used in REPLACE; is > 0 if table is referred by a FOREIGN KEY

Reimplemented in ha_innobase.

Definition at line 435 of file cursor.h.

uint64_t drizzled::Cursor::getAutoIncrement ( ) const
inlineinherited

Used by SHOW TABLE STATUS to get the current auto_inc from the engine

Definition at line 181 of file cursor.h.

int drizzled::Cursor::ha_analyze ( Session session)
inherited

Analyze table: public interface.

See Also
Cursor::analyze()

Definition at line 680 of file cursor.cc.

int drizzled::Cursor::ha_delete_all_rows ( )
inherited

Delete all rows: public interface.

See Also
Cursor::delete_all_rows()
Note

This is now equalivalent to TRUNCATE TABLE.

Trigger post-truncate notification to plugins...

Todo:
Make TransactionServices generic to AfterTriggerServices or similar...

Definition at line 636 of file cursor.cc.

Referenced by drizzled::select_union::cleanup(), and drizzled::delete_query().

int drizzled::Cursor::ha_disable_indexes ( uint32_t  mode)
inherited

Disable indexes: public interface.

See Also
Cursor::disable_indexes()

Definition at line 694 of file cursor.cc.

Referenced by drizzled::alter_table_manage_keys().

int drizzled::Cursor::ha_discard_or_import_tablespace ( bool  discard)
inherited

Discard or import tablespace: public interface.

See Also
Cursor::discard_or_import_tablespace()

Definition at line 723 of file cursor.cc.

int drizzled::Cursor::ha_enable_indexes ( uint32_t  mode)
inherited

Enable indexes: public interface.

See Also
Cursor::enable_indexes()

Definition at line 709 of file cursor.cc.

Referenced by drizzled::alter_table_manage_keys().

int drizzled::Cursor::ha_external_lock ( Session session,
int  lock_type 
)
inherited

These functions represent the public interface to users of the Cursor class, hence they are not virtual. For the inheritance interface, see the (private) functions doInsertRecord(), doUpdateRecord(), and doDeleteRecord() below.

Definition at line 1314 of file cursor.cc.

int drizzled::Cursor::ha_open ( const identifier::Table identifier,
int  mode,
int  test_if_locked 
)
inherited

Open database-Cursor.

Try O_RDONLY if cannot open as O_RDWR Don't wait for locks if not HA_OPEN_WAIT_IF_LOCKED is set

Definition at line 216 of file cursor.cc.

void drizzled::Cursor::ha_release_auto_increment ( )
inherited

Reserves an interval of auto_increment values from the Cursor.

offset and increment means that we want values to be of the form offset + N * increment, where N>=0 is integer. If the function sets *first_value to ~(uint64_t)0 it means an error. If the function sets *nb_reserved_values to UINT64_MAX it means it has reserved to "positive infinite".

Parameters
offset
increment
nb_desired_valueshow many values we want
first_value(OUT) the first value reserved by the Cursor
nb_reserved_values(OUT) how many values the Cursor reserved

Definition at line 576 of file cursor.cc.

Referenced by drizzled::insert_query().

int drizzled::Cursor::ha_reset ( )
inherited

Check Cursor usage and reset state of file to after 'open'

Definition at line 1376 of file cursor.cc.

Referenced by drizzled::Open_tables_state::free_cached_table().

int drizzled::Cursor::ha_reset_auto_increment ( uint64_t  value)
inherited

Reset auto increment: public interface.

See Also
Cursor::reset_auto_increment()

Definition at line 665 of file cursor.cc.

Referenced by drizzled::delete_query().

double drizzled::Cursor::index_only_read_time ( uint32_t  keynr,
double  key_records 
)
virtualinherited

Calculate cost of 'index only' scan for given index and number of records

Parameters
keynrIndex number
recordsEstimated number of records to be retrieved
Note
It is assumed that we will read trough the whole key range and that all key blocks are half full (normally things are much better). It is also assumed that each time we read the next key from the index, the Cursor performs a random seek, thus the cost is proportional to the number of blocks read.
Todo:
Consider joining this function and Cursor::read_time() into one Cursor::read_time(keynr, records, ranges, bool index_only) function.
Returns
Estimated cost of 'index only' scan

Definition at line 817 of file cursor.cc.

Referenced by drizzled::best_access_path().

bool drizzled::Cursor::is_fatal_error ( int  error,
uint32_t  flags 
)
virtualinherited

This method is used to analyse the error to see whether the error is ignorable or not, certain handlers can have more error that are ignorable than others. E.g. the partition Cursor can get inserts into a range where there is no partition and this is an ignorable error. HA_ERR_FOUND_DUP_UNIQUE is a special case in MyISAM that means the same thing as HA_ERR_FOUND_DUP_KEY but can in some cases lead to a slightly different error message.

Definition at line 190 of file cursor.cc.

Referenced by drizzled::update_query().

int drizzled::Cursor::multi_range_read_info ( uint32_t  keyno,
uint32_t  n_ranges,
uint32_t  n_rows,
uint32_t *  bufsz,
uint32_t *  flags,
optimizer::CostVector cost 
)
virtualinherited

Get cost and other information about MRR scan over some sequence of ranges

Calculate estimated cost and other information about an MRR scan for some sequence of ranges.

The ranges themselves will be known only at execution phase. When this function is called we only know number of ranges and a (rough) E(records) within those ranges.

Currently this function is only called for "n-keypart singlepoint" ranges, i.e. each range is "keypart1=someconst1 AND ... AND keypartN=someconstN"

The flags parameter is a combination of those flags: HA_MRR_SORTED, HA_MRR_INDEX_ONLY, HA_MRR_NO_ASSOCIATION, HA_MRR_LIMITS.

Parameters
keynoIndex number
n_rangesEstimated number of ranges (i.e. intervals) in the range sequence.
n_rowsEstimated total number of records contained within all of the ranges
bufszINOUT IN: Size of the buffer available for use OUT: Size of the buffer that will be actually used, or 0 if buffer is not needed.
flagsINOUT A combination of HA_MRR_* flags
costOUT Estimated cost of MRR access
Return values
0OK, *cost contains cost of the scan, *bufsz and *flags contain scan parameters.
otherError or can't perform the requested scan

Definition at line 949 of file cursor.cc.

ha_rows drizzled::Cursor::multi_range_read_info_const ( uint32_t  keyno,
RANGE_SEQ_IF seq,
void *  seq_init_param,
uint32_t  n_ranges,
uint32_t *  bufsz,
uint32_t *  flags,
optimizer::CostVector cost 
)
virtualinherited

Get cost and other information about MRR scan over a known list of ranges

Calculate estimated cost and other information about an MRR scan for given sequence of ranges.

Parameters
keynoIndex number
seqRange sequence to be traversed
seq_init_paramFirst parameter for seq->init()
n_ranges_argNumber of ranges in the sequence, or 0 if the caller can't efficiently determine it
bufszINOUT IN: Size of the buffer available for use OUT: Size of the buffer that is expected to be actually used, or 0 if buffer is not needed.
flagsINOUT A combination of HA_MRR_* flags
costOUT Estimated cost of MRR access
Note
This method (or an overriding one in a derived class) must check for session->getKilled() and return HA_POS_ERROR if it is not zero. This is required for a user to be able to interrupt the calculation by killing the connection/query.
Return values
HA_POS_ERRORError or the engine is unable to perform the requested scan. Values of OUT parameters are undefined.
otherOK, *cost contains cost of the scan, *bufsz and *flags contain scan parameters.

Definition at line 862 of file cursor.cc.

References TIME_FOR_COMPARE.

int drizzled::Cursor::multi_range_read_init ( RANGE_SEQ_IF seq_funcs,
void *  seq_init_param,
uint32_t  n_ranges,
uint32_t  mode 
)
virtualinherited

Initialize the MRR scan

Initialize the MRR scan. This function may do heavyweight scan initialization like row prefetching/sorting/etc (NOTE: but better not do it here as we may not need it, e.g. if we never satisfy WHERE clause on previous tables. For many implementations it would be natural to do such initializations in the first multi_read_range_next() call)

mode is a combination of the following flags: HA_MRR_SORTED, HA_MRR_INDEX_ONLY, HA_MRR_NO_ASSOCIATION

Parameters
seqRange sequence to be traversed
seq_init_paramFirst parameter for seq->init()
n_rangesNumber of ranges in the sequence
modeFlags, see the description section for the details
bufINOUT: memory buffer to be used
Note
One must have called doStartIndexScan() before calling this function. Several multi_range_read_init() calls may be made in course of one query.

Until WL#2623 is done (see its text, section 3.2), the following will also hold: The caller will guarantee that if "seq->init == mrr_ranges_array_init" then seq_init_param is an array of n_ranges KEY_MULTI_RANGE structures. This property will only be used by NDB Cursor until WL#2623 is done.

Buffer memory management is done according to the following scenario: The caller allocates the buffer and provides it to the callee by filling the members of HANDLER_BUFFER structure. The callee consumes all or some fraction of the provided buffer space, and sets the HANDLER_BUFFER members accordingly. The callee may use the buffer memory until the next multi_range_read_init() call is made, all records have been read, or until doEndIndexScan() call is made, whichever comes first.

Return values
0OK
1Error

Definition at line 1010 of file cursor.cc.

int drizzled::Cursor::multi_range_read_next ( char **  range_info)
virtualinherited

Get next record in MRR scan

Default MRR implementation: read the next record

Parameters
range_infoOUT Undefined if HA_MRR_NO_ASSOCIATION flag is in effect Otherwise, the opaque value associated with the range that contains the returned record.
Return values
0OK
otherError code

Definition at line 1035 of file cursor.cc.

int drizzled::Cursor::read_first_row ( unsigned char *  buf,
uint32_t  primary_key 
)
virtualinherited

Read first row (only) from a table.

This is never called for InnoDB tables, as these table types has the HA_STATS_RECORDS_IS_EXACT set.

Definition at line 255 of file cursor.cc.

int ha_myisam::read_range_first ( const drizzled::key_range start_key,
const drizzled::key_range end_key,
bool  eq_range_arg,
bool  sorted 
)
virtual

Read first row between two ranges.

Parameters
start_keyStart key. Is 0 if no min range
end_keyEnd key. Is 0 if no max range
eq_range_argSet to 1 if start_key == end_key
sortedSet to 1 if result should be sorted per key
Note
Record is read into table->getInsertRecord()
Return values
0Found row
HA_ERR_END_OF_FILENo rows in range
\::Error code

Reimplemented from drizzled::Cursor.

Definition at line 1142 of file ha_myisam.cc.

int ha_myisam::read_range_next ( )
virtual

Read next row between two endpoints.

Note
Record is read into table->getInsertRecord()
Return values
0Found row
HA_ERR_END_OF_FILENo rows in range
\::Error code

Reimplemented from drizzled::Cursor.

Definition at line 1159 of file ha_myisam.cc.

ha_rows drizzled::Cursor::records ( )
virtualinherited

Number of rows in table. It will only be called if (table_flags() & (HA_HAS_RECORDS | HA_STATS_RECORDS_IS_EXACT)) != 0

Definition at line 201 of file cursor.cc.

int ha_myisam::reset ( void  )
virtual

Reset state of file to after 'open'. This function is called after every statement for all tables used by that statement.

Reimplemented from drizzled::Cursor.

Definition at line 1311 of file ha_myisam.cc.

int ha_myisam::reset_auto_increment ( uint64_t  )
virtual

Reset the auto-increment counter to the given value, i.e. the next row inserted will get the given value. This is called e.g. after TRUNCATE is emulated by doing a 'DELETE FROM t'. HA_ERR_WRONG_COMMAND is returned by storage engines that don't support this operation.

Reimplemented from drizzled::Cursor.

Definition at line 349 of file ha_myisam.cc.

virtual THR_LOCK_DATA** drizzled::Cursor::store_lock ( Session ,
THR_LOCK_DATA **  to,
enum thr_lock_type   
)
inlinevirtualinherited

Is not invoked for non-transactional temporary tables.

Note
store_lock() can return more than one lock if the table is MERGE or partitioned.
that one can NOT rely on table->in_use in store_lock(). It may refer to a different thread if called from abortLockForThread().
If the table is MERGE, store_lock() can return less locks than lock_count() claimed. This can happen when the MERGE children are not attached when this is called from another thread.

Reimplemented in drizzled::SEAPITesterCursor, and ha_innobase.

Definition at line 453 of file cursor.h.

Referenced by drizzled::Session::get_lock_data().

virtual void drizzled::Cursor::try_semi_consistent_read ( bool  )
inlinevirtualinherited

Tell the engine whether it should avoid unnecessary lock waits. If yes, in an UPDATE or DELETE, if the row under the cursor was locked by another transaction, the engine may try an optimistic read of the last committed row value under the cursor.

Reimplemented in ha_innobase.

Definition at line 386 of file cursor.h.

Referenced by drizzled::update_query().

virtual bool drizzled::Cursor::was_semi_consistent_read ( void  )
inlinevirtualinherited

In an UPDATE or DELETE, if the row under the cursor was locked by another transaction, and the engine used an optimistic read of the last committed row value under the cursor, then the engine returns 1 from this function. MySQL must NOT try to update this optimistic value. If the optimistic value does not match the WHERE condition, MySQL can decide to skip over this row. Currently only works for InnoDB. This can be used to avoid unnecessary lock waits.

If this method returns nonzero, it will also signal the storage engine that the next read will be a locking re-read of the row.

Reimplemented in ha_innobase.

Definition at line 379 of file cursor.h.

Referenced by drizzled::update_query().

Member Data Documentation

Discrete_interval drizzled::Cursor::auto_inc_interval_for_cur_row
inherited

Interval returned by get_auto_increment() and being consumed by the inserter.

Definition at line 197 of file cursor.h.

uint64_t drizzled::Cursor::insert_id_for_cur_row
inherited

insert id for the current row (autogenerated; if not autogenerated, it's 0). At first successful insertion, this variable is stored into Session::first_successful_insert_id_in_cur_stmt.

Definition at line 192 of file cursor.h.

KEY_MULTI_RANGE drizzled::Cursor::mrr_cur_range
inherited

Current range (the one we're now returning rows from)

Definition at line 148 of file cursor.h.

bool drizzled::Cursor::mrr_have_range
inherited

true <=> we're currently traversing a range in mrr_cur_range.

Definition at line 143 of file cursor.h.

range_seq_t drizzled::Cursor::mrr_iter
inherited

MultiRangeRead-related members:

Definition at line 135 of file cursor.h.

uint64_t drizzled::Cursor::next_insert_id
inherited

next_insert_id is the next value which should be inserted into the auto_increment column: in a inserting-multi-row statement (like INSERT SELECT), for the first row where the autoinc value is not specified by the statement, get_auto_increment() called and asked to generate a value, next_insert_id is set to the next value, then for all other rows next_insert_id is used (and increased each time) without calling get_auto_increment().

Definition at line 172 of file cursor.h.

uint32_t drizzled::Cursor::ref_length
inherited
key_range drizzled::Cursor::save_end_range
inherited

The following are for read_range()

Definition at line 151 of file cursor.h.


The documentation for this class was generated from the following files: