Fix Bug #3300 : if innodb_locks_unsafe_for_binlog is set, release locks on rows that we do not UPDATE or DELETE
sql/ha_innodb.cc:
Fix Bug #3300 : if innodb_locks_unsafe_for_binlog is set, release locks on rows that we do not UPDATE or DELETE
innobase/row/row0mysql.c:
Fix Bug #3300 : if innodb_locks_unsafe_for_binlog is set, release locks on rows that we do not UPDATE or DELETE
innobase/row/row0sel.c:
Fix Bug #3300 : if innodb_locks_unsafe_for_binlog is set, release locks on rows that we do not UPDATE or DELETE
innobase/include/trx0trx.ic:
Fix Bug #3300 : if innodb_locks_unsafe_for_binlog is set, release locks on rows that we do not UPDATE or DELETE
innobase/include/row0mysql.h:
Fix Bug #3300 : if innodb_locks_unsafe_for_binlog is set, release locks on rows that we do not UPDATE or DELETE
innobase/include/trx0trx.h:
Fix Bug #3300 : if innodb_locks_unsafe_for_binlog is set, release locks on rows that we do not UPDATE or DELETE
innobase/lock/lock0lock.c:
Fix Bug #3300 : if innodb_locks_unsafe_for_binlog is set, release locks on rows that we do not UPDATE or DELETE
innobase/trx/trx0trx.c:
Fix Bug #3300 : if innodb_locks_unsafe_for_binlog is set, release locks on rows that we do not UPDATE or DELETE
Added a test case for bug #11543.
sql_select.cc:
Fixed bug #11543.
A ROLLUP query could return a wrong result set when
its GROUP BY clause contained references to the same
column.
sql/sql_select.cc:
Fixed bug #11543.
A ROLLUP query could return a wrong result set when
its GROUP BY clause contained references to the same
column.
mysql-test/t/olap.test:
Added a test case for bug #11543.
mysql-test/r/olap.result:
Added a test case for bug #11543.
sql/sql_prepare.cc:
A small fix for the previous patch: we should first free the
prepared statement items, and then free the runtime memory root,
as some memory used for cleanup is allocated in that mem root.
sql/sql_select.cc:
- ever free the cursor mem root in close() (it's too early).
We want to have the defacto standard syntax for labels ("L:" instead of "label L;"),
and fix some known bugs, before we enable this again.
The code is left intact (#ifdef'ed SP_GOTO) and the test cases are kept in
sp-goto.test, for the future...
mysql-test/r/sp-error.result:
Moved all goto tests to sp-goto.test.
mysql-test/r/sp.result:
Moved all goto tests to sp-goto.test.
mysql-test/t/disabled.def:
Disabled GOTO/LABEL (until the label syntax and some bugs can be fixed).
We keep the tests in sp-goto.test for the future, but disable for now.
mysql-test/t/sp-error.test:
Moved all goto tests to sp-goto.test.
mysql-test/t/sp.test:
Moved all goto tests to sp-goto.test.
sql/lex.h:
Disabled GOTO/LABEL (until the label syntax and some bugs can be fixed).
sql/sql_yacc.yy:
Disabled GOTO/LABEL (until the label syntax and some bugs can be fixed).
CURSOR_TYPE_READ_ONLY date/datetime filter server crash".
The fix adds support for Item_change_list in cursors (proper rollback
of the modified item tree).
sql/sql_class.cc:
No need to call fatal_error() twice.
sql/sql_prepare.cc:
- implement proper cleanup of the prepared statement in mysql_stmt_reset
if there is a cursor.
- take into account thd->change_list when fetching data through a
cursor.
sql/sql_select.cc:
- take into account thd->change_list when fetching data from a cursor:
grab it when we open a cursor, and rollback the changes to the parsed
tree when we close it.
sql/sql_select.h:
- Cursor::change_list added
tests/mysql_client_test.c:
- a test case for Bug#11172 "mysql_stmt_attr_set CURSOR_TYPE_READ_ONLY date/datetime
filter server crash"
Fixed the results of a test for group_concat.
After the fix foor bug #11639 the results became
correct.
olap.result, olap.test:
Added a test case for bug #11639.
sql_select.cc:
Fixed bug #11639: a wrong result set when using a view
instead of the underlying table in a rollup query
executed through filesort.
The old code did not take into account that we always
use an Item_ref object when referring to a view column.
item.h:
Fixed bug #11639.
Now if two Item_ref items ref1 and ref2 refer to the same field
then ref1->eq(ref2) returns 1.
sql/item.h:
Fixed bug #11639.
Now if two Item_ref items ref1 and ref2 refer to the same field
then ref1->eq(ref2) returns 1.
sql/sql_select.cc:
Fixed bug #11639: a wrong result set when using a view
instead of the underlying table in a rollup query
executed through filesort.
The old code did not take into account that we always
use an Item_ref object when referring to a view column.
mysql-test/t/olap.test:
Added a test case for bug #11639.
mysql-test/r/olap.result:
Added a test case for bug #11639.
mysql-test/r/view.result:
Fixed the results of a test for group_concat.
After the fix foor bug #11639 the results became
correct.
Bug#11657 Creation of secondary index fails:
If TINYBLOB key part length is 255, it is equal
to field length. For BLOB, unlike for CHAR/VARCHAR,
we should keep a non-zero key part length, otherwise
"BLOB/TEXT column used in key specification without a key length"
error is produced afterwards.
type_blob.result, type_blob.test:
fixing tests accordinly
sql/sql_table.cc:
Bug#11657 Creation of secondary index fails
For TINYBLOB key part length can be equal to field length.
We should still keep a non-zero key part length,
mysql-test/t/type_blob.test:
fixing tests accordinly
mysql-test/r/type_blob.result:
fixing tests accordinly
"Stored procedures: crash with function calling itself".
Disallow recursive stored routines until we either make Item's and LEX
reentrant safe or will use spearate sp_head instances (and thus separate
LEX objects and Item trees) for each routine invocation.
mysql-test/r/sp-error.result:
Added tests for bug #11394 "Recursion in SP crash server" and
bug #11600 "Stored procedures: crash with function calling itself".
(We simply disallow recursion for stored routines).
mysql-test/r/sp.result:
Disabled test cases containing recursive stored routines until we will
support for them.
mysql-test/t/sp-error.test:
Added tests for bug #11394 "Recursion in SP crash server" and
bug #11600 "Stored procedures: crash with function calling itself".
(We simply disallow recursion for stored routines).
mysql-test/t/sp.test:
Disabled test cases containing recursive stored routines until we will
support for them.
sql/share/errmsg.txt:
Added error message saying that recursive stored routines are disallowed.
sql/sp_head.cc:
sp_head::execute():
Since many Item's and LEX members can't be used in reentrant fashion
we have to disable recursion for stored routines. So let us track
routine invocations using sp_head::m_is_invoked member and raise
error when one attempts to call routine recursively.
sql/sp_head.h:
sp_head:
Added m_is_invoked member for tracking of routine invocations and
preventing recursion.
Add extra check to delete [] to ensure we are not deleting not allocated data
sql/sql_select.cc:
Optimization
Add extra check to delete [] to ensure we are not deleting not allocated data
include/my_bitmap.h:
new bitmap operation
mysql-test/r/view.result:
added warnings
Correct inserting data check (absence of default value) for view underlying tables (BUG#6443)
mysql-test/t/view.test:
Correct inserting data check (absence of default value) for view underlying tables (BUG#6443)
mysys/my_bitmap.c:
new bitmap operation
sql/field.h:
index of field in table added
sql/item.cc:
Name resolution context added
table list removed from fix_fields() arguments
sql/item.h:
Name resolution context added
table list removed from fix_fields() arguments
sql/item_cmpfunc.cc:
table list removed from fix_fields() arguments
sql/item_cmpfunc.h:
table list removed from fix_fields() arguments
sql/item_func.cc:
table list removed from fix_fields() arguments
sql/item_func.h:
table list removed from fix_fields() arguments
sql/item_row.cc:
table list removed from fix_fields() arguments
sql/item_row.h:
table list removed from fix_fields() arguments
sql/item_strfunc.cc:
fixed server crash on NULL argument
sql/item_strfunc.h:
table list removed from fix_fields() arguments
sql/item_subselect.cc:
table list removed from fix_fields() arguments
sql/item_subselect.h:
table list removed from fix_fields() arguments
sql/item_sum.cc:
table list removed from fix_fields() arguments
sql/item_sum.h:
table list removed from fix_fields() arguments
sql/item_timefunc.cc:
table list removed from fix_fields() arguments
sql/item_timefunc.h:
table list removed from fix_fields() arguments
sql/item_uniq.h:
table list removed from fix_fields() arguments
sql/log_event.cc:
Name resolution context added
sql/log_event.h:
Name resolution context added
sql/mysql_priv.h:
Name resolution context added
sql/set_var.cc:
table list removed from fix_fields() arguments
sql/share/errmsg.txt:
new error message
sql/sp.cc:
Name resolution context added
sql/sp_head.cc:
table list removed from fix_fields() arguments
sql/sp_head.h:
Name resolution context added
sql/sql_base.cc:
table list removed from fix_fields() arguments
Name resolution context added
sql/sql_class.cc:
renamed variable
sql/sql_delete.cc:
Name resolution context added
sql/sql_derived.cc:
Name resolution context added
sql/sql_do.cc:
table list removed from fix_fields() arguments
sql/sql_handler.cc:
Name resolution context added
sql/sql_help.cc:
Name resolution context added
sql/sql_insert.cc:
Name resolution context added
table list removed from fix_fields() arguments
sql/sql_lex.cc:
Name resolution context added
sql/sql_lex.h:
removed resolve mode (information stored into name resolution context)
sql/sql_load.cc:
table list removed from fix_fields() arguments
sql/sql_olap.cc:
Name resolution context added
sql/sql_parse.cc:
Name resolution context added
sql/sql_prepare.cc:
table list removed from fix_fields() arguments
sql/sql_select.cc:
table list removed from fix_fields() arguments
sql/sql_show.cc:
Name resolution context added
sql/sql_trigger.cc:
table list removed from fix_fields() arguments
sql/sql_udf.h:
table list removed from fix_fields() arguments
sql/sql_union.cc:
Name resolution context added
sql/sql_update.cc:
Name resolution context added
sql/sql_view.cc:
Name resolution context added
sql/sql_view.h:
table list removed from fix_fields() arguments
sql/sql_yacc.yy:
Name resolution context added
sql/table.cc:
Name resolution context added
merged view processing moved
sql/table.h:
merged view processing moved
Make sure to cleanup the items for a cursor query after each open, otherwise
it's done too late, after the run-time mem_root is freed.
mysql-test/r/sp.result:
New test case for BUG#11529.
mysql-test/t/sp.test:
New test case for BUG#11529.
sql/sp_head.cc:
Add a back pointer from a sp_cursor to its cpush instruction, and use it to set
the arena and cleanup the items for the cursor's query when opening it.
sql/sp_rcontext.cc:
Store pointer in sp_cursor to its cpush instruction.
sql/sp_rcontext.h:
Store pointer in sp_cursor to its cpush instruction.
Using 8 bytes for data pointer does not work at least on
all computers. The result may become 0 or negative number.
(mysqld, myisamchk)
myisam/mi_create.c:
Fixed Bug#11226, "Dynamic table >4GB issue".
mysql-test/r/variables.result:
Restricted myisam_data_pointer_size back to 7.
mysql-test/t/variables.test:
Restricted myisam_data_pointer_size back to 7.
sql/mysqld.cc:
Restricted myisam_data_pointer_size back to 7.
open cursor after mysql_stmt_execute" + post-review fixes.
The bug was caused by wrong flags in stmt->server_status on the client
side: if there was no cursor, the server didn't send server_status
flags to the client, and the old flags were used to set up the
fetch function of a statement. Consequently, stmt_read_row_from_cursor was
used when there was no cursor. The fix fixes the server to always
send server flags to the client.
include/mysql_com.h:
Update stale comments.
libmysql/libmysql.c:
Remove an extra assignment.
libmysqld/lib_sql.cc:
Update to correspond to the changed signature of send_eof
sql/protocol.cc:
Actual fix for bug#10794: create a function that writes the eof
packet to network and use it from send_fields. We need to send
a full eof packet from send_fields to inform the client about
the cursor status (that there is no cursor in this case).
sql/protocol.h:
Remove an unused parameter for send_eof.
tests/mysql_client_test.c:
A test case for Bug#10794 "mysql_stmt_attr_set no open cursor
after mysql_stmt_execute"
into linux.site:/home/marty/MySQL/mysql-5.0
BitKeeper/etc/logging_ok:
auto-union
configure.in:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysys/default.c:
Auto merged
ndb/include/transporter/TransporterDefinitions.hpp:
Auto merged
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
Auto merged
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
Auto merged
ndb/test/ndbapi/testBlobs.cpp:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
strings/ctype-big5.c:
Auto merged
strings/ctype-ucs2.c:
Auto merged
bug #10617: Insert from same table to same table give incorrect result for bit(4) column.
bug #11091: union involving BIT: assertion failure in Item::tmp_table_field_from_field_type
bug #11572: MYSQL_TYPE_BIT not taken care of in temp. table creation for VIEWs
mysql-test/r/type_bit.result:
test case.
bug #10617: Insert from same table to same table give incorrect result for bit(4) column.
bug #11091: union involving BIT: assertion failure in Item::tmp_table_field_from_field_type
bug #11572: MYSQL_TYPE_BIT not taken care of in temp. table creation for VIEWs
mysql-test/t/type_bit.test:
test case.
bug #10617: Insert from same table to same table give incorrect result for bit(4) column.
bug #11091: union involving BIT: assertion failure in Item::tmp_table_field_from_field_type
bug #11572: MYSQL_TYPE_BIT not taken care of in temp. table creation for VIEWs
sql/field.h:
a fix.
bug #10617: Insert from same table to same table give incorrect result for bit(4) column.
bug #11091: union involving BIT: assertion failure in Item::tmp_table_field_from_field_type
bug #11572: MYSQL_TYPE_BIT not taken care of in temp. table creation for VIEWs
- max_length() returns length in bits.
- introduced set_bit_ptr() function, which sets bit_ptr and bit_ofs.
sql/item.cc:
a fix.
bug #10617: Insert from same table to same table give incorrect result for bit(4) column.
bug #11091: union involving BIT: assertion failure in Item::tmp_table_field_from_field_type
bug #11572: MYSQL_TYPE_BIT not taken care of in temp. table creation for VIEWs
- create Field_bit_as_char in case of MYSQL_TYPE_BIT in the Item::tmp_table_field_from_field_type()
(we cannot create Field_bit here because of lack of information: bit_ptr, bit_ofs)
sql/mysql_priv.h:
a fix.
bug #10617: Insert from same table to same table give incorrect result for bit(4) column.
bug #11091: union involving BIT: assertion failure in Item::tmp_table_field_from_field_type
bug #11572: MYSQL_TYPE_BIT not taken care of in temp. table creation for VIEWs
- table_cant_handle_bit_fields parameter added to the create_tmp_field()
sql/sql_select.cc:
a fix.
bug #10617: Insert from same table to same table give incorrect result for bit(4) column.
bug #11091: union involving BIT: assertion failure in Item::tmp_table_field_from_field_type
bug #11572: MYSQL_TYPE_BIT not taken care of in temp. table creation for VIEWs
- create_tmp_field() changes to return create_tmp_field_from_item() result
(actually, Field_bit_as_char) if table_cant_handle_bit_fields=1 for bit fields.
- create_tmp_field() calls accordingly changed
- call set_bit_ptr() for bit fields after the move_field() call during
temporary table creation.
sql/sql_table.cc:
a fix.
bug #10617: Insert from same table to same table give incorrect result for bit(4) column.
bug #11091: union involving BIT: assertion failure in Item::tmp_table_field_from_field_type
bug #11572: MYSQL_TYPE_BIT not taken care of in temp. table creation for VIEWs
- changed the create_tmp_field() call
Let InnoDB use a consistent read when it initializes the auto-inc counter for a table: this will eliminate spurious deadlocks, but will ignore an UPDATE if that happens at the same time that we init the auto-inc counter; this has to be documented; this path also fixes most of Bug #11633, but not all: if ::external_lock() is not called on the table in SHOW TABLE STATUS, that might cause a crash if someone simultaneously DROPs the table
sql/ha_innodb.cc:
Let InnoDB use a consistent read when it initializes the auto-inc counter for a table: this will eliminate spurious deadlocks, but will ignore an UPDATE if that happens at the same time that we init the auto-inc counter; this has to be documented; this path also fixes most of Bug #11633, but not all: if ::external_lock() is not called on the table in SHOW TABLE STATUS, that might cause a crash if someone simultaneously DROPs the table
include/config-netware.h:
Netware related fix. Some changes needed when building against latest libc (June 2005)
netware/my_print_defaults.def:
Stack size increase.
sql/mysqld.cc:
Needed with latest libc.
nsure that delete works not only on table->record[0] for federated tables
sql/field.cc:
Test OOM condition
sql/ha_federated.cc:
Simple optimizations
Ensure that delete works not only on table->record[0]
sql/opt_range.cc:
Simplify code
Added test cases for bug #11469.
item_strfunc.h:
Fixed bug #11469: wrong implementation of the not_null_tables
method for CONCAT_WS.
sql/item_strfunc.h:
Fixed bug #11469: wrong implementation of the not_null_tables
method for CONCAT_WS.
mysql-test/t/func_str.test:
Added test cases for bug #11469.
(IN() remove NULL rows only for tables from first argument (value which we looking for in IN() list) but not for tables from IN() list)
Also it will be better change Item::not_null_tables() to prohibit this optimisation by default for new created items in 5.0 or 5.1.
mysql-test/r/select.result:
IN with outer join condition
mysql-test/t/select.test:
IN with outer join condition
sql/item_cmpfunc.h:
correct not_null_tables() for IN
mysql-test/r/func_str.result:
Correct length reporting from substring()
mysql-test/t/func_str.test:
Correct length reporting from substring()
sql/item_strfunc.cc:
fixed substring() length calculation in case of constant negative argument
CURSOR_TYPE_READ_ONLY select within select".
The bug was caused by the reset of thd->mem_root to thd->main_mem_root in
Item_subselect::exec, which in turn triggered too early free_root() for
data which was needed on subsequent fetches from a cursor.
This reset also caused a memory leak in stored procedures, as
subsequent executions of instructions containing a subselect
were allocating memory in thd->main_mem_root, which is not freed
until the end of the entire SP, instead of the per-call mem_root,
which is freed in the end of execution of the instruction.
sql/item_subselect.cc:
Don't try to protect subqueries from the code that assumes that
it can reset thd->mem_root and get away with it: it's responsibility
of the caller to ensure that no assumption about the life span
of the allocated memory made by the called code is broken.
Besides, this didn't work well with cursors and stored procedures,
where the runtime memory root is not the same as &thd->main_mem_root.
sql/opt_range.cc:
In get_mm_leaf restore the original mem_root of the thd which has
been temporarily reset with the quick select mem_root earlier: if
thd->mem_root points to the QUICK...::mem_root, the memory allocated
in JOIN::exec during evaluation of a subquery gets freed too early.
tests/mysql_client_test.c:
A test case for Bug#10736 "mysql_stmt_attr_set CURSOR_TYPE_READ_ONLY
select within select"
Added a test case for bug #10031.
opt_range.cc:
Fixed bug #10031: range condition was not used with
views. Range analyzer did not take into account that
view columns were always referred through Item_ref.
sql/opt_range.cc:
Fixed bug #10031: range condition was not used with
views. Range analyzer did not take into account that
view columns were always referred through Item_ref.
mysql-test/t/range.test:
Added a test case for bug #10031.
mysql-test/r/range.result:
Added a test case for bug #10031.