into mysql.com:/windows/Linux_space/MySQL/mysql-5.0-ndb
include/my_base.h:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_trigger.h:
Auto merged
sql/sql_update.cc:
Auto merged
sql/ha_ndbcluster.cc:
Merge
into dev3-240.dev.cn.tlan:/home/justin.he/mysql/mysql-5.0/mysql-5.0-ndb-bj.merge
sql/ha_ndbcluster.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/sql_table.cc:
Auto merged
mysql-test/mysql-test-run.pl:
Move some opt_extern hacks to same place.
Remove duplicate opt_skip_im=1 if opt_extern
mysql-test/t/fix_priv_tables.test:
Skip test if $MYSQL_FIX_PRIVILEGE_TABLES is not set
mysql-test/t/system_mysql_db_fix30020.test:
Skip test if $MYSQL_FIX_SYSTEM_TABLES is not set
mysql-test/t/system_mysql_db_fix40123.test:
Skip test if $MYSQL_FIX_PRIVILEGE_TABLES is not set
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
client/mysqltest.c:
Auto merged
mysql-test/t/mysqltest.test:
Auto merged
mysql-test/r/mysqltest.result:
SCCS merged
In certain cases AFTER UPDATE/DELETE triggers on NDB tables that referenced
subject table didn't see the results of operation which caused invocation
of those triggers. In other words AFTER trigger invoked as result of update
(or deletion) of particular row saw version of this row before update (or
deletion).
The problem occured because NDB handler in those cases postponed actual
update/delete operations to be able to perform them later as one batch.
This fix solves the problem by disabling this optimization for particular
operation if subject table has AFTER trigger for this operation defined.
To achieve this we introduce two new flags for handler::extra() method:
HA_EXTRA_DELETE_CANNOT_BATCH and HA_EXTRA_UPDATE_CANNOT_BATCH.
These are called if there exists AFTER DELETE/UPDATE triggers during a
statement that potentially can generate calls to delete_row()/update_row().
This includes multi_delete/multi_update statements as well as insert statements
that do delete/update as part of an ON DUPLICATE statement.
include/my_base.h:
Added HA_EXTRA_DELETE_CANNOT_BATCH and HA_EXTRA_UPDATE_CANNOT_BATCH to inform handler when batching of delete/update is not possible.
mysql-test/r/ndb_trigger.result:
Bug #26242 UPDATE with subquery and triggers failing with cluster tables
---
Added new test cases
mysql-test/t/ndb_trigger.test:
Bug #26242 UPDATE with subquery and triggers failing with cluster tables
---
Added new test cases
sql/ha_ndbcluster.cc:
Bug #26242 UPDATE with subquery and triggers failing with cluster tables: Use HA_EXTRA_DELETE_CANNOT_BATCH and HA_EXTRA_UPDATE_CANNOT_BATCH to inform handler when batching of delete/update is not possible
sql/ha_ndbcluster.h:
Bug #26242 UPDATE with subquery and triggers failing with cluster tables: Added member variables for handling of HA_EXTRA_DELETE_CANNOT_BATCH and HA_EXTRA_UPDATE_CANNOT_BATCH to inform handler when batching of delete/update is not possible
sql/mysql_priv.h:
Added new method prepare_triggers_for_insert_stmt to check if batching of delete/update must be disallowed.
sql/sql_delete.cc:
Use HA_EXTRA_DELETE_CANNOT_BATCH to inform handler when batching of delete is not possible
sql/sql_insert.cc:
Added method prepare_triggers_for_insert_stmt to check if batching of delete/update must be dissallowed.
Use HA_EXTRA_DELETE_CANNOT_BATCH and HA_EXTRA_UPDATE_CANNOT_BATCH to inform handler
when batching of delete/update is not possible
sql/sql_load.cc:
Call prepare_triggers_for_insert_stmt to check if batching of delete/update must be dissallowed and
mark fields used by triggers for the insert statement.
sql/sql_trigger.h:
Added has_triggers to support what particular triggers exist on a table.
sql/sql_update.cc:
Use HA_EXTRA_UPDATE_CANNOT_BATCH to inform handler when batching of update is not possible
IN/BETWEEN predicates in sorting expressions.
Wrong results may occur when the select list contains an expression
with IN/BETWEEN predicate that differs from a sorting expression by
an additional NOT only.
Added the method Item_func_opt_neg::eq to compare correctly expressions
containing [NOT] IN/BETWEEN.
The eq method inherited from the Item_func returns TRUE when comparing
'a IN (1,2)' with 'a NOT IN (1,2)' that is not, of course, correct.
mysql-test/r/order_by.result:
Added a test case for bug #27532.
mysql-test/t/order_by.test:
Added a test case for bug #27532.
sql/item_cmpfunc.cc:
Fixed bug #27532.
Added the method Item_func_opt_neg::eq to compare correctly expressions
containing [NOT] IN/BETWEEN.
The eq method inherited from the Item_func returns TRUE when comparing
'a IN (1,2)' with 'a NOT IN (1,2)' that is not, of course, correct.
sql/item_cmpfunc.h:
Added the method Item_func_opt_neg::eq to compare correctly expressions
containing [NOT] IN/BETWEEN.
The eq method inherited from the Item_func returns TRUE when comparing
'a IN (1,2)' with 'a NOT IN (1,2)' that is not, of course, correct.
mysql-test/r/ndb_autodiscover.result:
changes ndbd error code to mysqld error code when no cluster connection
sql/ha_ndbcluster.cc:
map 4009 error code to mysql not connected error
sql/handler.cc:
define return codes to ha_table_exists_in_engine to something useful
NOTE: in 5.1 this should call a handlerton method, not horrible ifdef ndb stuff
sql/sql_table.cc:
clearly define what happens on create table if exits/not exists/not connected to engine
LEFT JOIN
Fixed that in certain situations MATCH ... AGAINST returns false hits
for NULLs produced by LEFT JOIN when there is no fulltext index
available.
mysql-test/r/fulltext_left_join.result:
A test case for BUG#25729.
mysql-test/t/fulltext_left_join.test:
A test case for BUG#25729.
sql/item_func.cc:
concat_ws(NULL) returns empty string instead of NULL. There is not much
sense to calculate relevance for empty strings, thus return 0 immediately
if we got NULL or empty string from concat_ws.
sql/item_func.h:
Item_func_match::concat renamed to concat_ws.
- Change check for return value of 'SSL_CTX_set_cipher_list'
in order to handle 0 as error setting cipher.
- Thanks to Dan Lukes for finding the problem!
mysql-test/r/openssl_1.result:
Update result
mysql-test/t/openssl_1.test:
Add test for setting ssl-cipher to be used
vio/viosslfactories.c:
Change error handling of SSL_CTX_set_cipher_list to
detect 0 as an error
added the check for unique elements count in SET
mysql-test/r/type_set.result:
test result
mysql-test/t/type_set.test:
test case
sql/field.cc:
removed the check for elements count in SET
sql/sql_table.cc:
added the check for unique elements count in SET
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/create.result:
Auto merged
mysql-test/r/type_datetime.result:
Auto merged
sql/field.h:
Auto merged
sql/item.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/r/gis.result:
SCCS merged
mysql-test/t/gis.test:
SCCS merged
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
myisam/mi_open.c:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/create.result:
SCCS merged
mysql-test/t/create.test:
SCCS merged
Remove the setting of --local-load parameter for mysqlbinlog and leave that to the testcases
to decide what params to use.
mysql-test/mysql-test-run.pl:
Remove the setting of --local-load parameter for mysqlbinlog and leave that to the testcases
to decide what params to use.
- Add --local-load option to avoidthat the load data file requested
by mysqlbinlog end up in local var/tmp dir and not in system global
tmpdir
mysql-test/t/mysqlbinlog.test:
Add --local-load option to avoidthat the load data file requested
by mysqlbinlog end up in local var/tmp dir and not in system global
tmpdir
conditions.
When allocating memory for KEY_FIELD/SARGABLE_PARAM structures the
function update_ref_and_keys did not take into account the fact that
a single row equality could be replaced by several simple equalities.
Fixed by adjusting the counter cond_count accordingly for each subquery
when performing substitution of a row equality for simple equalities.
mysql-test/r/row.result:
Added a test case for bug #27154.
mysql-test/t/row.test:
Added a test case for bug #27154.
Pushbuild fixes:
- Make MAX_SEL_ARGS smaller (even 16K records_in_range() calls is
more than it makes sense to do in typical cases)
- Don't call sel_arg->test_use_count() if we've already allocated
more than MAX_SEL_ARGs elements. The test will succeed but will take
too much time for the test suite (and not provide much value).
mysql-test/r/range.result:
BUG#26624: high mem usage (crash) in range optimizer
Pushbuild fixes: make the test go faster
mysql-test/t/range.test:
BUG#26624: high mem usage (crash) in range optimizer
Pushbuild fixes: make the test go faster
NO_AUTO_VALUE_ON_ZERO mode.
In the NO_AUTO_VALUE_ON_ZERO mode the table->auto_increment_field_not_null
variable is used to indicate that a non-NULL value was specified by the user
for an auto_increment column. When an INSERT .. ON DUPLICATE updates the
auto_increment field this variable is set to true and stays unchanged for the
next insert operation. This makes the next inserted row sometimes wrongly have
0 as the value of the auto_increment field.
Now the fill_record() function resets the table->auto_increment_field_not_null
variable before filling the record.
The table->auto_increment_field_not_null variable is also reset by the
open_table() function for a case if we missed some auto_increment_field_not_null
handling bug.
Now the table->auto_increment_field_not_null is reset at the end of the
mysql_load() function.
Reset the table->auto_increment_field_not_null variable after each
write_row() call in the copy_data_between_tables() function.
sql/field_conv.cc:
Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
NO_AUTO_VALUE_ON_ZERO mode.
A comment is corrected.
sql/handler.cc:
Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
NO_AUTO_VALUE_ON_ZERO mode.
Now the handler::update_auto_increment() function doesn't reset the
table->auto_increment_field_not_null variable as it is done in the
fill_record() function.
sql/sql_base.cc:
Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
NO_AUTO_VALUE_ON_ZERO mode.
Now the fill_record() function resets the table->auto_increment_field_not_null
variable before filling the record.
The table->auto_increment_field_not_null variable is also reset by the
open_table() function for a case if we missed some auto_increment_field_not_null
handling bug.
sql/sql_insert.cc:
Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
NO_AUTO_VALUE_ON_ZERO mode.
Now the the table->auto_increment_field_not_null is reset at the end of the
mysql_insert() an in the select_insert class destructor.
sql/sql_load.cc:
Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
NO_AUTO_VALUE_ON_ZERO mode.
Now the table->auto_increment_field_not_null is reset at the end of the
mysql_load() function.
sql/sql_table.cc:
Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
NO_AUTO_VALUE_ON_ZERO mode.
Reset the table->auto_increment_field_not_null variable after each
write_row() call in the copy_data_between_tables() function.
sql/table.h:
Bug#23233: 0 as LAST_INSERT_ID() after INSERT .. ON DUPLICATE in the
NO_AUTO_VALUE_ON_ZERO mode.
A comment added.
mysql-test/r/insert_update.result:
Added the test case for the bug#23233: 0 as LAST_INSERT_ID() after
INSERT .. ON DUPLICATE in the NO_AUTO_VALUE_ON_ZERO mode.
mysql-test/t/insert_update.test:
Added the test case for the bug#23233: 0 as LAST_INSERT_ID() after
INSERT .. ON DUPLICATE in the NO_AUTO_VALUE_ON_ZERO mode.
- Read the pid from pidfile in order to be able to kill the real process
instead of the pseudo process. Most platforms will have the same real_pid
as pid
- Kill using the real pid
mysql-test/lib/mtr_process.pl:
Kill using the "real_pid"
mysql-test/mysql-test-run.pl:
Read the pid from pidfile in order to be able to kill the real process
instead of the pseudo process. Most platforms will have the same real_pid
as pid
ARCHIVE table
ARCHIVE table was truncated by REPAIR TABLE ... USE_FRM statement.
The table handler returned its file name extensions in a wrong order.
REPAIR TABLE believed it has to use the meta file to create a new table
from it.
With the fixed order, REPAIR TABLE does now use the data file to create
a new table. So REPAIR TABLE ... USE_FRM works well with ARCHIVE engine
now.
This issue affects 5.0 only, since in 5.1 ARCHIVE engine stores meta
information and data in the same file.
mysql-test/r/archive.result:
A test case for bug#26138.
mysql-test/t/archive.test:
A test case for bug#26138.
sql/examples/ha_example.cc:
Added a comment.
sql/ha_archive.cc:
First element of engine file name extentions array should be meta/index
file extention. Second element - data file extention. This is true
for engines that have separate meta/index file and data file.
Reoder ha_archive_exts elements to meet described above requirement.
sql/handler.h:
Added a comment.
sql/sql_table.cc:
Added a comment.
into recycle.(none):/src/bug23491/my50-bug23491
mysql-test/t/mysqldump.test:
Auto merged
sql/item_func.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/r/mysqldump.result:
SCCS merged
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
sql/sql_yacc.yy:
Auto merged
mysql-test/r/rpl_ignore_table.result:
Merge
mysql-test/t/rpl_ignore_table.test:
Merge, add a connection master to run following test on master
- GRANT and REVOKE statments didn't have the "updating" flag set and
thus statements with a table specified would not replicate if
slave filtering rules where turned on.
For example "GRANT ... ON test.t1 TO ..." would not replicate.
mysql-test/r/rpl_ignore_table.result:
Add test results
mysql-test/t/rpl_ignore_table.test:
Add tests
sql/sql_yacc.yy:
Pass option TL_OPTION_UPDATING to 'add_table_to_list' when parsing a
GRANT or REVOKE and a table specifier is found. This will set the
property "updating" on the table and thus the slave filtering rules will
be applied.
Without setting updating the statement will be not
replicated - since "it's not updating anything" - an optimization
to quickly skip SELECT's and similar.
into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
myisam/mi_open.c:
Auto merged
sql-common/my_time.c:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/create.result:
Manual merge
mysql-test/t/create.test:
Manual merge
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
sql/mysqld.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_select.cc:
Auto merged
mark the test as requiring that storage engine(if we need to do that)
Make --ndb and --with-ndbcluster and alias for
--mysqld=--default-storage-engine=ndbcluster
Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
mysql-test/include/gis_generic.inc:
Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
mysql-test/r/archive_gis.result:
Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
mysql-test/r/bdb_gis.result:
Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
mysql-test/r/innodb_gis.result:
Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
mysql-test/r/ndb_gis.result:
Revert test case to NOT define any keys; the NDB warning can be handled, and ARCHIVE does not allow indexes
into mysql.com:/home/ram/work/b26359/b26359.5.0
mysql-test/r/strict.result:
Auto merged
mysql-test/t/strict.test:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
Problems:
1. storing a string to an integer field we don't check
if strntoull10rnd() returns MY_ERRNO_EDOM error.
Fix: check for MY_ERRNO_EDOM.
2. storing a string to an year field we use my_strntol() function.
Fix: use strntoull10rnd() instead.
mysql-test/r/strict.result:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- test result.
mysql-test/r/type_date.result:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- test result.
mysql-test/r/type_year.result:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- test result.
mysql-test/t/strict.test:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- test case.
mysql-test/t/type_year.test:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
sql/field.cc:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- Field_num::get_int() method introduced. It converts a string to integer
then check errors and bounds.
- similar Field_tiny::store(const char...), Field_short::store(const char...),
Field_medium::store(const char...), Field_long::store(const char...)
rewritten, now they just call Field_num::get_int() then store value returned.
- Field_num::check_int() simplified.
- Field_year::store(const char...) now uses strntoull10rnd() and properly checks
errors returned.
sql/field.h:
Fix for bugs
#27176: Assigning a string to an year column has unexpected results
#26359: Strings becoming truncated and converted to numbers under STRICT mode
- check_int() moved to Field_num.
- get_int() introduced.
mysql-test/r/archive_gis.result:
update test result
mysql-test/r/bdb_gis.result:
update test result
mysql-test/r/innodb_gis.result:
update test result
mysql-test/r/ndb_gis.result:
update test result
- Add primary key to test table, so NDB with binlog doesn't complain
- Add extra results for bdb_gis.result
mysql-test/include/gis_generic.inc:
Update test for bug #24563 (MBROverlaps does not seem to function propertly.):
- Add primary key to test table, so NDB with binlog doesn't complain
mysql-test/r/archive_gis.result:
update test results
mysql-test/r/bdb_gis.result:
update test results
mysql-test/r/innodb_gis.result:
update test results
mysql-test/r/ndb_gis.result:
update test results
Thanks to Martin Friebe for finding and submitting a fix for this bug!
A table with maximum number of key segments and maximum length key name
would have a corrupted .frm file, due to an incorrect calculation of the
complete key length. Now the key length is computed correctly (I hope) :-)
MyISAM would reject a table with the maximum number of keys and the maximum
number of key segments in all keys. It would allow one less than this total
maximum. Now MyISAM accepts a table defined with the maximum. (This is a
very minor issue.)
myisam/mi_open.c:
change >= to > in a comparison (i.e., error only if key_parts_in_table
really is greater than MAX_KEY * MAX_KEY_SEG)
mysql-test/r/create.result:
Add test results for bug #26642 (create index corrupts table definition in .frm)
mysql-test/t/create.test:
Add test case for bug #26642 (create index corrupts table definition in .frm)
sql/table.cc:
In create_frm(), fix formula for key_length; it was too small by (keys * 2) bytes
- Added PARAM::alloced_sel_args where we count the # of SEL_ARGs
created by SEL_ARG tree cloning operations.
- Made the range analyzer to shortcut and not do any more cloning
if we've already created MAX_SEL_ARGS SEL_ARG objects in cloning.
- Added comments about space complexity of SEL_ARG-graph
representation.
mysql-test/r/range.result:
BUG#26624: Testcase
mysql-test/t/range.test:
BUG#26624: Testcase
Problem: SOUNDEX returned an invalid string for international
characters in multi-byte character sets.
For example: for a Chinese/Japanese 3-byte long character
_utf8 0xE99885 it took only the very first byte 0xE9,
put it into the outout string and then appended with three
DIGIT ZERO characters, so the result was 0xE9303030 - which
is an invalide utf8 string.
Fix: make SOUNDEX() multi-byte aware and - put only complete
characters into result, thus return only valid strings.
This patch also makes SOUNDEX() compatible with UCS2.
mysql-test/r/ctype_ucs.result:
Adding tests
mysql-test/r/ctype_utf8.result:
Adding tests
mysql-test/t/ctype_ucs.test:
Adding tests
mysql-test/t/ctype_utf8.test:
Adding tests
sql/item_strfunc.cc:
Making soundex multi-byte aware.
Geometry fields have a result type string and a
special subclass to cater for the differences
between them and the base class (just like
DATE/TIME).
When creating temporary tables for results of
functions that return results of type GEOMETRY
we must construct fields of the derived class
instead of the base class.
Fixed by creating a GEOMETRY field (Field_geom)
instead of a generic BLOB (Field_blob) in temp
tables for the results of GIS functions that
have GEOMETRY return type (Item_geometry_func).
mysql-test/r/gis.result:
Bug #27300: test case
mysql-test/t/gis.test:
Bug #27300: test case
sql/item.cc:
Bug #27300:
Create a GEOMETRY field (Field_geom) instead of
a generic BLOB (Field_blob) in temp tables for
the results of GIS functions (Item_geometry_func).
sql/sql_select.cc:
Bug #27300:
Create a GEOMETRY field (Field_geom) instead of
a generic BLOB (Field_blob) in temp tables for
the results of GIS functions (Item_geometry_func).
- Turn off verification of peer if both ca_path and ca_file is null
i.e from only passing --ssl-key=<client_key> and --ssl-cert=<client_cert>
to the mysql utility programs.
The server will authenticate the client accoring to GRANT tables
but the client won't authenticate the server
mysql-test/r/openssl_1.result:
Update result file
mysql-test/t/openssl_1.test:
Test that it's possible to connect with --ssl-ca set to /dev/null
vio/viosslfactories.c:
Turn off verification of peer if both ca_file and ca_path is NULL
into chilla.local:/home/mydev/mysql-5.0-axmrg
myisam/mi_range.c:
Auto merged
myisam/mi_search.c:
Auto merged
mysql-test/r/heap_btree.result:
Auto merged
mysql-test/t/myisam.test:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/item_func.cc:
Auto merged
mysql-test/r/myisam.result:
Manual merge from 4.1
mysql-test/t/heap_btree.test:
Manual merge from 4.1
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
mysql-test/r/func_str.result:
Auto merged
mysql-test/t/func_str.test:
Auto merged
sql/item_strfunc.cc:
Auto merged
- Add extra test case from bug#27073
- Change "if" to be optimized for count > 0
mysql-test/r/func_str.result:
Add test case from bug#27073
mysql-test/t/func_str.test:
Add test case from bug#27073
sql/item_strfunc.cc:
Change the if statemnet to be optimized for the normal case where count > 0