work as expected": precision-losing conversion removed from
sys_var_thd_ulonglong.
mysql-test/r/variables.result:
Test case for Bug#3754
mysql-test/t/variables.test:
Test case for Bug#3754
sql/set_var.cc:
Fix for Bug#3754: precision-losing conversion removed from
sys_var_thd_ulonglong.
mysql-test/r/handler.result:
Test case for BUG#3649
mysql-test/t/handler.test:
Test case for BUG#3649
sql/sql_handler.cc:
Fix for BUG#3649: when doing an index scan for an equality condition, use index_next_same to retrieve subsequent rows.
by adding sleep-and-retries (max 4 times) if MASTER_POS_WAIT() returns NULL
in sync_with_master and sync_slave_with_master.
The problem showed up only today, in MySQL 5.0 in rpl_server_id2.test,
but may affect 4.x as well, so fixing it here. Note that I am also fixing
5.0 too, with the same exact patch, because I don't want to leave 5.0 broken
until the next 4.0->4.1->5.0 merge.
client/mysqltest.c:
in sync_with_master (and sync_slave_with_master), if MASTER_POS_WAIT() returns NULL,
it may be that the slave SQL thread did not have time to start yes, so we sleep
1 sec and retry, 4 times at most.
mysql-test/r/rpl_server_id2.result:
result update
mysql-test/t/rpl_server_id2.test:
master_slave.inc already drops the table
innobase/row/row0mysql.c:
Revert accidental modification to row_lock_table_autoinc_for_mysql()
made in ChangeSet@1.1794.1.1
mysql-test/r/innodb.result:
Revert ChangeSet@1.1794.1.1
and a comment update
mysql-test/r/rpl_server_id2.result:
result update
mysql-test/t/rpl_server_id2.test:
We stop the slave before cleaning up otherwise we'll get
'drop table t1' executed twice, so an error in the slave.err
(not critical).
sql/slave.cc:
update comment about 4.1 now that 4.1 is fixed (in a few minutes, exactly)
mysql-test/r/rpl_server_id1.result:
be port-independent
mysql-test/r/rpl_server_id2.result:
be port-independent
mysql-test/t/rpl_error_ignored_table.test:
we want to sleep 2 secs, not more; if we allow ourselves to sleep >=10 seconds, then
the get_lock() will be aborted and we will arrive to late for the KILL to have
the desired effect of generating an error code in the binlog.
mysql-test/t/rpl_server_id1.test:
be port-independent
mysql-test/t/rpl_server_id2.test:
be port-independent
(WL#794). This can be of interest in some recovery-from-backup scenarios, and also when you have
two databases in one mysqld, having a certain similarity and you want one db to be updated when the other is
(some sort of trigger).
Plus small fix for BUG#3568 "MySQL server crashes when built --with-debug and CHANGE MASTER +MASTER_POS_WAIT"
sql/mysqld.cc:
new option --replicate-same-server-id
sql/slave.cc:
new option replicate_same_server_id, to force a slave to execute its own queries.
Small fix for BUG#3568 "MySQL server crashes when built --with-debug and CHANGE MASTER +MASTER_POS_WAIT"
sql/slave.h:
new option --replicate-same-server-id
CREATE statement allowed extra unnecessary commas
mysql-test/r/alias.result:
Extra comma removed in CREATE statement
mysql-test/r/create.result:
New test for Bug 3481
mysql-test/r/func_str.result:
Extra comma removed in CREATE statement
mysql-test/r/rpl_multi_update.result:
Extra comma removed in CREATE statement
mysql-test/t/alias.test:
Extra comma removed in CREATE statement
mysql-test/t/create.test:
New test for bug 3481
mysql-test/t/func_str.test:
Extra comma removed in CREATE statement
mysql-test/t/rpl_multi_update.test:
Extra comma removed in CREATE statement
sql/sql_yacc.yy:
Fix for bug 3481
No path through the grammar which has no clauses
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Output TIMESTAMP in 4.1 format for 4.1 tables (or for TIMESTAMP(19)) (portability fix)
Fixed that INTERVAL can handle big integers. (Bug #3498)
Fixed that hostname="" works identical as hostname="%" for table/column grants (Bug #3473)
mysql-test/mysql-test-run.sh:
Fixed wrong http address (Bug #3460)
mysql-test/r/func_time.result:
Results for new test cases
mysql-test/t/func_time.test:
Added test of INTERVAL with big integers
scripts/mysqld_safe.sh:
Added html address to manual in case of error
sql/field.cc:
Output TIMESTAMP in 4.1 format for 4.1 tables (or for TIMESTAMP(19))
sql/item_timefunc.cc:
Fixed that INTERVAL can handle big integers. (Bug #3498)
sql/mysql_priv.h:
Removed not needed prototype
sql/sql_acl.cc:
Fixed that hostname="" works identical as hostname="%" for table/column grants (Bug #3473)
Moved GRANT_TABLE::GRANT_TABLE functions ou from class definition to make it possible to debug them
sql/structs.h:
Fix for long values to INTERVAL
Ensure that raid_chunks is not set to higher than 255 as this could cause problems with DROP DATABASE. (Bug #3182)
mysql-test/r/raid.result:
Test of raid_chunks > 255
mysql-test/t/raid.test:
Test of raid_chunks > 255
sql/item.cc:
Fixed wrong usage of str_value in Item::save_in_field
This could caused a stack overrun with some very special INSERT ... SELECT ... GROUP BY queries where the GROUP BY value was an expression that generated a NULL value. (Bug #3265)
The Item_copy_string::save_in_field() function is from 4.1 and helps optimized this case a bit
sql/item.h:
Fixed wrong usage of str_value in Item_copy_string::save_in_field
sql/sql_insert.cc:
More debug information
sql/table.cc:
Ensure that raid_chunks is not set to higher than 255 as this could cause problems with DROP DATABASE.
Another problem with values > 255 is that in the .frm file we store the chunks value in one byte.
(Bug #3182)
In tables_ok(), when there is no table having "updating==TRUE" in the list,
return that we don't replicate this statement (the slave is supposed to
replicate *changes* only).
In practice, the case can only happen for this statement:
DELETE t FROM t,u WHERE ... ;
tables_ok(t,u) will now return 0, which (check all_tables_not_ok())
will give a chance to tables_ok(t) to run.
sql/slave.cc:
In tables_ok(), when there is no table having "updating==TRUE" in the list,
return that we don't replicate this statement (the slave is supposed to
replicate *changes* only).
In practice, the case can only happen for this statement:
DELETE t FROM t,u WHERE ... ;
tables_ok(t,u) will now return 0, which (check all_tables_not_ok())
will give a chance to tables_ok(t) to run.
client/mysqldump.c:
changed quotation mark around DECIMAL field values from " to '
as fix of BUG #3361 "mysqldump quotes DECIMAL values"
mysql-test/r/mysqldump.result:
added test for Bug #3361 "mysqldump quotes DECIMAL values"
mysql-test/t/mysqldump.test:
added test for Bug #3361 "mysqldump quotes DECIMAL values"
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread"
1. added new status HA_ADMIN_REJECT and processing of it in mysql_admin_table
2. got ha_berkley::analyze to return HA_ADMIN_REJECT if there are any
transactions with the table..
mysql-test/r/bdb-crash.result:
added test for bug #2342
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread"
mysql-test/t/bdb-crash.test:
added test for bug #2342
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread"
sql/ha_berkeley.cc:
fixed bug #2342
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread"
we have to return new status "HA_ADMIN_REJECT" for ha_berkley::analyze
if there are any transaction for this table
so as bdb documentation says:
"The DB->stat method cannot be transaction protected"
sql/handler.h:
added new status of table info "HA_ADMIN_REJECT"
We have to return this status for bdb tables which
have any active transactions so as bdb-documentation says:
"The DB->stat method cannot be transaction-protected"
sql/sql_table.cc:
added processing of the new status HA_ADMIN_REJECT in mysql_admin_table
(reason to add this status is explained in comment
for commit on sql/handler.h)
result of the test case for FORCE INDEX on ORDER BY
order_by.test:
test case for FORCE INDEX on ORDER BY
sql_select.cc:
Changing behaviour that MySQL server takes FORCE INDEX clause into account when optimising ORDER BY clause
sql/sql_select.cc:
Changing behaviour that MySQL server takes FORCE INDEX clause into account when optimising ORDER BY clause
mysql-test/t/order_by.test:
test case for FORCE INDEX on ORDER BY
mysql-test/r/order_by.result:
result of the test case for FORCE INDEX on ORDER BY
This fixed a bug in SELECT DISTINCT when all selected parts where constants. (Bug #3203)
myisam/mi_create.c:
Allow keys with 0 segements.
mysql-test/r/myisam.result:
Test for problem with SELECT DISTINCT
mysql-test/t/myisam.test:
Test for problem with SELECT DISTINCT
A test case for the bug that allowed table names to be used in ORDER BY columns (But #3064)
union.test:
A test case for the bug that allowed table names to be used in ORDER BY columns (But #3064)
sql_union.cc:
A fix for a bug that allowed table names to be used in ORDER BY columns (But #3064)
sql/sql_union.cc:
A fix for a bug that allowed table names to be used in ORDER BY columns (But #3064)
mysql-test/t/union.test:
A test case for the bug that allowed table names to be used in ORDER BY columns (But #3064)
mysql-test/r/union.result:
A test case for the bug that allowed table names to be used in ORDER BY columns (But #3064)
mysql-test/r/grant_cache.result:
right results in query cache
mysql-test/t/grant_cache.test:
proving new results
sql/sql_cache.cc:
fixed statistic calculating in query cahe
this is better in this case:
- imagine user1 has created a temp table
- imagine user2 does FLUSH TABLES WITH READ LOCK, then takes a backup,
then RESET MASTER then UNLOCK TABLES, like mysqldump --first-slave
- then in the binlog you will finally have the DROP TEMPORARY TABLE,
but not the CREATE TEMPORARY TABLE, so when you later restore with
mysqlbinlog|mysql, mysql will complain that table does not exist.
Replication was already protected of this (it processes DROP TEMPORARY
TABLE as if there was a IF EXISTS), now I add it directly to the query
for mysqlbinlog|mysql to work.
mysql-test/r/drop_temp_table.result:
result update (query changed)
with a testcase.
We needed to init_master_info before we flush_master_info
in LOAD DATA FROM MASTER.
mysql-test/r/rpl000009.result:
result update
mysql-test/t/rpl000009.test:
adding a test for RESET SLAVE + LOAD DATA FROM MASTER
sql/repl_failsafe.cc:
LOAD DATA FROM MASTER udpates the master info in the slave,
so needs to ensure that it is properly inited first
(otherwise, after RESET SLAVE, we are flush_io_cache()ing
an uninitialized IO_CACHE master.info).
Note that it master info is already inited (active_mi->inited==1),
init_master_info() will do nothing, which is what we want.
Fix for a bug in the result
multi_update.test:
Fix for a bug in the test
mysql-test/t/multi_update.test:
Fix for a bug in the test
mysql-test/r/multi_update.result:
Fix for a bug in the result