On exactly-sized Strings, the String::c_ptr() function peeked beyond the
end of the buffer, possibly into unititialized space to see whether the
buffer was NUL-terminated.
In a place that did peek improperly, we now use a c_ptr_safe() function,
which doesn't peek where it shouldn't.
client/sql_string.h:
Back-port String::c_ptr_safe().
sql/item_func.h:
Describe side-effect behavior.
sql/item_strfunc.cc:
Use the "_safe" version of c_ptr to avoid looking for a terminating
NUL character outside the initialized memory area. Valgrind hates it
when one does that, and it theoretically could lead to a SEGV.
sql/sql_string.h:
Back-port String::c_ptr_safe().
It was possible that fetching a record by an exact key value
(including the record pointer) could return a record with a
different key value. This happened only if a concurrent insert
added a record with the searched key value after the fetching
statement locked the table for read.
The search succeded on the key value, but the record was
rejected as it was past the file length that was remembered
at start of the fetching statement. With other words it was
rejected as being a concurrently inserted record.
The action to recover from this problem was to fetch the
record that is pointed at by the next key of the index.
This was repeated until a record below the file length was
found.
I do now avoid this loop if an exact match was searched.
If this match is beyond the file length, it is now treated
as "key not found". There cannot be another key with the
same record pointer.
myisam/mi_rkey.c:
Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert"
Added a check for exact key match before searching for
the next key that was not concurrently inserted. If an
exact key match finds a concurrently inserted row, this
must be treated as "key not found".
sql/sql_class.cc:
Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert"
Fixed some DBUG_ENTER strings.
For compatibility, don't use {..,..} in pattern matching
make_binary_distribution.sh:
Added .dylib and .sl as shared library extensions
scripts/make_binary_distribution.sh:
Added .dylib and .sl as shared library extensions
scripts/make_sharedlib_distribution.sh:
For compatibility, don't use {..,..} in pattern matching
mysql-test/r/func_str.result:
Fix for bug #12728: Very strange behaviour of ELT
- test case
mysql-test/t/func_str.test:
Fix for bug #12728: Very strange behaviour of ELT
- test result
sql/item_strfunc.cc:
Fix for bug #12728: Very strange behaviour of ELT
- Item_func_elt::eq() introduced: check 'item' member as well
(to distinguish for instance elt(1, 'a', 'b') and elt(2, 'a', 'b')
sql/item_strfunc.h:
Fix for bug #12728: Very strange behaviour of ELT
- Item_func_elt::eq() introduced: check 'item' member as well
(to distinguish for instance elt(1, 'a', 'b') and elt(2, 'a', 'b')
Change mode to -rw-rw-r--
dbug_add_tags.pl:
Change mode to -rwxrwxr--
dbug/dbug_add_tags.pl:
Change mode to -rwxrwxr--
myisammrg/myrg_range.c:
Change mode to -rw-rw-r--
mysql-test/r/innodb_handler.result:
Change mode to -rw-rw-r--
mysql-test/r/repair.result:
Change mode to -rw-rw-r--
mysql-test/std_data/master-bin.001:
Change mode to -rw-rw-r--
mysql-test/std_data/trunc_binlog.001:
Change mode to -rw-rw-r--
mysql-test/t/bulk_replace.test:
Change mode to -rw-rw-r--
mysql-test/t/create_select_tmp.test:
Change mode to -rw-rw-r--
mysql-test/t/ctype_tis620.test:
Change mode to -rw-rw-r--
mysql-test/t/handler.test:
Change mode to -rw-rw-r--
mysql-test/t/innodb_handler.test:
Change mode to -rw-rw-r--
mysql-test/t/mix_innodb_myisam_binlog-master.opt:
Change mode to -rw-rw-r--
mysql-test/t/repair.test:
Change mode to -rw-rw-r--
mysql-test/t/rpl_commit_after_flush.test:
Change mode to -rw-rw-r--
mysql-test/t/rpl_free_items-slave.opt:
Change mode to -rw-rw-r--
mysql-test/t/rpl_free_items.test:
Change mode to -rw-rw-r--
scripts/mysql_secure_installation.sh:
Change mode to -rw-rw-r--
sql/sql_handler.cc:
Change mode to -rw-rw-r--
support-files/mysql-multi.server.sh:
Change mode to -rw-rw-r--
code. (Bug #13621)
configure.in:
Test whether atomic_add() and atomic_sub() are available in C++
code, since that is primarily where we will be using them.
Whenever 'myisamchk' needed to recreate a table,
the auto increment information was lost.
Now the forgotten element of the table creation
information is set correctly.
myisam/mi_check.c:
Bug#10405 - myisamchk damages auto_increment columns when changing character set
Added some DBUG statements.
Enabled 'with_auto_increment' in 'create_info'
when recreating a table.
mysql-test/mysql-test-run.sh:
Make "mysql-test-run.sh" accept (and ignore) the options "--with-ndbcluster"
and "--with-ndbcluster-only".
This is necessary because newer build tools will issue them, and the test
script should tolerate that.
Backport from 5.1 (Tomas Ulin, 2006-01-17)
Changed web address order.mysql.com to shop.mysql.com
netware/mysql_install_db.c:
Changed web address order.mysql.com to shop.mysql.com
Docs/MySQLEULA.txt:
Changed web address order.mysql.com to shop.mysql.com
scripts/mysql_install_db.sh:
Changed web address order.mysql.com to shop.mysql.com
mysql-test/mysql-test-run.sh:
Add a "--comment=<string>" option, to get it logged when the test is run.
The purpose is to allow a better analysis when generating the status page
("gen-build-status-page").
See "Do-compile" for how it is used.
Bug#16780: Extend port range to make space for 5.1 NDBCLUSTER_PORT_SLAVE
mysql-test/mysql-test-run.sh:
Bug#16780: Extend port range to make space for 5.1 NDBCLUSTER_PORT_SLAVE
When setup_fields() function finds field named '*' it expands it to the list
of all table fields. It does so by checking that the first char of
field_name is '*', but it doesn't checks that the '* is the only char.
Due to this, when updating table with a field named like '*name', such field
is wrongly treated as '*' and expanded. This leads to making list of fields
to update being longer than list of the new values. Later, the fill_record()
function crashes by dereferencing null when there is left fields to update,
but no more values.
Added check in the setup_fields() function which ensures that the field
expanding will be done only when '*' is the only char in the field name.
mysql-test/t/update.test:
Added test case for bug#16510: Updating field named like '*name' caused server crash
mysql-test/r/update.result:
Added test case for bug#16510: Updating field named like '*name' caused server crash
sql/sql_base.cc:
Fixed bug #16510: Updating field named like '*name' caused server crash.
Added check in the setup_fields() function which ensures that the field
expanding will be done only when '*' is the only char in the field name.
After-fix optimizations proposed and finally
implemented by Monty.
mysql-test/r/lock.result:
BUG#5390 - problems with merge tables
After-fix optimizations proposed and finally
implemented by Monty.
Additional test results.
mysql-test/t/lock.test:
BUG#5390 - problems with merge tables
After-fix optimizations proposed and finally
implemented by Monty.
Additional tests.
sql/lock.cc:
BUG#5390 - problems with merge tables
After-fix optimizations proposed and finally
implemented by Monty.
get_lock_data() gets a flag for storing the lock
positions in the new TABLE elements.
mysql_lock_remove() can now remove a lock faster
and more precisely as it has needed info in TABLE now.
mysql_unlock_read_tables() and mysql_lock_merge() must
now adjust the new elements of TABLE when modifying locks.
mysql_lock_have_duplicate() can now work faster on
the existing lock as the positions in the lock
arrays are known for each table.
get_lock_data() assigns the new TABLE elements
on request of the new flag.
sql/table.h:
BUG#5390 - problems with merge tables
After-fix optimizations proposed and finally
implemented by Monty.
Additional elements of TABLE.
Copyright string fixes (bug#16106)
extra/comp_err.c:
Ensure that the license spelling is as expected by the "mysql_copyright" tool.
(bug#16106)
scripts/mysqld_multi.sh:
The "mysql_copyright" tool will not change non-C files, so do not mention the license.
(bug#16106)
Changes to Netware specific mysqld_safe.c
include/config-netware.h:
NetWare specific change to increase thread stack size.
innobase/os/os0thread.c:
NetWare specific change to increase thread stack size.
netware/mysqld_safe.c:
NetWare specific change to make multiple mysqld_safe instances
work when called through a NCF file.
sql/mysqld.cc:
NetWare specific change to increase thread stack size.
Remove wrong fix for Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
Safety fix for bug #13855 "select distinct with group by caused server crash"
client/mysqlimport.c:
Remove not used variable
myisam/myisam_ftdump.c:
Fixed compiler warning
sql/item_cmpfunc.cc:
Removed compiler warning
sql/sql_handler.cc:
Remove wrong fix for Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash.
It's better to let mysql_lock_tables reopen the TABLE object in case of OPTIMIZE TABLE and fix items AFTER mysql_lock_table() instead of before
sql/sql_select.cc:
Safety fix for bug #13855 "select distinct with group by caused server crash"
The previous patch only removed the symptomps, this fix removed the cause of the problem
(Which was that not all hidden_fields was stored in the temporary table)