Bug #15684: @@version_* are not all SELECTable
Added the appropriate information as read-only system variables, and
also removed some special-case handling of @@version along the way.
@@version_bdb was added, but isn't included in the test because it
depends on the presence of BDB.
mysql-test/r/variables.result:
Update results
mysql-test/t/variables.test:
Fix error from setting @@version, reset sql_select_limit to avoid confusion
in later tests, and add new regression tests.
sql/item_func.cc:
Remove special-case handling of VERSION, it's just a read-only server
variable like the others now.
sql/set_var.cc:
Add system_time_zone and various version-related system variables
SQL_WARNINGS and SQL_NOTES were being displayed with SHOW_BOOL, but they
are system variables that need SHOW_SYS to be used.
mysql-test/r/variables.result:
Add new results
mysql-test/t/variables.test:
Add new regression test
sql/set_var.cc:
Fix display of sql_notes and sql_warnings in SHOW VARIABLES.
This was a case of too much code. The --start-dirty option should act
just like --start-and-exit, except it skips the database initialization
step. Now it does, which means it picks up the options from the specified
test case.
mysql-test/mysql-test-run.pl:
Fix handle of --start-dirty to be like --start-and-exit, without the
database initialization, as it was (sort of) documented.
The SQL standard doesn't allow to use in HAVING clause fields that are not
present in GROUP BY clause and not under any aggregate function in the HAVING
clause. However, mysql allows using such fields. This extension assume that
the non-grouping fields will have the same group-wise values. Otherwise, the
result will be unpredictable. This extension allowed in strict
MODE_ONLY_FULL_GROUP_BY sql mode results in misunderstanding of HAVING
capabilities.
The new error message ER_NON_GROUPING_FIELD_USED message is added. It says
"non-grouping field '%-.64s' is used in %-.64s clause". This message is
supposed to be used for reporting errors when some field is not found in the
GROUP BY clause but have to be present there. Use cases for this message are
this bug and when a field is present in a SELECT item list not under any
aggregate function and there is GROUP BY clause present which doesn't mention
that field. It renders the ER_WRONG_FIELD_WITH_GROUP error message obsolete as
being more descriptive.
The resolve_ref_in_select_and_group() function now reports the
ER_NON_GROUPING_FIELD_FOUND error if the strict mode is set and the field for
HAVING clause is found in the SELECT item list only.
sql/share/errmsg.txt:
Added the new ER_NON_GROUPING_FIELD_USED error message for the bug#14169.
mysql-test/t/having.test:
Added test case for the bug#18739: non-standard HAVING extension was allowed in strict ANSI sql mode.
mysql-test/r/having.result:
Added test case for the bug#18739: non-standard HAVING extension was allowed in strict ANSI sql mode.
sql/sql_select.cc:
Added TODO comment to change the ER_WRONG_FIELD_WITH_GROUP to more detailed ER_NON_GROUPING_FIELD_USED message.
sql/item.cc:
Fixed bug#18739: non-standard HAVING extension was allowed in strict ANSI sql mode.
The resolve_ref_in_select_and_group() function now reports the
ER_NON_GROUPING_FIELD_FOUND error if the strict MODE_ONLY_FULL_GROUP_BY mode
is set and the field for HAVING clause is found in the SELECT item list only.
Fix BUG#18934: "InnoDB crashes when table uses column like DB_ROW_ID".
Also, fix memory leaks in row_create_table_for_mysql() in rare
corner cases.
innobase/dict/dict0dict.c:
Applied innodb-5.0-ss476 snapshot.
Refuse tables that use reserved column names (Bug#18934).
innobase/dict/dict0load.c:
Applied innodb-5.0-ss476 snapshot.
dict_load_table(): Refuse to load tables with other TYPE
than DICT_TABLE_ORDINARY.
innobase/dict/dict0mem.c:
Applied innodb-5.0-ss476 snapshot.
Add dict_mem_table_free(), use it instead of duplicating
the code everywhere.
innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.0-ss476 snapshot.
innobase/include/dict0dict.h:
Applied innodb-5.0-ss476 snapshot.
Refuse tables that use reserved column name (Bug#18934).
innobase/include/dict0mem.h:
Applied innodb-5.0-ss476 snapshot.
Add dict_mem_table_free(), use it instead of duplicating
the code everywhere.
innobase/include/univ.i:
Applied innodb-5.0-ss476 snapshot.
innobase/log/log0recv.c:
Applied innodb-5.0-ss476 snapshot.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss476 snapshot.
Refuse tables that use reserved column names (Bug#18934).
mysql-test/r/innodb.result:
Applied innodb-5.0-ss476 snapshot.
Fix result for test case for Bug#18934.
(Other changes are to be restored by the next cset).
mysql-test/t/innodb.test:
Applied innodb-5.0-ss476 snapshot.
Fix result for test case for Bug#18934.
(Removed test case for Bug#14360 is to be restored by the next cset).
Fixes for Bug#12429: Replication tests fail: "Slave_IO_Running" (?) differs related to MySQL 4.1
and Bug#16920 rpl_deadlock_innodb fails in show slave status (reported for MySQL 5.1)
mysql-test/r/rpl_deadlock.result:
Updated result
Fixing part2 of this problem: AND didn't work well
with utf8_czech_ci and utf8_lithianian_ci in some cases.
The problem was because when during condition optimization
field was replaced with a constant, the constant's collation
and collation derivation was used later for comparison instead
of the field collation and derivation, which led to non-equal
new condition in some cases.
This patch copies collation and derivation from the field being removed
to the new constant, which makes comparison work using the same collation
with the one which would be used if no condition optimization were done.
In other words:
where s1 < 'K' and s1 = 'Y';
was rewritten to:
where 'Y' < 'K' and s1 = 'Y';
Now it's rewritten to:
where 'Y' collate collation_of_s1 < 'K' and s1 = 'Y'
(using derivation of s1)
Note, the first problem of this bug (with latin1_german2_ci) was fixed
earlier in 5.0 tree, in a separate changeset.
mysql-test/r/ctype_utf8.result:
Adding test case
mysql-test/t/ctype_utf8.test:
Adding test case
sql/sql_select.cc:
Set proper collation of the new item
Remove duplicate test case for bug#14169
mysql-test/t/func_gconcat.test:
Remove duplicate test case for bug#14169
mysql-test/r/func_gconcat.result:
Remove duplicate test case for bug#14169
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.