- 10 May, 2006 1 commit
-
-
unknown authored
which explicitly or implicitly uses stored function gives 'Table not locked' error" Test case for these bugs crashed in --ps-protocol mode. The crash was caused by incorrect usage of check_grant() routine from create_table_precheck() routine. The former assumes that either number of tables to be inspected by it is limited explicitly (i.e. is is not UINT_MAX) or table list used and thd->lex->query_tables_own_last value correspond to each other. create_table_precheck() was not fulfilling this condition and crash happened. The fix simply sets number of tables to be inspected by check_grant() to 1. sql/sql_parse.cc: create_table_precheck(): At the moment when create_table_precheck() is called TABLE_LIST element representing table to be created does not belong to global table list therefore we should limit number of tables to be inspected by check_grant() explicitly (as in this case table list passed to this function does not correspond to thd->lex->query_tables_own_last value).
-
- 09 May, 2006 2 commits
-
-
unknown authored
into mysql.com:/home/dlenev/mysql-5.0-bg12472 sql/mysql_priv.h: Auto merged sql/sql_base.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_table.cc: Auto merged mysql-test/r/sp.result: Manual merge. mysql-test/t/sp.test: Manual merge.
-
unknown authored
or implicitly uses stored function gives "Table not locked" error' CREATE TABLE ... SELECT ... statement which was explicitly or implicitly (through view) using stored function gave "Table not locked" error. The actual bug resides in the current locking scheme of CREATE TABLE SELECT code, which first opens and locks tables of the SELECT statement itself, and then, having SELECT tables locked, creates the .FRM, opens the .FRM and acquires lock on it. This scheme opens a possibility for a deadlock, which was present and ignored since version 3.23 or earlier. This scheme also conflicts with the invariant of the prelocking algorithm -- no table can be open and locked while there are tables locked in prelocked mode. The patch makes an exception for this invariant when doing CREATE TABLE ... SELECT, thus extending the possibility of a deadlock to the prelocked mode. We can't supply a better fix in 5.0. mysql-test/r/sp.result: Added tests for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which explicitly or implicitly uses stored function gives "Table not locked" error' mysql-test/t/sp.test: Added tests for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which explicitly or implicitly uses stored function gives "Table not locked" error' sql/mysql_priv.h: Added flag which can be passed to open_table() routine in order to ignore set of locked tables and prelocked mode. We don't need declaration of create_table_from_items() any longer as it was moved into sql_insert.cc and made static. sql/sql_base.cc: open_table(): Added flag which allows open table ignoring set of locked tables and prelocked mode. sql/sql_insert.cc: Moved create_table_from_items() from sql_table.cc to sql_insert.cc as it was not used outside of sql_insert.cc and contains code which is specific for CREATE TABLE ... SELECT. Also now when we are executing CREATE TABLE ... SELECT ... statement which SELECT part requires execution in prelocked mode we ignore set of locked tables in order to get access to the table we just have created. We probably don't want to do this if we are under real LOCK TABLES since it will widen window for deadlock too much. sql/sql_table.cc: Moved create_table_from_items() routine into sql_insert.cc, since it was not used anywhere outside of this file and contains logic which is specific for CREATE TABLE ... SELECT statement.
-
- 06 May, 2006 2 commits
-
-
unknown authored
hog memory". During each invocation of stored function or trigger some objects which lifetime is one function call (e.g. sp_rcontext) were allocated on arena/memroot of calling statement. This led to consumption of fixed amount of memory for each function/trigger invocation and so statements which involve lot of them were hogging memory. This in its return led to OOM crashes or freezes. This fix introduces new memroot and arena for objects which lifetime is whole duration of function call. So all memory consumed by such objects is freed at the end of function call. sql/sp_head.cc: sp_head::execute_function(): Introduced new memroot and arena for objects which lifetime is whole duration of function call (e.g. sp_rcontext, sp_cursor). We can't use caller's arena/memroot for those objects because in this case some fixed amount of memory will be consumed for each function/trigger invocation and so statements which involve lot of them will hog memory. Got rid of param_values array to avoid excessive juggling with arenas.
-
unknown authored
random test failures. mysql-test/t/rename.test: Fix race condition and add cleanup code.
-
- 04 May, 2006 2 commits
- 03 May, 2006 1 commit
-
-
unknown authored
There were two distict bugs: parse error was returned for valid statement and that error wasn't reported to the client. The fix ensures that EXPLAIN SELECT..INTO is accepted by parser and any other parse error will be reported to the client. mysql-test/r/explain.result: Add result for bug#15463. mysql-test/t/explain.test: Add test case for bug#15463. sql/sql_parse.cc: Assert that if parsing error has occured then apropriate error message has been pushed into error stack. sql/sql_yacc.yy: If there is no lex->result in select_var_ident rule, then we have to be in DESCRIBE mode.
-
- 02 May, 2006 6 commits
-
-
unknown authored
into mysql.com:/home/dlenev/mysql-5.0-bg11081
-
unknown authored
VC++Files/mysql.sln: mysql_client_test depends on mysys. VC++Files/mysys/mysys.vcproj: Add new file missing in previous push. mysys/my_memmem.c: Fix illegal pointer arithmetics on void *. tests/Makefile.am: -L must go before -l tests/mysql_client_test.c: No declarations after statement in C code.
-
unknown authored
into mysql.com:/home/hf/work/mysql-5.0.clean
-
unknown authored
-
unknown authored
into zippy.(none):/home/cmiller/work/mysql/mysql-5.0__bug17667 mysys/Makefile.am: Auto merged sql/sql_parse.cc: Auto merged
-
unknown authored
Bug#17667: An attacker has the opportunity to bypass query logging. This adds a new, local-only printf format specifier to our *printf functions that allows us to print known-size buffers that must not be interpreted as NUL-terminated "strings." It uses this format-specifier to print to the log, thus fixing this problem. include/my_sys.h: Add prototype for my_memmem() . mysys/Makefile.am: Add reference to new file, my_memmem.c mysys/mf_iocache2.c: Add a "%.1234b" and "%.*b" percent-code. It takes a width, just like "%s", but unlike the string-indicator, it requires the width and doesn't stop printing at NUL characters. Also, simplify the code a bit. TODO: This code should be unified with the strings/my_vnsprintf.c code in the future. sql/sql_parse.cc: The query is not a C-string, but is a sized buffer, containing any character at all, which may include NUL characters. strings/my_vsnprintf.c: Add a "%.1234b" and "%.*b" percent-code. It takes a width, just like "%s", but unlike the string-indicator, it requires the width and doesn't stop printing at NUL characters. tests/Makefile.am: We may need some of our local functions. tests/mysql_client_test.c: Add a "%.1234b" and "%.*b" percent-code. It takes a width, just like "%s", but unlike the string-indicator, it requires the width and doesn't stop printing at NUL characters. mysql-test/t/mysql_client_test.opt: New BitKeeper file ``mysql-test/t/mysql_client_test.opt'' Add '--log' server parameter. mysys/my_memmem.c: New BitKeeper file ``mysys/my_memmem.c'' Implement memmem, a black-box work-alike of the GNU memmem(), which functions like strstr() but for arbitrary blocks of memory.
-
- 01 May, 2006 9 commits
-
-
unknown authored
into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
-
unknown authored
include/config-win.h: Auto merged
-
unknown authored
into mysql.com:/home/jimw/my/mysql-5.0-clean
-
unknown authored
Use "./libtool --mode=execute" to find real path to executables support-files/mysql.spec.sh: Use "./libtool --mode=execute" to find real path to executables
-
unknown authored
into mysql.com:/home/hf/work/mysql-5.0.clean
-
unknown authored
BitKeeper/etc/ignore: Added client/mysql_upgrade to the ignore list client/mysql_upgrade.c: fixed for Win build include/config-win.h: fixed for Win build
-
unknown authored
into mysql.com:/home/jimw/my/mysql-5.0-clean
-
unknown authored
into mysql.com:/home/jimw/my/mysql-5.0-clean
-
unknown authored
into zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.0 mysql-test/r/null.result: Auto merged mysql-test/t/null.test: Auto merged sql/sql_table.cc: Merge.
-
- 29 Apr, 2006 3 commits
-
-
unknown authored
into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
-
unknown authored
Fix strange "double" define for popen. Avoid warnings about sprintf() etc. being unsafe. Corrected typo "#endfif" include/config-win.h: Fix strange "double" define for popen. Avoid warnings about sprintf() etc. being unsafe. Corrected typo "#endfif"
-
unknown authored
Changed version to 4.1.20 configure.in: Changed version to 4.1.20
-
- 28 Apr, 2006 14 commits
-
-
unknown authored
Backport of changes in 5.0 (bug#18294) support-files/mysql.spec.sh: Backport of changes in 5.0 (bug#18294)
-
unknown authored
into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
-
unknown authored
Now test for NULLness the pointers returned from objects created from the default value. Pushing patch on behalf of cmiller. mysql-test/r/null.result: Add test case mysql-test/t/null.test: Add test case sql/sql_table.cc: No longer blindly dereference pointer of the string representation of the values, where "NULL" is NUL. Raise INVALID DEFAULT error messages where appropriate. Note that the -O1 optimization flag made debugging this extremely tricky, with misleading results, and that removing it from the Makefile during debugging can be invaluable.
-
unknown authored
into devsrv-b.mysql.com:/users/msvensson/mysql-5.0
-
unknown authored
into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
-
unknown authored
Include and run mysql_upgrade if needed (bug#19353) support-files/mysql.spec.sh: Include and run mysql_upgrade if needed (bug#19353)
-
unknown authored
into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
-
unknown authored
into devsrv-b.mysql.com:/users/msvensson/mysql-5.0
-
unknown authored
into devsrv-b.mysql.com:/users/msvensson/mysql-4.1
-
unknown authored
- Eval shrext_cmds variable before using it - Moved from acinclude.m4 to openssl.m4 and zlib.m4 when merging 4.1 -> 5.0 config/ac-macros/openssl.m4: Move from acinclude.m4 config/ac-macros/zlib.m4: Move from acinclude.m4
-
unknown authored
into neptunus.(none):/home/msvensson/mysql/mysql-5.0 BitKeeper/deleted/.del-acinclude.m4~f4ab416bac5003: Changes to acinclude.m4 will go into openssl.m4 and zlib.m4
-
unknown authored
into devsrv-b.mysql.com:/users/msvensson/mysql-4.1
-
unknown authored
into lsmy3.wdf.sap.corp:/data/users/gkodinov/mysql-5.0-B18492 mysql-test/r/subselect.result: merged sql/item.cc: merged sql/item.h: merged sql/item_subselect.cc: merged
-
unknown authored
In the code that converts IN predicates to EXISTS predicates it is changing the select list elements to constant 1. Example : SELECT ... FROM ... WHERE a IN (SELECT c FROM ...) is transformed to : SELECT ... FROM ... WHERE EXISTS (SELECT 1 FROM ... HAVING a = c) However there can be no FROM clause in the IN subquery and it may not be a simple select : SELECT ... FROM ... WHERE a IN (SELECT f(..) AS c UNION SELECT ...) This query is transformed to : SELECT ... FROM ... WHERE EXISTS (SELECT 1 FROM (SELECT f(..) AS c UNION SELECT ...) x HAVING a = c) In the above query c in the HAVING clause is made to be an Item_null_helper (a subclass of Item_ref) pointing to the real Item_field (which is not referenced anywhere else in the query anymore). This is done because Item_ref_null_helper collects information whether there are NULL values in the result. This is OK for directly executed statements, because the Item_field pointed by the Item_null_helper is already fixed when the transformation is done. But when executed as a prepared statement all the Item instances are "un-fixed" before the recompilation of the prepared statement. So when the Item_null_helper gets fixed it discovers that the Item_field it points to is not fixed and issues an error. The remedy is to keep the original select list references when there are no tables in the FROM clause. So the above becomes : SELECT ... FROM ... WHERE EXISTS (SELECT c FROM (SELECT f(..) AS c UNION SELECT ...) x HAVING a = c) In this way c is referenced directly in the select list as well as by reference in the HAVING clause. So it gets correctly fixed even with prepared statements. And since the Item_null_helper subclass of Item_ref_null_helper is not used anywhere else it's taken out. mysql-test/r/ps_11bugs.result: Test case for the bug mysql-test/r/subselect.result: Explain updated because of the tranformation mysql-test/t/ps_11bugs.test: Testcase for the bug sql/item.cc: Taking out Item_null_helper as it's no longer needed sql/item.h: Taking out Item_null_helper as it's no longer needed sql/item_subselect.cc: The described change to the IN->EXISTS transformation
-