summaryrefslogtreecommitdiff
path: root/sql/item_sum.cc
diff options
context:
space:
mode:
authorunknown <monty@hundin.mysql.fi>2001-08-14 20:33:49 +0300
committerunknown <monty@hundin.mysql.fi>2001-08-14 20:33:49 +0300
commit410dd0779c32b1975eceeab92a1e62ff099f37db (patch)
tree63b1bcf87d376e768395f4a058416187ee0aad95 /sql/item_sum.cc
parent97250b9c40a378659c6c4423461021231a3b551d (diff)
downloadmariadb-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.cc24
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;