Corrected test case for the bug#14169 to make it pass in --ps-protocol mode.
mysql-test/r/func_gconcat.result:
Corrected test case for the bug#14169 to make it pass in --ps-protocol mode.
While executing a trigger, we have to set thd->abort_on_warning to the value
it had at trigger creation time.
mysql-test/r/trigger.result:
Add result for bug#6951.
mysql-test/t/trigger.test:
Add test case for bug#6951.
sql/sp_head.cc:
While executing a trigger, set thd->abort_on_warning to the value it had at
trigger creation time.
Updating data in HEAP table with BTREE index results in wrong index_length
counter value, which keeps growing after each update.
When inserting new record into tree counter is incremented by:
sizeof(TREE_ELEMENT) + key_size + tree->size_of_element
But when deleting element from tree it doesn't decrement counter by key_size:
sizeof(TREE_ELEMENT) + tree->size_of_element
This fix makes accurate allocated memory counter for tree. That is
decrease counter by key_size when deleting tree element.
heap/hp_delete.c:
Added size of the key to tree_delete() for accurate allocated memory counter.
include/my_tree.h:
Added size of the key to tree_delete() for accurate allocated memory counter.
myisam/myisamlog.c:
Added size of the key to tree_delete() for accurate allocated memory counter.
mysql-test/r/heap_btree.result:
Testcase for BUG#18160.
mysql-test/t/heap_btree.test:
Testcase for BUG#18160.
mysys/tree.c:
Added size of the key to tree_delete() for accurate allocated memory counter.
Note that this size is optional. If one doesn't need precise counter it is safe
to pass 0 as key_size.
The bug caused a reported index corruption in the cases when
key_cache_block_size was not a multiple of myisam_block_size,
e.g. when key_cache_block_size=1536 while myisam_block_size=1024.
mysql-test/r/key_cache.result:
Added a test case for bug #19079.
mysql-test/t/key_cache.test:
Added a test case for bug #19079.
mysql-test/r/ctype_latin2_ch.result:
Drot table at end of test
mysql-test/r/grant2.result:
Drop users
mysql-test/r/openssl_1.result:
Drop users
mysql-test/r/rpl_openssl.result:
Drop users
mysql-test/r/sp-security.result:
Drop users
mysql-test/r/sp_notembedded.result:
Drop table
mysql-test/r/trigger.result:
Drop table
mysql-test/t/ctype_latin2_ch.test:
Drop table
mysql-test/t/grant2.test:
Drop users
mysql-test/t/openssl_1.test:
Drop users
mysql-test/t/rpl_openssl.test:
Drop users
mysql-test/t/sp-security.test:
Drop users
mysql-test/t/sp_notembedded.test:
Drop table
mysql-test/t/trigger.test:
Drop table
We must use the db key length in sp_drop_db_routines (and not the
number of characters), or long db names will be truncated in the key.
mysql-test/r/sp.result:
Updated results for new test case (BUG#18344)
mysql-test/t/sp.test:
Added new test case for BUG#18344.
sql/sp.cc:
In sp_drop_db_routines(), give the key field's ("db") key length
instead of the number of characters to index_read(), or the key
packing will truncate long db names.
into mysql.com:/extern/mysql/5.0/bug18787/mysql-5.0-runtime
mysql-test/r/sp.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/item_func.cc:
Auto merged
Removed sp-goto.test, sp-goto.result and all (disabled) GOTO code.
Also removed some related code that's not needed any more (no possible
unresolved label references any more, so no need to check for them).
NB: Keeping the ER_SP_GOTO_IN_HNDLR in errmsg.txt; it might become useful
in the future, and removing it (and thus re-enumerating error codes)
might upset things. (Anything referring to explicit error codes.)
BitKeeper/deleted/.del-sp-goto.result~f343103c63f64b7a:
Delete: mysql-test/r/sp-goto.result
BitKeeper/deleted/.del-sp-goto.test~5054d3f729692d3d:
Delete: mysql-test/t/sp-goto.test
mysql-test/t/disabled.def:
sp-goto.test no longer exists.
sql/lex.h:
Removed (disabled) GOTO definitions.
sql/sp_head.cc:
Removed sp_head::check_backpatch() and simplified sp_head::backpatch().
Without GOTO, unresolved label references are not possible, so no need
to check for them.
sql/sp_head.h:
Removed sp_head::check_backpatch(). (Not needed with no GOTO)
sql/sp_pcontext.cc:
SP_LAB_GOTO was renamed to SP_LAB_IMPL
sql/sp_pcontext.h:
Removed SP_LAB_REF (no longer needed) and renamed SP_LAB_GOTO
to SP_LAB_IMPL, since it's only used for implicit labels now.
sql/sql_yacc.yy:
Removed GOTO symbols and (disabled) code, and the no longer needed
sp_head::check_backpatch() calls.
- Strip surrounding ''s from username when a new user connects. There
is no user 'a@', it should be a@
mysql-test/r/grant2.result:
Update test result
mysql-test/t/grant2.test:
Add tests for bug 13310
sql/sql_parse.cc:
Strip surrounding ''s from username when a new user connects. There
is no user 'a@', it should be a@
into mysql.com:/usr/home/bar/mysql-5.0
mysql-test/r/ctype_ucs.result:
Auto merged
mysql-test/t/ctype_ucs.test:
Auto merged
sql/item_timefunc.h:
Auto merged
sql/item_timefunc.cc:
After merge fix
does not have "NOT NULL" attribute set. Also, calculate the padding
characters more safely, so that a negative number doesn't cause it to
print MAXINT-n spaces.
mysql-test/r/mysql.result:
Add test result.
mysql-test/t/mysql.test:
Add test.
mysql-test/r/view.result:
BUG#14308 test suite.
mysql-test/t/view.test:
BUG#14308 test suite.
sql/share/errmsg.txt:
New error message about a recursive view.
sql/sql_view.cc:
The check of view recursion.
into mysql.com:/opt/local/work/mysql-5.0-runtime-merge
sql/item.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/mysqld.cc:
SCCS merged
into three.local.lan:/home/matthias/Arbeit/mysql-5.0/src-1
mysql-test/r/rpl_relayrotate.result:
Auto merged
mysql-test/t/rpl_deadlock.test:
Auto merged
mysql-test/t/rpl_relayrotate.test:
Auto merged
mysql-test/t/rpl_until.test:
Auto merged
BitKeeper/deleted/.del-disabled.def:
Auto merged
mysql-test/r/rpl_deadlock.result:
Updated result
MySQL 4.1
and Bug#16920 rpl_deadlock_innodb fails in show slave status (reported for MySQL 5.1)
- backport of several fixes done in MySQL 5.0 to 4.1
- fix for new discovered instability (see comment on Bug#12429 + Bug#16920)
- reenabling of testcases
mysql-test/r/rpl_deadlock.result:
Updated results
mysql-test/r/rpl_relayrotate.result:
Updated results
mysql-test/t/disabled.def:
Reenabling of tests
mysql-test/t/rpl_deadlock.test:
- replace sleep with real_sleep (backport fix for Bug#15624 MySQL 5.0)
- egalized value for Slave_IO_Running
- line 105 (backport fix for Bug#12429 MySQL 5.0)
- line 85 (see comment in Bug#12429
+ Bug#16920 rpl_deadlock_innodb fails in show slave status)
- improve readability of show slave status output (--vertical_results)
mysql-test/t/rpl_relayrotate.test:
- Replace select ... with select max(a)
- add sync_with_master (backport fix done by Kristian in MySQL 5.0 because of timing
problems similar to Bug#15624)
mysql-test/t/rpl_until.test:
Add wait_for_slave_to_stop like in the current MySQL 5.0 version of this test.
I assume this makes the test results more predictable.
into sanja.is.com.ua:/home/bell/mysql/bk/work-5.0
BitKeeper/deleted/.del-acinclude.m4~f4ab416bac5003:
Auto merged
configure.in:
Auto merged
mysql-test/r/func_op.result:
Auto merged
sql/item_func.cc:
Auto merged
get_best_covering_ror_intersect() was copying ror_scans starting from the
end of the array and not from its beginning.
mysql-test/r/index_merge_innodb.result:
Testcase for BUG#19021
mysql-test/t/index_merge_innodb.test:
Testcase for BUG#19021
sql/opt_range.cc:
BUG#19021: In get_best_covering_ror_intersect(), the array of pointers to
scans to be used is [tree->ror_scans, ror_scan_mark), and not
[ror_scan_mark, ...)
Conversion from int and real numbers to UCS2 didn't work fine:
CONVERT(100, CHAR(50) UNICODE)
CONVERT(103.9, CHAR(50) UNICODE)
The problem appeared because numbers have binary charset, so,
simple charset recast binary->ucs2 was performed
instead of real conversion.
Fixed to make numbers pretend to be non-binary.
mysql-test/r/ctype_ucs.result:
Adding test case
mysql-test/t/ctype_ucs.test:
Adding test case
sql/item_timefunc.cc:
Adding new member from_cs, to replace my_charset_bin
to a non-binary charset when converting from numbers to UCS2
sql/item_timefunc.h:
Adding new member from_cs, to replace my_charset_bin
to a non-binary charset when converting from numbers to UCS2
limit.
mysql-test/r/ps.result:
Post-merge fixes.
mysql-test/t/ps.test:
Post-merge fixes.
sql/share/errmsg.txt:
Add a new error message for max_prepared_stmt_count limit,
we can do it in 5.0
sql/sql_class.cc:
Post-merge fixes.
sql/sql_class.h:
Post-merge fixes.
sql/sql_prepare.cc:
Post-merge fixes.
used
In a simple queries a result of the GROUP_CONCAT() function was always of
varchar type.
But if length of GROUP_CONCAT() result is greater than 512 chars and temporary
table is used during select then the result is converted to blob, due to
policy to not to store fields longer than 512 chars in tmp table as varchar
fields.
In order to provide consistent behaviour, result of GROUP_CONCAT() now
will always be converted to blob if it is longer than 512 chars.
Item_func_group_concat::field_type() is modified accordingly.
mysql-test/t/func_gconcat.test:
Added test case for bug#14169: type of group_concat() result changed to blob if tmp_table was used
mysql-test/r/func_gconcat.result:
Added test case for bug#14169: type of group_concat() result changed to blob if tmp_table was used
sql/unireg.h:
Added the CONVERT_IF_BIGGER_TO_BLOB constant
sql/sql_select.cc:
Fixed bug#14169: type of group_concat() result changed to blob if tmp_table was used
The unnamed constant 255 in the create_tmp_field() and create_tmp_field_from_item() functions now defined as the CONVERT_IF_BIGGER_TO_BLOB constant.
The create_tmp_field() function now converts the Item_sum string result to a blob field based on its char length.
sql/item_sum.h:
Fixed bug#14169: type of group_concat() result changed to blob if tmp_table was used
To the Item_func_group_concat calls added the member function field_type() which returns the BLOB or VAR_STRING type based on the items length.
sql/item_func.cc:
Fixed bug#14169: type of group_concat() result changed to blob if tmp_table was used
In the Item_func::tmp_table_field() function the unnamed constant 255 is changed to the CONVERT_IF_BIGGER_TO_BLOB constant.
The Item_func::tmp_table_field() function now measures the result length in chars rather than bytes when converting string result to a blob.
mysql-test/r/innodb.result:
result added
mysql-test/t/innodb.test:
testcase
sql/ha_myisam.cc:
HA_CAN_RTREEKEYS added to ha_myisam
sql/handler.h:
HA_CAN_RTREEKEYS defined
sql/share/errmsg.txt:
error message added
sql/sql_table.cc:
check that the handler allows SPATIAL keys
CONNECTION_ID() was implemented as a constant Item, i.e. an instance of
Item_static_int_func class holding value computed at creation time.
Since Items are created on parsing, and trigger statements are parsed
on table open, the first connection to open a particular table would
effectively set its own CONNECTION_ID() inside trigger statements for
that table.
Re-implement CONNECTION_ID() as a class derived from Item_int_func, and
compute connection_id on every call to fix_fields().
mysql-test/r/trigger.result:
Add result for bug#16461.
mysql-test/t/trigger.test:
Add test case for bug#16461.
sql/item.cc:
Remove now unused class Item_static_int_func.
sql/item.h:
Remove now unused class Item_static_int_func.
sql/item_create.cc:
Use new implementation of CONNECTION_ID().
sql/item_func.cc:
Re-implement CONNECTION_ID() as Item_func_connection_id
(was Item_static_int_func). Set max_length to 10, as it was before.
Compute connection_id dynamically on every call to fix_fields().
sql/item_func.h:
Re-implement CONNECTION_ID() as Item_func_connection_id
(was Item_static_int_func).
a race between updating and checking Max_used_connections. This is done in
a loop until either disconnect finished or timeout expired. In a latter case
the test will fail.
mysql-test/r/status.result:
Update result to match changes in test case.
mysql-test/t/status.test:
Close extra conections in previous test.
In test for bug#15933 we have to wait for all disconnects to finish to avoid
a race between updating and checking Max_used_connections. This is done in
a loop until either disconnect finished or timeout expired. In a latter case
the test will fail.
Use con1, con2, con3 instead of con3, con4, con5.
- Add variable "have_dynamic_loading" and use it to check if the udf test should be run.
mysql-test/include/have_udf.inc:
Use variable "have_dynamic_loading" to to determine if there is support for udf's
mysql-test/r/have_udf.require:
Use variable "have_dynamic_loading" to to determine if there is support for udf's
mysql-test/t/disabled.def:
Remove udf from disabled
sql/mysql_priv.h:
Add have_dlopen variable
sql/mysqld.cc:
Add have_dlopen variable
sql/set_var.cc:
Add have_dlopen variable and name it "have_dynamic_loading" in "SHOW VARIABLES"
If the second or the third argument of a BETWEEN predicate was
a constant expression, like '2005.09.01' - INTERVAL 6 MONTH,
while the other two arguments were fields then the predicate
was evaluated incorrectly and the query returned a wrong
result set.
The bug was introduced in 5.0.17 when in the fix for 12612.
mysql-test/r/func_time.result:
Added a test case for bug #18618.
mysql-test/t/func_time.test:
Added a test case for bug #18618.
mysql-test/r/innodb.result:
Fix for bug #14360: Date Between Interval Broken.
- test case.
mysql-test/t/innodb.test:
Fix for bug #14360: Date Between Interval Broken.
- test case.
sql/item_timefunc.cc:
Fix for bug #14360: Date Between Interval Broken.
- Item_date_add_interval::eq() introduced.
sql/item_timefunc.h:
Fix for bug #14360: Date Between Interval Broken.
- Item_date_add_interval::eq() introduced.
a misnamed function
... in the presence of a continue handler. The problem was that with a
handler, it continued to execute as if function existed and had set a
useful return value (which it hadn't).
The fix is to set a null return value and do an error return when a function
wasn't found.
mysql-test/r/sp.result:
Updated results for a new test case (BUG#18787).
mysql-test/t/sp.test:
New testcase for BUG#18787.
sql/item_func.cc:
Don't set "out of resources" error in Item_func_sp::execute() if no
result field is returned, it's simply wrong, it can be sometthing else,
like a function not found. Instead set null_value and return error.
Also, set "out of resources" when field creation fails in
Item_func_sp::sp_result_field() and Item_func_sp::tmp_table_field().
into mysql.com:/usr/home/ram/work/mysql-4.1
mysql-test/r/func_op.result:
Auto merged
sql/item_func.cc:
Auto merged
mysql-test/t/func_op.test:
SCCS merged
env variable name is fixed.
mysql-test/include/get_binlog_dump_thread_id.inc:
Fixing to right env $var name.
mysql-test/r/rpl_temporary.result:
results
The function agg_cmp_type in item_cmpfunc.cc neglected the fact that
the first argument in a BETWEEN/IN predicate could be a field of a view.
As a result in the case when the retrieved table was hidden by a view
over it and the arguments in the BETWEEN/IN predicates are of
the date/time type the function did not perform conversion of
the constant arguments to the same format as the first field argument.
If formats of the arguments differed it caused wrong a evaluation of
the predicates.
mysql-test/r/view.result:
Added a test case for bug #16069.
mysql-test/t/view.test:
Added a test case for bug #16069.
Removing the problematic line from include test file.
mysql-test/include/get_binlog_dump_thread_id.inc:
replacing replace_result by disable_query_log
mysql-test/r/rpl_temporary.result:
results
into mysql.com:/opt/local/work/mysql-4.1-16365
sql/mysql_priv.h:
Auto merged
sql/sql_class.h:
Auto merged
mysql-test/r/ps.result:
Manual merge
mysql-test/t/ps.test:
Manual merge
too many open statements". The patch adds a new global variable
@@max_prepared_stmt_count. This variable limits the total number
of prepared statements in the server. The default value of
@@max_prepared_stmt_count is 16382. 16382 small statements
(a select against 3 tables with GROUP, ORDER and LIMIT) consume
100MB of RAM. Once this limit has been reached, the server will
refuse to prepare a new statement and return ER_UNKNOWN_ERROR
(unfortunately, we can't add new errors to 4.1 without breaking 5.0). The limit is changeable after startup
and can accept any value from 0 to 1 million. In case
the new value of the limit is less than the current
statement count, no new statements can be added, while the old
still can be used. Additionally, the current count of prepared
statements is now available through a global read-only variable
@@prepared_stmt_count.
mysql-test/r/ps.result:
Test results fixed (a test case for Bug#16365)
mysql-test/t/ps.test:
A test case for Bug#16365 "Prepared Statements: DoS with too many
open statements". Also fix statement leaks in other tests.
sql/mysql_priv.h:
Add declarations for new global variables.
sql/mysqld.cc:
Add definitions of max_prepared_stmt_count, prepared_stmt_count.
sql/set_var.cc:
Implement support for @@prepared_stmt_count and
@@max_prepared_stmt_count. Currently these variables are queried
without acquiring LOCK_prepared_stmt_count due to limitations of
the set_var/sys_var class design. Updates are, however, protected
with a lock.
sql/set_var.h:
New declarations to add support for @@max_prepared_stmt_count.
Implement a new class, where the lock to be used when updating
a variable is a parameter.
sql/sql_class.cc:
Add accounting of the total number of prepared statements in the
server to the methods of Statement_map.
sql/sql_class.h:
Add accounting of the total number of prepared statements in the
server to the methods of Statement_map.
sql/sql_prepare.cc:
Statement_map::insert will now send a message in case of an
error.
gives wrong results". Implement previously missing
Item_row::cleanup. The bug is not repeatable in 5.0, probably
due to a coincidence: the problem is present in 5.0 as well.
mysql-test/r/ps.result:
Update the result file (Bug#16248)
mysql-test/t/ps.test:
Add a test case for Bug#16248 "WHERE (col1,col2) IN ((?,?)) gives
wrong results"
sql/item_row.cc:
Implement Item_row::cleanup(): we should reset used_tables_cache
before reexecution of a prepared statement. In case ROW
arguments contain a placeholder, used_tables_cache has PARAM_TABLE
bit set in statement prepare. As a result, when executing a statement,
the condition push down algorithm (make_cond_for_table) would think
that the WHERE clause belongs to the non-existent PARAM_TABLE and
wouldn't attach the WHERE clause to any of the real tables,
effectively optimizing the clause away.
sql/item_row.h:
Remove a never used member 'array_holder'. Add declaration for
Item_row::cleanup.
Idea of the fix is for master to send FD event with `created' as 0
to reconnecting slave (upon slave_net_timeout, no master crash) to avoid destroying temp tables.
In a case of a connect by slave to the master after its crash temp tables have been already
cleaned up so that slave can not keep `orphan' temp tables.
mysql-test/r/rpl_temporary.result:
results
mysql-test/t/rpl_temporary.test:
wait-free addon to check temp tables are ok after slave reconnect.
sql/sql_repl.cc:
Storing zero for assigning to `created' of FD event on the reconnecting slave.
mysql-test/include/get_binlog_dump_thread_id.inc:
mysqltest's preudo-macro to calculate $id master dump thread id
After FLUSH STATUS max_used_connections was reset to 0, and haven't
been updated while cached threads were reused, until the moment a new
thread was created.
The first suggested fix from original bug report was implemented:
a) On flushing the status, set max_used_connections to
threads_connected, not to 0.
b) Check if it is necessary to increment max_used_connections when
taking a thread from the cache as well as when creating new threads
mysql-test/r/status.result:
Add result for bug#15933.
mysql-test/t/status.test:
Add test case for bug#15933.
Fixed typo.
sql/mysql_priv.h:
Add declaration of refresh_status(), which is now external.
sql/mysqld.cc:
Remove start_cached_thread() (code moved directly into create_new_thread()).
Add comment for create_new_thread ().
In create_new_thread() update max_used_connections when creating new thread
and when reusing the cached one.
Move refresh_status() from sql/sql_parse.cc here, on refresh set
max_used_connections to the current number of connections.
sql/sql_parse.cc:
refresh_status() moved to sql/mysqld.cc.
mysql-test/r/func_time.result:
expected test results for bug #18100 added
mysql-test/t/func_time.test:
test case for bug #18100 added
sql/item_timefunc.cc:
wrong formula for EXTRACT QUARTER, now uses the same calculus as the QUARTER()
function
The problem was due to the fact that with --lower-case-table-names set to 1
the function find_field_in_group did not convert the prefix 'HU' in
HU.PROJ.CITY into lower case when looking for it in the group list. Yet the
names in the group list were extended by the database name in lower case.
mysql-test/r/having.result:
Added a test case for bug #15917.
mysql-test/t/having.test:
Added a test case for bug #15917.
sql/item.cc:
Fixed bug #15917: unexpected complain for a NIST test case.
The problem was due to the fact that with --lower-case-table-names set to 1
the function find_field_in_group did not convert the prefix 'HU' in
HU.PROJ.CITY into lower case when looking for it in the group list. Yet the
names in the group list were extended by the database name in lower case.
The needed conversion was added to the code of find_field_in_group.
counter".
When TRUNCATE TABLE was called within an stored procedure the
auto_increment counter was not reset to 0 even if straight
TRUNCATE for this table did this.
This fix makes TRUNCATE in stored procedures to be handled exactly
in the same way as straight TRUNCATE. We achieve this by rolling
back the fix for bug 8850, which is no longer needed since stored
procedures don't require prelocked mode anymore (and TRUNCATE is
not allowed in stored functions or triggers).
mysql-test/r/sp.result:
Test case for BUG#14945.
mysql-test/t/sp.test:
Test case for BUG#14945.
sql/sql_delete.cc:
Handle TRUNCATE in stored procedures exactly in the same way as straight
TRUNCATE (i.e. without falling back to DELETE if possible). We achieve
this by rolling back the fix for bug 8850, which is no longer relevant
since stored procedures don't require prelocked mode anymore
(and TRUNCATE is not allowed in stored functions or triggers).
sql/sql_parse.cc:
Handle TRUNCATE in stored procedures exactly in the same way as straight
TRUNCATE (i.e. without falling back to DELETE if possible). We achieve
this by rolling back the fix for bug 8850, which is no longer relevant
since stored procedures don't require prelocked mode anymore
(and TRUNCATE is not allowed in stored functions or triggers).
Adding test case to cover queries which worked incorrectly earlier:
Bug#18321: Can't store EuroSign with latin1_german1_ci and latin1_general_ci
mysql-test/r/ctype_latin1.result:
Adding test case for Bug#18321: Can't store EuroSign with latin1_german1_ci and latin1_general_ci
mysql-test/t/ctype_latin1.test:
Adding test case for Bug#18321: Can't store EuroSign with latin1_german1_ci and latin1_general_ci
mysql-test/r/sp_notembedded.result:
result fixed
mysql-test/t/sp_notembedded.test:
test case fixed so as the previous test won't affect the result of
SHOW PROCESSLIST command
The wrong value was being reported as the field_length for BIT
fields, resulting in confusion for at least Connector/J. The
field_length is now always the number of bits in the field, as
it should be.
mysql-test/r/type_bit.result:
Add new results
mysql-test/r/type_bit_innodb.result:
Add new results
mysql-test/t/type_bit.test:
Add new regression test
mysql-test/t/type_bit_innodb.test:
Add new regression test
sql/field.cc:
Fix Field_bit->field_length to actually report the display width, and
store the bytes stored in the rec in the new bytes_in_rec member.
sql/field.h:
Fix Field_bit::field_length to store the correct value, adding
Field_bit::bytes_in_rec to remember the number of bytes used for
storing the value. Remove Field_bit_as_char::create_length, as it
is now redundant.
sql/ha_ndbcluster.cc:
Handle field_length of Field_bit actually being the display width (# of bits).
sql/key.cc:
Fix inappropriate use of field->field_length for BIT field.
Also fixes a new bug for which "NULL" wasn't printed (because the
data it represents has length zero). (Discovered my Paul DuBois.)
client/mysql.cc:
Cleaned up the interactive-session table-printing function.
- No longer rely on the length of the data to pad column boundries.
- Be smarter about how we detect if the column is NULL.
- Document how multibyte characters affect the output printing.
- Use more descriptive variable names.
More importantly, (re-)add these features that were crippled in an
earlier change:
- Print "NULL".
- Right-justify numbers.
mysql-test/r/mysql.result:
Updated old result and added new case.
mysql-test/t/mysql.test:
Added new test case.
The bug was caused by wrong behaviour of mysql_insert() which in case
of INSERT DELAYED into a view exited with thd->net.report_error == 0.
This blocked error reporting to the client which started waiting
infinitely for response to the query.
mysql-test/r/insert.result:
Fixed results for the added test case.
mysql-test/t/insert.test:
Added test case.
sql/sql_insert.cc:
Fixed BUG#13683: INSERT DELAYED into a view creates an infinite loop.
Changed mysql_insert(): delayed_get_table() applied to a view exits
with ER_WRONG_OBJECT error (and with thd->net.report_error == 1) and
in this case we must just exit from mysql_insert(). Prior to this
change, instead of exiting open_and_lock_tables() was invoked which
cleared thd->net.report_error to zero and caused the bug.
The code in opt_sum_query that prevented the COUNT/MIN/MAX
optimization from being applied to outer joins was not adjusted
after introducing nested joins. As a result if an outer join
contained a reference to a view as an inner table the code of
opt_sum_query missed the presence of an on expressions and
erroneously applied the mentioned optimization.
mysql-test/r/view.result:
Added a test case for bug #18237.
mysql-test/t/view.test:
Added a test case for bug #18237.
mysql-test/r/information_schema.result:
IS_COMPILED is not determenistic
mysql-test/t/information_schema.test:
IS_COMPILED is not determenistic
strings/conf_to_src.c:
Adding dumping of extra 5.0 fields
strings/ctype-extra.c:
Recreating sources according to 5.0 XML files using conf_to_src.
Multiple equalities were not adjusted after reading constant tables.
It resulted in neglecting good index based methods that could be
used to access of other tables.
mysql-test/r/having.result:
Adjusted a test case results after fix for bug #16504.
mysql-test/r/select.result:
Added a test case for bug #16504.
mysql-test/r/subselect.result:
Adjusted a test case results after fix for bug #16504.
mysql-test/r/varbinary.result:
Adjusted a test case results after fix for bug #16504.
mysql-test/t/select.test:
Added a test case for bug #16504.
sql/item.cc:
Fixed bug #16504.
An Item_equal object may contain only a constant member.
It may happen after reading constant tables.
sql/item_cmpfunc.cc:
Fixed bug #16504.
Added method Item_equal::check_const that check appearance of new
constant items in a multiple equality.
sql/item_cmpfunc.h:
Fixed bug #16504.
Added method Item_equal::check_const that check appearance of new
constant items in a multiple equality.
sql/sql_select.cc:
Fixed bug #16504.
Adjusted multiple equalities after reading constant tables.
Fixed a few typo in comments.
into mysql.com:/home/timka/mysql/src/5.0-bug-16710
mysql-test/r/group_min_max.result:
Auto merged
mysql-test/t/group_min_max.test:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/opt_range.cc:
Auto merged
The bug was due to a missed case in the detection of whether an index
can be used for loose scan. More precisely, the range optimizer chose
to use loose index scan for queries for which the condition(s) over
an index key part could not be pushed to the index together with the
loose scan.
As a result, loose index scan was selecting the first row in the
index with a given GROUP BY prefix, and was applying the WHERE
clause after that, while it should have inspected all rows with
the given prefix, and apply the WHERE clause to all of them.
The fix detects and skips such cases.
mysql-test/r/group_min_max.result:
Added test for BUG#16710.
mysql-test/t/group_min_max.test:
Added test for BUG#16710.
sql/item.cc:
Added new method [Item | Item_field]::find_item_in_field_list_processor.
sql/item.h:
Added new method [Item | Item_field]::find_item_in_field_list_processor.
sql/opt_range.cc:
Handle the case when there is no MIN/MAX aggregate function, and a
keypart of the index being considered, that is after the GROUP BY
prefix, is used in the WHERE clause and the condition where it is
used cannot be pushed to the index.
If this is the case, we rule out this index.
out of a nested join to the on conditions for the nest.
The bug happened due to:
1. The function simplify_joins could change on expressions for nested joins.
Yet modified on expressions were not saved in prep_on_expr.
2. On expressions were not restored for nested joins in
reinit_stmt_before_use.
mysql-test/r/join_nested.result:
Added a test case for bug #18279.
mysql-test/t/join_nested.test:
Added a test case for bug #18279.
sql/sql_prepare.cc:
Fixed bug #18279.
On expressions were not restored for nested joins in
reinit_stmt_before_use.
sql/sql_select.cc:
Fixed bug #18279.
The function simplify_joins could change on expressions for nested joins.
Yet modified on expressions were not saved in prep_on_expr.
Bug #17705 "FT Index corruption occurs with UTF8 data..."
(Actually, the bug had nothing to do with FT index but with general key compression)
myisam/mi_search.c:
Fix error in prefix compression of keys in MyISAM when key length changed from 254 -> 255
mysql-test/r/ctype_utf8.result:
Test of fix for key compression bug
mysql-test/t/ctype_utf8.test:
Test of fix for key compression bug
The GROUP_CONCAT uses its own temporary table. When ROLLUP is present
it creates the second copy of Item_func_group_concat. This copy receives the
same list of arguments that original group_concat does. When the copy is
set up the result_fields of functions from the argument list are reset to the
temporary table of this copy.
As a result of this action data from functions flow directly to the ROLLUP copy
and the original group_concat functions shows wrong result.
Since queries with COUNT(DISTINCT ...) use temporary tables to store
the results the COUNT function they are also affected by this bug.
The idea of the fix is to copy content of the result_field for the function
under GROUP_CONCAT/COUNT from the first temporary table to the second one,
rather than setting result_field to point to the second temporary table.
To achieve this goal force_copy_fields flag is added to Item_func_group_concat
and Item_sum_count_distinct classes. This flag is initialized to 0 and set to 1
into the make_unique() member function of both classes.
To the TMP_TABLE_PARAM structure is modified to include the similar flag as
well.
The create_tmp_table() function passes that flag to create_tmp_field().
When the flag is set the create_tmp_field() function will set result_field
as a source field and will not reset that result field to newly created
field for Item_func_result_field and its descendants. Due to this there
will be created copy func to copy data from old result_field to newly
created field.
mysql-test/t/func_gconcat.test:
Added test for bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
mysql-test/r/func_gconcat.result:
Added test for bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
sql/sql_table.cc:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added 0 as a last parameter to create_tmp_field() to force old behaviour.
sql/sql_select.cc:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the flag 'make_copy_field' to create_tmp_field(), so that for Item_result_field descendants create_tmp_field() sets the item's result field as a source field and deny resetting that result field to a new value.
sql/sql_class.h:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the flag 'force_copy_fields' to the structure TMP_TABLE_PARAM in order to make create_tmp_field() force the creation of 'copy_field' objects.
sql/mysql_priv.h:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the bool parameter 'make_copy_field' to create_tmp_field().
sql/item_sum.cc:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added initialization of the force_copy_fields flag and passing it to create_tmp_table() through TMP_TBLE_PARAM in the Item_func_group_concat and Item_sum_count_distinct member functions.
sql/item_sum.h:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the flag 'force_copy_fields' to the Item_func_group_concat and Item_sum_count_distinct classes.
disallow the use of comma in SET members
mysql-test/r/create.result:
Fix for bug#15316 SET value having comma not correctly handled
test case
mysql-test/t/create.test:
Fix for bug#15316 SET value having comma not correctly handled
test case
Bug#15098: CAST(column double TO signed int), wrong result
which was fixed originally in 4.1.
mysql-test/r/cast.result:
Fixing test results
sql/field.cc:
Adding a "truncated value" warning.
into mysql.com:/home/dlenev/mysql-5.0-bg17764
mysql-test/r/trigger.result:
Auto merged
mysql-test/t/trigger.test:
Auto merged
sql/sql_insert.cc:
Auto merged
A table with an on insert trigger was reported as crashed when the insert
was processed with bulk insert mode on (handler::start_bulk_insert).
The trigger was also selecting from the same table, and that caused
the "crash".
The same problem was present when an insert statement, which was processed
in bulk mode, also used a stored function that was reading the same table.
This fix disables bulk inserts if a statement uses functions or invokes
triggers. Implementing more granular checks will require much more code and
therefore can hardly be done in 5.0
mysql-test/r/trigger.result:
Added test bug #17764 "Trigger crashes MyISAM table".
mysql-test/t/trigger.test:
Added test bug #17764 "Trigger crashes MyISAM table".
sql/sql_insert.cc:
We should not start bulk inserts for INSERT (or similar) statement if it uses
functions or invokes triggers since they may access to the same table and
therefore should not see its inconsistent state created by this optimization.
sql/sql_load.cc:
We should not start bulk inserts for INSERT (or similar) statement if it uses
functions or invokes triggers since they may access to the same table and
therefore should not see its inconsistent state created by this optimization.
No longer create or commit transactions within the loading of files.
mysql-test/r/loaddata.result:
Add test result.
mysql-test/t/loaddata.test:
Add test case.
sql/sql_load.cc:
Loading data from a table should neither create new transactions nor destroy
(by committing or rolling-back) existing transactions.
into mysql.com:/extern/mysql/5.0/bug17015/mysql-5.0-runtime
mysql-test/r/sp-error.result:
Auto merged
mysql-test/t/sp-error.test:
Auto merged
sql/field.h:
Auto merged
sql/sp.cc:
Auto merged
Ndbapi can reorder recattr when doing sorted scan (for faster comparision)
make sure handler maps correct recattr to correct mysql column
mysql-test/r/ndb_read_multi_range.result:
bug#17729
mysql-test/t/ndb_read_multi_range.test:
bug#17729
sql/ha_ndbcluster.cc:
Make sure to map correct rec-attr against correct mysql column
(ndbapi reorders when doing sorted scan)
into mysql.com:/extern/mysql/5.0/bug16474/mysql-5.0-runtime
mysql-test/t/sp.test:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/sp.result:
Manual merge.
mysql-test/r/ps.result:
Added test coverage for "order by" in prepared statements (related to BUG#16474).
mysql-test/r/sp.result:
Added reference to test case for BUG#16474.
mysql-test/t/ps.test:
Added test coverage for "order by" in prepared statements (related to BUG#16474).
mysql-test/t/sp.test:
Added reference to test case for BUG#16474.
sql/sql_select.cc:
Fixed comment and test for basic_const_item() instead of is_splocal().
into mysql.com:/usr/home/bar/mysql-5.0
Bug#15098
mysql-test/t/cast.test:
Auto merged
mysql-test/r/cast.result:
After merge fix
sql/field.cc:
After merge fix
VIEWs, Prepared statement": we didn't mark the nested views
as 'prelockng placeholders' when building the prelocking list.
This resulted in these views being processed (merged, materialized)
before they are actually used.
mysql-test/r/sp-prelocking.result:
Test results fixed (Bug#15683)
mysql-test/t/sp-prelocking.test:
Add a test case for Bug#15683
sql/sql_view.cc:
When initializing tables used in a view, inherite
its 'prelocking_placeholder' flag. This flag is set when we're
opening the view in order to build the prelocking list for a query.
In this case we should only calculate the list to
prelock, and should not merge neither this view nor any of the
nested views, of there are any. The flag is used to indicate this
mode.
An invalid assertion in Item_direct_view_ref::eq caused
an assertion abort in the debug version.
mysql-test/r/view.result:
Added a test case for bug #18386.
mysql-test/t/view.test:
Added a test case for bug #18386.
sql/item.cc:
Fixed bug #18386.
An invalid assertion in Item_direct_view_ref::eq caused
an assertion abort in the debug version.
Changed the assertion.
Reproduced in 5.0.16-nt. Tested to work in 5.0.20
mysql-test/r/group_min_max.result:
Test case for BUG#15102 : select distinct returns empty result, select count distinct > 0 (correct)
Reproduced in 5.0.16-nt. Tested to be fixed in 5.0.20
mysql-test/t/group_min_max.test:
Test case for BUG#15102 : select distinct returns empty result, select count distinct > 0 (correct)
Reproduced in 5.0.16-nt. Tested to be fixed in 5.0.20
If the WHERE condition of a query contained an ORed FALSE term
then the set of tables whose rows cannot serve for null complements
in outer joins was determined incorrectly. It resulted in blocking
possible conversions of outer joins into joins for such queries.
mysql-test/r/join_outer.result:
Added a test case for bug #17164.
mysql-test/t/join_outer.test:
Added a test case for bug #17164.
triggers".
Applying ALTER/OPTIMIZE/REPAIR TABLE statements to transactional table or to
table of any type on Windows caused disappearance of its triggers.
Bug was introduced in 5.0.19 by my fix for bug #13525 "Rename table does not
keep info of triggers" (see comment for sql_table.cc for more info).
.
mysql-test/r/trigger.result:
Added test-case covering handling of triggers when one does ALTER TABLE which
should move table to different database.
mysql-test/t/trigger.test:
Added test-case covering handling of triggers when one does ALTER TABLE which
should move table to different database.
sql/sql_table.cc:
mysql_alter_table():
Removal of strdup() which is no longer necessary allows us to preserve
nice assumption that "(new_db != db || new_table != table_name) indicates
that table will be renamed. So now we really can use this condition to
avoid updating trigger definitions when table is not renamed.
Note that we can't use (alter_info->flags & ALTER_RENAME) condition instead
since it can be also true when we do "ALTER TABLE t1 RENAME TO t1".
sql/sql_trigger.cc:
Table_triggers_list::change_table_name():
Mentioned assumption that subject table is not renamed to itself in method
description. Added DBUG_ASSERT() to catch wrong usage of this method.
mysql-test/r/trigger-trans.result:
New BitKeeper file ``mysql-test/r/trigger-trans.result''
mysql-test/t/trigger-trans.test:
New BitKeeper file ``mysql-test/t/trigger-trans.test''
mysql-test/r/subselect.result:
Fix for bug #18306: MySQL crashes and restarts using subquery
test case
mysql-test/t/subselect.test:
Fix for bug #18306: MySQL crashes and restarts using subquery
test case
sql/opt_range.cc:
Fix for bug #18306: MySQL crashes and restarts using subquery
Restore thd->mem_root because
during the cond->val_int() evaluation we can come across a subselect
item which may allocate memory on the thd->mem_root and assumes
all the memory allocated has the same life span as the subselect
item itself.
into mysql.com:/usr/home/bar/mysql-4.1.b15376
include/m_ctype.h:
Auto merged
strings/ctype-bin.c:
Auto merged
strings/ctype-euc_kr.c:
Auto merged
strings/ctype-gb2312.c:
Auto merged
strings/ctype-ucs2.c:
Auto merged
Mergeing changes into 5.0
mysql-test/r/ctype_eucjpms.result:
Adding test
mysql-test/r/ctype_ujis.result:
After merge fix
mysql-test/t/ctype_eucjpms.test:
Adding test
strings/ctype-cp932.c:
After merge fix
strings/ctype-eucjpms.c:
Applying changes to eucjpms, similar to ujis.
Note: eucjpms appeared in 5.0 so the original patch,
which was for for 4.1, didn't fix eucjpms.
into mysql.com:/usr/home/bar/mysql-5.0
BitKeeper/deleted/.del-ctype-cp932.c:
Auto merged
mysql-test/t/ctype_ujis.test:
Auto merged
sql/sql_string.cc:
Auto merged
strings/ctype-big5.c:
Auto merged
strings/ctype-bin.c:
Auto merged
strings/ctype-euc_kr.c:
Auto merged
strings/ctype-gb2312.c:
Auto merged
strings/ctype-gbk.c:
Auto merged
strings/ctype-latin1.c:
Auto merged
strings/ctype-simple.c:
Auto merged
strings/ctype-sjis.c:
Auto merged
strings/ctype-tis620.c:
Auto merged
strings/ctype-ucs2.c:
Auto merged
strings/ctype-ujis.c:
Auto merged
strings/ctype-utf8.c:
Auto merged
include/m_ctype.h:
After merge fix.
mysql-test/r/ctype_ujis.result:
After merge fix
- Use FORMAT as a workaround to only output the first 6 decimals of the value returned
from MATCH
- This has been done before
mysql-test/r/fulltext.result:
Use FORMAT to only output the first 6 decimals from MATCH
mysql-test/t/fulltext.test:
Use FORMAT to only output the first 6 decimals from MATCH
Generating character set-independent quoting of strings for the
binary log when executing statements from inside stored procedure.
mysql-test/r/ctype_cp932_binlog.result:
Result change
mysql-test/t/ctype_cp932_binlog.test:
Adding check that string literals are written correctly for multi-byte
character sets.
sql/item.cc:
Cutting out character set-independent string escaping code and putting it
in a separate function.
sql/log_event.cc:
Adding characters set-independent code to separate function.
sql/mysql_priv.h:
Adding new function.
sql/sp_head.cc:
Escaping string value representing a string item.
into neptunus.(none):/home/msvensson/mysql/bug11835/my50-bug11835
client/mysqltest.c:
Auto merged
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_udf.cc:
Auto merged
Fixed that LIKE worked case insensitively for latin2_czech_cs,
which was wrong for a case sensitive collation.
include/m_ctype.h:
Making my_wildcmp_bin public instead of static
strings/ctype-bin.c:
Making my_wildcmp_bin public instead of static
strings/ctype-czech.c:
Use my_wildcmp_bin instead of case insensitive my_wildcmp_8bit
mysql-test/include/have_latin2_ch.inc:
New BitKeeper file ``mysql-test/include/have_latin2_ch.inc''
mysql-test/r/ctype_latin2_ch.result:
New BitKeeper file ``mysql-test/r/ctype_latin2_ch.result''
mysql-test/r/have_latin2_ch.require:
New BitKeeper file ``mysql-test/r/have_latin2_ch.require''
mysql-test/t/ctype_latin2_ch.test:
New BitKeeper file ``mysql-test/t/ctype_latin2_ch.test''
table.cc:
Fixing to use system_charset_info instead of default_charset_info.
Crash happened because the "ctype" array is empty in UCS2,
and thus cannot be used with my_isspace().
The reason why UCS2 appeared in this context was because of
of default_charset_info variable incorrectly substituted to my_isspace().
As functions check_db_name(), check_table_name() and check_column_name()
always get values in utf8, system_charset_info must be used instead.
ctype_ucs2_def.test, ctype_ucs2_def-master.opt, ctype_ucs2_def.result:
new file
sql/table.cc:
Bug#18004 Connecting crashes server when default charset is UCS2
Use of default_charset_info was wrong.
Functions check_db_name, check_table_name and check_column_name
get values of system_charset_info character set (utf8).
additional check for subselect
mysql-test/r/information_schema.result:
Fix for bug#18224 VIEW on information_schema crashes the server
test case
mysql-test/t/information_schema.test:
Fix for bug#18224 VIEW on information_schema crashes the server
test case
Crash happened when one selected data from one of INFORMATION_SCHEMA
tables and in order to build its contents server had to open view which
used stored function and table or view on which one had not global or
database-level privileges (e.g. had only table-level or had no
privileges at all).
The crash was caused by usage of check_grant() function, which assumes
that either number of tables to be inspected by it is limited explicitly
or table list used and thd->lex->query_tables_own_last value correspond
to each other (the latter should be either 0 or point to next_global
member of one of elements of this table list), in conditions when
above assumptions were not true. This fix just explicitly limits
number of tables to be inspected. Other negative effects which are
caused by the fact that thd->lex->query_tables_own_last might not
be set properly during processing of I_S tables are less disastrous
and will be reported and fixed separetely.
mysql-test/r/information_schema_db.result:
Fix for bug #18113 "SELECT * FROM information_schema.xxx crashes server"
test case
mysql-test/t/information_schema_db.test:
Fix for bug #18113 "SELECT * FROM information_schema.xxx crashes server"
test case
sql/sql_acl.cc:
added note
because it can couse problem with Query cache (BUG#14767)
mysql-test/r/query_cache_notembedded.result:
BUG#14767 test suite.
mysql-test/t/query_cache_notembedded.test:
BUG#14767 test suite.
sql/sql_insert.cc:
Query cache invalidation table we was inserting in just after
unlocking table added to avoid the race condition as we had
with SP.
sql/sql_parse.cc:
Query cache invalidation table we was inserting in just after
unlocking table added to avoid the race condition as we had
with SP.
sql/sql_yacc.yy:
We should prohibit concurent read of unserting file in SP
because it can cause problem with query cache.
Results of string functions were being converted to decimals by first
being converted to integers, resulting in a loss of precision.
mysql-test/r/func_str.result:
Add new results
mysql-test/t/func_str.test:
Add new regression test
sql/item_strfunc.cc:
Convert string function results to decimal using string-to-decimal conversion
sql/item_strfunc.h:
Add Item_str_func::val_decimal()
When there is conjunction of conds, the substitute_for_best_equal_field()
will call the eliminate_item_equal() function in loop to build final
expression. But if eliminate_item_equal() finds that some cond will always
evaluate to 0, then that cond will be substituted by Item_int with value ==
0. In this case on the next iteration eliminate_item_equal() will get that
Item_int and treat it as Item_cond. This is leads to memory corruption and
server crash on cleanup phase.
To the eliminate_item_equal() function was added DBUG_ASSERT for checking
that all items treaten as Item_cond are really Item_cond.
The substitute_for_best_equal_field() now checks that if
eliminate_item_equal() returns Item_int and it's value is 0 then this
value is returned as the result of whole conjunction.
mysql-test/t/subselect.test:
Added test for bug#17366: Unchecked Item_int results in server crash
mysql-test/r/subselect.result:
Added test for bug#17366: Unchecked Item_int results in server crash
sql/sql_select.cc:
Fixed bug#17366: Unchecked Item_int results in server crash
To the eliminate_item_equal() function was added DBUG_ASSERT for checking
that all items treaten as Item_cond are really Item_cond.
The substitute_for_best_equal_field() now checks that if
eliminate_item_equal() returns something other than Item_cond and if it is
then this value is returned as the result of whole conjunction.
Now DEFINER-clause in stored routines is expected to appear
in 5.0.20 release, not in 5.0.19. as it was supposed before.
client/mysqldump.c:
Fixing version.
mysql-test/r/mysqldump.result:
Updated the result file.
After the ChangeSet 1.1892.20.1 2005/08/24 (Bug #12562) SYSDATE() is not an alias
of NOW() and is unsafe for replication.
`SYSDATE()' backward compatible aliasing clashes with the idea #12562
fix. To make it safe-replicatable we have to either use RBR or to restore
the pre-5.0 style.
--sysdate-is-now command line flag was introduced to provide backward compatibility.
sql/mysqld.cc:
New option to force SYSDATE's backward compatible with 4.1 aliasing to NOW (not default)
sql/sql_class.h:
new slot to fill at init time and check at parse
sql/sql_yacc.yy:
calling NOW's branches when --sysdate-is-now
mysql-test/r/sysdate_is_now.result:
New BitKeeper file ``mysql-test/r/sysdate_is_now.result''
mysql-test/t/sysdate_is_now-master.opt:
New BitKeeper file ``mysql-test/t/sysdate_is_now-master.opt''
mysql-test/t/sysdate_is_now.test:
New BitKeeper file ``mysql-test/t/sysdate_is_now.test''
into mysql.com:/home/mydev/mysql-5.0-bug14980
include/my_base.h:
Auto merged
myisam/mi_delete.c:
Auto merged
myisam/mi_key.c:
Auto merged
myisam/mi_rnext_same.c:
Auto merged
myisam/mi_unique.c:
Auto merged
myisam/mi_update.c:
Auto merged
myisam/mi_write.c:
Auto merged
mysql-test/r/myisam.result:
SCCS merged
mysql-test/t/myisam.test:
SCCS merged
For "count(*) while index_column = value" an index read
is done. It consists of an index scan and retrieval of
each key.
For efficiency reasons the index scan stores the key in
the special buffer 'lastkey2' once only. At the first
iteration it notes this fact with the flag
HA_STATE_RNEXT_SAME in 'info->update'.
For efficiency reasons, the key retrieval for blobs
does not allocate a new buffer, but uses 'lastkey2'...
Now I clear the HA_STATE_RNEXT_SAME flag whenever the
buffer has been polluted. In this case, the index scan
copies the key value again (and sets the flag again).
include/my_base.h:
Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX
Changed the comment for HA_STATE_RNEXT_SAME as a warning
for future uses.
myisam/mi_delete.c:
Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX
Removing the flag HA_STATE_RNEXT_SAME from info->update
if info->lastkey2 was reused for another purpose than
index scanning.
myisam/mi_key.c:
Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX
Removing the flag HA_STATE_RNEXT_SAME from info->update
if info->lastkey2 was reused for another purpose than
index scanning.
myisam/mi_rnext_same.c:
Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX
Removed trailing space and fixed a comment.
myisam/mi_unique.c:
Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX
Removing the flag HA_STATE_RNEXT_SAME from info->update
if info->lastkey2 was reused for another purpose than
index scanning.
myisam/mi_update.c:
Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX
Removing the flag HA_STATE_RNEXT_SAME from info->update
if info->lastkey2 was reused for another purpose than
index scanning.
myisam/mi_write.c:
Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX
Removing the flag HA_STATE_RNEXT_SAME from info->update
if info->lastkey2 was reused for another purpose than
index scanning.
mysql-test/r/myisam.result:
Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX
Added test result.
mysql-test/t/myisam.test:
Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX
Added test.
fix_fields() was not called for "order by" variables if the type was a
"constant integer", and thus interpreted as a column index.
However, a local variable is an expression and should not be interpreted
as a column index. Instead it behaves just like when using a user variable
for instance (i.e. it will not affect the ordering).
mysql-test/r/sp.result:
Updated results for new test case (BUG#16474).
mysql-test/t/sp.test:
New test case for BUG#16474.
sql/sql_select.cc:
When processing order list,
w/o definer if --skip-grant-tables specified.
The previous patch does not allow to specify empty host name in
DEFINER-clause explicitly.
mysql-test/r/skip_grants.result:
Updated the result file.
mysql-test/r/view_grant.result:
Updated the result file.
mysql-test/t/skip_grants.test:
Added test cases for BUG#16777; re-organized tests.
mysql-test/t/view_grant.test:
Updated after final fix of BUG#16777.
sql/sql_parse.cc:
The final part of fixing BUG#16777: allow empty host name in explicitly
specified DEFINER-clause.
sql/sql_show.cc:
Quote an identifier if it is empty.
Remove STANDARD define when compile udf_example.so
mysql-test/r/udf.result:
Update results
mysql-test/t/udf.test:
Update test try to create, use and drop a non existing function
Disable the result from "reverse_lookup" as it is config dependent
sql/Makefile.am:
Remove the "STANDARD" define when compiling udf_example.so
produce wrong data
By default Item_sp_func::val_str() returns string from it's result_field
internal buffer. When grouping is present Item_copy_string is used to
store SP function result, but it doesn't additionally buffer the result.
When the next record is read, internal buffer is overwritten, due to
this Item_copy_string::val_str() will have wrong data. Thus producing
weird query result.
The Item_func_sp::val_str() now makes a copy of returned value to prevent
occasional corruption.
mysql-test/t/sp.test:
Added test case for bug#13575: SP funcs in select with distinct/group and order by can
produce wrong data
mysql-test/r/sp.result:
Added test case for bug#13575: SP funcs in select with distinct/group and
order by can produce wrong data
sql/item_func.h:
Fixed bug#13575: SP funcs in select with distinct/group and order by can
produce wrong data
The Item_func_sp::val_str() now makes a copy of returned value to prevent
occasinal corruption.
- Update of test toolsand Makefiles to make it possible to test always test udf's as part
of the mysql test suite
mysql-test/mysql-test-run.pl:
Add the path where mysqld will udf_example.so used by the udf test
mysql-test/r/udf.result:
Update test results
mysql-test/t/udf.test:
Update tests
The "--error 0" directives should actually be changed to the correct error number returned but that error number is lost. W e do however get the right error message and that is checked in
the .result file.
sql/Makefile.am:
Build shared library udf_example.so
sql/share/errmsg.txt:
Update the max length of %s string from 64 to 128
sql/sql_udf.cc:
Add DBUG_PRINT just before dl_open
sql/udf_example.cc:
Use isalpha instade of my_isalpha
-Add test case
Move testcase that needs innodb from sp.test => sp_trans.test
mysql-test/r/sp.result:
Move test cases tyhat requires innodb to sp_trans.test
mysql-test/r/sp_trans.result:
Move test cases tyhat requires innodb to sp_trans.test
Add test case for bug#10656
mysql-test/t/sp.test:
Move test cases tyhat requires innodb to sp_trans.test
mysql-test/t/sp_trans.test:
Add test case for bug#10656
Move test cases that require innodb to sp_trans.test
- Decrease "slave_open_temp_tables" during reopen of truncated table.
- Add test "rpl_trunc_temp"
sql/sql_delete.cc:
Decrease "slave_open_temp_tables" after temporary table has been closed, it will be
increased again when the temp table is reopened after it's been truncated.
mysql-test/r/rpl_trunc_temp.result:
New BitKeeper file ``mysql-test/r/rpl_trunc_temp.result''
mysql-test/t/rpl_trunc_temp.test:
New BitKeeper file ``mysql-test/t/rpl_trunc_temp.test''
only its own tables to prevent getting tables from others.
mysql-test/r/rpl_trigger.result:
Update the result file.
mysql-test/t/rpl_trigger.test:
Fix the test to query only its own tables to prevent getting tables
from other tests.
into mysql.com:/home/alik/Documents/AllProgs/MySQL/devel/5.0-rt
mysql-test/r/sp.result:
Auto merged
sql/sql_trigger.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/r/skip_grants.result:
Merge 5.0 and 5.0-runtime.
mysql-test/t/skip_grants.test:
Merge 5.0 and 5.0-runtime.
- Use tmp sh file both in system and popen
client/mysqltest.c:
Introduce common functions to handle unix emulation on windows using a temporary sh file.
Use it both in my_popen and my_system.
mysql-test/r/mysqltest.result:
Update test result
mysql-test/t/mysqltest.test:
Fix "windows paths" in three places that doesn't automatically get fixed
Uset the output file mysqltest.sql instead of con.sql as con is not an allowed filename on Windows
Use system for util functions
Check if the host of table hash record exactly matches host from GRANT command
mysql-test/r/grant.result:
Fix for bug#14385 GRANT and mapping to correct user account problems
test case
mysql-test/t/grant.test:
Fix for bug#14385 GRANT and mapping to correct user account problems
test case
into mysql.com:/home/timka/mysql/src/5.0-bug-15229
mysql-test/r/join.result:
Auto merged
mysql-test/t/join.test:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
sql/sql_base.cc:
SCCS merged
calculate Item_func_format::max_length using charset->mbmaxlen
mysql-test/r/func_math.result:
Fix for bug#16678 FORMAT gives wrong result if client run with default-character-set=utf8
test case
mysql-test/t/func_math.test:
Fix for bug#16678 FORMAT gives wrong result if client run with default-character-set=utf8
test case
mysql-test/r/distinct.result:
result added
mysql-test/t/distinct.test:
testcase
sql/item_sum.cc:
MYSQL_TYPE_VARCHAR can't be 'binary' compared even when it is
binary
qualified subject table" which was introduced during work on bug #13525
"Rename table does not keep info of triggers".
The bug was caused by the fact that during reconstruction of CREATE TRIGGER
statement stored in .TRG file which happened during RENAME TABLE we damaged
trigger definition in case when it contained fully qualified name of subject
table (see comment for sql_yacc.yy for more info).
mysql-test/r/trigger.result:
Added test for bug #17866 "Problem with renaming table with triggers with fully
qualified subject table".
mysql-test/t/trigger.test:
Added test for bug #17866 "Problem with renaming table with triggers with fully
qualified subject table".
sql/sql_trigger.cc:
Table_triggers_list::change_table_name_in_triggers():
Instead of trying to use pointer to the end of subject table identifier
we use pointer to the beginning of FOR lexeme now, so during reconstruction
of CREATE TRIGGER statement in this function we need to add extra space
before part which begins with FOR to get nice trigger definition.
sql/sql_yacc.yy:
trigger_tail:
In this rule we can't rely on using remember_end token after table_ident token,
since value returned depends on whether table name is fully qualified or not.
So instead of trying to get pointer to the end of table identifier we use
pointer to the beginning of FOR lexeme.
client will now substitute spaces for NULs, so that the grid isn't messed up
due to silently consumed NULs and that the full field is shown.
client/mysql.cc:
For non-numbers, print each character at a time, instead of using the
fprintf() facility, which interprets an array of chars as a C string, which
is necessarily NUL terminated. We mustn't terminate on NULs, and since we
know the length of the data, we needn't.
mysql-test/r/mysql.result:
Add a test.
mysql-test/t/mysql.test:
Add a test.
When the Item_cond::fix_fields() function reduces cond tree, it in loop
scans it's own list and when it founds Item_cond with same function (AND
or OR) it does next things: 1) replaces that item with item's list. 2)
empties item's list. Due to this operation is done twice - for update and
for view, at the update phase cond's list of lower view is already empty.
Empty list returns ref to itself, thus making endless loop by replacing
list with itself, emptying, replacing again and so on. This results in
server hung up.
To the Item_cond::fix_fields() function added check that ensures that
list being replaced with isn't empty.
mysql-test/t/view.test:
Added test for bug#17726: Not checked empty list caused endless loop
mysql-test/r/view.result:
Added test for bug#17726: Not checked empty list caused endless loop
sql/item_cmpfunc.cc:
Fixed bug#17726: Not checked empty list caused endless loop
To the Item_cond::fix_fields() function added check that ensures that
list being replaced with isn't empty.
removed unnecessary calculation of cache value
otherwise Join::preapre tries to calculate
undefined values(filed values)
mysql-test/r/type_decimal.result:
Fix for bug#17826 'type_decimal' fails with ps-protocol
test case, this test case reproduce the same bug but without PS protocol
mysql-test/t/type_decimal.test:
Fix for bug#17826 'type_decimal' fails with ps-protocol
test case, this test case reproduce the same bug but without PS protocol
(ASCII space). For Bug#16857.
sql/field_conv.cc:
Bug#16857: Do not expand BINARY fields as if they are strings (which
presumably /should/ be filled with spaces). Instead, fill BINARY fields
with 0x00 bytes.
(ASCII space). For Bug#16857.
sql/field_conv.cc:
Bug#16857: Do not expand BINARY fields as if they are strings (which
presumably /should/ be filled with spaces). Instead, fill BINARY fields
with 0x00 bytes.
time per connection
Removed const_string() method from Item_string (it was only used in one
place, in a bad way). Defer possible SP variable, and access data directly
instead, in date_format item.
mysql-test/r/sp.result:
Updated results for new test (BUG#17476).
mysql-test/t/sp.test:
New test case (BUG#17476)
sql/item.h:
Removed const_string() from Item_string.
It was only used in one place, and we can just use str_value in Item directly.
sql/item_timefunc.cc:
Must defer a (possible) local SP variable to use max_length and str_value
in Item_func_date_format::fix_length_and_dec(), and refer to str_value
directly without the const_string() method (now removed); the cast didn't
work in all cases anyway.
Basically, this fix contains a test case and removing of a workaround
for replication. This fix became possible after pushing WL#2897
(Complete definer support in stored routines).
mysql-test/r/sp-security.result:
Updated the result file to contain results of test for BUG#13198.
mysql-test/t/sp-security.test:
Added a test case for BUG#13198.
sql/sp_head.cc:
Removed the workaround for replication, since WL#2897 is pushed and
now definer attribute/clause is fully supported in stored routines.
The idea is to add DEFINER-clause in CREATE PROCEDURE and CREATE FUNCTION
statements. Almost all support of definer in stored routines had been already
done before this patch.
NOTE: this patch changes behaviour of dumping stored routines in mysqldump.
Before this patch, mysqldump did not dump DEFINER-clause for stored routines
and this was documented behaviour. In order to get full information about stored
routines, one should have dumped mysql.proc table. This patch changes this
behaviour, so that DEFINER-clause is dumped.
Since DEFINER-clause is not supported in CREATE PROCEDURE | FUNCTION statements
before this patch, the clause is covered by additional version-specific comments.
client/mysqldump.c:
Updated the code for dumping stored routines: cover DEFINER-clause
into version-specific comment.
mysql-test/r/gis.result:
Updated result file after adding DEFINER-clause.
mysql-test/r/information_schema.result:
Updated result file after adding DEFINER-clause.
mysql-test/r/mysqldump.result:
Updated result file after adding DEFINER-clause.
mysql-test/r/rpl_ddl.result:
Updated result file after adding DEFINER-clause.
mysql-test/r/rpl_sp.result:
Updated result file after adding DEFINER-clause.
mysql-test/r/rpl_trigger.result:
Updated result file after adding DEFINER-clause.
mysql-test/r/sp-security.result:
Updated result file after adding DEFINER-clause.
mysql-test/r/sp.result:
Updated result file after adding DEFINER-clause.
mysql-test/r/sql_mode.result:
Updated result file after adding DEFINER-clause.
mysql-test/t/sp-security.test:
Updated result file after adding DEFINER-clause.
sql/sp.cc:
Added DEFINER-clause.
sql/sp_head.cc:
Added a new convenient variant of set_definer() operation.
sql/sp_head.h:
Updated result file after adding DEFINER-clause.
sql/sql_lex.h:
Renamed trigger_definition_begin into stmt_definition_begin to be used for
triggers and stored routines.
sql/sql_parse.cc:
Check DEFINER-clause.
sql/sql_trigger.cc:
Renamed trigger_definition_begin into stmt_definition_begin to be used for
triggers and stored routines.
sql/sql_yacc.yy:
Added DEFINER-clause.
if --skip-grant-tables specified.
The problem is that there is a check that prevents creating a definer
with empty host name.
In --skip-grant-tables mode this check prevents the user from creating a
trigger/view without explicitly specifying its definer. This happens, because
in --skip-grant-tables mode CURRENT_USER is ''@''. According to Sanja this
check was implemented intentionally.
However, according to the MySQL manual it is possible to specify empty host
name (as well as empty user name). Moreover, the behaviour for stored routines
is different in this aspect -- we allow them to be created with implicit
definer.
Based on this, we believe it is OK to change the behaviour for views to be
similar with the behaviour for stored routines.
mysql-test/r/skip_grants.result:
Added a test case for BUG#16777.
mysql-test/t/skip_grants.test:
Added a test case for BUG#16777.
sql/mysql_priv.h:
Do not check that strlen(host) > 0 in get_default_definer().
sql/sql_parse.cc:
Do not check that strlen(host) > 0 in get_default_definer().
sql/sql_view.cc:
Do not check that strlen(host) > 0 in get_default_definer().
database
- Fix test case for systems with "lowercase names"
mysql-test/r/grant2.result:
Fix for system with "lowercase names", allow error 1007 to be returned
mysql-test/t/grant2.test:
Fix for system with "lowercase names", allow error 1007 to be returned
The cause of this bug was a design flaw due to which the list of natural
join columns was incorrectly computed and stored for nested joins that
are not natural joins, but are operands (possibly indirect) of nested joins.
The patch corrects the flaw in a such a way, that the result columns of a
table reference are materialized only if it is a leaf table (that is, only
if it is a view, stored table, or natural/using join).
mysql-test/r/join.result:
Added test for BUG#15229 and uncommented failing test cases of
BUG#15357 (now fixed by this patch).
mysql-test/t/join.test:
Added test for BUG#15229 and uncommented failing test cases of
BUG#15357 (now fixed by this patch).
sql/sql_base.cc:
- Do not materialize the result columns of regular nested joins
(that are not natural/using joins).
- Moved most of the code that creates/adds new natural join column
references to the method 'get_or_create_column_ref', and simplified
'mark_common_columns'.
- Replaced a call to 'get_or_create_column_ref' with 'get_natural_column_ref'
where it is for sure all columns are alredy created.
sql/table.cc:
- Modified the method 'get_or_create_column_ref' so that it adds itself
the newly created natural join columns to the respective table reference.
sql/table.h:
- Modified the method 'get_or_create_column_ref' so that it adds itself
the newly created natural join columns to the respective table reference.
union.result, union.test:
Adding test case.
item.cc:
Allow safe character set conversion in UNION
- string constant to column's charset
- to unicode
Thus, UNION now works the same with CONCAT (and other string functions)
in respect of aggregating arguments with different character sets.
sql/item.cc:
Allow character set conversion in UNION
- string to column's charset
- to unicode
Bug#15949 union + illegal mix of collations (IMPLICIT + COERCIBLE)
mysql-test/t/union.test:
Adding test case.
mysql-test/r/union.result:
Adding test case.
mysql-test/r/bigint.result:
test result
mysql-test/t/bigint.test:
testcase
sql/item.h:
unsigned_arg is a separate parameter now
sql/item_cmpfunc.cc:
we can get unsigned field from the signed Item - from string
like '1234'
The idea of the fix is to extend support of non-SUID triggers for backward
compatibility. Formerly non-SUID triggers were appeared when "new" server
is being started against "old" database. Now, they are also created when
"new" slave receives updates from "old" master.
mysql-test/r/rpl_trigger.result:
Updated the result file with the results of the test for BUG#16266.
mysql-test/t/rpl_trigger.test:
Added the test case for BUG#16266.
sql/mysql_priv.h:
Added an utility operation to be used from sql_yacc.yy.
sql/sql_parse.cc:
Add a utility operation to be used from sql_yacc.yy.
sql/sql_trigger.cc:
Extend support of non-SUID triggers.
sql/sql_view.cc:
Initialize LEX::definer if DEFINER-clause is missing.
sql/sql_yacc.yy:
Extended support of non-SUID triggers.
mysql-test/std_data/bug16266.000001:
A new binlog file for testing a patch for BUG#16266.
into snake-hub.snake.net:/src/extern/MySQL/bk/mysql-5.0
client/mysqltest.c:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/mysqltest.result:
Auto merged
Fix URLs.
README:
Fix URL.
mysqltest.result:
Update test result for real_sleep error message.
mysqltest.c:
Fix do_sleep() to print correct command name for real_sleep.
client/mysqltest.c:
Fix do_sleep() to print correct command name for real_sleep.
mysql-test/r/mysqltest.result:
Update test result for real_sleep error message.
mysql-test/README:
Fix URL.
mysql-test/mysql-test-run.sh:
Fix URLs.
- Always make rnd_pos reposition the cursor in the fetched result set.
mysql-test/r/federated.result:
Update test result
mysql-test/t/federated.test:
Add test for bug#17377
sql/ha_federated.cc:
Remove the "scan_flag" variable. rnd_pos should always move to a new position in the result set.
The "scan" flag in rnd_init will protect from the old result set being
closed and a new fecthed. I think the "scan_flag" was added before check of the "scan" argument in rnd_init was added.
sql/ha_federated.h:
Remove class variable "scan_flag"
into mysql.com:/home/dlenev/src/mysql-5.0-bg13525
sql/field.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_select.h:
Manual merge.
- Use binary charset in acl_cache, to make searches case sensitive
- Add testcase
mysql-test/r/grant2.result:
Update test result
mysql-test/t/grant2.test:
Add test case for bug#17279, checking that user with access to TESTDB can't create TEStdb
sql/sql_acl.cc:
Use binary charset for the acl_cache to make the hash lookups case sensitive.
Thus denying user with access to "TESTDB" access to "TEStdb"
--skip-grant-tables. However when deleting functions UDFs list was checked
regardless of whther UDFs are initialized or not. Additional check is added
into free_udf() and find_udf() functions to prevent possible runtime errors.
mysql-test/r/skip_grants.result:
Test result for #17595 patch.
mysql-test/t/skip_grants.test:
Test for #17595 patch.
- Change && to ||
- Check for return value != 0 in "ndb->init()"
mysql-test/r/ndb_cache_multi2.result:
Update test result
mysql-test/t/ndb_cache_multi2.test:
Update test case
- add printouts for what server the queries are from
- Run the query from "while" once on server1 to cache it
sql/ha_ndbcluster.cc:
&& => ||, to call both the function "thd->store_global()" and "ndb->init()"
ndb_init returns 0 on sucess. Fail if not zero.
into mysql.com:/home/dlenev/src/mysql-5.0-bg13525
sql/sql_table.cc:
Auto merged
sql/sql_trigger.cc:
Auto merged
sql/sql_trigger.h:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/r/trigger.result:
SCCS merged
mysql-test/t/trigger.test:
SCCS merged
Let us transfer triggers associated with table when we rename it (but only if
we are not changing database to which table belongs, in the latter case we will
emit error).
mysql-test/r/trigger.result:
Added test for bug #13525 "Rename table does not keep info of triggers".
mysql-test/t/trigger.test:
Added test for bug #13525 "Rename table does not keep info of triggers".
sql/sql_rename.cc:
rename_tables():
Now after renaming table's .FRM file and updating handler data we call
Table_triggers_list::change_table_name() which is reponsible for
updating .TRG and .TRN files.
sql/sql_table.cc:
mysql_alter_table():
Now in case when ALTER should rename table we call
Table_triggers_list::change_table_name() which is responsible
for updating .TRG and .TRN files after renaming table.
sql/sql_trigger.cc:
Added Table_triggers_list::change_table_name() method and
change_table_name_in_triggers()/trignames() methods responsible for updating
.TRG and .TRN files for table during its renaming.
Two small cleanups - removed versioning for .TRG files (since it was not working
before anyway) and emphasized that type of lock specified in tables list is
unimportant for DROP TABLE (since this statement uses name-locking).
sql/sql_trigger.h:
Table_triggers_list:
Added on_table_names_list member to store pointers and lenghts of
"ON table_name" parts in triggers' definitions to be able easily
change them during RENAME TABLE.
Added change_table_name() method and change_table_name_in_trignames/triggers()
helper methods responsible for updating .TRG and .TRN files.
sql/sql_yacc.yy:
trigger_tail:
To be able properly update triggers' definitions with new table names
when renaming tables we need to know where in CREATE TRIGGER statement
"ON db_name.table_name" part resides.
Small cleanup - let us emphasize that for CREATE TRIGGER statement
lock type which is specified in table list is unimportant since
name-locking is used.
(Needed for "list of pushes" web page and autopush)
include/mysql.h:
Fix to embedded server to be able to run tests on it
libmysql/libmysql.c:
Fix to embedded server to be able to run tests on it
libmysqld/emb_qcache.cc:
Fix to embedded server to be able to run tests on it
libmysqld/embedded_priv.h:
Fix to embedded server to be able to run tests on it
libmysqld/lib_sql.cc:
Fix to embedded server to be able to run tests on it
libmysqld/libmysqld.c:
Fix to embedded server to be able to run tests on it
mysql-test/mysql-test-run.sh:
Fix to embedded server to be able to run tests on it
mysql-test/r/binlog.result:
Updated test for embedded server
mysql-test/r/ctype_cp932.result:
Updated test for embedded server
mysql-test/r/innodb.result:
Updated test for embedded server
mysql-test/r/mysqltest.result:
Updated test for embedded server
mysql-test/r/query_cache.result:
Updated test for embedded server
mysql-test/r/query_cache_notembedded.result:
Updated test for embedded server
mysql-test/r/sp-error.result:
Updated test for embedded server
mysql-test/r/sp.result:
Updated test for embedded server
mysql-test/r/subselect.result:
Updated test for embedded server
mysql-test/r/view.result:
Updated test for embedded server
mysql-test/r/view_grant.result:
Updated test for embedded server
mysql-test/t/backup.test:
Updated test for embedded server
mysql-test/t/binlog.test:
Updated test for embedded server
mysql-test/t/blackhole.test:
Updated test for embedded server
mysql-test/t/compress.test:
Updated test for embedded server
mysql-test/t/ctype_cp932.test:
Updated test for embedded server
mysql-test/t/delayed.test:
Updated test for embedded server
mysql-test/t/handler.test:
Updated test for embedded server
mysql-test/t/innodb.test:
Updated test for embedded server
mysql-test/t/mysql.test:
Updated test for embedded server
mysql-test/t/mysql_client_test.test:
Updated test for embedded server
mysql-test/t/mysqltest.test:
Updated test for embedded server
mysql-test/t/query_cache.test:
Updated test for embedded server
mysql-test/t/query_cache_notembedded.test:
Updated test for embedded server
mysql-test/t/read_only.test:
Updated test for embedded server
mysql-test/t/skip_grants.test:
Updated test for embedded server
mysql-test/t/sp-destruct.test:
Updated test for embedded server
mysql-test/t/sp-error.test:
Updated test for embedded server
mysql-test/t/sp-threads.test:
Updated test for embedded server
mysql-test/t/sp.test:
Updated test for embedded server
mysql-test/t/subselect.test:
Updated test for embedded server
mysql-test/t/temp_table.test:
Updated test for embedded server
mysql-test/t/view.test:
Updated test for embedded server
mysql-test/t/view_grant.test:
Updated test for embedded server
mysql-test/t/wait_timeout.test:
Updated test for embedded server
mysys/mf_dirname.c:
Review fix: Don't access data outside of array
mysys/my_bitmap.c:
Remove compiler warnings
scripts/mysql_fix_privilege_tables.sql:
Add flush privileges to .sql script so that one doesn't have to reboot mysqld when one runs the mysql_fix_privilege_script
sql-common/client.c:
Updated test for embedded server
sql/item.cc:
Remove DBUG_PRINT statement that can cause crashes when running with --debug
sql/mysqld.cc:
Fix to embedded server to be able to run tests on it
sql/protocol.cc:
Fix to embedded server to be able to run tests on it
(Trivial reconstruction of code)
sql/protocol.h:
Fix to embedded server to be able to run tests on it
sql/sql_base.cc:
Better comment
sql/sql_class.cc:
Fix to embedded server to be able to run tests on it
sql/sql_class.h:
Fix to embedded server to be able to run tests on it
sql/sql_cursor.cc:
Fix to embedded server to be able to run tests on it
sql/sql_parse.cc:
Fix to embedded server to be able to run tests on it
Don't crash for disabled commands when using embedded server
sql/sql_prepare.cc:
Fix to embedded server to be able to run tests on it
mysql-test/r/ctype_cp932_notembedded.result:
New BitKeeper file ``mysql-test/r/ctype_cp932_notembedded.result''
mysql-test/r/innodb_notembedded.result:
New BitKeeper file ``mysql-test/r/innodb_notembedded.result''
mysql-test/r/sp.result.orig:
New BitKeeper file ``mysql-test/r/sp.result.orig''
mysql-test/r/sp_notembedded.result:
New BitKeeper file ``mysql-test/r/sp_notembedded.result''
mysql-test/r/subselect_notembedded.result:
New BitKeeper file ``mysql-test/r/subselect_notembedded.result''
mysql-test/t/ctype_cp932_notembedded.test:
New BitKeeper file ``mysql-test/t/ctype_cp932_notembedded.test''
mysql-test/t/innodb_notembedded.test:
New BitKeeper file ``mysql-test/t/innodb_notembedded.test''
mysql-test/t/sp.test.orig:
New BitKeeper file ``mysql-test/t/sp.test.orig''
mysql-test/t/sp_notembedded.test:
New BitKeeper file ``mysql-test/t/sp_notembedded.test''
mysql-test/t/subselect_notembedded.test:
New BitKeeper file ``mysql-test/t/subselect_notembedded.test''
fixed in 5.0).
A post-review fix (Bug#13134)
mysql-test/r/heap.result:
Remove 'delayed' to make the test deterministic.
mysql-test/r/ps.result:
Remove an unneeded drop table (test case for Bug#13134)
mysql-test/t/heap.test:
Remove 'delayed' to make the test deterministic.
mysql-test/t/ps.test:
A post-review fix (Bug#13134)
into neptunus.(none):/home/msvensson/mysql/mysql-5.0
client/mysqltest.c:
Auto merged
mysql-test/r/mysqltest.result:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
mysql-test/t/mysqltest.test:
Merge
client/mysqltest.c:
Add new parameter to 'do_eval' that will add any escape chars found in the input string to the output string.
This is used in 'do_system' and in 'do_exec' where only unescaped variables
will be expanded, rest of the string will be left untouched.
mysql-test/r/mysqltest.result:
Update test result
mysql-test/t/mysqldump.test:
Revert previous patch that added extra \\ in "exec" command
mysql-test/t/mysqltest.test:
Revert previous patch that added extra \\ in exec command
The problem was that error flag was not reset.
mysql-test/r/sp-security.result:
Results for test case for BUG#7787.
mysql-test/t/sp-security.test:
A test case for BUG#7787.
sql/sp.cc:
Reset errors after sp_find_routine().
The cause of the bug was an ASSERT that checked the consistency
of TABLE_SHARE::db and TABLE_LIST::db and failed for I_S tables.
The fix relaxes the requirement for consistency for I_S.
mysql-test/r/join.result:
Added test for BUG#17523
mysql-test/t/join.test:
Added test for BUG#17523
sql/table.cc:
Take into account that for I_S tables, TABLE_SHARE::db == 0,
while TABLE_LIST::db contains the database name of a table.
The only change is in the ASSERTs.
column is increasing when table is recreated with PS/SP":
make use of create_field::char_length more consistent in the code.
Reinit create_field::length from create_field::char_length
for every execution of a prepared statement (actually fixes the
bug).
mysql-test/r/ps.result:
Test results fixed (Bug#13134)
mysql-test/t/ps.test:
A test case for Bug#13134 "Length of VARCHAR() utf8 column is
increasing when table is recreated with PS/SP"
sql/field.cc:
Move initialization of create_field::char_length to the constructor
of create_field.
sql/field.h:
Rename chars_length to char_length (to be consistent with
how this term is used throughout the rest of the code).
sql/sql_parse.cc:
Initialize char_length in add_field_to_list. This function
effectively works as another create_field constructor.
sql/sql_table.cc:
Reinit length from char_length for every field in
mysql_prepare_table. This is not needed if we're executing
a statement for the first time, however, at subsequent executions
length contains the number of bytes, not characters (as it's expected
to).
into neptunus.(none):/home/msvensson/mysql/mysql-5.0
sql/sp_head.cc:
Auto merged
mysql-test/r/mysqldump.result:
Merge
mysql-test/t/mysqldump.test:
Merge
When a too long field is used for a key, only a prefix part of the field is
used. Length is reduced to the max key length allowed for storage. But if the
field have a multibyte charset it is possible to break multibyte char
sequence. This leads to the failed assertion in the innodb code and
server crash when a record is inserted.
The make_prepare_table() now aligns truncated key length to the boundary of
multibyte char.
mysql-test/t/create.test:
Added test case for bug#17530: Incorrect key truncation on table creation caused server crash.
mysql-test/r/create.result:
Added test case for bug#17530: Incorrect key truncation on table creation caused server crash.
sql/sql_table.cc:
Fixed bug#17530: Incorrect key truncation on table creation caused server crash.
The make_prepare_table() now aligns truncated key length to the boundary of
multibyte char.
into neptunus.(none):/home/msvensson/mysql/mysql-5.0
client/mysqldump.c:
Auto merged
mysql-test/r/mysqldump.result:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
- Add comments with embeded veriosn info around the parts of the view syntax that are only supported by a certain version of MySQL Server
client/mysqldump.c:
Use information_schema.views to gather information about the view, then replace some parts of the output from "SHOW CREATE VIEW" with comment markers with version, to make thos parts of the view syntax become parsed only of MySQL servers that supports it.
Create common function "open_sql_file_for_table" to open the individual .sql file where to dump the table or view.
mysql-test/r/mysqldump.result:
Update results
mysql-test/t/mysqldump.test:
Add test to see that views can be deumped and reloaded alos when they contain "SECURITY TYPE", "CHECK OPTION" and "DEFINER"
into neptunus.(none):/home/msvensson/mysql/mysql-5.0
client/mysqltest.c:
Auto merged
mysql-test/r/mysqltest.result:
Auto merged
mysql-test/t/mysqltest.test:
Auto merged
symptom). sys_var::check_set() was wrong. mysqlbinlog makes use of such SET SQL_MODE=N
(where N is interpreted like if SQL_MODE was a field of type SET), so
this bug affected recovery from binlogs if the server was running with certain SQL_MODE values,
for example the default values on Windows (STRICT_TRANS_TABLES); to work around this bug people
had to edit mysqlbinlog's output.
mysql-test/r/sql_mode.result:
result update
mysql-test/t/sql_mode.test:
test for various numeric SQL_MODE values
sql/set_var.cc:
For a set, it does not make sense to test if the supplied argument exceeds the number of elements in the set
(such test would make sense for an enum), but rather to check if it exceeds 2^this (to verify
that only reasonable bits are set).
if the function, invoked in a non-binlogged caller (e.g. SELECT, DO), failed half-way on the master,
slave would stop and complain that error code between him and master mismatch.
To solve this, when a stored function is invoked in a non-binlogged caller (e.g. SELECT, DO), we binlog the function
call as SELECT instead of as DO (see revision comment of sp_head.cc for more).
And: minor wording change in the help text.
This cset will cause conflicts in 5.1, I'll merge.
mysql-test/r/rpl_sp.result:
result update
mysql-test/t/rpl_sp-slave.opt:
bug just fixed so option not needed
mysql-test/t/rpl_sp.test:
test for more half-failed functions with DO and SELECT, to test the bug of this changeset.
cleanup at the end.
sql/mysqld.cc:
function -> stored function (change suggested by Paul)
sql/sp_head.cc:
When a function updates data and is called from a non-binlogged statement (SELECT, DO), we binlog it
as SELECT myfunc(), and not DO myfunc() like before.
problem was: when a connection disconnects having an open transaction affecting MyISAM and InnoDB, the ROLLBACK event stored in the binary log
contained a non-zero error code (1053 because of the disconnection), so when slave applied the transaction, slave complained that its ROLLBACK succeeded
(error_code=0) while master's had 1053, so slave stopped. But internally generated binlog events such as this ROLLBACK
should always have 0 as error code, as is true in 4.1 and was accidentally broken in 5.0,
so that there is no false alarm.
mysql-test/r/mix_innodb_myisam_binlog.result:
result update
mysql-test/t/mix_innodb_myisam_binlog.test:
test for BUG#16559
sql/log.cc:
Internally generated binlog events should always have an error code of zero (like in 4.1; in 5.0 this was accidentally broken).
Evaluate commands passed to "exec" and "system" to expand any $variables before executing command.
client/mysqltest.c:
do_exec, do_system
- call do_eval on the command to be executed in order to expand any $variables
- Remove old subst_env_var and my_popen, not needed anymore
Rewrite 'replace_strings' into 'replace_strings_append'
- copy whole strings instead of byte by byte copy
- insert result directly inito dynamic_string, no need to check if out
string needs to be realloced for every byte.
- Add comments and DBUG_PRINT's
New function 'fix_win_paths', detect filenames in win format that should be converted
do_eval
- Only set "escaped" if next char is \ or $
mysql-test/mysql-test-run.pl:
Always pass path for DBUG .trace file in unix format
Add search path client_debug to find debug compiled windows binaries
Remove unused MYSQL_TEST_WINDIR and MASTER_WINMYSOCK
mysql-test/r/mysqldump.result:
Update test result
mysql-test/t/client_xml.test:
Use " instead of '
mysql-test/t/mysql_client_test.test:
Remove the useless "exec echo" command
mysql-test/t/mysqltest.test:
Escape $variables passed to --exec, that should not be evaluated in exec.
mysql-test/t/rpl000015.test:
Remove unneccessary replace
mysql-test/t/system_mysql_db_fix.test:
Call the "shell script" $MYSQL_FIX_SYSTEM_TABLE using --system
The name length was checked "the old way", not taking charsets into account,
when creating a stored routine.
Fixing this enforces the real limit (64 characters) again, and no truncation
is possible.
mysql-test/r/sp-error.result:
Updated results for BUG#17015.
mysql-test/t/sp-error.test:
Added and modified test case for BUG#17015 (and 9529).
sql/sp.cc:
When creating a routine, check the length of the name the correct way,
taking the charsets into account.
- Detect that connection to server has been broken in "net_clear". Since
net_clear is always called before we send command to server, we can be sure
that server has not received the command.
mysql-test/r/wait_timeout.result:
Update test result
mysql-test/t/wait_timeout-master.opt:
Decrease wait_timeout value to avoid unneccessary sleeps
mysql-test/t/wait_timeout.test:
Test that same error message is returned when disconnected regardless of connection is socket or TCP
Decrease sleep times
sql/net_serv.cc:
Make "net_clear" detect if connection with server has been broken by
performing a select. If the select returns that there are data to read but
no data can be read, that means the connection is broken. Signal disconnected
to "write" functions by setting error to 2.
- remove timing dependent part of test, wait until condition occurs or sleep max 10 seconds
mysql-test/r/ndb_cache_multi2.result:
Update test results
mysql-test/t/ndb_cache_multi2.test:
Convert long sleeps to a while leep whith small sleeps and a check if condition has occured.
This allows slower machines to sleep longer if needed.
client/mysqltest.c:
Extend 'do_block' to be able to process a !<expression>.
Making it possible to do 'if(!$i)' and 'while(!$i)'
mysql-test/r/mysqltest.result:
Update test results
mysql-test/t/mysqltest.test:
Add test for if
Add test for while with ! expr
A follow-up to BUG#15011 (already fixed).
mysql-test/r/sp.result:
Updated results for new handler tests.
mysql-test/t/sp.test:
Additional tests for nested handlers.
- Pass "buffers[i]" to val_str() in udf_handler::fix_fields insteead of NULL.
- Add testcase for UDF that will load and run the udf_example functions
if available
sql/item_func.cc:
Instead of passing a NULL pointer into val_str, use the "buffers" array to provide a temp string buffer.
sql/udf_example.cc:
Spelling error"on"->"one"
mysql-test/include/have_udf.inc:
New BitKeeper file ``mysql-test/include/have_udf.inc''
mysql-test/r/have_udf.require:
New BitKeeper file ``mysql-test/r/have_udf.require''
mysql-test/r/udf.result:
New BitKeeper file ``mysql-test/r/udf.result''
mysql-test/t/udf.test:
New BitKeeper file ``mysql-test/t/udf.test''
The problem was a code generation bug: cpop instructions were not generated
when using ITERATE back to an outer block from a context with a declared
cursor; this would make it push a new cursor without popping in-between,
eventually overrunning the cursor stack with a crash as the result.
Fixed the calculation of how many cursors to pop (in sp_pcontext.cc:
diff_cursors()), and also corrected diff_cursors() and diff_handlers()
to when doing a "leave"; don't include the last context we're leaving
(we are then jumping to the appropriate pop instructions).
mysql-test/r/sp.result:
Updated result for new test case (BUG#16887)
mysql-test/t/sp.test:
New test case for BUG#16887
sql/sp_pcontext.cc:
Added new parameter to sp_pcontext::diff_handlers() and diff_cursors():
They can either include (for iterate jumps) or exclude (for leave jumps)
the outer context.
Fixed bug in diff_cursors(); it was just plain wrong and would return
zero in some situations when it shouldn't.
sql/sp_pcontext.h:
Added new parameter to sp_pcontext::diff_handlers() and diff_cursors():
They can either include (for iterate jumps) or exclude (for leave jumps)
the outer context.
sql/sql_yacc.yy:
Added parameter to diff_handlers/diff_cursors depending on if it's an
iterate or leave jump.
For "leave", we don't have to include the last context we're leaving since
we will jump to the appropriate pop instructions.