summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authormonty@hundin.mysql.fi <>2001-11-25 13:56:03 +0200
committermonty@hundin.mysql.fi <>2001-11-25 13:56:03 +0200
commit22e418b4057ddf9e1fd1c1b9e16a4eb8c3dddbd7 (patch)
tree15a60e44c4bfcf310a49c4cb9a111e9f03e84757 /sql
parentfad7880b579e6133afecc932571993517e734871 (diff)
parent777fdb5d5cf3d1fd2fb4fe013acec60ef38f5bce (diff)
downloadmariadb-git-22e418b4057ddf9e1fd1c1b9e16a4eb8c3dddbd7.tar.gz
merge
Diffstat (limited to 'sql')
-rw-r--r--sql/ha_berkeley.cc3
-rw-r--r--sql/ha_innobase.cc3
-rw-r--r--sql/ha_innobase.h1
-rw-r--r--sql/handler.h1
-rw-r--r--sql/mysqld.cc2
-rw-r--r--sql/sql_base.cc4
-rw-r--r--sql/sql_select.cc2
7 files changed, 10 insertions, 6 deletions
diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc
index f52b99f5a12..c11b1bbd4f8 100644
--- a/sql/ha_berkeley.cc
+++ b/sql/ha_berkeley.cc
@@ -1879,13 +1879,14 @@ int ha_berkeley::delete_table(const char *name)
{
int error;
char name_buff[FN_REFLEN];
+ DBUG_ENTER("delete_table");
if ((error=db_create(&file, db_env, 0)))
my_errno=error; /* purecov: inspected */
else
error=file->remove(file,fn_format(name_buff,name,"",ha_berkeley_ext,2 | 4),
NULL,0);
file=0; // Safety
- return error;
+ DBUG_RETURN(error);
}
/*
diff --git a/sql/ha_innobase.cc b/sql/ha_innobase.cc
index f5f93be98a6..8c92e0635a5 100644
--- a/sql/ha_innobase.cc
+++ b/sql/ha_innobase.cc
@@ -544,13 +544,14 @@ innobase_init(void)
When using the embedded server, the datadirectory is not
in the current directory.
*/
- if (!mysql_embedded)
+ if (mysql_embedded)
default_path=mysql_real_data_home;
else
{
/* It's better to use current lib, to keep path's short */
current_lib[0]=FN_CURLIB;
current_lib[1]=FN_LIBCHAR;
+ current_lib[2]=0;
default_path=current_lib;
}
diff --git a/sql/ha_innobase.h b/sql/ha_innobase.h
index 95bba76c842..83e43b1d662 100644
--- a/sql/ha_innobase.h
+++ b/sql/ha_innobase.h
@@ -101,6 +101,7 @@ class ha_innobase: public handler
bytes */
uint max_key_length() const { return 7000; }
bool fast_key_read() { return 1;}
+ key_map keys_to_use_for_scanning() { return ~(key_map) 0; }
bool has_transactions() { return 1;}
int open(const char *name, int mode, uint test_if_locked);
diff --git a/sql/handler.h b/sql/handler.h
index b18118bb114..98358c3b3e4 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -231,6 +231,7 @@ public:
{ return ulonglong2double(data_file_length) / IO_SIZE + 1; }
virtual double read_time(ha_rows rows) { return rows; }
virtual bool fast_key_read() { return 0;}
+ virtual key_map keys_to_use_for_scanning() { return 0; }
virtual bool has_transactions(){ return 0;}
virtual uint extra_rec_buf_length() { return 0; }
virtual ha_rows estimate_number_of_rows() { return records+EXTRA_RECORDS; }
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 77a562f0217..41e71e72b07 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -736,8 +736,8 @@ void clean_up(bool print_message)
if (!opt_noacl)
udf_free();
#endif
- end_key_cache();
(void) ha_panic(HA_PANIC_CLOSE); /* close all tables and logs */
+ end_key_cache();
#ifdef USE_RAID
end_raid();
#endif
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index 32318180081..2f8c44c6f0b 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -1516,8 +1516,8 @@ TABLE *open_temporary_table(THD *thd, const char *path, const char *db,
{
tmp_table->next=thd->temporary_tables;
thd->temporary_tables=tmp_table;
- if(thd->slave_thread)
- ++slave_open_temp_tables;
+ if (thd->slave_thread)
+ slave_open_temp_tables++;
}
DBUG_RETURN(tmp_table);
}
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index abb1d891166..2b2dff1bdac 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -5346,7 +5346,7 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
retrieving all rows through an index.
*/
if (select_limit >= table->file->records)
- keys&= table->used_keys;
+ keys&= (table->used_keys | table->file->keys_to_use_for_scanning());
for (nr=0; keys ; keys>>=1, nr++)
{