mysql_server_init() now returns error code if something went wrong (Bug #2062)
Don't use my_fopen() when reading symlink information as this may cause problems when a lot of files are opened.
Free thread keys with pthread_key_delete() instead of relying on automatic free. (Bug #2062)
Fixed bug in UNION statement with alias '*'. (Bug #1249)
Fixed a bug in DELETE ... ORDER BY ... LIMIT where the rows where not deleted in the proper order. (Bug #1024).
FOUND_ROWS() could return incorrect number of rows after a query with an impossible WHERE condition.
HOW DATABASES doesn't anymore show .sym files (on windows) that doesn't point to a valid directory. (Bug #1385)
include/config-win.h:
Ensure that USE_SYMDIR is set for all windows versions
(This is set in makefiles, so this is just an extra safety measure)
include/my_pthread.h:
Fixed a possible memory leak on MacOSX when using the shared libmysql.so library (Bug #2061)
include/my_sys.h:
my_init() now returns error code if something went wrong
include/mysql.h:
mysql_once_init() now returns error code if something went wrong
include/mysql_com.h:
my_init() now returns error code if something went wrong
libmysql/libmysql.c:
mysql_server_init() and mysql_once_init() now returns error code if something went wrong (Bug #2062)
mysql-test/r/limit.result:
Update results
mysql-test/r/select_found.result:
Update results
mysql-test/r/union.result:
Update results
mysql-test/t/limit.test:
Added test for DELETE ... ORDER BY ... LIMIT (bug #1024)
mysql-test/t/select_found.test:
Added test for problem with impossible WHERE (Bug #1468)
mysql-test/t/union.test:
Added test for problem with alias '*' (Bug #1249)
mysys/mf_pack.c:
Don't use my_fopen() when reading symlink information as this may cause problems when a lot of files are opened.
mysys/my_init.c:
my_init() now returns error code if something went wrong
mysys/my_lib.c:
More debug information
mysys/my_thr_init.c:
Free thread keys with pthread_key_delete() instead of relying on automatic free. (Bug #2062)
sql/sql_base.cc:
Fixed bug in UNION statement with alias '*'. (Bug #1249)
sql/sql_delete.cc:
Fixed a bug in DELETE ... ORDER BY ... LIMIT where the rows where not deleted in the proper order. (Bug #1024).
sql/sql_select.cc:
FOUND_ROWS() could return incorrect number of rows after a query with an impossible WHERE condition.
sql/sql_show.cc:
SHOW DATABASES doesn't anymore show .sym files (on windows) that doesn't point to a valid directory. (Bug #1385)
sql/sql_yacc.yy:
Allow syntax UNION DISTINCT
introduced base class Item_func_bit for bit functions
mysql-test/r/func_op.result:
test results for bug #1993 'bit functions do not return unsigned values'
mysql-test/t/func_op.test:
added tests for bug #1993 'bit functions do not return unsigned values'
SQL_BIG_RESULT used": now BIT_AND() always returns 18446744073709551615
if no rows were found.
This patch also fixes bug #1972: "BIT_AND() and BIT_OR() still return
a *signed* 64bit value"
mysql-test/r/func_group.result:
followup to fix for bug #1790 BIT_AND() result in GROUP BY different when
SQL_BIG_RESULT used": test results fixed
bug #1972 "BIT_AND() and BIT_OR() still return a *signed* 64bit value":
results of new tests
mysql-test/t/func_group.test:
added tests for bug #1972 "BIT_AND() and BIT_OR() still return a
*signed* 64bit value"
--disable_query_log was not a good idea, Serg says
mysql-test/r/group_by.result:
bug #1335 tests followup:
--disable_query_log was not a good idea, Serg says
tests results updated
New formats added for 'week()' function and 'default_week_format' option(4 - 7).
Next formats is supported now:
*Value* *Meaning*
`0' Week starts on Sunday; First Sunday of the year starts week 1.
Week() returns 0-53.
`1' Week starts on Monday; Weeks numbered according to ISO 8601:1988.
Week() returns 0-53.
`2' Week starts on Sunday; First Sunday of the year starts week 1.
Week() returns 1-53.
`3' Week starts on Monday; Weeks numbered according to ISO 8601:1988.
Week() returns 1-53.
`4' Week starts on Sunday; Weeks numbered according to ISO 8601:1988.
Week() returns 0-53.
`5' Week starts on Monday; First Monday of the year starts week 1.
Week() returns 0-53.
`6' Week starts on Sunday; Weeks numbered according to ISO 8601:1988.
Week() returns 1-53.
`7' Week starts on Monday; First Monday of the year starts week 1.
Week() returns 1-53.
mysql-test/r/func_time.result:
Test for 'default_week_format' option and 'week' function
mysql-test/t/func_time.test:
Test for 'default_week_format' option and 'week' function
sql/item_timefunc.cc:
WL#1175 more default_week_formats for iso compatibility
sql/mysql_priv.h:
WL#1175 more default_week_formats for iso compatibility
sql/mysqld.cc:
WL#1175 more default_week_formats for iso compatibility
sql/time.cc:
WL#1175 more default_week_formats for iso compatibility
we change THD::system_thread from a 'bool' to a bitmap to be able to
distinguish between delayed-insert threads and slave threads.
- Fix for BUG#1701 "Update from multiple tables" (one line in sql_parse.cc,
plus a new test rpl_multi_update.test). That's just adding an initialization.
sql/repl_failsafe.cc:
comment to warn about this unused code
sql/slave.cc:
Now thd->system_thread is a bitmap, not a bool.
sql/sql_class.h:
'bool' for THD::system_thread is not accurate enough; sometimes we need
to distinguish between delayed-insert threads and slave threads;
so changing THD::system_thread to a bitmap (uint).
sql/sql_insert.cc:
thd.system_thread is now a bitmap
sql/sql_parse.cc:
We need to initialize thd->lex.select_lex.options in mysql_init_query();
it's already initialized in dispatch_command() but replication calls
mysql_parse() directly, thus bypassing dispatch_command().
Not initing it here leads to a query influencing the next query,
in the slave SQL thread.
The initialization in dispatch_command() must be kept as this
command uses the variable in tests, even when the command was not a
query (i.e. when mysql_init_query() was not called).
move bdb/innodb tests to right places
mysql-test/r/bdb.result:
Update results after test changes
mysql-test/r/innodb.result:
Update results after test changes
mysql-test/r/multi_update.result:
Update results after test changes
mysql-test/t/bdb.test:
Move bdb tests here
mysql-test/t/innodb.test:
Move innodb test here
mysql-test/t/multi_update.test:
move bdb/innodb tests to repective test
sql/mysqld.cc:
Allow space in service names
about it". Now numbers representing illegal timestamps are
converted to 0 value if they are stored as timestamp or
datetime. This behaviour is consistent with manual and with
behaviour of string -> timestamp conversion.
mysql-test/r/type_datetime.result:
Added test if ranges are checked during
integer, string -> timestamp conversion
mysql-test/r/type_timestamp.result:
Added test if ranges are checked during
integer, string -> datetime conversion
mysql-test/t/type_datetime.test:
Added test if ranges are checked during
integer, string -> datetime conversion
mysql-test/t/type_timestamp.test:
Added test if ranges are checked during
integer, string -> timestamp conversion
sql/field.cc:
Checks of month, day, hour, minute and second ranges were added
to storing of integer into Field_datetime and Field_timestamp
and so for integer -> datetime, timestamp conversion.
SQL_BIG_RESULT used':
- BIT_AND now returns BIGINT UNSIGNED
- in case there were no matching rows BIT_AND returns 18446744073709551615
(but not NULL), BIT_OR returns 0 (but not NULL). That's how Monty wants it
and how is described in our docs.
include/my_global.h:
Added definition for ULONGLONG_MAX.
This is also a check that ULL type specifier
can be used on all supported platforms.
mysql-test/r/func_group.result:
bug #1790, post-review work: test results fixed
sql/item_sum.cc:
small cleanup
sql/item_sum.h:
few style fixes.
BIT_AND and BIT_OR now are both BIGINT UNSIGNED
The right way to fix this is to change the Field::store(longlong) method to be
Field::store(longlong, bool unsigned_flag), but this is better to do in 4.1 than in 4.0
mysql-test/r/bigint.result:
New tests to show how the last bigint patch broke MySQL
mysql-test/t/bigint.test:
New tests to show how the last bigint patch broke MySQL
sql/item.cc:
Revert patch for bigint handling in double context as it broke normal bigint handling
sql/item.h:
Revert patch for bigint handling in double context as it broke normal bigint handling
"BIT_AND() result in GROUP BY different when SQL_BIG_RESULT used"
return value of BIT_AND changed to BIGINT SIGNED
Also the patch fixes another bug: when temporary table is in use and one of
values in group is NULL, BIT_AND always returns zero.
Fixed it to always skip null values.
mysql-test/r/func_group.result:
bug #1790: test results fixed
sql/item_sum.cc:
fix for bug #1790:
update_field() rewritten to use add() and thus was moved
to Item_sum_bit::update_field()
Item_sum_bit::reset_field() was rewritten to take into account
reset_bits.
sql/item_sum.h:
fix for bug #1790:
Item_sum::update_field() and Item_sum::reset_field() commented
Item_sum_and changed to return BIGINT SIGNED
Item_sum_and::update_field() and Item_sum_or::update_field)
were replaced with generic Item_sum_bit::update_field()
mysql-test/r/query_cache.result:
test of drop database
mysql-test/t/query_cache.test:
test of drop database
sql/sql_cache.cc:
database invalidation invalidate queries only of given database
every freed block header marked as FREE even if it will be merged to make moving & deleting tables block safe
layout fixed (too long line)
more user variable tests
mysql-test/r/user_var.result:
more user variable tests (just to have this behaviour written down somewhere)
mysql-test/t/user_var.test:
more user variable tests (just to have this behaviour written down somewhere)
sql/sql_handler.cc:
Bug#1826, HANDLER+ALTER TABLE=crash
(unfortunately, it cannot be tested in mysql-test suite)
"CHANGE MASTER makes SQL thread restart from coordinates of I/O thread".
So, in CHANGE MASTER:
when it seems reasonable that the user did not want to discontinue
its replication (i.e. when he is not specifying host or port or master_log_file
or master_log_pos; this will be documented), set the coordinates of the
I/O thread to those of the SQL thread. This way, the SQL thread will see
no discontinuity in the relay log (i.e. will skip no events), because
the I/O thread will fill the brand new relay log with the events which
are just after the position where the SQL thread had stopped
(before CHANGE MASTER was issued).
And a new test for this bug.
mysql-test/r/rpl_loaddata.result:
Now, after CHANGE MASTER the coordinates of the I/O thread are the last ones of the SQL thread, so result update.
sql/sql_repl.cc:
Fix for BUG#1870
"CHANGE MASTER makes SQL thread restart from coordinates of I/O thread".
So, in CHANGE MASTER:
when it seems reasonable that the user did not want to discontinue
its replication (i.e. when he is not specifying host or port or master_log_file
or master_log_pos; this will be documented), set the coordinates of the
I/O thread to those of the SQL thread. This way, the SQL thread will see
no discontinuity in the relay log (i.e. will skip no events), because
the I/O thread will fill the brand new relay log with the events which
are just after the position where the SQL thread had stopped
(before CHANGE MASTER was issued).