diff options
author | brian@zim.(none) <> | 2005-03-24 16:07:56 -0800 |
---|---|---|
committer | brian@zim.(none) <> | 2005-03-24 16:07:56 -0800 |
commit | e65b96693c8aa44118555946ab2787d311d40217 (patch) | |
tree | 85dd501587537f24095503ccdd52448b183f83c1 /sql | |
parent | cfcedd85cd46691cf682b5aa5a93517dc9fb995c (diff) | |
download | mariadb-git-e65b96693c8aa44118555946ab2787d311d40217.tar.gz |
Collection of changes per Bar and Serg.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/ha_blackhole.cc | 100 | ||||
-rw-r--r-- | sql/ha_blackhole.h | 17 |
2 files changed, 75 insertions, 42 deletions
diff --git a/sql/ha_blackhole.cc b/sql/ha_blackhole.cc index e13c433b0ac..e34d5d723a4 100644 --- a/sql/ha_blackhole.cc +++ b/sql/ha_blackhole.cc @@ -47,7 +47,7 @@ int ha_blackhole::close(void) } int ha_blackhole::create(const char *name, TABLE *table_arg, - HA_CREATE_INFO *create_info) + HA_CREATE_INFO *create_info) { DBUG_ENTER("ha_blackhole::create"); DBUG_RETURN(0); @@ -57,12 +57,12 @@ const char *ha_blackhole::index_type(uint key_number) { DBUG_ENTER("ha_blackhole::index_type"); DBUG_RETURN((table->key_info[key_number].flags & HA_FULLTEXT) ? - "FULLTEXT" : - (table->key_info[key_number].flags & HA_SPATIAL) ? - "SPATIAL" : - (table->key_info[key_number].algorithm == HA_KEY_ALG_RTREE) ? - "RTREE" : - "BTREE"); + "FULLTEXT" : + (table->key_info[key_number].flags & HA_SPATIAL) ? + "SPATIAL" : + (table->key_info[key_number].algorithm == HA_KEY_ALG_RTREE) ? + "RTREE" : + "BTREE"); } int ha_blackhole::write_row(byte * buf) @@ -88,6 +88,7 @@ int ha_blackhole::rnd_next(byte *buf) int ha_blackhole::rnd_pos(byte * buf, byte *pos) { DBUG_ENTER("ha_blackhole::rnd_pos"); + DBUG_ASSERT(0); DBUG_RETURN(0); } @@ -95,6 +96,7 @@ int ha_blackhole::rnd_pos(byte * buf, byte *pos) void ha_blackhole::position(const byte *record) { DBUG_ENTER("ha_blackhole::position"); + DBUG_ASSERT(0); DBUG_VOID_RETURN; } @@ -124,41 +126,63 @@ int ha_blackhole::external_lock(THD *thd, int lock_type) THR_LOCK_DATA **ha_blackhole::store_lock(THD *thd, - THR_LOCK_DATA **to, - enum thr_lock_type lock_type) -{ - if (lock_type != TL_IGNORE && lock.type == TL_UNLOCK) - { - /* - Here is where we get into the guts of a row level lock. - If TL_UNLOCK is set - If we are not doing a LOCK TABLE or DISCARD/IMPORT - TABLESPACE, then allow multiple writers - */ - - if ((lock_type >= TL_WRITE_CONCURRENT_INSERT && - lock_type <= TL_WRITE) && !thd->in_lock_tables - && !thd->tablespace_op) - lock_type = TL_WRITE_ALLOW_WRITE; - - /* - In queries of type INSERT INTO t1 SELECT ... FROM t2 ... - MySQL would use the lock TL_READ_NO_INSERT on t2, and that - would conflict with TL_WRITE_ALLOW_WRITE, blocking all inserts - to t2. Convert the lock to a normal read lock to allow - concurrent inserts to t2. - */ - - if (lock_type == TL_READ_NO_INSERT && !thd->in_lock_tables) - lock_type = TL_READ; - - lock.type=lock_type; - } - + THR_LOCK_DATA **to, + enum thr_lock_type lock_type) +{ *to++= &lock; return to; } +int ha_blackhole::index_read(byte * buf, const byte * key, + uint key_len, enum ha_rkey_function find_flag) +{ + DBUG_ENTER("ha_blackhole::index_read"); + DBUG_RETURN(0); +} + + +int ha_blackhole::index_read_idx(byte * buf, uint idx, const byte * key, + uint key_len, enum ha_rkey_function find_flag) +{ + DBUG_ENTER("ha_blackhole::index_read_idx"); + DBUG_RETURN(HA_ERR_END_OF_FILE); +} + + +int ha_blackhole::index_read_last(byte * buf, const byte * key, uint key_len) +{ + DBUG_ENTER("ha_blackhole::index_read_last"); + DBUG_RETURN(HA_ERR_END_OF_FILE); +} + + +int ha_blackhole::index_next(byte * buf) +{ + DBUG_ENTER("ha_blackhole::index_next"); + DBUG_RETURN(HA_ERR_END_OF_FILE); +} + + +int ha_blackhole::index_prev(byte * buf) +{ + DBUG_ENTER("ha_blackhole::index_prev"); + DBUG_RETURN(HA_ERR_END_OF_FILE); +} + + +int ha_blackhole::index_first(byte * buf) +{ + DBUG_ENTER("ha_blackhole::index_first"); + DBUG_RETURN(HA_ERR_END_OF_FILE); +} + + +int ha_blackhole::index_last(byte * buf) +{ + DBUG_ENTER("ha_blackhole::index_last"); + DBUG_RETURN(HA_ERR_END_OF_FILE); +} + #endif /* HAVE_BLACKHOLE_DB */ diff --git a/sql/ha_blackhole.h b/sql/ha_blackhole.h index 538cdd07bde..b6f924e94b9 100644 --- a/sql/ha_blackhole.h +++ b/sql/ha_blackhole.h @@ -39,7 +39,7 @@ public: /* The name of the index type that will be used for display don't implement this method unless you really have indexes - */ + */ const char *index_type(uint key_number); const char **bas_ext() const; ulong table_flags() const @@ -68,12 +68,21 @@ public: int rnd_init(bool scan); int rnd_next(byte *buf); int rnd_pos(byte * buf, byte *pos); + int index_read(byte * buf, const byte * key, + uint key_len, enum ha_rkey_function find_flag); + int index_read_idx(byte * buf, uint idx, const byte * key, + uint key_len, enum ha_rkey_function find_flag); + int index_read_last(byte * buf, const byte * key, uint key_len); + int index_next(byte * buf); + int index_prev(byte * buf); + int index_first(byte * buf); + int index_last(byte * buf); void position(const byte *record); void info(uint flag); int external_lock(THD *thd, int lock_type); int create(const char *name, TABLE *table_arg, - HA_CREATE_INFO *create_info); + HA_CREATE_INFO *create_info); THR_LOCK_DATA **store_lock(THD *thd, - THR_LOCK_DATA **to, - enum thr_lock_type lock_type); + THR_LOCK_DATA **to, + enum thr_lock_type lock_type); }; |