summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorbar@bar.mysql.r18.ru <>2003-04-01 12:45:16 +0500
committerbar@bar.mysql.r18.ru <>2003-04-01 12:45:16 +0500
commit5b50426f8f869b5f54d6a629e5fcac944ad6581b (patch)
treeef837bf4fdaa936bc57607d203b03ebdf06a0a26 /sql
parentffa5f52e2db11d3f72b57ae9a1c54c245c7359ca (diff)
downloadmariadb-git-5b50426f8f869b5f54d6a629e5fcac944ad6581b.tar.gz
Some optimization in CHARSET_INFO:
We don't need separate hash_sort() and hash_caseup() We don't need tosort(). strnxfrm will do the same.
Diffstat (limited to 'sql')
-rw-r--r--sql/filesort.cc6
-rw-r--r--sql/set_var.cc2
-rw-r--r--sql/sql_acl.cc8
-rw-r--r--sql/sql_class.cc4
-rw-r--r--sql/sql_udf.cc3
-rw-r--r--sql/table.cc3
6 files changed, 10 insertions, 16 deletions
diff --git a/sql/filesort.cc b/sql/filesort.cc
index 0f6e4d7abba..4c2ba1e1a59 100644
--- a/sql/filesort.cc
+++ b/sql/filesort.cc
@@ -505,10 +505,8 @@ static void make_sortkey(register SORTPARAM *param,
}
else
{
- if (res->ptr() != (char*) to)
- memcpy(to,res->ptr(),length);
- bzero((char *)to+length,diff);
- my_tosort(cs, (char*) to,length);
+ my_strnxfrm(cs,(uchar*)to,length,(const uchar*)res->ptr(),length);
+ bzero((char *)to+length,diff);
}
break;
}
diff --git a/sql/set_var.cc b/sql/set_var.cc
index d2a8355dbc5..0babec456b8 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -1465,7 +1465,7 @@ void set_var_init()
hash_init(&system_variable_hash, system_charset_info,
array_elements(sys_variables),0,0,
- (hash_get_key) get_sys_var_length,0, HASH_CASE_INSENSITIVE);
+ (hash_get_key) get_sys_var_length,0,0);
sys_var **var, **end;
for (var= sys_variables, end= sys_variables+array_elements(sys_variables) ;
var < end;
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 5f8f71e1bd4..1be22404dbb 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -983,7 +983,7 @@ static void init_check_host(void)
VOID(my_init_dynamic_array(&acl_wild_hosts,sizeof(struct acl_host_and_ip),
acl_users.elements,1));
VOID(hash_init(&acl_check_hosts,&my_charset_latin1,acl_users.elements,0,0,
- (hash_get_key) check_get_key,0,HASH_CASE_INSENSITIVE));
+ (hash_get_key) check_get_key,0,0));
if (!allow_all_hosts)
{
for (uint i=0 ; i < acl_users.elements ; i++)
@@ -1639,8 +1639,7 @@ public:
hash_key = (char*) alloc_root(&memex,key_length);
strmov(strmov(strmov(hash_key,user)+1,db)+1,tname);
(void) hash_init(&hash_columns,&my_charset_latin1,
- 0,0,0, (hash_get_key) get_key_column,0,
- HASH_CASE_INSENSITIVE);
+ 0,0,0, (hash_get_key) get_key_column,0,0);
}
GRANT_TABLE (TABLE *form, TABLE *col_privs)
@@ -1674,8 +1673,7 @@ public:
cols = fix_rights_for_column(cols);
(void) hash_init(&hash_columns,&my_charset_latin1,
- 0,0,0, (hash_get_key) get_key_column,0,
- HASH_CASE_INSENSITIVE);
+ 0,0,0, (hash_get_key) get_key_column,0,0);
if (cols)
{
int key_len;
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 3a66e906837..0b8e6a192b4 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -142,7 +142,7 @@ THD::THD():user_time(0), is_fatal_error(0),
bzero((char*) &warn_root,sizeof(warn_root));
init_alloc_root(&warn_root, 1024, 0);
user_connect=(USER_CONN *)0;
- hash_init(&user_vars, system_charset_info, USER_VARS_HASH_SIZE, 0, 0,
+ hash_init(&user_vars, &my_charset_bin, USER_VARS_HASH_SIZE, 0, 0,
(hash_get_key) get_var_key,
(hash_free_key) free_user_var,0);
@@ -246,7 +246,7 @@ void THD::change_user(void)
cleanup();
cleanup_done= 0;
init();
- hash_init(&user_vars, system_charset_info, USER_VARS_HASH_SIZE, 0, 0,
+ hash_init(&user_vars, &my_charset_bin, USER_VARS_HASH_SIZE, 0, 0,
(hash_get_key) get_var_key,
(hash_free_key) free_user_var, 0);
}
diff --git a/sql/sql_udf.cc b/sql/sql_udf.cc
index 450f1dd09ae..42f4dddea8d 100644
--- a/sql/sql_udf.cc
+++ b/sql/sql_udf.cc
@@ -128,8 +128,7 @@ void udf_init()
init_sql_alloc(&mem, 1024,0);
THD *new_thd = new THD;
if (!new_thd ||
- hash_init(&udf_hash,system_charset_info,
- 32,0,0,get_hash_key, NULL, HASH_CASE_INSENSITIVE))
+ hash_init(&udf_hash,system_charset_info,32,0,0,get_hash_key, NULL, 0))
{
sql_print_error("Can't allocate memory for udf structures");
hash_free(&udf_hash);
diff --git a/sql/table.cc b/sql/table.cc
index 9bea4a09b05..fda1fcb36e4 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -363,8 +363,7 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag,
use_hash= !hash_init(&outparam->name_hash,
system_charset_info,
outparam->fields,0,0,
- (hash_get_key) get_field_name,0,
- HASH_CASE_INSENSITIVE);
+ (hash_get_key) get_field_name,0,0);
for (i=0 ; i < outparam->fields; i++, strpos+=field_pack_length, field_ptr++)
{