summaryrefslogtreecommitdiff
path: root/sql/ha_berkeley.cc
diff options
context:
space:
mode:
authorunknown <monty@hundin.mysql.fi>2001-11-03 15:18:09 +0200
committerunknown <monty@hundin.mysql.fi>2001-11-03 15:18:09 +0200
commitb2cec26dfb0fa6e2e7240d5dd2044e1192596ef8 (patch)
treed5d2a601f2e922dce27a5041739103c6468d4cf8 /sql/ha_berkeley.cc
parentb9e1b930f73a43c739a916254fdbb46641cd51a0 (diff)
downloadmariadb-git-b2cec26dfb0fa6e2e7240d5dd2044e1192596ef8.tar.gz
Fix that mysqladmin shutdown can be interrupted with ^C
Fixed bug with BLOB keys in BDB tables Fixed problem with MERGE tables on OS with 32 bit files Fixed that TIME_TO_SEC() works with negative times Docs/manual.texi: Changelog client/mysqladmin.c: Fix that mysqladmin shutdown can be interrupted with ^C include/mysqld_error.h: Fixed typo mysql-test/r/func_time.result: Added test case for negative times mysql-test/t/func_time.test: Added test case for negative times mysql-test/t/rpl000015-slave.sh: Removed warnings mysql-test/t/rpl000016-slave.sh: Removed warnings sql/field.cc: Fixed bug with BLOB keys in BDB tables sql/field.h: Fixed bug with BLOB keys in BDB tables sql/ha_berkeley.cc: Fixed bug with BLOB keys in BDB tables sql/ha_myisammrg.cc: Fixed problem with MERGE tables on OS with 32 bit files sql/item_timefunc.cc: Fixed that TIME_TO_SEC() works with negative times. sql/share/swedish/errmsg.txt: Merge with 4.0 sql/sql_acl.cc: Fixed typo
Diffstat (limited to 'sql/ha_berkeley.cc')
-rw-r--r--sql/ha_berkeley.cc16
1 files changed, 9 insertions, 7 deletions
diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc
index e9cd3f57122..f52b99f5a12 100644
--- a/sql/ha_berkeley.cc
+++ b/sql/ha_berkeley.cc
@@ -28,8 +28,8 @@
- Get a more accurate count of the number of rows (estimate_number_of_rows()).
We could store the found number of rows when the table is scanned and
then increment the counter for each attempted write.
- - We will need a manager thread that calls flush_logs, removes old
- logs and makes checkpoints at given intervals.
+ - We will need to extend the manager thread to makes checkpoints at
+ given intervals.
- When not using UPDATE IGNORE, don't make a sub transaction but abort
the main transaction on errors.
- Handling of drop table during autocommit=0 ?
@@ -90,7 +90,7 @@ const char *berkeley_lock_names[] =
{ "DEFAULT", "OLDEST","RANDOM","YOUNGEST",0 };
u_int32_t berkeley_lock_types[]=
{ DB_LOCK_DEFAULT, DB_LOCK_OLDEST, DB_LOCK_RANDOM };
-TYPELIB berkeley_lock_typelib= {array_elements(berkeley_lock_names),"",
+TYPELIB berkeley_lock_typelib= {array_elements(berkeley_lock_names)-1,"",
berkeley_lock_names};
static void berkeley_print_error(const char *db_errpfx, char *buffer);
@@ -372,10 +372,12 @@ berkeley_cmp_packed_key(DB *file, const DBT *new_key, const DBT *saved_key)
if ((cmp=key_part->field->pack_cmp(new_key_ptr,saved_key_ptr,
key_part->length)))
return cmp;
- uint length=key_part->field->packed_col_length(new_key_ptr);
+ uint length=key_part->field->packed_col_length(new_key_ptr,
+ key_part->length);
new_key_ptr+=length;
key_length-=length;
- saved_key_ptr+=key_part->field->packed_col_length(saved_key_ptr);
+ saved_key_ptr+=key_part->field->packed_col_length(saved_key_ptr,
+ key_part->length);
}
return key->handler.bdb_return_if_eq;
}
@@ -433,7 +435,7 @@ berkeley_key_cmp(TABLE *table, KEY *key_info, const char *key, uint key_length)
}
if ((cmp=key_part->field->pack_cmp(key,key_part->length)))
return cmp;
- uint length=key_part->field->packed_col_length(key);
+ uint length=key_part->field->packed_col_length(key,key_part->length);
key+=length;
key_length-=length;
}
@@ -1552,7 +1554,7 @@ DBT *ha_berkeley::get_pos(DBT *to, byte *pos)
KEY_PART_INFO *end=key_part+table->key_info[primary_key].key_parts;
for ( ; key_part != end ; key_part++)
- pos+=key_part->field->packed_col_length((char*) pos);
+ pos+=key_part->field->packed_col_length((char*) pos,key_part->length);
to->size= (uint) (pos- (byte*) to->data);
}
return to;