diff options
Diffstat (limited to 'sql/handler.h')
-rw-r--r-- | sql/handler.h | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/sql/handler.h b/sql/handler.h index f6e29048407..68bb894a5d2 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1136,6 +1136,13 @@ public: inserter. */ Discrete_interval auto_inc_interval_for_cur_row; + /** + Number of reserved auto-increment intervals. Serves as a heuristic + when we have no estimation of how many records the statement will insert: + the more intervals we have reserved, the bigger the next one. Reset in + handler::ha_release_auto_increment(). + */ + uint auto_inc_intervals_count; handler(handlerton *ht_arg, TABLE_SHARE *share_arg) :table_share(share_arg), table(0), @@ -1144,7 +1151,8 @@ public: ref_length(sizeof(my_off_t)), ft_handler(0), inited(NONE), locked(FALSE), implicit_emptied(0), - pushed_cond(0), next_insert_id(0), insert_id_for_cur_row(0) + pushed_cond(0), next_insert_id(0), insert_id_for_cur_row(0), + auto_inc_intervals_count(0) {} virtual ~handler(void) { @@ -1197,6 +1205,9 @@ public: { return inited == INDEX ? ha_index_end() : inited == RND ? ha_rnd_end() : 0; } + /** + The cached_table_flags is set at ha_open and ha_external_lock + */ Table_flags ha_table_flags() const { return cached_table_flags; } /** These functions represent the public interface to *users* of the @@ -1210,6 +1221,7 @@ public: int ha_delete_row(const uchar * buf); void ha_release_auto_increment(); + int check_collation_compatibility(); int ha_check_for_upgrade(HA_CHECK_OPT *check_opt); /** to be actually called to get 'check()' functionality*/ int ha_check(THD *thd, HA_CHECK_OPT *check_opt); @@ -1248,8 +1260,8 @@ public: int ha_change_partitions(HA_CREATE_INFO *create_info, const char *path, - ulonglong *copied, - ulonglong *deleted, + ulonglong * const copied, + ulonglong * const deleted, const uchar *pack_frm_data, size_t pack_frm_len); int ha_drop_partitions(const char *path); @@ -1734,6 +1746,12 @@ public: but we don't have a primary key */ virtual void use_hidden_primary_key(); + virtual uint alter_table_flags(uint flags) + { + if (ht->alter_table_flags) + return ht->alter_table_flags(flags); + return 0; + } LEX_STRING *engine_name() { return hton_name(ht); } @@ -1872,7 +1890,8 @@ private: This is called to delete all rows in a table If the handler don't support this, then this function will return HA_ERR_WRONG_COMMAND and MySQL will delete the rows one - by one. + by one. It should reset auto_increment if + thd->lex->sql_command == SQLCOM_TRUNCATE. */ virtual int delete_all_rows() { return (my_errno=HA_ERR_WRONG_COMMAND); } @@ -1911,8 +1930,8 @@ private: virtual int change_partitions(HA_CREATE_INFO *create_info, const char *path, - ulonglong *copied, - ulonglong *deleted, + ulonglong * const copied, + ulonglong * const deleted, const uchar *pack_frm_data, size_t pack_frm_len) { return HA_ERR_WRONG_COMMAND; } |