diff options
author | unknown <monty@hundin.mysql.fi> | 2001-08-14 20:33:49 +0300 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2001-08-14 20:33:49 +0300 |
commit | 410dd0779c32b1975eceeab92a1e62ff099f37db (patch) | |
tree | 63b1bcf87d376e768395f4a058416187ee0aad95 /sql/item_sum.cc | |
parent | 97250b9c40a378659c6c4423461021231a3b551d (diff) | |
download | mariadb-git-410dd0779c32b1975eceeab92a1e62ff099f37db.tar.gz |
Remove warnings and portability fixes
New global read lock code
Fixed bug in DATETIME with WHERE optimization
Made UNION code more general.
include/global.h:
Remove warning on Linux Alpha
include/mysql_com.h:
Move some C variables inside extern "C" block.
include/mysqld_error.h:
New error mesages
myisam/mi_write.c:
cleanup
mysql-test/r/select.result:
Fix because of table lists now always has a database argument.
mysql-test/r/type_datetime.result:
Test for bug with datetime and where optimization
mysql-test/r/union.result:
Updated result
mysql-test/t/type_datetime.test:
New test for datetime
mysql-test/t/union.test:
More testing of error conditions
sql/item_sum.cc:
Remove warnings on Linux Alpha
sql/item_sum.h:
Cleanup
sql/lock.cc:
Cleaned up global lock handling
sql/log_event.cc:
Removed default arguments from declarations (not allowed in cxx)
sql/mysql_priv.h:
New prototypes
sql/mysqld.cc:
Fix for global locks
sql/opt_range.cc:
Cleanup
sql/share/czech/errmsg.txt:
New errors
sql/share/danish/errmsg.txt:
New errors
sql/share/dutch/errmsg.txt:
New errors
sql/share/english/errmsg.txt:
New errors
sql/share/estonian/errmsg.txt:
New errors
sql/share/french/errmsg.txt:
New errors
sql/share/german/errmsg.txt:
New errors
sql/share/greek/errmsg.txt:
New errors
sql/share/hungarian/errmsg.txt:
New errors
sql/share/italian/errmsg.txt:
New errors
sql/share/japanese/errmsg.txt:
New errors
sql/share/korean/errmsg.txt:
New errors
sql/share/norwegian-ny/errmsg.txt:
New errors
sql/share/norwegian/errmsg.txt:
New errors
sql/share/polish/errmsg.txt:
New errors
sql/share/portuguese/errmsg.txt:
New errors
sql/share/romanian/errmsg.txt:
New errors
sql/share/russian/errmsg.txt:
New errors
sql/share/slovak/errmsg.txt:
New errors
sql/share/spanish/errmsg.txt:
New errors
sql/share/swedish/errmsg.OLD:
New errors
sql/share/swedish/errmsg.txt:
New errors
sql/sql_acl.cc:
Use thd->host_or_ip
sql/sql_class.cc:
Use new global lock code
sql/sql_class.h:
host_or_ip
sql/sql_db.cc:
host_or_ip
sql/sql_delete.cc:
Use now global lock code
sql/sql_lex.h:
Cleanup of not used states and variables
sql/sql_parse.cc:
Use now global locks.
Made UNION code more general.
Change to use thd->hosts_or_ip.
TABLE_LIST now always has 'db' set.
sql/sql_repl.cc:
Portability fixes.
Changed wrong usage of my_vsnprintf -> my_snprintf
sql/sql_select.cc:
Changes for UNION
sql/sql_show.cc:
Cleanup
sql/sql_union.cc:
Handle 'select_result' outside of mysql_union().
sql/sql_yacc.yy:
Fixes for union
Diffstat (limited to 'sql/item_sum.cc')
-rw-r--r-- | sql/item_sum.cc | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/sql/item_sum.cc b/sql/item_sum.cc index c79e909658c..a7e608855ee 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -790,12 +790,12 @@ String *Item_std_field::val_str(String *str) static int simple_raw_key_cmp(void* arg, byte* key1, byte* key2) { - return memcmp(key1, key2, (int) arg); + return memcmp(key1, key2, *(uint*) arg); } static int simple_str_key_cmp(void* arg, byte* key1, byte* key2) { - return my_sortcmp(key1, key2, (int) arg); + return my_sortcmp(key1, key2, *(uint*) arg); } /* @@ -904,7 +904,6 @@ bool Item_sum_count_distinct::setup(THD *thd) { qsort_cmp2 compare_key; void* cmp_arg; - int key_len; // to make things easier for dump_leaf if we ever have to dump to MyISAM restore_record(table,2); @@ -937,7 +936,8 @@ bool Item_sum_count_distinct::setup(THD *thd) compare_key = (qsort_cmp2)simple_raw_key_cmp; break; } - cmp_arg = (void*)(key_len = field->pack_length()); + key_length = field->pack_length(); + cmp_arg = (void*) &key_length; rec_offset = 1; } else // too bad, cannot cheat - there is more than one field @@ -950,38 +950,38 @@ bool Item_sum_count_distinct::setup(THD *thd) (uint32*) thd->alloc(sizeof(uint32) * table->fields))) return 1; - for (key_len = 0, lengths=field_lengths; field < field_end; ++field) + for (key_length = 0, lengths=field_lengths; field < field_end; ++field) { uint32 length= (*field)->pack_length(); - key_len += length; + key_length += length; *lengths++ = length; if (!(*field)->binary()) all_binary = 0; // Can't break loop here } - rec_offset = table->reclength - key_len; + rec_offset = table->reclength - key_length; if (all_binary) { compare_key = (qsort_cmp2)simple_raw_key_cmp; - cmp_arg = (void*)key_len; + cmp_arg = (void*) &key_length; } else { compare_key = (qsort_cmp2) composite_key_cmp ; - cmp_arg = (void*)this; + cmp_arg = (void*) this; } } init_tree(&tree, min(max_heap_table_size, sortbuff_size/16), 0, - key_len, compare_key, 0, NULL, cmp_arg); + key_length, compare_key, 0, NULL, cmp_arg); use_tree = 1; /* - The only time key_len could be 0 is if someone does + The only time key_length could be 0 is if someone does count(distinct) on a char(0) field - stupid thing to do, but this has to be handled - otherwise someone can crash the server with a DoS attack */ - max_elements_in_tree = ((key_len) ? max_heap_table_size/key_len : + max_elements_in_tree = ((key_length) ? max_heap_table_size/key_length : 1); } return 0; |