summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <kostja@oak.local>2003-10-17 18:44:13 +0400
committerunknown <kostja@oak.local>2003-10-17 18:44:13 +0400
commit629ced9d814f7112b72a6ffb16986222d156dce6 (patch)
tree71ec5306ddcaf1a854ee277dbd6495edaa08aa3f /sql
parentca5383cfe561afe80b20cfbb7ac7cc0f4e6c429c (diff)
parent246d37076e75a509829b160e6d306067955a023d (diff)
downloadmariadb-git-629ced9d814f7112b72a6ffb16986222d156dce6.tar.gz
Merge oak.local:/home/kostja/mysql/mysql-4.0-root
into oak.local:/home/kostja/mysql/mysql-4.0-1274
Diffstat (limited to 'sql')
-rw-r--r--sql/slave.cc2
-rw-r--r--sql/sql_cache.cc26
-rw-r--r--sql/sql_test.cc4
3 files changed, 29 insertions, 3 deletions
diff --git a/sql/slave.cc b/sql/slave.cc
index 9c380408291..b679ac2f6b8 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -1337,7 +1337,7 @@ file '%s', errno %d)", fname, my_errno);
if (init_relay_log_pos(rli,NullS,BIN_LOG_HEADER_SIZE,0 /* no data lock */,
&msg))
{
- sql_print_error("Failed to open the relay log 'FIRST' (relay_log_pos 4");
+ sql_print_error("Failed to open the relay log 'FIRST' (relay_log_pos 4)");
goto err;
}
rli->master_log_name[0]= 0;
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc
index 97ec6033ad6..5d525c7be4e 100644
--- a/sql/sql_cache.cc
+++ b/sql/sql_cache.cc
@@ -2666,11 +2666,33 @@ my_bool Query_cache::move_by_type(byte **border,
relink(block, new_block, next, prev, pnext, pprev);
if (queries_blocks == block)
queries_blocks = new_block;
+ Query_cache_block_table *beg_of_table_table= block->table(0),
+ *end_of_table_table= block->table(n_tables);
+ byte *beg_of_new_table_table= (byte*) new_block->table(0);
+
for (TABLE_COUNTER_TYPE j=0; j < n_tables; j++)
{
Query_cache_block_table *block_table = new_block->table(j);
- block_table->next->prev = block_table;
- block_table->prev->next = block_table;
+
+ // use aligment from begining of table if 'next' is in same block
+ if ((beg_of_table_table <= block_table->next) &&
+ (block_table->next < end_of_table_table))
+ ((Query_cache_block_table *)(beg_of_new_table_table +
+ (((byte*)block_table->next) -
+ ((byte*)beg_of_table_table))))->prev=
+ block_table;
+ else
+ block_table->next->prev= block_table;
+
+ // use aligment from begining of table if 'prev' is in same block
+ if ((beg_of_table_table <= block_table->prev) &&
+ (block_table->prev < end_of_table_table))
+ ((Query_cache_block_table *)(beg_of_new_table_table +
+ (((byte*)block_table->prev) -
+ ((byte*)beg_of_table_table))))->next=
+ block_table;
+ else
+ block_table->prev->next = block_table;
}
DBUG_PRINT("qcache", ("after circle tt"));
*border += len;
diff --git a/sql/sql_test.cc b/sql/sql_test.cc
index 6498a52cc09..a217d40246f 100644
--- a/sql/sql_test.cc
+++ b/sql/sql_test.cc
@@ -22,7 +22,11 @@
#include "sql_select.h"
#include <hash.h>
#include <thr_alarm.h>
+#if defined(HAVE_MALLINFO) && defined(HAVE_MALLOC_H)
#include <malloc.h>
+#elif defined(HAVE_MALLINFO) && defined(HAVE_SYS_MALLOC_H)
+#include <sys/malloc.h>
+#endif
/* Intern key cache variables */
extern "C" pthread_mutex_t THR_LOCK_keycache;