Commit d89690e6 authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi
Browse files

Portability fixes

Fix for consistent 0000-00-00 date handling
Close + open binary logs on flush tables
Fix for AVG() in HAVING.
parent c9e4b2aa
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ AM_MAKEFLAGS="-j 4"
# -Wshadow -Wunused  -Winline (The later isn't usable in C++ as
# __attribute()__ doesn't work with gnu C++)
global_warnings="-Wimplicit -Wreturn-type -Wid-clash-51 -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-function-dec -Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings"
debug_extra_warnings="-Wuninitialized"
#debug_extra_warnings="-Wuninitialized"
c_warnings="$global_warnings -Wunused"
cxx_warnings="$global_warnings -Woverloaded-virtual -Wextern-inline -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor"

@@ -48,7 +48,7 @@ fast_cflags="-O3 -fno-omit-frame-pointer"
# this is one is for someone who thinks 1% speedup is worth not being
# able to backtrace
reckless_cflags="-O3 -fomit-frame-pointer "
debug_cflags="-DEXTRA_DEBUG -DFORCE_INIT_OF_VARS -DSAFEMALLOC -DSAFE_MUTEX -O2"
debug_cflags="-DEXTRA_DEBUG -DFORCE_INIT_OF_VARS -DSAFEMALLOC -DSAFE_MUTEX -O0"

base_cxxflags="-felide-constructors -fno-exceptions -fno-rtti"

+19 −11
Original line number Diff line number Diff line
@@ -22958,7 +22958,7 @@ By default, the @code{mysql.server} script starts the MySQL
server with the @code{-l} option.  If you need better performance when
you start using MySQL in a production environment, you can
remove the @code{-l} option from @code{mysql.server} or change it to
@code{--log-binary}.
@code{--log-bin}.
The entries in this log are written as @code{mysqld} receives the questions.
This may be different than the order in which the statements are executed.
@@ -23032,8 +23032,8 @@ and the crash.
@cindex binary log
@cindex files, binary log
In the future the binary log will replace the update log, so we
recommend you to switch to this log format as soon as possible!
The intention is that the binary log should replace the update log, so
we recommend you to switch to this log format as soon as possible!
The binary log contains all information that is available in the update
log in a more efficient format. It also contains information about how long
@@ -23048,6 +23048,14 @@ file name is given, it defaults to the name of the host machine followed
by @code{-bin}. If file name is given, but it doesn't contain a path, the
file is written in the data directory.
If you supply an extension to @code{--log-bin=filename.extension}, the
extension will be silenty removed.
To the binary log filename @code{mysqld} will append an extension that is a
number that is incremented each time you execute @code{mysqladmin
refresh}, execute @code{mysqladmin flush-logs}, execute the @code{FLUSH LOGS}
statement or restart the server. 
You can use the following options to @code{mysqld} to affect what is logged
to the binary log:
@@ -23062,11 +23070,6 @@ Tells the master that updates to the given database should not be logged
to the binary log (Example: @code{binlog-ignore-db=some_database})
@end multitable
To the binary log filename @code{mysqld} will append an extension that is a
number that is incremented each time you execute @code{mysqladmin
refresh}, execute @code{mysqladmin flush-logs}, execute the @code{FLUSH LOGS}
statement or restart the server.
To be able to know which different binary log files have been used,
@code{mysqld} will also create a binary log index file that
contains the name of all used binary log files. By default this has the
@@ -46840,6 +46843,11 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.44
@itemize @bullet
@item
Fixed bug when using a reference to a @code{AVG()} column in @code{HAVING}.
@item
Fixed that date functions that require correct dates, like
@code{DAYOFYEAR(column)} will return @code{NULL} for @code{0000-00-00} dates.
@item
Fixed bug in const-propagation when comparing columns of different
types. (@code{SELECT * FROM date_col="2001-01-01" and date_col=time_col})
@item
@@ -52724,15 +52732,15 @@ Make a second backup of the tables.
Remove (or move away) any old log files from the MySQL data
directory if you need more space.
@item
Start @code{mysqld} with @code{--log-binary}. @xref{Binary log}.
Start @code{mysqld} with @code{--log-bin}. @xref{Binary log}.
If you want to find a query that crashes @code{mysqld}, you should use
@code{--log --log-binary}.
@code{--log --log-bin}.
@item
When you have gotten a crashed table, stop the @code{mysqld server}.
@item
Restore the backup.
@item
Restart the @code{mysqld} server @strong{without} @code{--log-binary}
Restart the @code{mysqld} server @strong{without} @code{--log-bin}
@item
Re-execute the commands with @code{mysqlbinlog update-log-file | mysql}.
The update log is saved in the MySQL database directory with
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ dnl Process this file with autoconf to produce a configure script.
AC_INIT(sql/mysqld.cc)
AC_CANONICAL_SYSTEM
# The Docs Makefile.am parses this line!
AM_INIT_AUTOMAKE(mysql, 3.23.43)
AM_INIT_AUTOMAKE(mysql, 3.23.44)
AM_CONFIG_HEADER(config.h)

PROTOCOL_VERSION=10
+1 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ Created 11/5/1995 Heikki Tuuri

#ifdef UNIV_NONINL
#include "buf0lru.ic"
#include "srv0srv.h"	/* Needed to getsrv_print_innodb_monitor */
#endif

#include "ut0byte.h"
+18 −0
Original line number Diff line number Diff line
@@ -200,3 +200,21 @@ month(updated)
NULL
year(updated)
NULL
dayofyear("0000-00-00")	dayofyear(d)	dayofyear(dt)	dayofyear(t)	dayofyear(c)
NULL	NULL	NULL	NULL	NULL
dayofmonth("0000-00-00")	dayofmonth(d)	dayofmonth(dt)	dayofmonth(t)	dayofmonth(c)
0	0	0	0	0
month("0000-00-00")	month(d)	month(dt)	month(t)	month(c)
0	0	0	0	0
quarter("0000-00-00")	quarter(d)	quarter(dt)	quarter(t)	quarter(c)
0	0	0	0	0
week("0000-00-00")	week(d)	week(dt)	week(t)	week(c)
NULL	NULL	NULL	NULL	NULL
year("0000-00-00")	year(d)	year(dt)	year(t)	year(c)
0	0	0	0	0
yearweek("0000-00-00")	yearweek(d)	yearweek(dt)	yearweek(t)	yearweek(c)
NULL	NULL	NULL	NULL	NULL
to_days("0000-00-00")	to_days(d)	to_days(dt)	to_days(t)	to_days(c)
NULL	NULL	NULL	NULL	NULL
extract(MONTH FROM "0000-00-00")	extract(MONTH FROM d)	extract(MONTH FROM dt)	extract(MONTH FROM t)	extract(MONTH FROM c)
0	0	0	0	0
Loading