Below is the list of changes that have just been committed into a local
5.0 repository of monty. When monty does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.1940 05/06/01 16:35:09 monty@stripped +19 -0
Code cleanups during code reviews
Ensure we get error if INSERT IGNORE ... SELECT fails
Fixed wrong key_part->key_length usage in index_merge
strings/decimal.c
1.51 05/06/01 16:35:05 monty@stripped +26 -10
Simple optimization
Code cleanups
sql/uniques.cc
1.23 05/06/01 16:35:05 monty@stripped +1 -1
Code cleanups
sql/table.h
1.100 05/06/01 16:35:04 monty@stripped +0 -3
Code cleanups
sql/table.cc
1.168 05/06/01 16:35:04 monty@stripped +4 -8
Code cleanups
sql/sql_update.cc
1.160 05/06/01 16:35:04 monty@stripped +1 -1
Code cleanups
sql/sql_show.cc
1.249 05/06/01 16:35:04 monty@stripped +10 -4
Safety fix if a LOT of errors are ignored
sql/sql_select.cc
1.330 05/06/01 16:35:04 monty@stripped +1 -1
Code cleanups
sql/sql_insert.cc
1.155 05/06/01 16:35:04 monty@stripped +2 -1
Ensure we get error if INSERT IGNORE ... SELECT fails
sql/sql_bitmap.h
1.8 05/06/01 16:35:04 monty@stripped +1 -1
Added missing return
sql/sql_base.cc
1.248 05/06/01 16:35:04 monty@stripped +1 -1
Code cleanups
sql/parse_file.cc
1.12 05/06/01 16:35:03 monty@stripped +2 -2
Code cleanups
sql/opt_range.cc
1.166 05/06/01 16:35:03 monty@stripped +58 -52
Made get_index_only_read_time() static (instad of inline) to increase portability (function was not declared before use)
Simple optimization
Fixed wrong key_part->key_length usage in index_merge
Removed not used variable n_used_covered
Indentation fixes & comment cleanups
sql/item_sum.cc
1.145 05/06/01 16:35:03 monty@stripped +6 -2
Code cleanups
sql/item_subselect.cc
1.105 05/06/01 16:35:02 monty@stripped +1 -1
Code cleanups
sql/item.cc
1.128 05/06/01 16:35:02 monty@stripped +4 -6
Code cleanups
sql/ha_ndbcluster.cc
1.180 05/06/01 16:35:01 monty@stripped +3 -3
Code cleanups
mysql-test/t/information_schema.test
1.37 05/06/01 16:35:01 monty@stripped +5 -0
Safety
mysql-test/r/information_schema.result
1.54 05/06/01 16:35:01 monty@stripped +1 -0
Safety
client/mysql.cc
1.171 05/06/01 16:35:01 monty@stripped +16 -15
Code cleanups & simply optimizations
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: monty
# Host: narttu.mysql.com
# Root: /home/my/mysql-5.0
--- 1.170/client/mysql.cc 2005-05-18 13:11:46 +03:00
+++ 1.171/client/mysql.cc 2005-06-01 16:35:01 +03:00
@@ -1657,11 +1657,12 @@
{
for (uint retry=0;; retry++)
{
+ int error;
if (!mysql_real_query(&mysql,buf,length))
return 0;
- int error= put_error(&mysql);
+ error= put_error(&mysql);
if (mysql_errno(&mysql) != CR_SERVER_GONE_ERROR || retry > 1 ||
- !opt_reconnect)
+ !opt_reconnect)
return error;
if (reconnect())
return error;
@@ -2237,22 +2238,23 @@
}
}
+
/* print_warnings should be called right after executing a statement */
-static void
-print_warnings()
+
+static void print_warnings()
{
- char query[30];
+ const char *query;
MYSQL_RES *result;
MYSQL_ROW cur;
+ my_ulonglong num_rows;
/* Get the warnings */
- strmov(query,"show warnings");
- mysql_real_query_for_lazy(query,strlen(query));
+ query= "show warnings";
+ mysql_real_query_for_lazy(query, strlen(query));
mysql_store_result_for_lazy(&result);
/* Bail out when no warnings */
- my_ulonglong num_rows = mysql_num_rows(result);
- if (num_rows == 0)
+ if (!(num_rows= mysql_num_rows(result)))
{
mysql_free_result(result);
return;
@@ -2266,13 +2268,12 @@
mysql_free_result(result);
}
-static const char
-*array_value(const char **array, char key)
+
+static const char *array_value(const char **array, char key)
{
- int x;
- for (x= 0; array[x]; x+= 2)
- if (*array[x] == key)
- return array[x + 1];
+ for (; *array; array+= 2)
+ if (**array == key)
+ return array[1];
return 0;
}
--- 1.127/sql/item.cc 2005-05-31 14:12:18 +03:00
+++ 1.128/sql/item.cc 2005-06-01 16:35:02 +03:00
@@ -2246,9 +2246,8 @@
SELECT_LEX_UNIT::item set only for subqueries, so test of it presence
can be barrier to stop before derived table SELECT or very outer SELECT
*/
- for(;
- cursel->master_unit()->item;
- cursel= cursel->outer_select())
+ for (; cursel->master_unit()->item;
+ cursel= cursel->outer_select())
{
Item_subselect *subselect_item= cursel->master_unit()->item;
subselect_item->used_tables_cache|= OUTER_REF_TABLE_BIT;
@@ -2528,9 +2527,8 @@
resolving)
*/
SELECT_LEX *previous_select= current_sel;
- for(;
- previous_select->outer_select() != last_select;
- previous_select= previous_select->outer_select())
+ for (; previous_select->outer_select() != last_select;
+ previous_select= previous_select->outer_select())
{
Item_subselect *prev_subselect_item=
previous_select->master_unit()->item;
--- 1.144/sql/item_sum.cc 2005-05-26 20:54:25 +03:00
+++ 1.145/sql/item_sum.cc 2005-06-01 16:35:03 +03:00
@@ -240,8 +240,12 @@
case REAL_RESULT:
sum= item->sum;
break;
- case STRING_RESULT: // This can happen with ROLLUP. Note that the value is already
- break; // copied at function call.
+ case STRING_RESULT:
+ /*
+ This can happen with ROLLUP. Note that the value is already
+ copied at function call.
+ */
+ break;
case ROW_RESULT:
default:
DBUG_ASSERT(0);
--- 1.165/sql/opt_range.cc 2005-05-31 12:29:22 +03:00
+++ 1.166/sql/opt_range.cc 2005-06-01 16:35:03 +03:00
@@ -396,7 +396,7 @@
static int get_index_merge_params(PARAM *param, key_map& needed_reg,
SEL_IMERGE *imerge, double *read_time,
ha_rows* imerge_rows);
-inline double get_index_only_read_time(const PARAM* param, ha_rows records,
+static double get_index_only_read_time(const PARAM* param, ha_rows records,
int keynr);
#ifndef DBUG_OFF
@@ -1115,6 +1115,7 @@
val1 First merged select
val2 Second merged select
*/
+
int QUICK_ROR_UNION_SELECT::queue_cmp(void *arg, byte *val1, byte *val2)
{
QUICK_ROR_UNION_SELECT *self= (QUICK_ROR_UNION_SELECT*)arg;
@@ -1582,7 +1583,7 @@
KEY_PART_INFO *key_part= param->table->key_info[pk].key_part;
KEY_PART_INFO *key_part_end= key_part +
param->table->key_info[pk].key_parts;
- for(;key_part != key_part_end; ++key_part)
+ for (;key_part != key_part_end; ++key_part)
{
bitmap_clear_bit(¶m->needed_fields, key_part->fieldnr);
}
@@ -1746,18 +1747,20 @@
double best_read_time= read_time;
if (cond)
- tree= get_mm_tree(¶m,cond);
-
- if (tree && tree->type == SEL_TREE::IMPOSSIBLE)
{
- records=0L; /* Return -1 from this function. */
- read_time= (double) HA_POS_ERROR;
- goto free_mem;
+ if ((tree= get_mm_tree(¶m,cond)))
+ {
+ if (tree->type == SEL_TREE::IMPOSSIBLE)
+ {
+ records=0L; /* Return -1 from this function. */
+ read_time= (double) HA_POS_ERROR;
+ goto free_mem;
+ }
+ if (tree->type != SEL_TREE::KEY &&
+ tree->type != SEL_TREE::KEY_SMALLER)
+ goto free_mem;
+ }
}
- else if (tree && tree->type != SEL_TREE::KEY &&
- tree->type != SEL_TREE::KEY_SMALLER)
- goto free_mem;
-
/*
Try to construct a QUICK_GROUP_MIN_MAX_SELECT.
@@ -2248,7 +2251,7 @@
clustered index)
*/
-inline double get_index_only_read_time(const PARAM* param, ha_rows records,
+static double get_index_only_read_time(const PARAM* param, ha_rows records,
int keynr)
{
double read_time;
@@ -2294,6 +2297,7 @@
param Parameter from test_quick_select function
idx Index of key in param->keys
sel_arg Set of intervals for a given key
+
RETURN
NULL - out of memory
ROR scan structure containing a scan for {idx, sel_arg}
@@ -2306,19 +2310,20 @@
uchar *bitmap_buf;
uint keynr;
DBUG_ENTER("make_ror_scan");
+
if (!(ror_scan= (ROR_SCAN_INFO*)alloc_root(param->mem_root,
sizeof(ROR_SCAN_INFO))))
DBUG_RETURN(NULL);
ror_scan->idx= idx;
ror_scan->keynr= keynr= param->real_keynr[idx];
- ror_scan->key_rec_length= param->table->key_info[keynr].key_length +
- param->table->file->ref_length;
+ ror_scan->key_rec_length= (param->table->key_info[keynr].key_length +
+ param->table->file->ref_length);
ror_scan->sel_arg= sel_arg;
ror_scan->records= param->table->quick_rows[keynr];
if (!(bitmap_buf= (uchar*)alloc_root(param->mem_root,
- param->fields_bitmap_size)))
+ param->fields_bitmap_size)))
DBUG_RETURN(NULL);
if (bitmap_init(&ror_scan->covered_fields, bitmap_buf,
@@ -2329,14 +2334,10 @@
KEY_PART_INFO *key_part= param->table->key_info[keynr].key_part;
KEY_PART_INFO *key_part_end= key_part +
param->table->key_info[keynr].key_parts;
- uint n_used_covered= 0;
for (;key_part != key_part_end; ++key_part)
{
if (bitmap_is_set(¶m->needed_fields, key_part->fieldnr))
- {
- n_used_covered++;
bitmap_set_bit(&ror_scan->covered_fields, key_part->fieldnr);
- }
}
ror_scan->index_read_cost=
get_index_only_read_time(param, param->table->quick_rows[ror_scan->keynr],
@@ -2357,6 +2358,7 @@
0 a = b
1 a > b
*/
+
static int cmp_ror_scan_info(ROR_SCAN_INFO** a, ROR_SCAN_INFO** b)
{
double val1= rows2double((*a)->records) * (*a)->key_rec_length;
@@ -2380,6 +2382,7 @@
0 a = b
1 a > b
*/
+
static int cmp_ror_scan_info_covering(ROR_SCAN_INFO** a, ROR_SCAN_INFO** b)
{
if ((*a)->used_fields_covered > (*b)->used_fields_covered)
@@ -2397,6 +2400,7 @@
return 0;
}
+
/* Auxiliary structure for incremental ROR-intersection creation */
typedef struct
{
@@ -2462,6 +2466,8 @@
dst->index_scan_costs= src->index_scan_costs;
dst->total_cost= src->total_cost;
}
+
+
/*
Get selectivity of a ROR scan wrt ROR-intersection.
@@ -2479,7 +2485,7 @@
where k_ij may be the same as any k_pq (i.e. keys may have common parts).
- A full row is retrieved iff entire cond holds.
+ A full row is retrieved if entire condition holds.
The recursive procedure for finding P(cond) is as follows:
@@ -2490,7 +2496,7 @@
Here R may still contain condition(s) equivalent to k_11=c_11.
Nevertheless, the following holds:
- P(k_11=c_11 AND R) = P(k_11=c_11) * P(R|k_11=c_11).
+ P(k_11=c_11 AND R) = P(k_11=c_11) * P(R | k_11=c_11).
Mark k_11 as fixed field (and satisfied condition) F, save P(F),
save R to be cond and proceed to recursion step.
@@ -2537,7 +2543,7 @@
( this is result of application of option b) of the recursion step for
parts of a single key).
Since it is reasonable to expect that most of the fields are not marked
- as fixed, we calcualate (3) as
+ as fixed, we calculate (3) as
n_{i1} n_{i_2}
(3) = n_{max_key_part} / ( --------- * --------- * .... )
@@ -2571,33 +2577,32 @@
max_range.key= (byte*) key_val;
max_range.flag= HA_READ_AFTER_KEY;
ha_rows prev_records= info->param->table->file->records;
- int i;
DBUG_ENTER("ror_intersect_selectivity");
- for(i= 0, sel_arg= scan->sel_arg; sel_arg;
- i++, sel_arg= sel_arg->next_key_part)
+
+ for (sel_arg= scan->sel_arg; sel_arg;
+ sel_arg= sel_arg->next_key_part)
{
DBUG_PRINT("info",("sel_arg step"));
cur_covered= test(bitmap_is_set(&info->covered_fields,
- (key_part + i)->fieldnr));
+ key_part[sel_arg->part].fieldnr));
if (cur_covered != prev_covered)
{
/* create (part1val, ..., part{n-1}val) tuple. */
+ ha_rows records;
+ if (!tuple_arg)
{
- if (!tuple_arg)
- {
- tuple_arg= scan->sel_arg;
- tuple_arg->store_min(key_part->length, &key_ptr, 0);
- }
- while (tuple_arg->next_key_part != sel_arg)
- {
- tuple_arg= tuple_arg->next_key_part;
- tuple_arg->store_min(key_part->length, &key_ptr, 0);
- }
+ tuple_arg= scan->sel_arg;
+ /* Here we use the length of the first key part */
+ tuple_arg->store_min(key_part->length, &key_ptr, 0);
+ }
+ while (tuple_arg->next_key_part != sel_arg)
+ {
+ tuple_arg= tuple_arg->next_key_part;
+ tuple_arg->store_min(key_part[tuple_arg->part].length, &key_ptr, 0);
}
- ha_rows records;
min_range.length= max_range.length= ((char*) key_ptr - (char*) key_val);
- records= info->param->table->file->
- records_in_range(scan->keynr, &min_range, &max_range);
+ records= (info->param->table->file->
+ records_in_range(scan->keynr, &min_range, &max_range));
if (cur_covered)
{
/* uncovered -> covered */
@@ -2625,6 +2630,7 @@
DBUG_RETURN(selectivity_mult);
}
+
/*
Check if adding a ROR scan to a ROR-intersection reduces its cost of
ROR-intersection and if yes, update parameters of ROR-intersection,
@@ -2662,7 +2668,7 @@
*/
static bool ror_intersect_add(ROR_INTERSECT_INFO *info,
- ROR_SCAN_INFO* ror_scan, bool is_cpk_scan)
+ ROR_SCAN_INFO* ror_scan, bool is_cpk_scan)
{
double selectivity_mult= 1.0;
@@ -3218,11 +3224,11 @@
quick_imerge->records= records;
quick_imerge->read_time= read_cost;
- for(TRP_RANGE **range_scan= range_scans; range_scan != range_scans_end;
- range_scan++)
+ for (TRP_RANGE **range_scan= range_scans; range_scan != range_scans_end;
+ range_scan++)
{
if (!(quick= (QUICK_RANGE_SELECT*)
- ((*range_scan)->make_quick(param, FALSE, &quick_imerge->alloc)))||
+ ((*range_scan)->make_quick(param, FALSE, &quick_imerge->alloc)))||
quick_imerge->push_quick_back(quick))
{
delete quick;
@@ -3251,7 +3257,7 @@
"creating ROR-intersect",
first_scan, last_scan););
alloc= parent_alloc? parent_alloc: &quick_intrsect->alloc;
- for(; first_scan != last_scan;++first_scan)
+ for (; first_scan != last_scan;++first_scan)
{
if (!(quick= get_quick_select(param, (*first_scan)->idx,
(*first_scan)->sel_arg, alloc)) ||
@@ -3293,7 +3299,7 @@
*/
if ((quick_roru= new QUICK_ROR_UNION_SELECT(param->thd, param->table)))
{
- for(scan= first_ror; scan != last_ror; scan++)
+ for (scan= first_ror; scan != last_ror; scan++)
{
if (!(quick= (*scan)->make_quick(param, FALSE, &quick_roru->alloc)) ||
quick_roru->push_quick_back(quick))
@@ -4196,7 +4202,7 @@
clone_flag=swap_clone_flag(clone_flag);
}
- // If one of the key is MAYBE_KEY then the found region may be smaller
+ /* If one of the key is MAYBE_KEY then the found region may be smaller */
if (key2->type == SEL_ARG::MAYBE_KEY)
{
if (key1->use_count > 1)
@@ -5329,8 +5335,8 @@
KEY_PART_INFO *pk_part= param->table->key_info[pk_number].key_part;
KEY_PART_INFO *pk_part_end= pk_part +
param->table->key_info[pk_number].key_parts;
- for(;(key_part!=key_part_end) && (pk_part != pk_part_end);
- ++key_part, ++pk_part)
+ for (;(key_part!=key_part_end) && (pk_part != pk_part_end);
+ ++key_part, ++pk_part)
{
if ((key_part->field != pk_part->field) ||
(key_part->length != pk_part->length))
@@ -7323,8 +7329,8 @@
DESCRIPTION
Test conditions (NGA1, NGA2) from get_best_group_min_max(). Namely,
- for each keypart field NGF_i not in GROUP-BY, check that there is a constant
- equality predicate among conds with the form (NGF_i = const_ci) or
+ for each keypart field NGF_i not in GROUP-BY, check that there is a
+ constant equality predicate among conds with the form (NGF_i = const_ci) or
(const_ci = NGF_i).
Thus all the NGF_i attributes must fill the 'gap' between the last group-by
attribute and the MIN/MAX attribute in the index (if present). If these
@@ -8689,7 +8695,7 @@
char buff[1024];
String tmp(buff,sizeof(buff),&my_charset_bin);
tmp.length(0);
- for(;start != end; start++)
+ for (;start != end; start++)
{
if (tmp.length())
tmp.append(',');
--- 1.247/sql/sql_base.cc 2005-05-30 19:56:07 +03:00
+++ 1.248/sql/sql_base.cc 2005-06-01 16:35:04 +03:00
@@ -753,7 +753,7 @@
t_name= table->table_name;
DBUG_PRINT("info", ("real table: %s.%s", d_name, t_name));
- for(;;)
+ for (;;)
{
if (!(res= find_table_in_global_list(table_list, d_name, t_name)) ||
(!res->table || res->table != table->table) &&
--- 1.154/sql/sql_insert.cc 2005-05-30 19:56:07 +03:00
+++ 1.155/sql/sql_insert.cc 2005-06-01 16:35:04 +03:00
@@ -128,7 +128,7 @@
/* it is join view => we need to find table for update */
List_iterator_fast<Item> it(fields);
Item *item;
- TABLE_LIST *tbl= 0;
+ TABLE_LIST *tbl= 0; // reset for call to check_single_table()
table_map map= 0;
while ((item= it++))
@@ -1012,6 +1012,7 @@
err:
info->last_errno= error;
+ thd->lex->current_select->no_error= 0; // Give error
table->file->print_error(error,MYF(0));
before_trg_err:
--- 1.329/sql/sql_select.cc 2005-05-30 19:56:08 +03:00
+++ 1.330/sql/sql_select.cc 2005-06-01 16:35:04 +03:00
@@ -13520,7 +13520,7 @@
(*table)->print(thd, str);
TABLE_LIST **end= table + tables->elements;
- for(TABLE_LIST **tbl= table + 1; tbl < end; tbl++)
+ for (TABLE_LIST **tbl= table + 1; tbl < end; tbl++)
{
TABLE_LIST *curr= *tbl;
if (curr->outer_join)
--- 1.248/sql/sql_show.cc 2005-05-31 11:15:18 +03:00
+++ 1.249/sql/sql_show.cc 2005-06-01 16:35:04 +03:00
@@ -1265,7 +1265,7 @@
name_buffer, wild)))
{
char *value=variables->value;
- const char *pos, *end;
+ const char *pos, *end; // We assign a lot of const's
long nr;
if (show_type == SHOW_SYS)
{
@@ -1336,8 +1336,8 @@
case SHOW_SLAVE_RETRIED_TRANS:
{
/*
- TODO: in 5.1 with multimaster, have one such counter per line in SHOW
- SLAVE STATUS, and have the sum over all lines here.
+ TODO: in 5.1 with multimaster, have one such counter per line in
+ SHOW SLAVE STATUS, and have the sum over all lines here.
*/
pthread_mutex_lock(&LOCK_active_mi);
pthread_mutex_lock(&active_mi->rli.data_lock);
@@ -1359,7 +1359,11 @@
}
else
{
- for (int i= 1; i < MAX_SLAVE_ERROR; i++)
+ /* 10 is enough assuming errors are max 4 digits */
+ int i;
+ for (i= 1;
+ i < MAX_SLAVE_ERROR && (uint) (end-buff) < sizeof(buff)-10;
+ i++)
{
if (bitmap_is_set(bitmap, i))
{
@@ -1369,6 +1373,8 @@
}
if (end != buff)
end--; // Remove last ','
+ if (i < MAX_SLAVE_ERROR)
+ end= strmov((char*) end, "..."); // Couldn't show all errors
}
break;
}
--- 1.159/sql/sql_update.cc 2005-05-30 19:54:31 +03:00
+++ 1.160/sql/sql_update.cc 2005-06-01 16:35:04 +03:00
@@ -710,7 +710,7 @@
tl->table->reginfo.lock_type= tl->lock_type;
}
}
- for(tl= table_list; tl; tl= tl->next_local)
+ for (tl= table_list; tl; tl= tl->next_local)
{
/* Check access privileges for table */
if (!tl->derived)
--- 1.167/sql/table.cc 2005-05-31 13:06:09 +03:00
+++ 1.168/sql/table.cc 2005-06-01 16:35:04 +03:00
@@ -2164,16 +2164,12 @@
{
if (*table)
return TRUE;
- else
- {
- *table= tbl;
- tbl->check_option= view->check_option;
- }
+ *table= tbl;
+ tbl->check_option= view->check_option;
}
}
- else
- if (tbl->check_single_table(table, map, view))
- return TRUE;
+ else if (tbl->check_single_table(table, map, view))
+ return TRUE;
}
return FALSE;
}
--- 1.99/sql/table.h 2005-05-25 18:33:32 +03:00
+++ 1.100/sql/table.h 2005-06-01 16:35:04 +03:00
@@ -436,10 +436,7 @@
bool skip_temporary; /* this table shouldn't be temporary */
/* TRUE if this merged view contain auto_increment field */
bool contain_auto_increment;
-#if 0
-#else
bool multitable_view; /* TRUE iff this is multitable view */
-#endif
/* FRMTYPE_ERROR if any type is acceptable */
enum frm_type_enum required_type;
char timestamp_buffer[20]; /* buffer for timestamp (19+1) */
--- 1.104/sql/item_subselect.cc 2005-05-31 15:22:43 +03:00
+++ 1.105/sql/item_subselect.cc 2005-06-01 16:35:02 +03:00
@@ -1646,7 +1646,7 @@
table_map subselect_engine::calc_const_tables(TABLE_LIST *table)
{
table_map map= 0;
- for(; table; table= table->next_leaf)
+ for (; table; table= table->next_leaf)
{
TABLE *tbl= table->table;
if (tbl && tbl->const_table)
--- 1.11/sql/parse_file.cc 2004-11-13 19:35:41 +02:00
+++ 1.12/sql/parse_file.cc 2005-06-01 16:35:03 +03:00
@@ -475,7 +475,7 @@
{
char *write_pos= str->str;
- for(; ptr < eol; ptr++, write_pos++)
+ for (; ptr < eol; ptr++, write_pos++)
{
char c= *ptr;
if (c == '\\')
@@ -635,7 +635,7 @@
File_option *parameter= parameters+first_param,
*parameters_end= parameters+required;
int len= 0;
- for(; parameter < parameters_end; parameter++)
+ for (; parameter < parameters_end; parameter++)
{
len= parameter->name.length;
// check length
--- 1.53/mysql-test/r/information_schema.result 2005-05-31 11:15:18 +03:00
+++ 1.54/mysql-test/r/information_schema.result 2005-06-01 16:35:01 +03:00
@@ -1,3 +1,4 @@
+DROP TABLE IF EXISTS t0,t1,t2;
show variables where variable_name like "skip_show_database";
Variable_name Value
skip_show_database OFF
--- 1.36/mysql-test/t/information_schema.test 2005-05-09 20:21:39 +03:00
+++ 1.37/mysql-test/t/information_schema.test 2005-06-01 16:35:01 +03:00
@@ -4,6 +4,11 @@
# Test for information_schema.schemata &
# show databases
+--disable_warnings
+DROP TABLE IF EXISTS t0,t1,t2;
+--enable_warnings
+
+
show variables where variable_name like "skip_show_database";
grant select, update, execute on test.* to mysqltest_2@localhost;
grant select, update on test.* to mysqltest_1@localhost;
--- 1.179/sql/ha_ndbcluster.cc 2005-05-26 20:54:24 +03:00
+++ 1.180/sql/ha_ndbcluster.cc 2005-06-01 16:35:01 +03:00
@@ -5590,8 +5590,8 @@
const NDBINDEX *idx= (NDBINDEX *) m_index[active_index].index;
const NdbOperation* lastOp= m_active_trans->getLastDefinedOperation();
NdbIndexScanOperation* scanOp= 0;
- for(; multi_range_curr<multi_range_end && curr+reclength <= end_of_buffer;
- multi_range_curr++)
+ for (; multi_range_curr<multi_range_end && curr+reclength <= end_of_buffer;
+ multi_range_curr++)
{
switch(index_type){
case PRIMARY_KEY_INDEX:
@@ -5728,7 +5728,7 @@
int range_no;
ulong reclength= table->s->reclength;
const NdbOperation* op= m_current_multi_operation;
- for(;multi_range_curr < m_multi_range_defined; multi_range_curr++)
+ for (;multi_range_curr < m_multi_range_defined; multi_range_curr++)
{
if (multi_range_curr->range_flag & UNIQUE_RANGE)
{
--- 1.22/sql/uniques.cc 2003-12-21 19:41:32 +02:00
+++ 1.23/sql/uniques.cc 2005-06-01 16:35:05 +03:00
@@ -178,7 +178,7 @@
Set initial state: first maxbuffer sequences contain max_n_elems elements
each, last sequence contains last_n_elems elements.
*/
- for(i = 0; i < (int)maxbuffer; i++)
+ for (i = 0; i < (int)maxbuffer; i++)
buff_elems[i]= max_n_elems;
buff_elems[maxbuffer]= last_n_elems;
--- 1.7/sql/sql_bitmap.h 2005-05-05 10:11:39 +03:00
+++ 1.8/sql/sql_bitmap.h 2005-06-01 16:35:04 +03:00
@@ -82,7 +82,7 @@
if (sizeof(buffer) >= 8)
return uint8korr(buffer);
DBUG_ASSERT(sizeof(buffer) >= 4);
- uint4korr(buffer);
+ return (ulonglong) uint4korr(buffer);
}
};
--- 1.50/strings/decimal.c 2005-05-10 09:25:22 +03:00
+++ 1.51/strings/decimal.c 2005-06-01 16:35:05 +03:00
@@ -1549,15 +1549,19 @@
}
else
{
- while (unlikely(*buf1 == 0) && buf1 >= to->buf)
- buf1--;
- if (buf1 < to->buf)
+ for (;;)
{
- decimal_make_zero(to);
- return E_DEC_OK;
+ if (likely(*buf1))
+ break;
+ if (buf1-- == to->buf)
+ {
+ decimal_make_zero(to);
+ return E_DEC_OK;
+ }
}
}
- if (scale<0) scale=0;
+ if (scale<0)
+ scale=0;
done:
to->frac=scale;
@@ -1727,11 +1731,14 @@
while (buf1 <=end1 && buf2 <= end2 && *buf1 == *buf2)
buf1++, buf2++;
if (buf1 <= end1)
+ {
if (buf2 <= end2)
carry= *buf2 > *buf1;
else
carry= 0;
+ }
else
+ {
if (buf2 <= end2)
carry=1;
else /* short-circuit everything: from1 == from2 */
@@ -1741,6 +1748,7 @@
decimal_make_zero(to);
return E_DEC_OK;
}
+ }
}
if (to == 0) /* decimal_cmp() */
@@ -1937,10 +1945,18 @@
{
dec1 *buf= to->buf;
dec1 *end= to->buf + intg0 + frac0;
- for (; (buf<end) && !*buf; buf++);
- if (buf == end)
- /* So we got decimal zero */
- decimal_make_zero(to);
+ DBUG_ASSERT(buf != end);
+ for (;;)
+ {
+ if (*buf)
+ break;
+ if (++buf == end)
+ {
+ /* We got decimal zero */
+ decimal_make_zero(to);
+ break;
+ }
+ }
}
return error;
}
| Thread |
|---|
| • bk commit into 5.0 tree (monty:1.1940) | monty | 1 Jun |