summaryrefslogtreecommitdiff
path: root/sql/ha_berkeley.cc
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2004-07-12 08:20:24 +0300
committerunknown <monty@mysql.com>2004-07-12 08:20:24 +0300
commit677d60bc61a36be16af964eaae47cc88b0ecc33f (patch)
tree4b4523bbabccb4e51b85fc209e3274f249f85ef8 /sql/ha_berkeley.cc
parentc4645f84047585b12523d8d111044bf040880bb4 (diff)
parent18d974a3e7b48eec96c8837d42ebbc698e68ca55 (diff)
downloadmariadb-git-677d60bc61a36be16af964eaae47cc88b0ecc33f.tar.gz
Merge with 4.1
BitKeeper/etc/logging_ok: auto-union client/mysqltest.c: Auto merged configure.in: Auto merged include/my_global.h: Auto merged mysql-test/r/bdb.result: Auto merged mysql-test/r/connect.result: Auto merged mysql-test/r/multi_update.result: Auto merged mysql-test/r/show_check.result: Auto merged mysql-test/r/system_mysql_db.result: Auto merged mysql-test/t/multi_update.test: Auto merged sql/ha_berkeley.cc: Auto merged sql/ha_berkeley.h: Auto merged sql/ha_heap.h: Auto merged sql/ha_innodb.h: Auto merged sql/handler.h: Auto merged sql/item_cmpfunc.cc: Auto merged sql/log.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_db.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_update.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/opt_range.cc: Merge with 4.1 true -> TRUE and false -> FALSE
Diffstat (limited to 'sql/ha_berkeley.cc')
-rw-r--r--sql/ha_berkeley.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc
index e25640280a3..00df84e3797 100644
--- a/sql/ha_berkeley.cc
+++ b/sql/ha_berkeley.cc
@@ -340,6 +340,35 @@ const char **ha_berkeley::bas_ext() const
{ static const char *ext[]= { ha_berkeley_ext, NullS }; return ext; }
+ulong ha_berkeley::index_flags(uint idx, uint part, bool all_parts) const
+{
+ ulong flags= (HA_READ_NEXT | HA_READ_PREV | HA_READ_ORDER | HA_KEYREAD_ONLY
+ | HA_READ_RANGE);
+ for (uint i= all_parts ? 0 : part ; i <= part ; i++)
+ {
+ if (table->key_info[idx].key_part[i].field->type() == FIELD_TYPE_BLOB)
+ {
+ /* We can't use BLOBS to shortcut sorts */
+ flags&= ~(HA_READ_ORDER | HA_KEYREAD_ONLY | HA_READ_RANGE);
+ break;
+ }
+ switch (table->key_info[idx].key_part[i].field->key_type()) {
+ case HA_KEYTYPE_TEXT:
+ case HA_KEYTYPE_VARTEXT:
+ /*
+ As BDB stores only one copy of equal strings, we can't use key read
+ on these
+ */
+ flags&= ~HA_KEYREAD_ONLY;
+ break;
+ default: // Keep compiler happy
+ break;
+ }
+ }
+ return flags;
+}
+
+
static int
berkeley_cmp_hidden_key(DB* file, const DBT *new_key, const DBT *saved_key)
{