diff options
author | unknown <monty@mysql.com> | 2004-07-12 08:20:24 +0300 |
---|---|---|
committer | unknown <monty@mysql.com> | 2004-07-12 08:20:24 +0300 |
commit | 677d60bc61a36be16af964eaae47cc88b0ecc33f (patch) | |
tree | 4b4523bbabccb4e51b85fc209e3274f249f85ef8 /sql/ha_berkeley.cc | |
parent | c4645f84047585b12523d8d111044bf040880bb4 (diff) | |
parent | 18d974a3e7b48eec96c8837d42ebbc698e68ca55 (diff) | |
download | mariadb-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.cc | 29 |
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) { |