Added declarations for print_msg_to_log and vprint_msg_to_log. sql_print_error are simple functions that wrap calls to print_msg_to_log. Define the different error types with MY_ERROR_TYPE, MY_WARNING_TYPE, and MY_INFORMATION_TYPE
gen_lex_hash.cc:
Added NULL error reporting parameter to handle_options
log.cc:
Add print_msg_to_log, print_buffer_to_log, and vprint_msg_to_log. Print_msg_to_log will write the message to the windows event log if on NT. We now have error, warning, and information versions of sql_print_xxxx. T his is a variation of a similar changeset WAX did.
mysqld.cc:
Added option_error_reporter callback function and pass that into handle_options
mysql.cc:
Added NULL as error reporter arg to the end of handle_options
Many files:
Added NULL error reporter parameter as the last paramter to handle_options
my_getopt.c:
Added second function pointer to server as an error reporting callback. Added local function report_option_error that will either write the error to stderr or to the error reporting callback. changed all calls in handle_options from fprintf(stderr, ... ) to report_option_error
my_getopt.h:
Changed declaration of handle_options to use typedefs for the two function pointers. added second function pointer to server as an error reporting callback
mysqld.dsp:
Added custom build step for compiling message file and added message resource file (output of mc)
Adding a compilation define so that on recent Darwin mysqld does not react to SIGHUP and SIGQUIT:
this fixes a rpl000001 problem on our Powermac G5 machine (popping after an upgrade from 10.3.4 to
10.3.5) and is expected to fix
BUG#2030 "relay bin log on slave resets multiple times a second"
(i.e. under some Mac OS X Panther versions, mysqld receives many SIGHUP and SIGQUIT).
So this fix is more a problem-hider than a real understanding of why mysqld receives so many signals.
Note that we saw other problems on this OS where mysqld reacts to Ctrl-Z but apparently only once,
where using SSL seems to make the problem more frequent...
Put --help first, reorder other options so that they are
alphabetical. (shouldn't have to use grep to find an option.)
Move group_concat_max_len to variable part of list.
Rename character_set_server, collation_server,
shared_memory_base_name to character-set-server,
collation-server, shared-memory-base-name.
Make default-collation message refer to collation-server
rather than character-set-server.
next-key locking. Using this option the locks InnoDB sets on index
records do not affect the ``gap'' before that index record. Thus, this option
allows phantom problem.
work (prepared statements)" and after-review fixes:
- str_to_TIME renamed to str_to_datetime to pair with str_to_time
- functions str_to_time and str_to_TIME moved to sql-common
- send_data_str now supports MYSQL_TYPE_TIME, MYSQL_TIME_DATE,
MYSQL_TIME_DATETIME types of user input buffers.
- few more comments in the client library
- a test case added.
you just need to change this line of mysqld.cc:
#if MYSQL_VERSION_ID >= 40103
to, say,
#if MYSQL_VERSION_ID > 40103
I am noticing a failure of bdb.test; I believe this is not related to the
code I added yesterday and today, but I am checking. In any case I push this
changeset as it cannot by itself bring more mess that I *may* (or not)
already have brought with previous pushes.
a limitation of yesterday's implementation:
if there was an unfinished transaction (COMMIT not typed), and some MyISAM tables were
then updated, and then mysqld crashes, then at restart the server would use the too old
binlog offset known by InnoDB to cut the binlog, thus cutting the successful MyISAM
updates. We fix this by reporting the binlog offset into InnoDB even if InnoDB was not
affected at all by the update.
But the feature is still disabled until we decide if it can go into 4.1.3.
before being available to users. That will be the case in 4.1.4.
The "bk commit in mysqldoc" corresponding to this feature was not pushed.
Removing the 6 tests, they'll be pushed again later.
Final push. Printing some warnings at startup, as --innodb-safe-binlog requires
some other options, to work as expected.
Adding 6 new tests (3 pairs). If they fail on some platforms (so far they have been run only on my Linux),
they should be ignored for the 4.1.3 build (you can just
rm mysql-test/*/rpl_crash_*).
Now going to update doc.
Won't be pushed as is - separate email sent for internal review.
WL#1717 "binlog-innodb consistency".
Now when mysqld starts, if InnoDB does a crash recovery, we use the binlog name
and position retrieved from InnoDB (corresponding to the last transaction
successfully committed by InnoDB) to cut any rolled back transaction from
the binary log. This is triggered by the --innodb-safe-binlog option.
Provided you configure mysqld to fsync() InnoDB at every commit (using
flush_log_at_trx_commit) and to fsync() the binlog at every write
(using --sync-binlog=1), this behaviour guarantees that a master always has
consistency between binlog and InnoDB, whenever the crash happens.
6 tests to verify that it works.
Added basic per-thread time zone functionality (based on public
domain elsie-code). Now user can select current time zone
(from the list of time zones described in system tables).
All NOW-like functions honor this time zone, values of TIMESTAMP
type are interpreted as values in this time zone, so now
our TIMESTAMP type behaves similar to Oracle's TIMESTAMP WITH
LOCAL TIME ZONE (or proper PostgresSQL type).
WL#1266 "CONVERT_TZ() - basic time with time zone conversion
function".
Fixed problems described in Bug #2336 (Different number of warnings
when inserting bad datetime as string or as number). This required
reworking of datetime realted warning hadling (they now generated
at Field object level not in conversion functions).
Optimization: Now Field class descendants use table->in_use member
instead of current_thd macro.
New option --sync-binlog=x (and global settable variable) which will fsync the binlog
after every x-th disk write to it. That is, if in autocommit mode, after every x-th statement
written to the binlog; if using transactions, after every x-th transaction written to the binlog.
x==0 means no fsync. x==1 is the slowest.
There is no test added for this, I have just checked that it works as --sync-binlog=1 dramatically
slows down mysqld.
Made sync-frm a global settable variable.
will disable warnings, --log-warnings will increment warning level by one, or the
level can be given as an optional argument. Default level is 1.
Changed aborted connection warning to be logged only if the level is > 1.