mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
e904d0e750
The patch implements the idea suggested by Olaf van der Spek in thread "Client: many small reads?" (internals@lists.mysql.com). Now small reads performed by the client library are buffered. The buffering gives up to 2 times speedup when retrieving one-column tables. BUILD/SETUP.sh: Remove --with-vio option which no longer exist. BUILD/compile-pentium64-valgrind-max: Remove --with-vio option which no longer exist. config/ac-macros/misc.m4: Removed --with-vio configure switch: we always use VIO. The switch, in fact, only saved us one pointer dereferencing per call in case we had only one transport type in VIO enabled. config/ac-macros/openssl.m4: Removed HAVE_VIO. include/config-win.h: Removed HAVE_VIO (not needed anymore) Added HAVE_VIO_READ_BUFF (define buffered client reads for Windows clients). include/violite.h: Removed HAVE_VIO, as currently VIO is always in use. Added declaration for vio_read_buff and related members in struct VIO. sql-common/client.c: Use flags to set up vio read buffering in mysql_real_connect. sql/mysqld.cc: Use flags to disable vio read buffering when creating a server connection. vio/vio.c: Optionally set up vio read buffer when creating a new VIO structure. vio/viosocket.c: Implementation of client-side buffered reads in VIO: the idea is to buffer small reads in a client buffer to save amount of syscalls per retrieved result set. The implementation relies on the fact that read/recv will return as soon as there is some data in the kernel buffer, no matter how big the given user's buffer is. To be able to disable it in case recv/read don't have such semantics, the new calls are guarded with #define HAVE_VIO_READ_BUFF. Currently buffered reading is switched on only for BSD sockets and named pipes, both on Windows and UNIXes.
117 lines
3.8 KiB
Bash
Executable file
117 lines
3.8 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
if ! test -f sql/mysqld.cc
|
|
then
|
|
echo "You must run this script from the MySQL top-level directory"
|
|
exit 1
|
|
fi
|
|
|
|
prefix_configs="--prefix=/usr/local/mysql"
|
|
just_print=
|
|
just_configure=
|
|
full_debug=
|
|
while test $# -gt 0
|
|
do
|
|
case "$1" in
|
|
--prefix=* ) prefix_configs="$1"; shift ;;
|
|
--with-debug=full ) full_debug="=full"; shift ;;
|
|
-c | --just-configure ) just_configure=1; shift ;;
|
|
-n | --just-print | --print ) just_print=1; shift ;;
|
|
-h | --help ) cat <<EOF; exit 0 ;;
|
|
Usage: $0 [-h|-n] [configure-options]
|
|
-h, --help Show this help message.
|
|
-n, --just-print Don't actually run any commands; just print them.
|
|
-c, --just-configure Stop after running configure.
|
|
--with-debug=full Build with full debug.
|
|
--prefix=path Build with prefix 'path'.
|
|
|
|
Note: this script is intended for internal use by MySQL developers.
|
|
EOF
|
|
* )
|
|
echo "Unknown option '$1'"
|
|
exit 1
|
|
break ;;
|
|
esac
|
|
done
|
|
|
|
set -e
|
|
|
|
export AM_MAKEFLAGS
|
|
AM_MAKEFLAGS="-j 4"
|
|
|
|
# If you are not using codefusion add "-Wpointer-arith" to WARNINGS
|
|
# The following warning flag will give too many warnings:
|
|
# -Wshadow -Wunused -Winline (The later isn't usable in C++ as
|
|
# __attribute()__ doesn't work with gnu C++)
|
|
global_warnings="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings"
|
|
#debug_extra_warnings="-Wuninitialized"
|
|
c_warnings="$global_warnings -Wunused"
|
|
cxx_warnings="$global_warnings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor"
|
|
|
|
base_max_configs="--with-innodb --with-berkeley-db --with-ndbcluster --with-archive-storage-engine --with-raid --with-openssl --with-raid"
|
|
max_leave_isam_configs="--with-innodb --with-berkeley-db --with-ndbcluster --with-archive-storage-engine --with-federated-storage-engine --with-raid --with-openssl --with-raid --with-embedded-server"
|
|
max_no_es_configs="$max_leave_isam_configs --without-isam"
|
|
max_configs="$max_no_es_configs --with-embedded-server"
|
|
|
|
alpha_cflags="-mcpu=ev6 -Wa,-mev6" # Not used yet
|
|
amd64_cflags="-DBIG_TABLES"
|
|
pentium_cflags="-mcpu=pentiumpro"
|
|
pentium64_cflags="-mcpu=nocona -m64"
|
|
ppc_cflags="-mpowerpc -mcpu=powerpc"
|
|
sparc_cflags=""
|
|
|
|
# be as fast as we can be without losing our ability to backtrace
|
|
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="-DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS -DSAFEMALLOC -DPEDANTIC_SAFEMALLOC -DSAFE_MUTEX"
|
|
debug_extra_cflags="-O1 -Wuninitialized"
|
|
|
|
base_cxxflags="-felide-constructors -fno-exceptions -fno-rtti"
|
|
amd64_cxxflags="-DBIG_TABLES"
|
|
|
|
base_configs="$prefix_configs --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-readline"
|
|
static_link="--with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static"
|
|
amd64_configs=""
|
|
alpha_configs="" # Not used yet
|
|
pentium_configs=""
|
|
sparc_configs=""
|
|
# we need local-infile in all binaries for rpl000001
|
|
# if you need to disable local-infile in the client, write a build script
|
|
# and unset local_infile_configs
|
|
local_infile_configs="--enable-local-infile"
|
|
|
|
debug_configs="--with-debug$full_debug"
|
|
if [ -z "$full_debug" ]
|
|
then
|
|
debug_cflags="$debug_cflags $debug_extra_cflags"
|
|
fi
|
|
|
|
if gmake --version > /dev/null 2>&1
|
|
then
|
|
make=gmake
|
|
else
|
|
make=make
|
|
fi
|
|
|
|
if test -z "$CXX" ; then
|
|
CXX=gcc
|
|
fi
|
|
|
|
# If ccache (a compiler cache which reduces build time)
|
|
# (http://samba.org/ccache) is installed, use it.
|
|
# We use 'grep' and hope 'grep' will work as expected
|
|
# (returns 0 if finds lines)
|
|
if ccache -V > /dev/null 2>&1
|
|
then
|
|
if ! (echo "$CC" | grep "ccache" > /dev/null)
|
|
then
|
|
CC="ccache $CC"
|
|
fi
|
|
if ! (echo "$CXX" | grep "ccache" > /dev/null)
|
|
then
|
|
CXX="ccache $CXX"
|
|
fi
|
|
fi
|