summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorbrian@zim.(none) <>2005-03-24 16:07:56 -0800
committerbrian@zim.(none) <>2005-03-24 16:07:56 -0800
commite65b96693c8aa44118555946ab2787d311d40217 (patch)
tree85dd501587537f24095503ccdd52448b183f83c1 /sql
parentcfcedd85cd46691cf682b5aa5a93517dc9fb995c (diff)
downloadmariadb-git-e65b96693c8aa44118555946ab2787d311d40217.tar.gz
Collection of changes per Bar and Serg.
Diffstat (limited to 'sql')
-rw-r--r--sql/ha_blackhole.cc100
-rw-r--r--sql/ha_blackhole.h17
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);
};