summaryrefslogtreecommitdiff
path: root/sql/ha_blackhole.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/ha_blackhole.cc')
-rw-r--r--sql/ha_blackhole.cc339
1 files changed, 0 insertions, 339 deletions
diff --git a/sql/ha_blackhole.cc b/sql/ha_blackhole.cc
deleted file mode 100644
index 01ede3d3bd2..00000000000
--- a/sql/ha_blackhole.cc
+++ /dev/null
@@ -1,339 +0,0 @@
-/* Copyright (C) 2005 MySQL AB
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-
-
-#ifdef USE_PRAGMA_IMPLEMENTATION
-#pragma implementation // gcc: Class implementation
-#endif
-
-#include "mysql_priv.h"
-#ifdef HAVE_BLACKHOLE_DB
-#include "ha_blackhole.h"
-
-/* Static declarations for shared structures */
-
-static pthread_mutex_t blackhole_mutex;
-static HASH blackhole_open_tables;
-static int blackhole_init= FALSE;
-
-static st_blackhole_share *get_share(const char *table_name);
-static void free_share(st_blackhole_share *share);
-
-/* Blackhole storage engine handlerton */
-
-handlerton blackhole_hton= {
- "BLACKHOLE",
- SHOW_OPTION_YES,
- "/dev/null storage engine (anything you write to it disappears)",
- DB_TYPE_BLACKHOLE_DB,
- blackhole_db_init,
- 0, /* slot */
- 0, /* savepoint size. */
- NULL, /* close_connection */
- NULL, /* savepoint */
- NULL, /* rollback to savepoint */
- NULL, /* release savepoint */
- NULL, /* commit */
- NULL, /* rollback */
- NULL, /* prepare */
- NULL, /* recover */
- NULL, /* commit_by_xid */
- NULL, /* rollback_by_xid */
- NULL, /* create_cursor_read_view */
- NULL, /* set_cursor_read_view */
- NULL, /* close_cursor_read_view */
- HTON_CAN_RECREATE
-};
-
-/*****************************************************************************
-** BLACKHOLE tables
-*****************************************************************************/
-
-ha_blackhole::ha_blackhole(TABLE *table_arg)
- :handler(&blackhole_hton, table_arg)
-{}
-
-
-static const char *ha_blackhole_exts[] = {
- NullS
-};
-
-const char **ha_blackhole::bas_ext() const
-{
- return ha_blackhole_exts;
-}
-
-int ha_blackhole::open(const char *name, int mode, uint test_if_locked)
-{
- DBUG_ENTER("ha_blackhole::open");
-
- if (!(share= get_share(name)))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- thr_lock_data_init(&share->lock, &lock, NULL);
- DBUG_RETURN(0);
-}
-
-int ha_blackhole::close(void)
-{
- DBUG_ENTER("ha_blackhole::close");
- free_share(share);
- DBUG_RETURN(0);
-}
-
-int ha_blackhole::create(const char *name, TABLE *table_arg,
- HA_CREATE_INFO *create_info)
-{
- DBUG_ENTER("ha_blackhole::create");
- DBUG_RETURN(0);
-}
-
-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");
-}
-
-int ha_blackhole::write_row(byte * buf)
-{
- DBUG_ENTER("ha_blackhole::write_row");
- DBUG_RETURN(table->next_number_field ? update_auto_increment() : 0);
-}
-
-int ha_blackhole::rnd_init(bool scan)
-{
- DBUG_ENTER("ha_blackhole::rnd_init");
- DBUG_RETURN(0);
-}
-
-
-int ha_blackhole::rnd_next(byte *buf)
-{
- DBUG_ENTER("ha_blackhole::rnd_next");
- DBUG_RETURN(HA_ERR_END_OF_FILE);
-}
-
-
-int ha_blackhole::rnd_pos(byte * buf, byte *pos)
-{
- DBUG_ENTER("ha_blackhole::rnd_pos");
- DBUG_ASSERT(0);
- DBUG_RETURN(0);
-}
-
-
-void ha_blackhole::position(const byte *record)
-{
- DBUG_ENTER("ha_blackhole::position");
- DBUG_ASSERT(0);
- DBUG_VOID_RETURN;
-}
-
-
-int ha_blackhole::info(uint flag)
-{
- DBUG_ENTER("ha_blackhole::info");
-
- records= 0;
- deleted= 0;
- errkey= 0;
- mean_rec_length= 0;
- data_file_length= 0;
- index_file_length= 0;
- max_data_file_length= 0;
- delete_length= 0;
- if (flag & HA_STATUS_AUTO)
- auto_increment_value= 1;
- DBUG_RETURN(0);
-}
-
-int ha_blackhole::external_lock(THD *thd, int lock_type)
-{
- DBUG_ENTER("ha_blackhole::external_lock");
- DBUG_RETURN(0);
-}
-
-
-THR_LOCK_DATA **ha_blackhole::store_lock(THD *thd,
- THR_LOCK_DATA **to,
- enum thr_lock_type lock_type)
-{
- DBUG_ENTER("ha_blackhole::store_lock");
- if (lock_type != TL_IGNORE && lock.type == TL_UNLOCK)
- {
- if ((lock_type >= TL_WRITE_CONCURRENT_INSERT &&
- lock_type <= TL_WRITE) && !thd->in_lock_tables)
- lock_type = TL_WRITE_ALLOW_WRITE;
-
- if (lock_type == TL_READ_NO_INSERT && !thd->in_lock_tables)
- lock_type = TL_READ;
-
- lock.type= lock_type;
- }
- *to++= &lock;
- DBUG_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(HA_ERR_END_OF_FILE);
-}
-
-
-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);
-}
-
-
-static st_blackhole_share *get_share(const char *table_name)
-{
- st_blackhole_share *share;
- uint length;
-
- length= (uint) strlen(table_name);
- pthread_mutex_lock(&blackhole_mutex);
-
- if (!(share= (st_blackhole_share*) hash_search(&blackhole_open_tables,
- (byte*) table_name, length)))
- {
- if (!(share= (st_blackhole_share*) my_malloc(sizeof(st_blackhole_share) +
- length,
- MYF(MY_WME | MY_ZEROFILL))))
- goto error;
-
- share->table_name_length= length;
- strmov(share->table_name, table_name);
-
- if (my_hash_insert(&blackhole_open_tables, (byte*) share))
- {
- my_free((gptr) share, MYF(0));
- share= NULL;
- goto error;
- }
-
- thr_lock_init(&share->lock);
- }
- share->use_count++;
-
-error:
- pthread_mutex_unlock(&blackhole_mutex);
- return share;
-}
-
-static void free_share(st_blackhole_share *share)
-{
- pthread_mutex_lock(&blackhole_mutex);
- if (!--share->use_count)
- hash_delete(&blackhole_open_tables, (byte*) share);
- pthread_mutex_unlock(&blackhole_mutex);
-}
-
-
-static byte* blackhole_get_key(st_blackhole_share *share, uint *length,
- my_bool not_used __attribute__((unused)))
-{
- *length= share->table_name_length;
- return (byte*) share->table_name;
-}
-
-
-static void blackhole_free_key(st_blackhole_share *share)
-{
- thr_lock_delete(&share->lock);
- my_free((gptr) share, MYF(0));
-}
-
-
-bool blackhole_db_init()
-{
- DBUG_ENTER("blackhole_db_init");
- if (pthread_mutex_init(&blackhole_mutex, MY_MUTEX_INIT_FAST))
- goto error;
- if (hash_init(&blackhole_open_tables, &my_charset_bin, 32, 0, 0,
- (hash_get_key) blackhole_get_key,
- (hash_free_key) blackhole_free_key, 0))
- {
- VOID(pthread_mutex_destroy(&blackhole_mutex));
- }
- else
- {
- blackhole_init= TRUE;
- DBUG_RETURN(FALSE);
- }
-error:
- have_blackhole_db= SHOW_OPTION_DISABLED; // If we couldn't use handler
- DBUG_RETURN(TRUE);
-}
-
-
-bool blackhole_db_end()
-{
- if (blackhole_init)
- {
- hash_free(&blackhole_open_tables);
- VOID(pthread_mutex_destroy(&blackhole_mutex));
- }
- blackhole_init= 0;
- return FALSE;
-}
-
-#endif /* HAVE_BLACKHOLE_DB */