diff options
author | Mattias Jonsson <mattias.jonsson@sun.com> | 2009-10-19 12:09:52 +0200 |
---|---|---|
committer | Mattias Jonsson <mattias.jonsson@sun.com> | 2009-10-19 12:09:52 +0200 |
commit | 93e02adcfab140265d3baf2062057826b3a28bc2 (patch) | |
tree | 11acbcf83ba9f40be4d590a80de9558743535f17 /sql/ha_partition.h | |
parent | 6e7a37d3e8fc1f32c382dae143eb091be1eb1e8f (diff) | |
parent | df129b749d609b75077ab7d60d65d40ff77b8299 (diff) | |
download | mariadb-git-93e02adcfab140265d3baf2062057826b3a28bc2.tar.gz |
Manual merge mysql-trunk -> mysql-trunk-wl3352
Diffstat (limited to 'sql/ha_partition.h')
-rw-r--r-- | sql/ha_partition.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/sql/ha_partition.h b/sql/ha_partition.h index e5bb9ed05f5..653d1322887 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -177,6 +177,11 @@ private: This to ensure it will work with statement based replication. */ bool auto_increment_safe_stmt_log_lock; + /** For optimizing ha_start_bulk_insert calls */ + MY_BITMAP m_bulk_insert_started; + ha_rows m_bulk_inserted_rows; + /** used for prediction of start_bulk_insert rows */ + enum_monotonicity_info m_part_func_monotonicity_info; public: handler *clone(MEM_ROOT *mem_root); virtual void set_part_info(partition_info *part_info) @@ -354,7 +359,6 @@ public: Bulk inserts are supported if all underlying handlers support it. start_bulk_insert and end_bulk_insert is called before and after a number of calls to write_row. - Not yet though. */ virtual int write_row(uchar * buf); virtual int update_row(const uchar * old_data, uchar * new_data); @@ -362,6 +366,10 @@ public: virtual int delete_all_rows(void); virtual void start_bulk_insert(ha_rows rows); virtual int end_bulk_insert(); +private: + ha_rows guess_bulk_insert_rows(); + void start_part_bulk_insert(uint part_id); +public: virtual bool is_fatal_error(int error, uint flags) { @@ -937,9 +945,11 @@ private: auto_increment_lock= FALSE; } } - virtual void set_auto_increment_if_higher(const ulonglong nr) + virtual void set_auto_increment_if_higher(Field *field) { HA_DATA_PARTITION *ha_data= (HA_DATA_PARTITION*) table_share->ha_data; + ulonglong nr= (((Field_num*) field)->unsigned_flag || + field->val_int() > 0) ? field->val_int() : 0; lock_auto_increment(); DBUG_ASSERT(ha_data->auto_inc_initialized == TRUE); /* must check when the mutex is taken */ |