xtradb 5.5.13

This commit is contained in:
Sergei Golubchik 2011-07-14 21:22:41 +02:00
parent fecd255a16
commit 54ab9ea20f
544 changed files with 25730 additions and 66664 deletions

View file

@ -1,5 +1,5 @@
# Copyright (C) 2009 Oracle/Innobase Oy
#
# Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
@ -11,43 +11,210 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# This is the CMakeLists for InnoDB Plugin
# This is the CMakeLists for InnoDB
INCLUDE(CheckFunctionExists)
INCLUDE(CheckCSourceCompiles)
INCLUDE(CheckCSourceRuns)
# OS tests
IF(UNIX)
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
CHECK_INCLUDE_FILES (libaio.h HAVE_LIBAIO_H)
CHECK_LIBRARY_EXISTS(aio io_queue_init "" HAVE_LIBAIO)
ADD_DEFINITIONS("-DUNIV_LINUX -D_GNU_SOURCE=1")
IF(HAVE_LIBAIO_H AND HAVE_LIBAIO)
ADD_DEFINITIONS(-DLINUX_NATIVE_AIO=1)
LINK_LIBRARIES(aio)
ENDIF()
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP*")
ADD_DEFINITIONS("-DUNIV_HPUX -DUNIV_MUST_NOT_INLINE")
ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "AIX")
ADD_DEFINITIONS("-DUNIV_AIX -DUNIX_MUST_NOT_INLINE")
ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
ADD_DEFINITIONS("-DUNIV_SOLARIS")
ELSE()
ADD_DEFINITIONS("-DUNIV_MUST_NOT_INLINE")
ENDIF()
ENDIF()
# Enable InnoDB's UNIV_DEBUG for debug builds
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DUNIV_DEBUG")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DUNIV_DEBUG")
IF(NOT MSVC)
# either define HAVE_IB_GCC_ATOMIC_BUILTINS or not
IF(NOT CMAKE_CROSSCOMPILING)
CHECK_C_SOURCE_RUNS(
"
int main()
{
long x;
long y;
long res;
char c;
x = 10;
y = 123;
res = __sync_bool_compare_and_swap(&x, x, y);
if (!res || x != y) {
return(1);
}
x = 10;
y = 123;
res = __sync_bool_compare_and_swap(&x, x + 1, y);
if (res || x != 10) {
return(1);
}
x = 10;
y = 123;
res = __sync_add_and_fetch(&x, y);
if (res != 123 + 10 || x != 123 + 10) {
return(1);
}
c = 10;
res = __sync_lock_test_and_set(&c, 123);
if (res != 10 || c != 123) {
return(1);
}
return(0);
}"
HAVE_IB_GCC_ATOMIC_BUILTINS
)
ENDIF()
IF(HAVE_IB_GCC_ATOMIC_BUILTINS)
ADD_DEFINITIONS(-DHAVE_IB_GCC_ATOMIC_BUILTINS=1)
ENDIF()
# either define HAVE_IB_ATOMIC_PTHREAD_T_GCC or not
IF(NOT CMAKE_CROSSCOMPILING)
CHECK_C_SOURCE_RUNS(
"
#include <pthread.h>
#include <string.h>
int main() {
pthread_t x1;
pthread_t x2;
pthread_t x3;
memset(&x1, 0x0, sizeof(x1));
memset(&x2, 0x0, sizeof(x2));
memset(&x3, 0x0, sizeof(x3));
__sync_bool_compare_and_swap(&x1, x2, x3);
return(0);
}"
HAVE_IB_ATOMIC_PTHREAD_T_GCC)
ENDIF()
IF(HAVE_IB_ATOMIC_PTHREAD_T_GCC)
ADD_DEFINITIONS(-DHAVE_IB_ATOMIC_PTHREAD_T_GCC=1)
ENDIF()
ENDIF(NOT MSVC)
# Solaris atomics
IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
CHECK_FUNCTION_EXISTS(atomic_cas_ulong HAVE_ATOMIC_CAS_ULONG)
CHECK_FUNCTION_EXISTS(atomic_cas_32 HAVE_ATOMIC_CAS_32)
CHECK_FUNCTION_EXISTS(atomic_cas_64 HAVE_ATOMIC_CAS_64)
CHECK_FUNCTION_EXISTS(atomic_add_long_nv HAVE_ATOMIC_ADD_LONG_NV)
CHECK_FUNCTION_EXISTS(atomic_swap_uchar HAVE_ATOMIC_SWAP_UCHAR)
IF(HAVE_ATOMIC_CAS_ULONG AND
HAVE_ATOMIC_CAS_32 AND
HAVE_ATOMIC_CAS_64 AND
HAVE_ATOMIC_ADD_LONG_NV AND
HAVE_ATOMIC_SWAP_UCHAR)
SET(HAVE_IB_SOLARIS_ATOMICS 1)
ENDIF()
IF(HAVE_IB_SOLARIS_ATOMICS)
ADD_DEFINITIONS(-DHAVE_IB_SOLARIS_ATOMICS=1)
ENDIF()
IF(NOT CMAKE_CROSSCOMPILING)
# either define HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS or not
CHECK_C_SOURCE_COMPILES(
" #include <pthread.h>
#include <string.h>
int main(int argc, char** argv) {
pthread_t x1;
pthread_t x2;
pthread_t x3;
memset(&x1, 0x0, sizeof(x1));
memset(&x2, 0x0, sizeof(x2));
memset(&x3, 0x0, sizeof(x3));
if (sizeof(pthread_t) == 4) {
atomic_cas_32(&x1, x2, x3);
} else if (sizeof(pthread_t) == 8) {
atomic_cas_64(&x1, x2, x3);
} else {
return(1);
}
return(0);
}
" HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS)
ENDIF()
IF(HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS)
ADD_DEFINITIONS(-DHAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=1)
ENDIF()
ENDIF()
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
IF(UNIX)
# this is needed to know which one of atomic_cas_32() or atomic_cas_64()
# to use in the source
SET(CMAKE_EXTRA_INCLUDE_FILES pthread.h)
CHECK_TYPE_SIZE(pthread_t SIZEOF_PTHREAD_T)
SET(CMAKE_EXTRA_INCLUDE_FILES)
ENDIF()
# Starting at 5.1.38, MySQL CMake files are simplified. But the plugin
# CMakeLists.txt still needs to work with previous versions of MySQL.
IF (MYSQL_VERSION_ID GREATER "50137")
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
ENDIF (MYSQL_VERSION_ID GREATER "50137")
IF(SIZEOF_PTHREAD_T)
ADD_DEFINITIONS(-DSIZEOF_PTHREAD_T=${SIZEOF_PTHREAD_T})
ENDIF()
IF (CMAKE_SIZEOF_VOID_P MATCHES 8)
SET(WIN64 TRUE)
ENDIF (CMAKE_SIZEOF_VOID_P MATCHES 8)
IF(MSVC)
ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS)
ENDIF()
# Include directories under innodb_plugin
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/innodb_plugin/include
${CMAKE_SOURCE_DIR}/storage/innodb_plugin/handler)
# Include directories under mysql
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/sql
${CMAKE_SOURCE_DIR}/regex
${CMAKE_SOURCE_DIR}/zlib
${CMAKE_SOURCE_DIR}/extra/yassl/include)
# Include directories under innobase
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/innobase/include
${CMAKE_SOURCE_DIR}/storage/innobase/handler)
# Sun Studio bug with -xO2
IF(CMAKE_C_COMPILER_ID MATCHES "SunPro"
AND CMAKE_C_FLAGS_RELEASE MATCHES "O2"
AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
# Sun Studio 12 crashes with -xO2 flag, but not with higher optimization
# -xO3
SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/rem/rem0rec.c
PROPERTIES COMPILE_FLAGS -xO3)
ENDIF()
# Removing compiler optimizations for innodb/mem/* files on 64-bit Windows
# due to 64-bit compiler error, See MySQL Bug #19424, #36366, #34297
IF (MSVC AND $(WIN64))
IF (MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8)
SET_SOURCE_FILES_PROPERTIES(mem/mem0mem.c mem/mem0pool.c
PROPERTIES COMPILE_FLAGS -Od)
ENDIF (MSVC AND $(WIN64))
ENDIF()
SET(INNODB_PLUGIN_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
buf/buf0buddy.c buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c
data/data0data.c data/data0type.c
dict/dict0boot.c dict/dict0crea.c dict/dict0dict.c dict/dict0load.c dict/dict0mem.c
@ -67,22 +234,25 @@ SET(INNODB_PLUGIN_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea
os/os0file.c os/os0proc.c os/os0sync.c os/os0thread.c
page/page0cur.c page/page0page.c page/page0zip.c
que/que0que.c
handler/ha_innodb.cc handler/handler0alter.cc handler/i_s.cc handler/mysql_addons.cc
handler/ha_innodb.cc handler/handler0alter.cc handler/i_s.cc
read/read0read.c
rem/rem0cmp.c rem/rem0rec.c
row/row0ext.c row/row0ins.c row/row0merge.c row/row0mysql.c row/row0purge.c row/row0row.c
row/row0sel.c row/row0uins.c row/row0umod.c row/row0undo.c row/row0upd.c row/row0vers.c
srv/srv0que.c srv/srv0srv.c srv/srv0start.c
srv/srv0srv.c srv/srv0start.c
sync/sync0arr.c sync/sync0rw.c sync/sync0sync.c
thr/thr0loc.c
trx/trx0i_s.c trx/trx0purge.c trx/trx0rec.c trx/trx0roll.c trx/trx0rseg.c
trx/trx0sys.c trx/trx0trx.c trx/trx0undo.c
usr/usr0sess.c
ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rbt.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c
ut/ut0list.c ut/ut0wqueue.c)
# Windows atomics do not perform well. Disable Windows atomics by default.
# See bug#52102 for details.
#ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS -DINNODB_RW_LOCKS_USE_ATOMICS -DHAVE_IB_PAUSE_INSTRUCTION)
ADD_DEFINITIONS(-DHAVE_IB_PAUSE_INSTRUCTION)
ut/ut0byte.c ut/ut0dbg.c ut/ut0list.c ut/ut0mem.c ut/ut0rbt.c ut/ut0rnd.c
ut/ut0ut.c ut/ut0vec.c ut/ut0wqueue.c ut/ut0bh.c)
MYSQL_STORAGE_ENGINE(INNODB_PLUGIN)
IF(WITH_INNODB)
# Legacy option
SET(WITH_INNOBASE_STORAGE_ENGINE TRUE)
ENDIF()
MYSQL_ADD_PLUGIN(innobase ${INNOBASE_SOURCES} STORAGE_ENGINE
DEFAULT
MODULE_OUTPUT_NAME ha_innodb
LINK_LIBRARIES ${ZLIB_LIBRARY})

351
COPYING
View file

@ -1,351 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
========
The licenses for most software are designed to take away your freedom
to share and change it. By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not price.
Our General Public Licenses are designed to make sure that you have
the freedom to distribute copies of free software (and charge for this
service if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone
to deny you these rights or to ask you to surrender the rights. These
restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis
or for a fee, you must give the recipients all the rights that you
have. You must make sure that they, too, receive or can get the source
code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software patents.
We wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program
proprietary. To prevent this, we have made it clear that any patent
must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains a
notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program",
below, refers to any such program or work, and a "work based on
the Program" means either the Program or any derivative work under
copyright law: that is to say, a work containing the Program or a
portion of it, either verbatim or with modifications and/or
translated into another language. (Hereinafter, translation is
included without limitation in the term "modification".) Each
licensee is addressed as "you".
Activities other than copying, distribution and modification are
not covered by this License; they are outside its scope. The act
of running the Program is not restricted, and the output from the
Program is covered only if its contents constitute a work based on
the Program (independent of having been made by running the
Program). Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any
warranty; and give any other recipients of the Program a copy of
this License along with the Program.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange
for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a. You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b. You must cause any work that you distribute or publish, that
in whole or in part contains or is derived from the Program
or any part thereof, to be licensed as a whole at no charge
to all third parties under the terms of this License.
c. If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display
an announcement including an appropriate copyright notice and
a notice that there is no warranty (or else, saying that you
provide a warranty) and that users may redistribute the
program under these conditions, and telling the user how to
view a copy of this License. (Exception: if the Program
itself is interactive but does not normally print such an
announcement, your work based on the Program is not required
to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the
Program, and can be reasonably considered independent and separate
works in themselves, then this License, and its terms, do not
apply to those sections when you distribute them as separate
works. But when you distribute the same sections as part of a
whole which is a work based on the Program, the distribution of
the whole must be on the terms of this License, whose permissions
for other licensees extend to the entire whole, and thus to each
and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or
contest your rights to work written entirely by you; rather, the
intent is to exercise the right to control the distribution of
derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the
Program with the Program (or with a work based on the Program) on
a volume of a storage or distribution medium does not bring the
other work under the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms
of Sections 1 and 2 above provided that you also do one of the
following:
a. Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of
Sections 1 and 2 above on a medium customarily used for
software interchange; or,
b. Accompany it with a written offer, valid for at least three
years, to give any third-party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange; or,
c. Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with
such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete
source code means all the source code for all modules it contains,
plus any associated interface definition files, plus the scripts
used to control compilation and installation of the executable.
However, as a special exception, the source code distributed need
not include anything that is normally distributed (in either
source or binary form) with the major components (compiler,
kernel, and so on) of the operating system on which the executable
runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this
License. However, parties who have received copies, or rights,
from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify
or distribute the Program or its derivative works. These actions
are prohibited by law if you do not accept this License.
Therefore, by modifying or distributing the Program (or any work
based on the Program), you indicate your acceptance of this
License to do so, and all its terms and conditions for copying,
distributing or modifying the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program
subject to these terms and conditions. You may not impose any
further restrictions on the recipients' exercise of the rights
granted herein. You are not responsible for enforcing compliance
by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent
issues), conditions are imposed on you (whether by court order,
agreement or otherwise) that contradict the conditions of this
License, they do not excuse you from the conditions of this
License. If you cannot distribute so as to satisfy simultaneously
your obligations under this License and any other pertinent
obligations, then as a consequence you may not distribute the
Program at all. For example, if a patent license would not permit
royalty-free redistribution of the Program by all those who
receive copies directly or indirectly through you, then the only
way you could satisfy both it and this License would be to refrain
entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable
under any particular circumstance, the balance of the section is
intended to apply and the section as a whole is intended to apply
in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of
any such claims; this section has the sole purpose of protecting
the integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is
willing to distribute software through any other system and a
licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed
to be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces,
the original copyright holder who places the Program under this
License may add an explicit geographical distribution limitation
excluding those countries, so that distribution is permitted only
in or among countries not thus excluded. In such case, this
License incorporates the limitation as if written in the body of
this License.
9. The Free Software Foundation may publish revised and/or new
versions of the General Public License from time to time. Such
new versions will be similar in spirit to the present version, but
may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies a version number of this License which applies
to it and "any later version", you have the option of following
the terms and conditions either of that version or of any later
version published by the Free Software Foundation. If the Program
does not specify a version number of this License, you may choose
any version ever published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the
author to ask for permission. For software which is copyrighted
by the Free Software Foundation, write to the Free Software
Foundation; we sometimes make exceptions for this. Our decision
will be guided by the two goals of preserving the free status of
all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
=============================================
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
Copyright (C) YYYY NAME OF AUTHOR
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License. Of course, the
commands you use may be called something other than `show w' and `show
c'; they could even be mouse-clicks or menu items--whatever suits your
program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
SIGNATURE OF TY COON, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library,
you may consider it more useful to permit linking proprietary
applications with the library. If this is what you want to do, use the
GNU Library General Public License instead of this License.

View file

@ -1,31 +0,0 @@
Portions of this software contain modifications contributed by
Sun Microsystems, Inc. These contributions are used with the following
license:
Copyright (c) 2009, Sun Microsystems, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials
provided with the distribution.
* Neither the name of Sun Microsystems, Inc. nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

2122
ChangeLog

File diff suppressed because it is too large Load diff

View file

@ -565,7 +565,7 @@ RECURSIVE = YES
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
EXCLUDE = ut0auxconf_*
EXCLUDE =
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix filesystem feature) are excluded

View file

@ -1,345 +0,0 @@
# Copyright (C) 2001, 2004, 2006 MySQL AB & Innobase Oy
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Process this file with automake to create Makefile.in
MYSQLDATAdir= $(localstatedir)
MYSQLSHAREdir= $(pkgdatadir)
MYSQLBASEdir= $(prefix)
MYSQLLIBdir= $(pkglibdir)
pkgplugindir= $(pkglibdir)/plugin
INCLUDES= -I$(top_srcdir)/include -I$(top_builddir)/include \
-I$(top_srcdir)/regex \
-I$(srcdir)/include \
-I$(top_srcdir)/sql \
-I$(srcdir) @ZLIB_INCLUDES@
DEFS= @DEFS@
noinst_HEADERS= \
handler/ha_innodb.h \
handler/i_s.h \
include/btr0btr.h \
include/btr0btr.ic \
include/btr0cur.h \
include/btr0cur.ic \
include/btr0pcur.h \
include/btr0pcur.ic \
include/btr0sea.h \
include/btr0sea.ic \
include/btr0types.h \
include/buf0buddy.h \
include/buf0buddy.ic \
include/buf0buf.h \
include/buf0buf.ic \
include/buf0flu.h \
include/buf0flu.ic \
include/buf0lru.h \
include/buf0lru.ic \
include/buf0rea.h \
include/buf0types.h \
include/data0data.h \
include/data0data.ic \
include/data0type.h \
include/data0type.ic \
include/data0types.h \
include/db0err.h \
include/dict0boot.h \
include/dict0boot.ic \
include/dict0crea.h \
include/dict0crea.ic \
include/dict0dict.h \
include/dict0dict.ic \
include/dict0load.h \
include/dict0load.ic \
include/dict0mem.h \
include/dict0mem.ic \
include/dict0types.h \
include/dyn0dyn.h \
include/dyn0dyn.ic \
include/eval0eval.h \
include/eval0eval.ic \
include/eval0proc.h \
include/eval0proc.ic \
include/fil0fil.h \
include/fsp0fsp.h \
include/fsp0fsp.ic \
include/fsp0types.h \
include/fut0fut.h \
include/fut0fut.ic \
include/fut0lst.h \
include/fut0lst.ic \
include/ha0ha.h \
include/ha0ha.ic \
include/ha0storage.h \
include/ha0storage.ic \
include/ha_prototypes.h \
include/handler0alter.h \
include/hash0hash.h \
include/hash0hash.ic \
include/ibuf0ibuf.h \
include/ibuf0ibuf.ic \
include/ibuf0types.h \
include/lock0iter.h \
include/lock0lock.h \
include/lock0lock.ic \
include/lock0priv.h \
include/lock0priv.ic \
include/lock0types.h \
include/log0log.h \
include/log0log.ic \
include/log0recv.h \
include/log0recv.ic \
include/mach0data.h \
include/mach0data.ic \
include/mem0dbg.h \
include/mem0dbg.ic \
include/mem0mem.h \
include/mem0mem.ic \
include/mem0pool.h \
include/mem0pool.ic \
include/mtr0log.h \
include/mtr0log.ic \
include/mtr0mtr.h \
include/mtr0mtr.ic \
include/mtr0types.h \
include/mysql_addons.h \
include/os0file.h \
include/os0proc.h \
include/os0proc.ic \
include/os0sync.h \
include/os0sync.ic \
include/os0thread.h \
include/os0thread.ic \
include/page0cur.h \
include/page0cur.ic \
include/page0page.h \
include/page0page.ic \
include/page0types.h \
include/page0zip.h \
include/page0zip.ic \
include/pars0grm.h \
include/pars0opt.h \
include/pars0opt.ic \
include/pars0pars.h \
include/pars0pars.ic \
include/pars0sym.h \
include/pars0sym.ic \
include/pars0types.h \
include/que0que.h \
include/que0que.ic \
include/que0types.h \
include/read0read.h \
include/read0read.ic \
include/read0types.h \
include/rem0cmp.h \
include/rem0cmp.ic \
include/rem0rec.h \
include/rem0rec.ic \
include/rem0types.h \
include/row0ext.h \
include/row0ext.ic \
include/row0ins.h \
include/row0ins.ic \
include/row0merge.h \
include/row0mysql.h \
include/row0mysql.ic \
include/row0purge.h \
include/row0purge.ic \
include/row0row.h \
include/row0row.ic \
include/row0sel.h \
include/row0sel.ic \
include/row0types.h \
include/row0uins.h \
include/row0uins.ic \
include/row0umod.h \
include/row0umod.ic \
include/row0undo.h \
include/row0undo.ic \
include/row0upd.h \
include/row0upd.ic \
include/row0vers.h \
include/row0vers.ic \
include/srv0que.h \
include/srv0srv.h \
include/srv0srv.ic \
include/srv0start.h \
include/sync0arr.h \
include/sync0arr.ic \
include/sync0rw.h \
include/sync0rw.ic \
include/sync0sync.h \
include/sync0sync.ic \
include/sync0types.h \
include/thr0loc.h \
include/thr0loc.ic \
include/trx0i_s.h \
include/trx0purge.h \
include/trx0purge.ic \
include/trx0rec.h \
include/trx0rec.ic \
include/trx0roll.h \
include/trx0roll.ic \
include/trx0rseg.h \
include/trx0rseg.ic \
include/trx0sys.h \
include/trx0sys.ic \
include/trx0trx.h \
include/trx0trx.ic \
include/trx0types.h \
include/trx0undo.h \
include/trx0undo.ic \
include/trx0xa.h \
include/univ.i \
include/usr0sess.h \
include/usr0sess.ic \
include/usr0types.h \
include/ut0auxconf.h \
include/ut0byte.h \
include/ut0byte.ic \
include/ut0dbg.h \
include/ut0list.h \
include/ut0list.ic \
include/ut0lst.h \
include/ut0mem.h \
include/ut0mem.ic \
include/ut0rbt.h \
include/ut0rnd.h \
include/ut0rnd.ic \
include/ut0sort.h \
include/ut0ut.h \
include/ut0ut.ic \
include/ut0vec.h \
include/ut0vec.ic \
include/ut0wqueue.h \
handler/innodb_patch_info.h \
mem/mem0dbg.c
EXTRA_LIBRARIES= libinnobase.a
noinst_LIBRARIES= @plugin_innodb_plugin_static_target@
libinnobase_a_SOURCES= \
btr/btr0btr.c \
btr/btr0cur.c \
btr/btr0pcur.c \
btr/btr0sea.c \
buf/buf0buddy.c \
buf/buf0buf.c \
buf/buf0flu.c \
buf/buf0lru.c \
buf/buf0rea.c \
data/data0data.c \
data/data0type.c \
dict/dict0boot.c \
dict/dict0crea.c \
dict/dict0dict.c \
dict/dict0load.c \
dict/dict0mem.c \
dyn/dyn0dyn.c \
eval/eval0eval.c \
eval/eval0proc.c \
fil/fil0fil.c \
fsp/fsp0fsp.c \
fut/fut0fut.c \
fut/fut0lst.c \
ha/ha0ha.c \
ha/ha0storage.c \
ha/hash0hash.c \
handler/ha_innodb.cc \
handler/handler0alter.cc \
handler/i_s.cc \
handler/mysql_addons.cc \
ibuf/ibuf0ibuf.c \
lock/lock0iter.c \
lock/lock0lock.c \
log/log0log.c \
log/log0recv.c \
mach/mach0data.c \
mem/mem0mem.c \
mem/mem0pool.c \
mtr/mtr0log.c \
mtr/mtr0mtr.c \
os/os0file.c \
os/os0proc.c \
os/os0sync.c \
os/os0thread.c \
page/page0cur.c \
page/page0page.c \
page/page0zip.c \
pars/lexyy.c \
pars/pars0grm.c \
pars/pars0opt.c \
pars/pars0pars.c \
pars/pars0sym.c \
que/que0que.c \
read/read0read.c \
rem/rem0cmp.c \
rem/rem0rec.c \
row/row0ext.c \
row/row0ins.c \
row/row0merge.c \
row/row0mysql.c \
row/row0purge.c \
row/row0row.c \
row/row0sel.c \
row/row0uins.c \
row/row0umod.c \
row/row0undo.c \
row/row0upd.c \
row/row0vers.c \
srv/srv0que.c \
srv/srv0srv.c \
srv/srv0start.c \
sync/sync0arr.c \
sync/sync0rw.c \
sync/sync0sync.c \
thr/thr0loc.c \
trx/trx0i_s.c \
trx/trx0purge.c \
trx/trx0rec.c \
trx/trx0roll.c \
trx/trx0rseg.c \
trx/trx0sys.c \
trx/trx0trx.c \
trx/trx0undo.c \
usr/usr0sess.c \
ut/ut0byte.c \
ut/ut0dbg.c \
ut/ut0list.c \
ut/ut0mem.c \
ut/ut0rbt.c \
ut/ut0rnd.c \
ut/ut0ut.c \
ut/ut0vec.c \
ut/ut0wqueue.c
libinnobase_a_CXXFLAGS= $(AM_CXXFLAGS)
libinnobase_a_CFLAGS= $(AM_CFLAGS)
EXTRA_LTLIBRARIES= ha_innodb_plugin.la
pkgplugin_LTLIBRARIES= @plugin_innodb_plugin_shared_target@
ha_innodb_plugin_la_LDFLAGS= -module -rpath $(pkgplugindir)
ha_innodb_plugin_la_CXXFLAGS= $(AM_CXXFLAGS) $(INNODB_DYNAMIC_CFLAGS)
ha_innodb_plugin_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
ha_innodb_plugin_la_SOURCES= $(libinnobase_a_SOURCES)
EXTRA_DIST= CMakeLists.txt plug.in \
pars/make_bison.sh pars/make_flex.sh \
pars/pars0grm.y pars/pars0lex.l
# Don't update the files from bitkeeper
%::SCCS/s.%

File diff suppressed because it is too large Load diff

32
README
View file

@ -1,32 +0,0 @@
This is the source of the InnoDB Plugin 1.0.6 for MySQL 5.1
===========================================================
Instructions for compiling the plugin:
--------------------------------------
1. Get the latest MySQL 5.1 sources from
http://dev.mysql.com/downloads/mysql/5.1.html#source
2. Replace the contents of the mysql-5.1.N/storage/innobase/ directory
with the contents of this directory.
3. Optional (only necessary if you are going to run tests from the
mysql-test suite): cd into the innobase directory and run ./setup.sh
4. Compile MySQL as usual.
If compiling MySQL 5.1.38 or newer, disable the InnoDB Plugin that comes
with MySQL in storage/innodb_plugin with the configure option
--without-plugin-innodb_plugin
5. Enjoy!
See the online documentation for more detailed instructions:
http://www.innodb.com/doc/innodb_plugin-1.0/innodb-plugin-installation.html
For more information about InnoDB visit
http://www.innodb.com
Please report any problems or issues with the plugin in the InnoDB Forums
http://forums.innodb.com/ or in the MySQL Bugs database http://bugs.mysql.com
Thank you for using the InnoDB plugin!

View file

@ -42,6 +42,560 @@ Created 6/2/1994 Heikki Tuuri
#include "ibuf0ibuf.h"
#include "trx0trx.h"
#ifdef UNIV_BLOB_DEBUG
# include "srv0srv.h"
# include "ut0rbt.h"
/** TRUE when messages about index->blobs modification are enabled. */
static ibool btr_blob_dbg_msg;
/** Issue a message about an operation on index->blobs.
@param op operation
@param b the entry being subjected to the operation
@param ctx the context of the operation */
#define btr_blob_dbg_msg_issue(op, b, ctx) \
fprintf(stderr, op " %u:%u:%u->%u %s(%u,%u,%u)\n", \
(b)->ref_page_no, (b)->ref_heap_no, \
(b)->ref_field_no, (b)->blob_page_no, ctx, \
(b)->owner, (b)->always_owner, (b)->del)
/** Insert to index->blobs a reference to an off-page column.
@param index the index tree
@param b the reference
@param ctx context (for logging) */
UNIV_INTERN
void
btr_blob_dbg_rbt_insert(
/*====================*/
dict_index_t* index, /*!< in/out: index tree */
const btr_blob_dbg_t* b, /*!< in: the reference */
const char* ctx) /*!< in: context (for logging) */
{
if (btr_blob_dbg_msg) {
btr_blob_dbg_msg_issue("insert", b, ctx);
}
mutex_enter(&index->blobs_mutex);
rbt_insert(index->blobs, b, b);
mutex_exit(&index->blobs_mutex);
}
/** Remove from index->blobs a reference to an off-page column.
@param index the index tree
@param b the reference
@param ctx context (for logging) */
UNIV_INTERN
void
btr_blob_dbg_rbt_delete(
/*====================*/
dict_index_t* index, /*!< in/out: index tree */
const btr_blob_dbg_t* b, /*!< in: the reference */
const char* ctx) /*!< in: context (for logging) */
{
if (btr_blob_dbg_msg) {
btr_blob_dbg_msg_issue("delete", b, ctx);
}
mutex_enter(&index->blobs_mutex);
ut_a(rbt_delete(index->blobs, b));
mutex_exit(&index->blobs_mutex);
}
/**************************************************************//**
Comparator for items (btr_blob_dbg_t) in index->blobs.
The key in index->blobs is (ref_page_no, ref_heap_no, ref_field_no).
@return negative, 0 or positive if *a<*b, *a=*b, *a>*b */
static
int
btr_blob_dbg_cmp(
/*=============*/
const void* a, /*!< in: first btr_blob_dbg_t to compare */
const void* b) /*!< in: second btr_blob_dbg_t to compare */
{
const btr_blob_dbg_t* aa = a;
const btr_blob_dbg_t* bb = b;
ut_ad(aa != NULL);
ut_ad(bb != NULL);
if (aa->ref_page_no != bb->ref_page_no) {
return(aa->ref_page_no < bb->ref_page_no ? -1 : 1);
}
if (aa->ref_heap_no != bb->ref_heap_no) {
return(aa->ref_heap_no < bb->ref_heap_no ? -1 : 1);
}
if (aa->ref_field_no != bb->ref_field_no) {
return(aa->ref_field_no < bb->ref_field_no ? -1 : 1);
}
return(0);
}
/**************************************************************//**
Add a reference to an off-page column to the index->blobs map. */
UNIV_INTERN
void
btr_blob_dbg_add_blob(
/*==================*/
const rec_t* rec, /*!< in: clustered index record */
ulint field_no, /*!< in: off-page column number */
ulint page_no, /*!< in: start page of the column */
dict_index_t* index, /*!< in/out: index tree */
const char* ctx) /*!< in: context (for logging) */
{
btr_blob_dbg_t b;
const page_t* page = page_align(rec);
ut_a(index->blobs);
b.blob_page_no = page_no;
b.ref_page_no = page_get_page_no(page);
b.ref_heap_no = page_rec_get_heap_no(rec);
b.ref_field_no = field_no;
ut_a(b.ref_field_no >= index->n_uniq);
b.always_owner = b.owner = TRUE;
b.del = FALSE;
ut_a(!rec_get_deleted_flag(rec, page_is_comp(page)));
btr_blob_dbg_rbt_insert(index, &b, ctx);
}
/**************************************************************//**
Add to index->blobs any references to off-page columns from a record.
@return number of references added */
UNIV_INTERN
ulint
btr_blob_dbg_add_rec(
/*=================*/
const rec_t* rec, /*!< in: record */
dict_index_t* index, /*!< in/out: index */
const ulint* offsets,/*!< in: offsets */
const char* ctx) /*!< in: context (for logging) */
{
ulint count = 0;
ulint i;
btr_blob_dbg_t b;
ibool del;
ut_ad(rec_offs_validate(rec, index, offsets));
if (!rec_offs_any_extern(offsets)) {
return(0);
}
b.ref_page_no = page_get_page_no(page_align(rec));
b.ref_heap_no = page_rec_get_heap_no(rec);
del = (rec_get_deleted_flag(rec, rec_offs_comp(offsets)) != 0);
for (i = 0; i < rec_offs_n_fields(offsets); i++) {
if (rec_offs_nth_extern(offsets, i)) {
ulint len;
const byte* field_ref = rec_get_nth_field(
rec, offsets, i, &len);
ut_a(len != UNIV_SQL_NULL);
ut_a(len >= BTR_EXTERN_FIELD_REF_SIZE);
field_ref += len - BTR_EXTERN_FIELD_REF_SIZE;
if (!memcmp(field_ref, field_ref_zero,
BTR_EXTERN_FIELD_REF_SIZE)) {
/* the column has not been stored yet */
continue;
}
b.ref_field_no = i;
b.blob_page_no = mach_read_from_4(
field_ref + BTR_EXTERN_PAGE_NO);
ut_a(b.ref_field_no >= index->n_uniq);
b.always_owner = b.owner
= !(field_ref[BTR_EXTERN_LEN]
& BTR_EXTERN_OWNER_FLAG);
b.del = del;
btr_blob_dbg_rbt_insert(index, &b, ctx);
count++;
}
}
return(count);
}
/**************************************************************//**
Display the references to off-page columns.
This function is to be called from a debugger,
for example when a breakpoint on ut_dbg_assertion_failed is hit. */
UNIV_INTERN
void
btr_blob_dbg_print(
/*===============*/
const dict_index_t* index) /*!< in: index tree */
{
const ib_rbt_node_t* node;
if (!index->blobs) {
return;
}
/* We intentionally do not acquire index->blobs_mutex here.
This function is to be called from a debugger, and the caller
should make sure that the index->blobs_mutex is held. */
for (node = rbt_first(index->blobs);
node != NULL; node = rbt_next(index->blobs, node)) {
const btr_blob_dbg_t* b
= rbt_value(btr_blob_dbg_t, node);
fprintf(stderr, "%u:%u:%u->%u%s%s%s\n",
b->ref_page_no, b->ref_heap_no, b->ref_field_no,
b->blob_page_no,
b->owner ? "" : "(disowned)",
b->always_owner ? "" : "(has disowned)",
b->del ? "(deleted)" : "");
}
}
/**************************************************************//**
Remove from index->blobs any references to off-page columns from a record.
@return number of references removed */
UNIV_INTERN
ulint
btr_blob_dbg_remove_rec(
/*====================*/
const rec_t* rec, /*!< in: record */
dict_index_t* index, /*!< in/out: index */
const ulint* offsets,/*!< in: offsets */
const char* ctx) /*!< in: context (for logging) */
{
ulint i;
ulint count = 0;
btr_blob_dbg_t b;
ut_ad(rec_offs_validate(rec, index, offsets));
if (!rec_offs_any_extern(offsets)) {
return(0);
}
b.ref_page_no = page_get_page_no(page_align(rec));
b.ref_heap_no = page_rec_get_heap_no(rec);
for (i = 0; i < rec_offs_n_fields(offsets); i++) {
if (rec_offs_nth_extern(offsets, i)) {
ulint len;
const byte* field_ref = rec_get_nth_field(
rec, offsets, i, &len);
ut_a(len != UNIV_SQL_NULL);
ut_a(len >= BTR_EXTERN_FIELD_REF_SIZE);
field_ref += len - BTR_EXTERN_FIELD_REF_SIZE;
b.ref_field_no = i;
b.blob_page_no = mach_read_from_4(
field_ref + BTR_EXTERN_PAGE_NO);
switch (b.blob_page_no) {
case 0:
/* The column has not been stored yet.
The BLOB pointer must be all zero.
There cannot be a BLOB starting at
page 0, because page 0 is reserved for
the tablespace header. */
ut_a(!memcmp(field_ref, field_ref_zero,
BTR_EXTERN_FIELD_REF_SIZE));
/* fall through */
case FIL_NULL:
/* the column has been freed already */
continue;
}
btr_blob_dbg_rbt_delete(index, &b, ctx);
count++;
}
}
return(count);
}
/**************************************************************//**
Check that there are no references to off-page columns from or to
the given page. Invoked when freeing or clearing a page.
@return TRUE when no orphan references exist */
UNIV_INTERN
ibool
btr_blob_dbg_is_empty(
/*==================*/
dict_index_t* index, /*!< in: index */
ulint page_no) /*!< in: page number */
{
const ib_rbt_node_t* node;
ibool success = TRUE;
if (!index->blobs) {
return(success);
}
mutex_enter(&index->blobs_mutex);
for (node = rbt_first(index->blobs);
node != NULL; node = rbt_next(index->blobs, node)) {
const btr_blob_dbg_t* b
= rbt_value(btr_blob_dbg_t, node);
if (b->ref_page_no != page_no && b->blob_page_no != page_no) {
continue;
}
fprintf(stderr,
"InnoDB: orphan BLOB ref%s%s%s %u:%u:%u->%u\n",
b->owner ? "" : "(disowned)",
b->always_owner ? "" : "(has disowned)",
b->del ? "(deleted)" : "",
b->ref_page_no, b->ref_heap_no, b->ref_field_no,
b->blob_page_no);
if (b->blob_page_no != page_no || b->owner || !b->del) {
success = FALSE;
}
}
mutex_exit(&index->blobs_mutex);
return(success);
}
/**************************************************************//**
Count and process all references to off-page columns on a page.
@return number of references processed */
UNIV_INTERN
ulint
btr_blob_dbg_op(
/*============*/
const page_t* page, /*!< in: B-tree leaf page */
const rec_t* rec, /*!< in: record to start from
(NULL to process the whole page) */
dict_index_t* index, /*!< in/out: index */
const char* ctx, /*!< in: context (for logging) */
const btr_blob_dbg_op_f op) /*!< in: operation on records */
{
ulint count = 0;
mem_heap_t* heap = NULL;
ulint offsets_[REC_OFFS_NORMAL_SIZE];
ulint* offsets = offsets_;
rec_offs_init(offsets_);
ut_a(fil_page_get_type(page) == FIL_PAGE_INDEX);
ut_a(!rec || page_align(rec) == page);
if (!index->blobs || !page_is_leaf(page)
|| !dict_index_is_clust(index)) {
return(0);
}
if (rec == NULL) {
rec = page_get_infimum_rec(page);
}
do {
offsets = rec_get_offsets(rec, index, offsets,
ULINT_UNDEFINED, &heap);
count += op(rec, index, offsets, ctx);
rec = page_rec_get_next_const(rec);
} while (!page_rec_is_supremum(rec));
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);
}
return(count);
}
/**************************************************************//**
Count and add to index->blobs any references to off-page columns
from records on a page.
@return number of references added */
UNIV_INTERN
ulint
btr_blob_dbg_add(
/*=============*/
const page_t* page, /*!< in: rewritten page */
dict_index_t* index, /*!< in/out: index */
const char* ctx) /*!< in: context (for logging) */
{
btr_blob_dbg_assert_empty(index, page_get_page_no(page));
return(btr_blob_dbg_op(page, NULL, index, ctx, btr_blob_dbg_add_rec));
}
/**************************************************************//**
Count and remove from index->blobs any references to off-page columns
from records on a page.
Used when reorganizing a page, before copying the records.
@return number of references removed */
UNIV_INTERN
ulint
btr_blob_dbg_remove(
/*================*/
const page_t* page, /*!< in: b-tree page */
dict_index_t* index, /*!< in/out: index */
const char* ctx) /*!< in: context (for logging) */
{
ulint count;
count = btr_blob_dbg_op(page, NULL, index, ctx,
btr_blob_dbg_remove_rec);
/* Check that no references exist. */
btr_blob_dbg_assert_empty(index, page_get_page_no(page));
return(count);
}
/**************************************************************//**
Restore in index->blobs any references to off-page columns
Used when page reorganize fails due to compressed page overflow. */
UNIV_INTERN
void
btr_blob_dbg_restore(
/*=================*/
const page_t* npage, /*!< in: page that failed to compress */
const page_t* page, /*!< in: copy of original page */
dict_index_t* index, /*!< in/out: index */
const char* ctx) /*!< in: context (for logging) */
{
ulint removed;
ulint added;
ut_a(page_get_page_no(npage) == page_get_page_no(page));
ut_a(page_get_space_id(npage) == page_get_space_id(page));
removed = btr_blob_dbg_remove(npage, index, ctx);
added = btr_blob_dbg_add(page, index, ctx);
ut_a(added == removed);
}
/**************************************************************//**
Modify the 'deleted' flag of a record. */
UNIV_INTERN
void
btr_blob_dbg_set_deleted_flag(
/*==========================*/
const rec_t* rec, /*!< in: record */
dict_index_t* index, /*!< in/out: index */
const ulint* offsets,/*!< in: rec_get_offs(rec, index) */
ibool del) /*!< in: TRUE=deleted, FALSE=exists */
{
const ib_rbt_node_t* node;
btr_blob_dbg_t b;
btr_blob_dbg_t* c;
ulint i;
ut_ad(rec_offs_validate(rec, index, offsets));
ut_a(dict_index_is_clust(index));
ut_a(del == !!del);/* must be FALSE==0 or TRUE==1 */
if (!rec_offs_any_extern(offsets) || !index->blobs) {
return;
}
b.ref_page_no = page_get_page_no(page_align(rec));
b.ref_heap_no = page_rec_get_heap_no(rec);
for (i = 0; i < rec_offs_n_fields(offsets); i++) {
if (rec_offs_nth_extern(offsets, i)) {
ulint len;
const byte* field_ref = rec_get_nth_field(
rec, offsets, i, &len);
ut_a(len != UNIV_SQL_NULL);
ut_a(len >= BTR_EXTERN_FIELD_REF_SIZE);
field_ref += len - BTR_EXTERN_FIELD_REF_SIZE;
b.ref_field_no = i;
b.blob_page_no = mach_read_from_4(
field_ref + BTR_EXTERN_PAGE_NO);
switch (b.blob_page_no) {
case 0:
ut_a(memcmp(field_ref, field_ref_zero,
BTR_EXTERN_FIELD_REF_SIZE));
/* page number 0 is for the
page allocation bitmap */
case FIL_NULL:
/* the column has been freed already */
ut_error;
}
mutex_enter(&index->blobs_mutex);
node = rbt_lookup(index->blobs, &b);
ut_a(node);
c = rbt_value(btr_blob_dbg_t, node);
/* The flag should be modified. */
c->del = del;
if (btr_blob_dbg_msg) {
b = *c;
mutex_exit(&index->blobs_mutex);
btr_blob_dbg_msg_issue("del_mk", &b, "");
} else {
mutex_exit(&index->blobs_mutex);
}
}
}
}
/**************************************************************//**
Change the ownership of an off-page column. */
UNIV_INTERN
void
btr_blob_dbg_owner(
/*===============*/
const rec_t* rec, /*!< in: record */
dict_index_t* index, /*!< in/out: index */
const ulint* offsets,/*!< in: rec_get_offs(rec, index) */
ulint i, /*!< in: ith field in rec */
ibool own) /*!< in: TRUE=owned, FALSE=disowned */
{
const ib_rbt_node_t* node;
btr_blob_dbg_t b;
const byte* field_ref;
ulint len;
ut_ad(rec_offs_validate(rec, index, offsets));
ut_a(rec_offs_nth_extern(offsets, i));
field_ref = rec_get_nth_field(rec, offsets, i, &len);
ut_a(len != UNIV_SQL_NULL);
ut_a(len >= BTR_EXTERN_FIELD_REF_SIZE);
field_ref += len - BTR_EXTERN_FIELD_REF_SIZE;
b.ref_page_no = page_get_page_no(page_align(rec));
b.ref_heap_no = page_rec_get_heap_no(rec);
b.ref_field_no = i;
b.owner = !(field_ref[BTR_EXTERN_LEN] & BTR_EXTERN_OWNER_FLAG);
b.blob_page_no = mach_read_from_4(field_ref + BTR_EXTERN_PAGE_NO);
ut_a(b.owner == own);
mutex_enter(&index->blobs_mutex);
node = rbt_lookup(index->blobs, &b);
/* row_ins_clust_index_entry_by_modify() invokes
btr_cur_unmark_extern_fields() also for the newly inserted
references, which are all zero bytes until the columns are stored.
The node lookup must fail if and only if that is the case. */
ut_a(!memcmp(field_ref, field_ref_zero, BTR_EXTERN_FIELD_REF_SIZE)
== !node);
if (node) {
btr_blob_dbg_t* c = rbt_value(btr_blob_dbg_t, node);
/* Some code sets ownership from TRUE to TRUE.
We do not allow changing ownership from FALSE to FALSE. */
ut_a(own || c->owner);
c->owner = own;
if (!own) {
c->always_owner = FALSE;
}
}
mutex_exit(&index->blobs_mutex);
}
#endif /* UNIV_BLOB_DEBUG */
/*
Latching strategy of the InnoDB B-tree
--------------------------------------
@ -289,7 +843,7 @@ btr_get_next_user_rec(
/**************************************************************//**
Creates a new index page (not the root, and also not
used in page reorganization). @see btr_page_empty(). */
static
UNIV_INTERN
void
btr_page_create(
/*============*/
@ -302,6 +856,7 @@ btr_page_create(
page_t* page = buf_block_get_frame(block);
ut_ad(mtr_memo_contains(mtr, block, MTR_MEMO_PAGE_X_FIX));
btr_blob_dbg_assert_empty(index, buf_block_get_page_no(block));
if (UNIV_LIKELY_NULL(page_zip)) {
page_create_zip(block, index, level, mtr);
@ -501,6 +1056,7 @@ btr_page_free_low(
modify clock */
buf_block_modify_clock_inc(block);
btr_blob_dbg_assert_empty(index, buf_block_get_page_no(block));
if (dict_index_is_ibuf(index)) {
@ -631,6 +1187,7 @@ btr_page_get_father_node_ptr_func(
ut_ad(dict_index_get_page(index) != page_no);
level = btr_page_get_level(btr_cur_get_page(cursor), mtr);
user_rec = btr_cur_get_rec(cursor);
ut_a(page_rec_is_user_rec(user_rec));
tuple = dict_index_build_node_ptr(index, user_rec, 0, heap, level);
@ -746,7 +1303,7 @@ btr_create(
ulint space, /*!< in: space where created */
ulint zip_size,/*!< in: compressed page size in bytes
or 0 for uncompressed pages */
dulint index_id,/*!< in: index id */
index_id_t index_id,/*!< in: index id */
dict_index_t* index, /*!< in: index */
mtr_t* mtr) /*!< in: mini-transaction handle */
{
@ -785,6 +1342,14 @@ btr_create(
block = buf_page_get(space, zip_size, page_no,
RW_X_LATCH, mtr);
} else {
#ifdef UNIV_BLOB_DEBUG
if ((type & DICT_CLUSTERED) && !index->blobs) {
mutex_create(PFS_NOT_INSTRUMENTED,
&index->blobs_mutex, SYNC_ANY_LATCH);
index->blobs = rbt_create(sizeof(btr_blob_dbg_t),
btr_blob_dbg_cmp);
}
#endif /* UNIV_BLOB_DEBUG */
block = fseg_create(space, 0,
PAGE_HEADER + PAGE_BTR_SEG_TOP, mtr);
}
@ -953,7 +1518,7 @@ btr_free_root(
}
ut_a(block);
btr_search_drop_page_hash_index(block);
btr_search_drop_page_hash_index(block, NULL);
header = buf_block_get_frame(block) + PAGE_HEADER + PAGE_BTR_SEG_TOP;
#ifdef UNIV_BTR_DEBUG
@ -979,6 +1544,7 @@ btr_page_reorganize_low(
dict_index_t* index, /*!< in: record descriptor */
mtr_t* mtr) /*!< in: mtr */
{
buf_pool_t* buf_pool = buf_pool_from_bpage(&block->page);
page_t* page = buf_block_get_frame(block);
page_zip_des_t* page_zip = buf_block_get_page_zip(block);
buf_block_t* temp_block;
@ -1009,7 +1575,7 @@ btr_page_reorganize_low(
log_mode = mtr_set_log_mode(mtr, MTR_LOG_NONE);
#ifndef UNIV_HOTBACKUP
temp_block = buf_block_alloc();
temp_block = buf_block_alloc(buf_pool);
#else /* !UNIV_HOTBACKUP */
ut_ad(block == back_block1);
temp_block = back_block2;
@ -1021,11 +1587,12 @@ btr_page_reorganize_low(
#ifndef UNIV_HOTBACKUP
if (UNIV_LIKELY(!recovery)) {
btr_search_drop_page_hash_index(block);
btr_search_drop_page_hash_index(block, index);
}
block->check_index_page_at_flush = TRUE;
#endif /* !UNIV_HOTBACKUP */
btr_blob_dbg_remove(page, index, "btr_page_reorganize");
/* Recreate the page: note that global data on page (possible
segment headers, next page-field, etc.) is preserved intact */
@ -1046,7 +1613,7 @@ btr_page_reorganize_low(
/* In crash recovery, dict_index_is_sec_or_ibuf() always
returns TRUE, even for clustered indexes. max_trx_id is
unused in clustered index pages. */
ut_ad(!ut_dulint_is_zero(max_trx_id) || recovery);
ut_ad(max_trx_id != 0 || recovery);
}
if (UNIV_LIKELY_NULL(page_zip)
@ -1054,6 +1621,8 @@ btr_page_reorganize_low(
(!page_zip_compress(page_zip, page, index, NULL))) {
/* Restore the old page and exit. */
btr_blob_dbg_restore(page, temp_page, index,
"btr_page_reorganize_compress_fail");
#if defined UNIV_DEBUG || defined UNIV_ZIP_DEBUG
/* Check that the bytes that we skip are identical. */
@ -1168,7 +1737,7 @@ btr_parse_page_reorganize(
#ifndef UNIV_HOTBACKUP
/*************************************************************//**
Empties an index page. @see btr_page_create(). */
static
UNIV_INTERN
void
btr_page_empty(
/*===========*/
@ -1186,7 +1755,8 @@ btr_page_empty(
ut_a(!page_zip || page_zip_validate(page_zip, page));
#endif /* UNIV_ZIP_DEBUG */
btr_search_drop_page_hash_index(block);
btr_search_drop_page_hash_index(block, index);
btr_blob_dbg_remove(page, index, "btr_page_empty");
/* Recreate the page: note that global data on page (possible
segment headers, next page-field, etc.) is preserved intact */
@ -1729,7 +2299,7 @@ btr_insert_on_non_leaf_level_func(
/**************************************************************//**
Attaches the halves of an index page on the appropriate level in an
index tree. */
static
UNIV_INTERN
void
btr_attach_half_pages(
/*==================*/
@ -2495,7 +3065,7 @@ btr_lift_page_up(
mem_heap_free(heap);
}
btr_search_drop_page_hash_index(block);
btr_search_drop_page_hash_index(block, index);
/* Make the father empty */
btr_page_empty(father_block, father_page_zip, index, page_level, mtr);
@ -2527,6 +3097,7 @@ btr_lift_page_up(
index);
}
btr_blob_dbg_remove(page, index, "btr_lift_page_up");
lock_update_copy_and_discard(father_block, block);
/* Go upward to root page, decrementing levels by one. */
@ -2718,7 +3289,7 @@ err_exit:
goto err_exit;
}
btr_search_drop_page_hash_index(block);
btr_search_drop_page_hash_index(block, index);
/* Remove the page from the level list */
btr_level_list_remove(space, zip_size, page, mtr);
@ -2759,7 +3330,7 @@ err_exit:
goto err_exit;
}
btr_search_drop_page_hash_index(block);
btr_search_drop_page_hash_index(block, index);
#ifdef UNIV_BTR_DEBUG
if (UNIV_LIKELY_NULL(merge_page_zip)) {
@ -2788,6 +3359,7 @@ err_exit:
lock_update_merge_right(merge_block, orig_succ, block);
}
btr_blob_dbg_remove(page, index, "btr_compress");
mem_heap_free(heap);
if (!dict_index_is_clust(index) && page_is_leaf(merge_page)) {
@ -2873,7 +3445,7 @@ btr_discard_only_page_on_level(
ut_a(btr_page_get_next(page, mtr) == FIL_NULL);
ut_ad(mtr_memo_contains(mtr, block, MTR_MEMO_PAGE_X_FIX));
btr_search_drop_page_hash_index(block);
btr_search_drop_page_hash_index(block, index);
btr_page_get_father(index, block, mtr, &cursor);
father = btr_cur_get_block(&cursor);
@ -2908,7 +3480,7 @@ btr_discard_only_page_on_level(
ibuf_reset_free_bits(block);
if (page_is_leaf(buf_block_get_frame(block))) {
ut_a(!ut_dulint_is_zero(max_trx_id));
ut_a(max_trx_id);
page_set_max_trx_id(block,
buf_block_get_page_zip(block),
max_trx_id, mtr);
@ -2978,7 +3550,7 @@ btr_discard_page(
page = buf_block_get_frame(block);
ut_a(page_is_comp(merge_page) == page_is_comp(page));
btr_search_drop_page_hash_index(block);
btr_search_drop_page_hash_index(block, index);
if (left_page_no == FIL_NULL && !page_is_leaf(page)) {
@ -3018,6 +3590,8 @@ btr_discard_page(
block);
}
btr_blob_dbg_remove(page, index, "btr_discard_page");
/* Free the file page */
btr_page_free(index, block, mtr);

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -34,17 +34,6 @@ Created December 2006 by Marko Makela
#include "buf0flu.h"
#include "page0zip.h"
/* Statistic counters */
#ifdef UNIV_DEBUG
/** Number of frames allocated from the buffer pool to the buddy system.
Protected by buf_pool_mutex. */
static ulint buf_buddy_n_frames;
#endif /* UNIV_DEBUG */
/** Statistics of the buddy system, indexed by block size.
Protected by buf_pool_mutex. */
UNIV_INTERN buf_buddy_stat_t buf_buddy_stat[BUF_BUDDY_SIZES_MAX + 1];
/**********************************************************************//**
Get the offset of the buddy of a compressed page frame.
@return the buddy relative of page */
@ -73,8 +62,10 @@ UNIV_INLINE
void
buf_buddy_add_to_free(
/*==================*/
buf_page_t* bpage, /*!< in,own: block to be freed */
ulint i) /*!< in: index of buf_pool->zip_free[] */
buf_pool_t* buf_pool, /*!< in: buffer pool instance */
buf_page_t* bpage, /*!< in,own: block to be freed */
ulint i) /*!< in: index of
buf_pool->zip_free[] */
{
#ifdef UNIV_DEBUG_VALGRIND
buf_page_t* b = UT_LIST_GET_FIRST(buf_pool->zip_free[i]);
@ -82,8 +73,8 @@ buf_buddy_add_to_free(
if (b) UNIV_MEM_VALID(b, BUF_BUDDY_LOW << i);
#endif /* UNIV_DEBUG_VALGRIND */
//ut_ad(buf_pool_mutex_own());
ut_ad(mutex_own(&zip_free_mutex));
//ut_ad(buf_pool_mutex_own(buf_pool));
ut_ad(mutex_own(&buf_pool->zip_free_mutex));
ut_ad(buf_page_get_state(bpage) == BUF_BLOCK_ZIP_FREE);
ut_ad(buf_pool->zip_free[i].start != bpage);
UT_LIST_ADD_FIRST(zip_list, buf_pool->zip_free[i], bpage);
@ -100,8 +91,10 @@ UNIV_INLINE
void
buf_buddy_remove_from_free(
/*=======================*/
buf_page_t* bpage, /*!< in: block to be removed */
ulint i) /*!< in: index of buf_pool->zip_free[] */
buf_pool_t* buf_pool, /*!< in: buffer pool instance */
buf_page_t* bpage, /*!< in: block to be removed */
ulint i) /*!< in: index of
buf_pool->zip_free[] */
{
#ifdef UNIV_DEBUG_VALGRIND
buf_page_t* prev = UT_LIST_GET_PREV(zip_list, bpage);
@ -114,8 +107,8 @@ buf_buddy_remove_from_free(
ut_ad(!next || buf_page_get_state(next) == BUF_BLOCK_ZIP_FREE);
#endif /* UNIV_DEBUG_VALGRIND */
//ut_ad(buf_pool_mutex_own());
ut_ad(mutex_own(&zip_free_mutex));
//ut_ad(buf_pool_mutex_own(buf_pool));
ut_ad(mutex_own(&buf_pool->zip_free_mutex));
ut_ad(buf_page_get_state(bpage) == BUF_BLOCK_ZIP_FREE);
UT_LIST_REMOVE(zip_list, buf_pool->zip_free[i], bpage);
@ -132,12 +125,13 @@ static
void*
buf_buddy_alloc_zip(
/*================*/
ulint i) /*!< in: index of buf_pool->zip_free[] */
buf_pool_t* buf_pool, /*!< in: buffer pool instance */
ulint i) /*!< in: index of buf_pool->zip_free[] */
{
buf_page_t* bpage;
//ut_ad(buf_pool_mutex_own());
ut_ad(mutex_own(&zip_free_mutex));
//ut_ad(buf_pool_mutex_own(buf_pool));
ut_ad(mutex_own(&buf_pool->zip_free_mutex));
ut_a(i < BUF_BUDDY_SIZES);
#ifndef UNIV_DEBUG_VALGRIND
@ -152,19 +146,19 @@ buf_buddy_alloc_zip(
UNIV_MEM_VALID(bpage, BUF_BUDDY_LOW << i);
ut_a(buf_page_get_state(bpage) == BUF_BLOCK_ZIP_FREE);
buf_buddy_remove_from_free(bpage, i);
buf_buddy_remove_from_free(buf_pool, bpage, i);
} else if (i + 1 < BUF_BUDDY_SIZES) {
/* Attempt to split. */
bpage = buf_buddy_alloc_zip(i + 1);
bpage = buf_buddy_alloc_zip(buf_pool, i + 1);
if (bpage) {
buf_page_t* buddy = (buf_page_t*)
(((char*) bpage) + (BUF_BUDDY_LOW << i));
ut_ad(!buf_pool_contains_zip(buddy));
ut_ad(!buf_pool_contains_zip(buf_pool, buddy));
ut_d(memset(buddy, i, BUF_BUDDY_LOW << i));
buddy->state = BUF_BLOCK_ZIP_FREE;
buf_buddy_add_to_free(buddy, i);
buf_buddy_add_to_free(buf_pool, buddy, i);
}
}
@ -185,18 +179,19 @@ static
void
buf_buddy_block_free(
/*=================*/
void* buf, /*!< in: buffer frame to deallocate */
ibool have_page_hash_mutex)
buf_pool_t* buf_pool, /*!< in: buffer pool instance */
void* buf, /*!< in: buffer frame to deallocate */
ibool have_page_hash_mutex)
{
const ulint fold = BUF_POOL_ZIP_FOLD_PTR(buf);
buf_page_t* bpage;
buf_block_t* block;
//ut_ad(buf_pool_mutex_own());
ut_ad(!mutex_own(&buf_pool_zip_mutex));
//ut_ad(buf_pool_mutex_own(buf_pool));
ut_ad(!mutex_own(&buf_pool->zip_mutex));
ut_a(!ut_align_offset(buf, UNIV_PAGE_SIZE));
mutex_enter(&zip_hash_mutex);
mutex_enter(&buf_pool->zip_hash_mutex);
HASH_SEARCH(hash, buf_pool->zip_hash, fold, buf_page_t*, bpage,
ut_ad(buf_page_get_state(bpage) == BUF_BLOCK_MEMORY
@ -209,7 +204,7 @@ buf_buddy_block_free(
ut_d(bpage->in_zip_hash = FALSE);
HASH_DELETE(buf_page_t, hash, buf_pool->zip_hash, fold, bpage);
mutex_exit(&zip_hash_mutex);
mutex_exit(&buf_pool->zip_hash_mutex);
ut_d(memset(buf, 0, UNIV_PAGE_SIZE));
UNIV_MEM_INVALID(buf, UNIV_PAGE_SIZE);
@ -219,8 +214,8 @@ buf_buddy_block_free(
buf_LRU_block_free_non_file_page(block, have_page_hash_mutex);
mutex_exit(&block->mutex);
ut_ad(buf_buddy_n_frames > 0);
ut_d(buf_buddy_n_frames--);
ut_ad(buf_pool->buddy_n_frames > 0);
ut_d(buf_pool->buddy_n_frames--);
}
/**********************************************************************//**
@ -231,9 +226,10 @@ buf_buddy_block_register(
/*=====================*/
buf_block_t* block) /*!< in: buffer frame to allocate */
{
buf_pool_t* buf_pool = buf_pool_from_block(block);
const ulint fold = BUF_POOL_ZIP_FOLD(block);
//ut_ad(buf_pool_mutex_own());
ut_ad(!mutex_own(&buf_pool_zip_mutex));
//ut_ad(buf_pool_mutex_own(buf_pool));
ut_ad(!mutex_own(&buf_pool->zip_mutex));
ut_ad(buf_block_get_state(block) == BUF_BLOCK_READY_FOR_USE);
buf_block_set_state(block, BUF_BLOCK_MEMORY);
@ -245,11 +241,11 @@ buf_buddy_block_register(
ut_ad(!block->page.in_zip_hash);
ut_d(block->page.in_zip_hash = TRUE);
mutex_enter(&zip_hash_mutex);
mutex_enter(&buf_pool->zip_hash_mutex);
HASH_INSERT(buf_page_t, hash, buf_pool->zip_hash, fold, &block->page);
mutex_exit(&zip_hash_mutex);
mutex_exit(&buf_pool->zip_hash_mutex);
ut_d(buf_buddy_n_frames++);
ut_d(buf_pool->buddy_n_frames++);
}
/**********************************************************************//**
@ -259,10 +255,12 @@ static
void*
buf_buddy_alloc_from(
/*=================*/
void* buf, /*!< in: a block that is free to use */
ulint i, /*!< in: index of buf_pool->zip_free[] */
ulint j) /*!< in: size of buf as an index
of buf_pool->zip_free[] */
buf_pool_t* buf_pool, /*!< in: buffer pool instance */
void* buf, /*!< in: a block that is free to use */
ulint i, /*!< in: index of
buf_pool->zip_free[] */
ulint j) /*!< in: size of buf as an index
of buf_pool->zip_free[] */
{
ulint offs = BUF_BUDDY_LOW << j;
ut_ad(j <= BUF_BUDDY_SIZES);
@ -286,7 +284,7 @@ buf_buddy_alloc_from(
ut_list_node_313)
== BUF_BLOCK_ZIP_FREE)));
#endif /* !UNIV_DEBUG_VALGRIND */
buf_buddy_add_to_free(bpage, j);
buf_buddy_add_to_free(buf_pool, bpage, j);
}
return(buf);
@ -294,41 +292,43 @@ buf_buddy_alloc_from(
/**********************************************************************//**
Allocate a block. The thread calling this function must hold
buf_pool_mutex and must not hold buf_pool_zip_mutex or any block->mutex.
The buf_pool_mutex may only be released and reacquired if lru != NULL.
buf_pool->mutex and must not hold buf_pool->zip_mutex or any block->mutex.
The buf_pool->mutex may only be released and reacquired if lru != NULL.
@return allocated block, possibly NULL if lru==NULL */
UNIV_INTERN
void*
buf_buddy_alloc_low(
/*================*/
ulint i, /*!< in: index of buf_pool->zip_free[],
or BUF_BUDDY_SIZES */
ibool* lru, /*!< in: pointer to a variable that will be assigned
TRUE if storage was allocated from the LRU list
and buf_pool_mutex was temporarily released,
or NULL if the LRU list should not be used */
ibool have_page_hash_mutex)
buf_pool_t* buf_pool, /*!< in: buffer pool instance */
ulint i, /*!< in: index of buf_pool->zip_free[],
or BUF_BUDDY_SIZES */
ibool* lru, /*!< in: pointer to a variable that
will be assigned TRUE if storage was
allocated from the LRU list and
buf_pool->mutex was temporarily
released, or NULL if the LRU list
should not be used */
ibool have_page_hash_mutex)
{
buf_block_t* block;
//ut_ad(buf_pool_mutex_own());
ut_ad(!mutex_own(&buf_pool_zip_mutex));
//ut_ad(buf_pool_mutex_own(buf_pool));
ut_ad(mutex_own(&buf_pool->LRU_list_mutex));
ut_ad(!mutex_own(&buf_pool->zip_mutex));
if (i < BUF_BUDDY_SIZES) {
/* Try to allocate from the buddy system. */
mutex_enter(&zip_free_mutex);
block = buf_buddy_alloc_zip(i);
mutex_enter(&buf_pool->zip_free_mutex);
block = buf_buddy_alloc_zip(buf_pool, i);
if (block) {
goto func_exit;
}
mutex_exit(&zip_free_mutex);
mutex_exit(&buf_pool->zip_free_mutex);
}
/* Try allocating from the buf_pool->free list. */
block = buf_LRU_get_free_only();
block = buf_LRU_get_free_only(buf_pool);
if (block) {
@ -341,28 +341,29 @@ buf_buddy_alloc_low(
}
/* Try replacing an uncompressed page in the buffer pool. */
//buf_pool_mutex_exit();
mutex_exit(&LRU_list_mutex);
//buf_pool_mutex_exit(buf_pool);
mutex_exit(&buf_pool->LRU_list_mutex);
if (have_page_hash_mutex) {
rw_lock_x_unlock(&page_hash_latch);
rw_lock_x_unlock(&buf_pool->page_hash_latch);
}
block = buf_LRU_get_free_block();
block = buf_LRU_get_free_block(buf_pool);
*lru = TRUE;
//buf_pool_mutex_enter();
mutex_enter(&LRU_list_mutex);
//buf_pool_mutex_enter(buf_pool);
mutex_enter(&buf_pool->LRU_list_mutex);
if (have_page_hash_mutex) {
rw_lock_x_lock(&page_hash_latch);
rw_lock_x_lock(&buf_pool->page_hash_latch);
}
alloc_big:
buf_buddy_block_register(block);
mutex_enter(&zip_free_mutex);
block = buf_buddy_alloc_from(block->frame, i, BUF_BUDDY_SIZES);
mutex_enter(&buf_pool->zip_free_mutex);
block = buf_buddy_alloc_from(
buf_pool, block->frame, i, BUF_BUDDY_SIZES);
func_exit:
buf_buddy_stat[i].used++;
mutex_exit(&zip_free_mutex);
buf_pool->buddy_stat[i].used++;
mutex_exit(&buf_pool->zip_free_mutex);
return(block);
}
@ -378,10 +379,11 @@ buf_buddy_relocate_block(
buf_page_t* dpage) /*!< in: free block to relocate to */
{
buf_page_t* b;
buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
//ut_ad(buf_pool_mutex_own());
//ut_ad(buf_pool_mutex_own(buf_pool));
#ifdef UNIV_SYNC_DEBUG
ut_ad(rw_lock_own(&page_hash_latch, RW_LOCK_EX));
ut_ad(rw_lock_own(&buf_pool->page_hash_latch, RW_LOCK_EX));
#endif
switch (buf_page_get_state(bpage)) {
@ -400,18 +402,19 @@ buf_buddy_relocate_block(
break;
}
mutex_enter(&buf_pool_zip_mutex);
mutex_enter(&zip_free_mutex);
mutex_enter(&buf_pool->zip_mutex);
mutex_enter(&buf_pool->zip_free_mutex);
if (!buf_page_can_relocate(bpage)) {
mutex_exit(&buf_pool_zip_mutex);
mutex_exit(&zip_free_mutex);
mutex_exit(&buf_pool->zip_mutex);
mutex_exit(&buf_pool->zip_free_mutex);
return(FALSE);
}
if (bpage != buf_page_hash_get(bpage->space, bpage->offset)) {
mutex_exit(&buf_pool_zip_mutex);
mutex_exit(&zip_free_mutex);
if (bpage != buf_page_hash_get(buf_pool,
bpage->space, bpage->offset)) {
mutex_exit(&buf_pool->zip_mutex);
mutex_exit(&buf_pool->zip_free_mutex);
return(FALSE);
}
@ -419,7 +422,6 @@ buf_buddy_relocate_block(
ut_d(bpage->state = BUF_BLOCK_ZIP_FREE);
/* relocate buf_pool->zip_clean */
mutex_enter(&flush_list_mutex);
b = UT_LIST_GET_PREV(zip_list, dpage);
UT_LIST_REMOVE(zip_list, buf_pool->zip_clean, dpage);
@ -428,12 +430,11 @@ buf_buddy_relocate_block(
} else {
UT_LIST_ADD_FIRST(zip_list, buf_pool->zip_clean, dpage);
}
mutex_exit(&flush_list_mutex);
UNIV_MEM_INVALID(bpage, sizeof *bpage);
mutex_exit(&buf_pool_zip_mutex);
mutex_exit(&zip_free_mutex);
mutex_exit(&buf_pool->zip_mutex);
mutex_exit(&buf_pool->zip_free_mutex);
return(TRUE);
}
@ -444,18 +445,20 @@ static
ibool
buf_buddy_relocate(
/*===============*/
void* src, /*!< in: block to relocate */
void* dst, /*!< in: free block to relocate to */
ulint i, /*!< in: index of buf_pool->zip_free[] */
ibool have_page_hash_mutex)
buf_pool_t* buf_pool, /*!< in: buffer pool instance */
void* src, /*!< in: block to relocate */
void* dst, /*!< in: free block to relocate to */
ulint i, /*!< in: index of
buf_pool->zip_free[] */
ibool have_page_hash_mutex)
{
buf_page_t* bpage;
const ulint size = BUF_BUDDY_LOW << i;
ullint usec = ut_time_us(NULL);
//ut_ad(buf_pool_mutex_own());
ut_ad(mutex_own(&zip_free_mutex));
ut_ad(!mutex_own(&buf_pool_zip_mutex));
//ut_ad(buf_pool_mutex_own(buf_pool));
ut_ad(mutex_own(&buf_pool->zip_free_mutex));
ut_ad(!mutex_own(&buf_pool->zip_mutex));
ut_ad(!ut_align_offset(src, size));
ut_ad(!ut_align_offset(dst, size));
UNIV_MEM_ASSERT_W(dst, size);
@ -478,9 +481,9 @@ buf_buddy_relocate(
ulint space, page_no;
if (!have_page_hash_mutex) {
mutex_exit(&zip_free_mutex);
mutex_enter(&LRU_list_mutex);
rw_lock_x_lock(&page_hash_latch);
mutex_exit(&buf_pool->zip_free_mutex);
mutex_enter(&buf_pool->LRU_list_mutex);
rw_lock_x_lock(&buf_pool->page_hash_latch);
}
/* The src block may be split into smaller blocks,
@ -499,7 +502,7 @@ buf_buddy_relocate(
on uninitialized value. */
UNIV_MEM_VALID(&space, sizeof space);
UNIV_MEM_VALID(&page_no, sizeof page_no);
bpage = buf_page_hash_get(space, page_no);
bpage = buf_page_hash_get(buf_pool, space, page_no);
if (!bpage || bpage->zip.data != src) {
/* The block has probably been freshly
@ -508,13 +511,15 @@ buf_buddy_relocate(
it cannot be relocated. */
if (!have_page_hash_mutex) {
mutex_enter(&zip_free_mutex);
mutex_exit(&LRU_list_mutex);
rw_lock_x_unlock(&page_hash_latch);
mutex_enter(&buf_pool->zip_free_mutex);
mutex_exit(&buf_pool->LRU_list_mutex);
rw_lock_x_unlock(&buf_pool->page_hash_latch);
}
return(FALSE);
}
ut_ad(!buf_pool_watch_is_sentinel(buf_pool, bpage));
if (page_zip_get_size(&bpage->zip) != size) {
/* The block is of different size. We would
have to relocate all blocks covered by src.
@ -522,16 +527,16 @@ buf_buddy_relocate(
ut_ad(page_zip_get_size(&bpage->zip) < size);
if (!have_page_hash_mutex) {
mutex_enter(&zip_free_mutex);
mutex_exit(&LRU_list_mutex);
rw_lock_x_unlock(&page_hash_latch);
mutex_enter(&buf_pool->zip_free_mutex);
mutex_exit(&buf_pool->LRU_list_mutex);
rw_lock_x_unlock(&buf_pool->page_hash_latch);
}
return(FALSE);
}
/* To keep latch order */
if (have_page_hash_mutex)
mutex_exit(&zip_free_mutex);
mutex_exit(&buf_pool->zip_free_mutex);
/* The block must have been allocated, but it may
contain uninitialized data. */
@ -539,7 +544,7 @@ buf_buddy_relocate(
mutex = buf_page_get_mutex_enter(bpage);
mutex_enter(&zip_free_mutex);
mutex_enter(&buf_pool->zip_free_mutex);
if (mutex && buf_page_can_relocate(bpage)) {
/* Relocate the compressed page. */
@ -551,22 +556,22 @@ success:
UNIV_MEM_INVALID(src, size);
{
buf_buddy_stat_t* buddy_stat
= &buf_buddy_stat[i];
= &buf_pool->buddy_stat[i];
buddy_stat->relocated++;
buddy_stat->relocated_usec
+= ut_time_us(NULL) - usec;
}
if (!have_page_hash_mutex) {
mutex_exit(&LRU_list_mutex);
rw_lock_x_unlock(&page_hash_latch);
mutex_exit(&buf_pool->LRU_list_mutex);
rw_lock_x_unlock(&buf_pool->page_hash_latch);
}
return(TRUE);
}
if (!have_page_hash_mutex) {
mutex_exit(&LRU_list_mutex);
rw_lock_x_unlock(&page_hash_latch);
mutex_exit(&buf_pool->LRU_list_mutex);
rw_lock_x_unlock(&buf_pool->page_hash_latch);
}
if (mutex) {
@ -581,29 +586,29 @@ success:
UNIV_MEM_ASSERT_RW(src, size);
#endif
mutex_exit(&zip_free_mutex);
mutex_exit(&buf_pool->zip_free_mutex);
if (!have_page_hash_mutex) {
mutex_enter(&LRU_list_mutex);
rw_lock_x_lock(&page_hash_latch);
mutex_enter(&buf_pool->LRU_list_mutex);
rw_lock_x_lock(&buf_pool->page_hash_latch);
}
if (buf_buddy_relocate_block(src, dst)) {
mutex_enter(&zip_free_mutex);
mutex_enter(&buf_pool->zip_free_mutex);
if (!have_page_hash_mutex) {
mutex_exit(&LRU_list_mutex);
rw_lock_x_unlock(&page_hash_latch);
mutex_exit(&buf_pool->LRU_list_mutex);
rw_lock_x_unlock(&buf_pool->page_hash_latch);
}
goto success;
}
mutex_enter(&zip_free_mutex);
mutex_enter(&buf_pool->zip_free_mutex);
if (!have_page_hash_mutex) {
mutex_exit(&LRU_list_mutex);
rw_lock_x_unlock(&page_hash_latch);
mutex_exit(&buf_pool->LRU_list_mutex);
rw_lock_x_unlock(&buf_pool->page_hash_latch);
}
}
@ -616,36 +621,37 @@ UNIV_INTERN
void
buf_buddy_free_low(
/*===============*/
void* buf, /*!< in: block to be freed, must not be
pointed to by the buffer pool */
ulint i, /*!< in: index of buf_pool->zip_free[],
or BUF_BUDDY_SIZES */
ibool have_page_hash_mutex)
buf_pool_t* buf_pool, /*!< in: buffer pool instance */
void* buf, /*!< in: block to be freed, must not be
pointed to by the buffer pool */
ulint i, /*!< in: index of buf_pool->zip_free[],
or BUF_BUDDY_SIZES */
ibool have_page_hash_mutex)
{
buf_page_t* bpage;
buf_page_t* buddy;
//ut_ad(buf_pool_mutex_own());
ut_ad(mutex_own(&zip_free_mutex));
ut_ad(!mutex_own(&buf_pool_zip_mutex));
//ut_ad(buf_pool_mutex_own(buf_pool));
ut_ad(mutex_own(&buf_pool->zip_free_mutex));
ut_ad(!mutex_own(&buf_pool->zip_mutex));
ut_ad(i <= BUF_BUDDY_SIZES);
ut_ad(buf_buddy_stat[i].used > 0);
ut_ad(buf_pool->buddy_stat[i].used > 0);
buf_buddy_stat[i].used--;
buf_pool->buddy_stat[i].used--;
recombine:
UNIV_MEM_ASSERT_AND_ALLOC(buf, BUF_BUDDY_LOW << i);
ut_d(((buf_page_t*) buf)->state = BUF_BLOCK_ZIP_FREE);
if (i == BUF_BUDDY_SIZES) {
mutex_exit(&zip_free_mutex);
buf_buddy_block_free(buf, have_page_hash_mutex);
mutex_enter(&zip_free_mutex);
mutex_exit(&buf_pool->zip_free_mutex);
buf_buddy_block_free(buf_pool, buf, have_page_hash_mutex);
mutex_enter(&buf_pool->zip_free_mutex);
return;
}
ut_ad(i < BUF_BUDDY_SIZES);
ut_ad(buf == ut_align_down(buf, BUF_BUDDY_LOW << i));
ut_ad(!buf_pool_contains_zip(buf));
ut_ad(!buf_pool_contains_zip(buf_pool, buf));
/* Try to combine adjacent blocks. */
@ -671,10 +677,10 @@ recombine:
if (bpage == buddy) {
buddy_free:
/* The buddy is free: recombine */
buf_buddy_remove_from_free(bpage, i);
buf_buddy_remove_from_free(buf_pool, bpage, i);
buddy_free2:
ut_ad(buf_page_get_state(buddy) == BUF_BLOCK_ZIP_FREE);
ut_ad(!buf_pool_contains_zip(buddy));
ut_ad(!buf_pool_contains_zip(buf_pool, buddy));
i++;
buf = ut_align_down(buf, BUF_BUDDY_LOW << i);
@ -706,16 +712,16 @@ buddy_nonfree:
buf_buddy_relocate() will overwrite bpage->list. */
UNIV_MEM_VALID(bpage, BUF_BUDDY_LOW << i);
buf_buddy_remove_from_free(bpage, i);
buf_buddy_remove_from_free(buf_pool, bpage, i);
/* Try to relocate the buddy of buf to the free block. */
if (buf_buddy_relocate(buddy, bpage, i, have_page_hash_mutex)) {
if (buf_buddy_relocate(buf_pool, buddy, bpage, i, have_page_hash_mutex)) {
ut_d(buddy->state = BUF_BLOCK_ZIP_FREE);
goto buddy_free2;
}
buf_buddy_add_to_free(bpage, i);
buf_buddy_add_to_free(buf_pool, bpage, i);
/* Try to relocate the buddy of the free block to buf. */
buddy = (buf_page_t*) buf_buddy_get(((byte*) bpage),
@ -736,7 +742,7 @@ buddy_nonfree:
&& ut_list_node_313 != buddy)));
#endif /* !UNIV_DEBUG_VALGRIND */
if (buf_buddy_relocate(buddy, buf, i, have_page_hash_mutex)) {
if (buf_buddy_relocate(buf_pool, buddy, buf, i, have_page_hash_mutex)) {
buf = bpage;
UNIV_MEM_VALID(bpage, BUF_BUDDY_LOW << i);
@ -799,5 +805,5 @@ buddy_nonfree:
}
#endif /* UNIV_DEBUG */
bpage->state = BUF_BLOCK_ZIP_FREE;
buf_buddy_add_to_free(bpage, i);
buf_buddy_add_to_free(buf_pool, bpage, i);
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -37,6 +37,8 @@ Created 11/5/1995 Heikki Tuuri
#include "os0file.h"
#include "srv0start.h"
#include "srv0srv.h"
#include "mysql/plugin.h"
#include "mysql/service_thd_wait.h"
/** The linear read-ahead area size */
#define BUF_READ_AHEAD_LINEAR_AREA BUF_READ_AHEAD_AREA
@ -178,6 +180,7 @@ not_to_recover:
ut_ad(buf_page_in_file(bpage));
thd_wait_begin(NULL, THD_WAIT_DISKIO);
if (zip_size) {
*err = _fil_io(OS_FILE_READ | wake_later,
sync, space, zip_size, offset, 0, zip_size,
@ -189,6 +192,7 @@ not_to_recover:
sync, space, 0, offset, 0, UNIV_PAGE_SIZE,
((buf_block_t*) bpage)->frame, bpage, trx);
}
thd_wait_end(NULL);
if (srv_pass_corrupt_table) {
if (*err != DB_SUCCESS) {
@ -201,7 +205,7 @@ not_to_recover:
if (sync) {
/* The i/o is already completed when we arrive from
fil_read */
buf_page_io_complete(bpage, trx);
buf_page_io_complete(bpage);
}
return(1);
@ -222,6 +226,7 @@ buf_read_page(
ulint offset, /*!< in: page number */
trx_t* trx)
{
buf_pool_t* buf_pool = buf_pool_get(space, offset);
ib_int64_t tablespace_version;
ulint count;
ulint err;
@ -246,7 +251,7 @@ buf_read_page(
}
/* Flush pages from the end of the LRU list if necessary */
buf_flush_free_margin(FALSE);
buf_flush_free_margin(buf_pool, TRUE);
/* Increment number of I/O operations used for LRU policy. */
buf_LRU_stat_inc_io();
@ -282,12 +287,13 @@ UNIV_INTERN
ulint
buf_read_ahead_linear(
/*==================*/
ulint space, /*!< in: space id */
ulint zip_size,/*!< in: compressed page size in bytes, or 0 */
ulint offset, /*!< in: page number of a page; NOTE: the current thread
must want access to this page (see NOTE 3 above) */
ulint space, /*!< in: space id */
ulint zip_size, /*!< in: compressed page size in bytes, or 0 */
ulint offset, /*!< in: page number; see NOTE 3 above */
ibool inside_ibuf, /*!< in: TRUE if we are inside ibuf routine */
trx_t* trx)
{
buf_pool_t* buf_pool = buf_pool_get(space, offset);
ib_int64_t tablespace_version;
buf_page_t* bpage;
buf_frame_t* frame;
@ -303,12 +309,12 @@ buf_read_ahead_linear(
ulint err;
ulint i;
const ulint buf_read_ahead_linear_area
= BUF_READ_AHEAD_LINEAR_AREA;
= BUF_READ_AHEAD_LINEAR_AREA(buf_pool);
ulint threshold;
if (!(srv_read_ahead & 2)) {
return(0);
}
if (!(srv_read_ahead & 2)) {
return(0);
}
if (UNIV_UNLIKELY(srv_startup_is_before_trx_rollback_phase)) {
/* No read-ahead to avoid thread deadlocks */
@ -342,12 +348,10 @@ buf_read_ahead_linear(
tablespace_version = fil_space_get_version(space);
//buf_pool_mutex_enter();
mutex_enter(&buf_pool_mutex);
buf_pool_mutex_enter(buf_pool);
if (high > fil_space_get_size(space)) {
//buf_pool_mutex_exit();
mutex_exit(&buf_pool_mutex);
buf_pool_mutex_exit(buf_pool);
/* The area is not whole, return */
return(0);
@ -355,12 +359,11 @@ buf_read_ahead_linear(
if (buf_pool->n_pend_reads
> buf_pool->curr_size / BUF_READ_AHEAD_PEND_LIMIT) {
//buf_pool_mutex_exit();
mutex_exit(&buf_pool_mutex);
buf_pool_mutex_exit(buf_pool);
return(0);
}
mutex_exit(&buf_pool_mutex);
buf_pool_mutex_exit(buf_pool);
/* Check that almost all pages in the area have been accessed; if
offset == low, the accesses must be in a descending order, otherwise,
@ -375,15 +378,15 @@ buf_read_ahead_linear(
/* How many out of order accessed pages can we ignore
when working out the access pattern for linear readahead */
threshold = ut_min((64 - srv_read_ahead_threshold),
BUF_READ_AHEAD_AREA);
BUF_READ_AHEAD_AREA(buf_pool));
fail_count = 0;
rw_lock_s_lock(&page_hash_latch);
rw_lock_s_lock(&buf_pool->page_hash_latch);
for (i = low; i < high; i++) {
bpage = buf_page_hash_get(space, i);
bpage = buf_page_hash_get(buf_pool, space, i);
if ((bpage == NULL) || !buf_page_is_accessed(bpage)) {
if (bpage == NULL || !buf_page_is_accessed(bpage)) {
/* Not accessed */
fail_count++;
@ -407,8 +410,8 @@ buf_read_ahead_linear(
if (fail_count > threshold) {
/* Too many failures: return */
//buf_pool_mutex_exit();
rw_lock_s_unlock(&page_hash_latch);
//buf_pool_mutex_exit(buf_pool);
rw_lock_s_unlock(&buf_pool->page_hash_latch);
return(0);
}
@ -420,11 +423,11 @@ buf_read_ahead_linear(
/* If we got this far, we know that enough pages in the area have
been accessed in the right order: linear read-ahead can be sensible */
bpage = buf_page_hash_get(space, offset);
bpage = buf_page_hash_get(buf_pool, space, offset);
if (bpage == NULL) {
//buf_pool_mutex_exit();
rw_lock_s_unlock(&page_hash_latch);
//buf_pool_mutex_exit(buf_pool);
rw_lock_s_unlock(&buf_pool->page_hash_latch);
return(0);
}
@ -450,8 +453,8 @@ buf_read_ahead_linear(
pred_offset = fil_page_get_prev(frame);
succ_offset = fil_page_get_next(frame);
//buf_pool_mutex_exit();
rw_lock_s_unlock(&page_hash_latch);
//buf_pool_mutex_exit(buf_pool);
rw_lock_s_unlock(&buf_pool->page_hash_latch);
if ((offset == low) && (succ_offset == offset + 1)) {
@ -487,11 +490,9 @@ buf_read_ahead_linear(
/* If we got this far, read-ahead can be sensible: do it */
if (ibuf_inside()) {
ibuf_mode = BUF_READ_IBUF_PAGES_ONLY;
} else {
ibuf_mode = BUF_READ_ANY_PAGE;
}
ibuf_mode = inside_ibuf
? BUF_READ_IBUF_PAGES_ONLY | OS_AIO_SIMULATED_WAKE_LATER
: BUF_READ_ANY_PAGE | OS_AIO_SIMULATED_WAKE_LATER;
count = 0;
@ -508,7 +509,7 @@ buf_read_ahead_linear(
if (!ibuf_bitmap_page(zip_size, i)) {
count += buf_read_page_low(
&err, FALSE,
ibuf_mode | OS_AIO_SIMULATED_WAKE_LATER,
ibuf_mode,
space, zip_size, FALSE, tablespace_version, i, trx);
if (err == DB_TABLESPACE_DELETED) {
ut_print_timestamp(stderr);
@ -530,7 +531,7 @@ buf_read_ahead_linear(
os_aio_simulated_wake_handler_threads();
/* Flush pages from the end of the LRU list if necessary */
buf_flush_free_margin(FALSE);
buf_flush_free_margin(buf_pool, TRUE);
#ifdef UNIV_DEBUG
if (buf_debug_prints && (count > 0)) {
@ -578,18 +579,21 @@ buf_read_ibuf_merge_pages(
{
ulint i;
ut_ad(!ibuf_inside());
#ifdef UNIV_IBUF_DEBUG
ut_a(n_stored < UNIV_PAGE_SIZE);
#endif
while (buf_pool->n_pend_reads
> buf_pool->curr_size / BUF_READ_AHEAD_PEND_LIMIT) {
os_thread_sleep(500000);
}
for (i = 0; i < n_stored; i++) {
ulint zip_size = fil_space_get_zip_size(space_ids[i]);
ulint err;
ulint err;
buf_pool_t* buf_pool;
ulint zip_size = fil_space_get_zip_size(space_ids[i]);
buf_pool = buf_pool_get(space_ids[i], page_nos[i]);
while (buf_pool->n_pend_reads
> buf_pool->curr_size / BUF_READ_AHEAD_PEND_LIMIT) {
os_thread_sleep(500000);
}
if (UNIV_UNLIKELY(zip_size == ULINT_UNDEFINED)) {
@ -614,8 +618,8 @@ tablespace_deleted:
os_aio_simulated_wake_handler_threads();
/* Flush pages from the end of the LRU list if necessary */
buf_flush_free_margin(FALSE);
/* Flush pages from the end of all the LRU lists if necessary */
buf_flush_free_margins(FALSE);
#ifdef UNIV_DEBUG
if (buf_debug_prints) {
@ -708,11 +712,12 @@ not_to_recover:
tablespace_version = fil_space_get_version(space);
for (i = 0; i < n_stored; i++) {
buf_pool_t* buf_pool;
count = 0;
os_aio_print_debug = FALSE;
buf_pool = buf_pool_get(space, page_nos[i]);
while (buf_pool->n_pend_reads >= recv_n_pool_free_frames / 2) {
os_aio_simulated_wake_handler_threads();
@ -751,8 +756,8 @@ not_to_recover:
os_aio_simulated_wake_handler_threads();
/* Flush pages from the end of the LRU list if necessary */
buf_flush_free_margin(FALSE);
/* Flush pages from the end of all the LRU lists if necessary */
buf_flush_free_margins(FALSE);
#ifdef UNIV_DEBUG
if (buf_debug_prints) {

View file

@ -1,116 +0,0 @@
###########################
## FIXME for 5.1 ##
###########################
* put this trigger-recreation thing into the init scripts -- what?!
* Let debian-i10n-english review all template changes before the translaters start.
* Mark debconf translations as obsolete with debconf-updatepo.
###########################################################################
# Here are some information that are only of interest for the current and #
# following Debian maintainers of MySQL. #
###########################################################################
The debian/ directory is under SVN control, see debian/control for URL.
#
# Preparing a new version
#
The new orig.tar.gz (without non-free documentation) is created in /tmp/ when
running this command:
debian/rules get-orig-source
#
# mysqlreport
#
The authors e-mail address is <public@codenode.com>.
#
# Remarks to dependencies
#
libwrap0-dev (>= 7.6-8.3)
According to bug report 114582 where where build problems on
IA-64/sid with at least two prior versions.
psmisc
/usr/bin/killall in the initscript
zlib1g in libmysqlclient-dev:
"mysql_config --libs" ads "-lz"
Build-Dep:
debhelper (>=4.1.16):
See po-debconf(7).
autoconf (>= 2.13-20), automake1.7
Try to get rid of them.
doxygen, tetex-bin, tetex-extra, gs
for ndb/docs/*tex
#
# Remarks to the start scripts
#
## initscripts rely on mysqladmin from a different package
We have the problem that "/etc/init.d/mysql stop" relies on mysqladmin which
is in another package (mysql-client) and a passwordless access that's maybe
only available if the user configured his /root/.my.cnf. Can this be a problem?
* normal mode: not because the user is required to have it. Else:
* purge/remove: not, same as normal mode
* upgrade: not, same as normal mode
* first install: not, it depends on mysql-client which at least is unpacked
so mysqladmin is there (to ping). It is not yet configured
passwordles but if there's a server running then there's a
/root/.my.cnf. Anyways, we simply kill anything that's mysqld.
## Passwordless access for the maintainer scripts
Another issue is that the scripts needs passwordless access. To ensure this
a debian-sys-maint user is configured which has process and shutdown privs.
The file with the randomly (that's important!) generated password must be
present as long as the databases remain installed because else a new install
would have no access. This file should be used like:
mysqladmin --defaults-file=/etc/mysql/debian.cnf restart
to avoid providing the password in plaintext on a commandline where it would
be visible to any user via the "ps" command.
## When to start the daemon?
We aim to give the admin full control on when MySQL is running.
Issues to be faced here:
OLD:
1. Debconf asks whether MySQL should be started on boot so update-rc.d is
only run if the answer has been yes. The admin is likely to forget
this decision but update-rc.d checks for an existing line in
/etc/runlevel.conf and leaves it intact.
2. On initial install, if the answer is yes, the daemon has to be started.
3. On upgrades it should only be started if it was already running, everything
else is confusing. Especiall relying on an debconf decision made month ago
is considered suboptimal. See bug #274264
Implementation so far:
prerm (called on upgrade before stopping the server):
check for a running server and set flag if necessary
preinst (called on initial install and before unpacking when upgrading):
check for the debconf variable and set flag if necessary
postinst (called on initial install and after each upgrade after unpacking):
call update-rc.d if debconf says yes
call invoce-rc.d if the flag has been set
Problems remaining:
dpkg-reconfigure and setting mysql start on boot to yes did not start mysql
(ok "start on boot" literally does not mean "start now" so that might have been ok)
NEW:
1. --- no debconf anymore for the sake of simplicity. We have runlevel.conf,
the admin should use it
2. On initial install the server is started.
3. On upgrades the server is started exactly if it was running before so the
runlevel configuration is irrelevant. It will be preserved by the mean of
update-rc.d's builtin check.
Implementation:
prerm (called on upgrade before stopping the server):
check for a running server and set flag if necessary
preinst (called on initial install and before unpacking when upgrading):
check for $1 beeing (initial) "install" and set flag
postinst (called on initial install and after each upgrade after unpacking):
call update-rc.d
call invoce-rc.d if the flag has been set

View file

@ -1,6 +0,0 @@
all:
distclean:
-rm -f Makefile
.PHONY: all distclean clean install check

View file

@ -1,6 +0,0 @@
all:
distclean:
-rm -f Makefile
.PHONY: all distclean clean install check

View file

@ -1,31 +0,0 @@
#!/bin/bash
#
# This script is executed by "/etc/init.d/mysql" on every (re)start.
#
# Changes to this file will be preserved when updating the Debian package.
#
source /usr/share/mysql/debian-start.inc.sh
MYSQL="/usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf"
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
MYUPGRADE="/usr/bin/mysql_upgrade --defaults-extra-file=/etc/mysql/debian.cnf"
MYCHECK="/usr/bin/mysqlcheck --defaults-file=/etc/mysql/debian.cnf"
MYCHECK_SUBJECT="WARNING: mysqlcheck has found corrupt tables"
MYCHECK_PARAMS="--all-databases --fast --silent"
MYCHECK_RCPT="root"
# The following commands should be run when the server is up but in background
# where they do not block the server start and in one shell instance so that
# they run sequentially. They are supposed not to echo anything to stdout.
# If you want to disable the check for crashed tables comment
# "check_for_crashed_tables" out.
# (There may be no output to stdout inside the background process!)
echo "Checking for corrupt, not cleanly closed and upgrade needing tables."
(
upgrade_system_tables_if_necessary;
check_root_accounts;
check_for_crashed_tables;
) >&2 &
exit 0

View file

@ -1,72 +0,0 @@
#!/bin/bash
#
# This file is included by /etc/mysql/debian-start
#
## Check all unclosed tables.
# - Requires the server to be up.
# - Is supposed to run silently in background.
function check_for_crashed_tables() {
set -e
set -u
# But do it in the background to not stall the boot process.
logger -p daemon.info -i -t$0 "Triggering myisam-recover for all MyISAM tables"
# Checking for $? is unreliable so the size of the output is checked.
# Some table handlers like HEAP do not support CHECK TABLE.
tempfile=`tempfile`
# We have to use xargs in this case, because a for loop barfs on the
# spaces in the thing to be looped over.
LC_ALL=C $MYSQL --skip-column-names --batch -e '
select concat("select count(*) into @discard from `",
TABLE_SCHEMA, "`.`", TABLE_NAME, "`")
from information_schema.TABLES where ENGINE="MyISAM"' | \
xargs -i $MYSQL --skip-column-names --silent --batch \
--force -e "{}" >$tempfile
if [ -s $tempfile ]; then
(
/bin/echo -e "\n" \
"Improperly closed tables are also reported if clients are accessing\n" \
"the tables *now*. A list of current connections is below.\n";
$MYADMIN processlist status
) >> $tempfile
# Check for presence as a dependency on mailx would require an MTA.
if [ -x /usr/bin/mailx ]; then
mailx -e -s"$MYCHECK_SUBJECT" $MYCHECK_RCPT < $tempfile
fi
(echo "$MYCHECK_SUBJECT"; cat $tempfile) | logger -p daemon.warn -i -t$0
fi
rm $tempfile
}
## Check for tables needing an upgrade.
# - Requires the server to be up.
# - Is supposed to run silently in background.
function upgrade_system_tables_if_necessary() {
set -e
set -u
logger -p daemon.info -i -t$0 "Upgrading MySQL tables if necessary."
# Filter all "duplicate column", "duplicate key" and "unknown column"
# errors as the script is designed to be idempotent.
LC_ALL=C $MYUPGRADE \
2>&1 \
| egrep -v '^(1|@had|ERROR (1054|1060|1061))' \
| logger -p daemon.warn -i -t$0
}
## Check for the presence of both, root accounts with and without password.
# This might have been caused by a bug related to mysql_install_db (#418672).
function check_root_accounts() {
set -e
set -u
logger -p daemon.info -i -t$0 "Checking for insecure root accounts."
ret=$( echo "SELECT count(*) FROM mysql.user WHERE user='root' and password='';" | $MYSQL --skip-column-names )
if [ "$ret" -ne "0" ]; then
logger -p daemon.warn -i -t$0 "WARNING: mysql.user contains $ret root accounts without password!"
fi
}

View file

@ -1,2 +0,0 @@
#!/bin/bash
echo "$*" 1>&2

File diff suppressed because it is too large Load diff

View file

@ -1,318 +0,0 @@
Changelog for innotop and InnoDBParser:
2007-11-09: version 1.6.0
* S mode crashed on non-numeric values.
* New user-defined columns crashed upon restart.
* Added --color option to control terminal coloring.
2007-09-18: version 1.5.2
* Added the ability to monitor InnoDB status from a file.
* Changed W mode to L mode; it monitors all locks, not just lock waits.
2007-09-16: version 1.5.1
* Added C (Command Summary) mode.
* Fixed a bug in the 'avg' aggregate function.
2007-09-10: version 1.5.0
Changes:
* Added plugin functionality.
* Added group-by functionality.
* Moved the configuration file to a directory.
* Enhanced filtering and sorting on pivoted tables.
* Many small bug fixes.
2007-07-16: version 1.4.3
Changes:
* Added standard --version command-line option
* Changed colors to cyan instead of blue; more visible on dark terminals.
* Added information to the filter-choosing dialog.
* Added column auto-completion when entering a filter expression.
* Changed Term::ReadKey from optional to mandatory.
* Clarified username in password prompting.
* Ten thousand words of documentation!
Bugs fixed:
* innotop crashed in W mode when InnoDB status data was truncated.
* innotop didn't display errors in tables if debug was enabled.
* The colored() subroutine wasn't being created in non-interactive mode.
* Don't prompt to save password except the first time.
2007-05-03: version 1.4.2
This version contains all changes to the trunk until revision 239; some
changes in revisions 240:250 are included.
MAJOR CHANGES:
* Quick-filters to easily filter any column in any display
* Compatibility with MySQL 3.23 through 6.0
* Improved error handling when a server is down, permissions denied, etc
* Use additional SHOW INNODB STATUS information in 5.1.x
* Make all modes use tables consistently, so they can all be edited,
filtered, colored and sorted consistently
* Combine V, G and S modes into S mode, with v, g, and s hot-keys
* Let DBD driver read MySQL option files; permit connections without
user/pass/etc
* Compile SQL-like expressions into Perl subroutines; eliminate need to
know Perl
* Do not save all config data to config file, only save user's customizations
* Rewritten and improved command-line option handling
* Added --count, --delay, and other command-line options to support
run-and-exit operation
* Improve built-in variable sets
* Improve help screen with three-part balanced-column layout
* Simplify table-editor and improve hotkey support
* Require Perl to have high-resolution time support (Time::HiRes)
* Help the user choose a query to analyze or kill
* Enable EXPLAIN, show-full-query in T mode just like Q mode
* Let data-extraction access current, previous and incremental data sets
all at once
MINOR CHANGES:
* Column stabilizing for Q mode
* New color rules for T, Q, W modes
* Apply slave I/O filter to Q mode
* Improve detection of server version and other meta-data
* Make connection timeout a config variable
* Improve cross-version-compatible SQL syntax
* Get some information from the DBD driver instead of asking MySQL for it
* Improved error messages
* Improve server group creation/editing
* Improve connection/thread killing
* Fix broken key bindings and restore previously mapped hot-keys for
choosing columns
* Some documentation updates (but not nearly enough)
* Allow the user to specify graphing char in S mode (formerly G mode)
* Allow easy switching between variable sets in S mode
* Bind 'n' key globally to choose the 'next' server connection
* Bind '%' key globally to filter displayed tables
* Allow aligning columns on the decimal place for easy readability
* Add hide_hdr config variable to hide column headers in tables
* Add a feature to smartly run PURGE MASTER LOGS in Replication mode
* Enable debug mode as a globally configurable variable
* Improve error messages when an expression or filter doesn't compile or has
a run-time error; die on error when debug is enabled
* Allow user-configurable delays after executing SQL (to let the server
settle down before taking another measurement)
* Add an expression to show how long until a transaction is finished
* Add skip_innodb as a global config variable
* Add '%' after percentages to help disambiguate (user-configurable)
* Add column to M mode to help see how fast slave is catching up to master
BUG FIXES:
* T and W modes had wrong value for wait_status column
* Error tracking on connections didn't reset when the connection recovered
* wait_timeout on connections couldn't be set before MySQL 4.0.3
* There was a crash on 3.23 when wiping deadlocks
* Lettercase changes in some result sets (SHOW MASTER/SLAVE STATUS) between
MySQL versions crashed innotop
* Inactive connections crashed innotop upon access to DBD driver
* set_precision did not respect user defaults for number of digits
* --inc command-line option could not be negated
* InnoDB status parsing was not always parsing all needed information
* S mode (formerly G mode) could crash trying to divide non-numeric data
* M table didn't show Slave_open_temp_tables variable; incorrect lettercase
* DBD drivers with broken AutoCommit would crash innotop
* Some key bindings had incorrect labels
* Some config-file loading routines could load data for things that didn't
exist
* Headers printed too often in S mode
* High-resolution time was not used even when the user had it
* Non-interactive mode printed blank lines sometimes
* Q-mode header and statusbar showed different QPS numbers
* Formulas for key-cache and query-cache hit ratios were wrong
* Mac OS "Darwin" machines were mis-identified as Microsoft Windows
* Some multiplications crashed when given undefined input
* The commify transformation did not check its input and could crash
* Specifying an invalid mode on the command line or config file could crash
innotop
2007-03-29: version 1.4.1
* More tweaks to display of connection errors.
* Fixed a problem with skip-innodb in MySQL 5.1.
* Fix a bug with dead connections in single-connection mode.
* Fix a regex to allow parsing more data from truncated deadlocks.
* Don't load active cxns from the config file if the cxn isn't defined.
2007-03-03: version 1.4.0
* Further tweak error handling and display of connection errors
* More centralization of querying
* Fix forking so it doesn't kill all database connections
* Allow user to run innotop without permissions for GLOBAL variables and status
2007-02-11: version 1.3.6
* Handle some connection failures so innotop doesn't crash because of one server.
* Enable incremental display in more modes.
* Tweaks to colorizing, color editor, and default color rules.
* Tweaks to default sorting rules.
* Use prepared statements for efficiency.
* Bug fixes and code cleanups.
* Data storage is keyed on clock ticks now.
2007-02-03: version 1.3.5
* Bug fixes.
* More tools for editing configuration from within innotop.
* Filters and transformations are constrained to valid values.
* Support for colorizing rows.
* Sorting by multiple columns.
* Compress headers when display is very wide.
* Stabilize and limit column widths.
* Check config file formats when upgrading so upgrades go smoothly.
* Make D mode handle many connections at once.
* Extract simple expressions from data sets in column src property.
This makes innotop more awk-ish.
2007-01-16: version 1.3
* Readline support.
* Can be used unattended, or in a pipe-and-filter mode
where it outputs tab-separated data to standard output.
* You can specify a config file on the command line.
Config files can be marked read-only.
* Monitor multiple servers simultaneously.
* Server groups to help manage many servers conveniently.
* Monitor master/slave status, and control slaves.
* Columns can have user-defined expressions as their data sources.
* Better configuration tools.
* InnoDB status information is merged into SHOW VARIABLES and
SHOW STATUS information, so you can access it all together.
* High-precision time support in more places.
* Lots of tweaks to make things display more readably and compactly.
* Column transformations and filters.
2007-01-16: version 1.0.1
* NOTE: innotop is now hosted at Sourceforge, in Subversion not CVS.
The new project homepage is http://sourceforge.net/projects/innotop/
* Tweak default T/Q mode sort columns to match what people expect.
* Fix broken InnoDBParser.pm documentation (and hence man page).
2007-01-06: version 1.0
* NOTE: innotop is now hosted at Sourceforge, in Subversion not CVS.
The new project homepage is http://sourceforge.net/projects/innotop/
* Prevent control characters from freaking terminal out.
* Set timeout to keep busy servers from closing connection.
* There is only one InnoDB insert buffer.
* Make licenses clear and consistent.
2006-11-14: innotop 0.1.160, InnoDBParser version 1.69
* Support for ANSI color on Microsoft Windows (more readable, compact
display; thanks Gisbert W. Selke).
* Better handling of $ENV{HOME} on Windows.
* Added a LICENSE file to the package as per Gentoo bug:
http://bugs.gentoo.org/show_bug.cgi?id=147600
2006-11-11: innotop 0.1.157, InnoDBParser version 1.69
* Add Microsoft Windows support.
2006-10-19: innotop 0.1.154, InnoDBParser version 1.69
* Add O (Open Tables) mode
* Add some more checks to handle incomplete InnoDB status information
2006-09-30: innotop 0.1.152, InnoDBParser version 1.69
* Figured out what was wrong with package $VERSION variable: it wasn't
after the package declaration!
2006-09-28: innotop 0.1.152, InnoDBParser version 1.67
* Make more efforts towards crash-resistance and tolerance of completely
messed-up inputs. If innotop itself is broken, it is now much harder to
tell, because it just keeps on running without complaining.
* Fix a small bug parsing out some information and displaying it.
2006-09-05: innotop 0.1.149, InnoDBParser version 1.64
* Try to find and eliminate any parsing code that assumes pattern matches
will succeed.
2006-09-05: innotop 0.1.149, InnoDBParser version 1.62
* Make innotop crash-resistant, so I can declare it STABLE finally.
* Instead of using SQL conditional comments, detect MySQL version.
2006-08-22: innotop 0.1.147, InnoDBParser version 1.60
* Fix some innotop bugs with undefined values, bad formatting etc.
2006-08-19: innotop 0.1.146, InnoDBParser version 1.60
* Make innotop handle some unexpected NULL values in Q mode.
* Add OS wait information to W mode, so it is now "everything that waits."
* Center section captions better.
* Make R mode more readable and compact.
* Make InnoDBParser parse lock waits even when they've been waiting 0 secs.
2006-08-12: innotop 0.1.139, InnoDBParser version 1.59
* Add more documentation
* Tweak V mode to show more info in less space.
* Fix a bug in G mode.
2006-08-10: innotop 0.1.132, InnoDBParser version 1.58
* Handle yet more types of FK error... it will never end!
* Handle some special cases when DEADLOCK info truncated
* Add a bit more FK info to F mode in innotop
* More tests added to the test suite
2006-08-07: innotop 0.1.131, InnoDBParser version 1.55
* Fix another issue with configuration
* Handle another type of FK error
2006-08-03: innotop 0.1.130, InnoDBParser version 1.54
* Fix an issue loading config file
* Add heap_no to 'D' (InnoDB Deadlock) mode to ease deadlock debugging.
2006-08-02: innotop 0.1.128, InnoDBParser version 1.54
* Parse lock wait information from the TRANSACTION section.
* Even more OS-specific parsing... pain in the butt...
* Add 'W' (InnoDB Lock Wait) mode.
* Fix some minor display issues with statusbar.
2006-08-02: innotop 0.1.125, InnoDBParser version 1.50
* Don't try to get references to Perl built-in functions like time()
* Handle more OS-specific variations of InnoDB status text
* Add some more information to various places in innotop
2006-08-01: innotop 0.1.123, InnoDBParser version 1.47
* Enhance S and G modes: clear screen and re-print headers
* Don't crash when deadlock data is truncated
* Make Analyze mode say how to get back to whatever you came from
* Display 'nothing to display' when there is nothing
* Add ability to read InnoDB status text from a file (mostly helps test)
* Add table of Wait Array Information in Row Op/Semaphore mode
* Add table of lock information in InnoDB deadlock mode
* Ensure new features in upgrades don't get masked by existing config files
* Tweak default column choices for T mode
* Enhance foreign key parsing
* Enhance physical record and data tuple parsing
* Enhance lock parsing (handle old-style and new-style formats)
2006-07-24: innotop 0.1.112, InnoDBParser version 1.36
* InnoDBParser enhancements for FK error messages.
* A fix to innotop to prevent it from crashing while trying to display a FK
error message.
* Some minor cosmetic changes to number formatting in innotop.
2006-07-22: innotop 0.1.106, InnoDBParser version 1.35
* InnoDBParser is much more complete and accurate.
* Tons of bug fixes.
* Add partitions to EXPLAIN mode.
* Enhance Q mode header, add T mode header.
* Share some configuration variables across modes.
* Add formatted time columns to Q, T modes.
* Add command-line argument parsing.
* Turn off echo when asking for password.
* Add option to specify port when connecting.
* Let display-optimized-query display multiple notes.
* Lots of small improvements, such as showing more info in statusbar.
2006-07-02: innotop 0.1.74, InnoDBParser version 1.24
* Initial release for public consumption.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,16 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
msql2mysql \- MySQL importer for msql style data.
.SH SYNOPSIS
msql2mysql [options]
.SH DESCRIPTION
This program imports old msql database files.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,129 +0,0 @@
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
#
# For compatibility to other Debian packages that still use
# libmysqlclient10 and libmysqlclient12.
old_passwords = 1
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 1M
query_cache_size = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the at runtime!
#log_type = FILE
#general_log = /var/log/mysql/mysql.log
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
key_buffer = 16M
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

View file

@ -1,16 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
my_print_defaults \- MySQL helper script that prints defaults.
.SH SYNOPSIS
my_print_defaults [options]
.SH DESCRIPTION
Prints all arguments that is give to some program using the default files.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,16 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
myisam_ftdump \- Dumps full text tables.
.SH SYNOPSIS
myisam_ftdump [options]
.SH DESCRIPTION
Dumps information and contents of full text tables.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,17 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
myisamchk \- Checks MySQL myisam type databases.
.SH SYNOPSIS
myisamchk [options]
.SH DESCRIPTION
Description, check and repair of ISAM tables.
Used without options all tables on the command will be checked for errors
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,16 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
myisamlog \- MySQL helper script.
.SH SYNOPSIS
myisamlog [options]
.SH DESCRIPTION
Function unknown. Mail to ch@debian.org.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,19 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
myisampack \- Compresses MySQL database files.
.SH SYNOPSIS
myisampack [options]
.SH DESCRIPTION
Pack a MyISAM-table to take much less space.
Keys are not updated, you must run myisamchk -rq on the datafile
afterwards to update the keys.
You should give the .MYI file as the filename argument.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,2 +0,0 @@
W: mysql-dfsg source: maintainer-script-lacks-debhelper-token debian/percona-xtradb-server.postinst
W: percona-xtradb-server: possible-bashism-in-maintainer-script postinst:68 'p{("a".."z","A".."Z",0..9)[int(rand(62))]}'

View file

@ -1,17 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysqlconfig \- MySQL compile settings.
.SH SYNOPSIS
mysqlconfig [options]
.SH DESCRIPTION
This program is only useful for people who want to compile agains
libmysqlclient.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,17 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysql_convert_table_format \- MySQL table converter.
.SH SYNOPSIS
mysql_convert_table_format [options]
.SH DESCRIPTION
Conversion of a MySQL tables to other table types.
If no tables has been specifed, all tables in the database will be converted.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,18 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysql_find_rows \- MySQL shell skript for searching in update logs.
.SH SYNOPSIS
mysql_find_rows [options]
.SH DESCRIPTION
Prints all SQL queries that matches a regexp or contains a 'use
database' or 'set ..' command to stdout. A SQL query may contain
newlines. This is useful to find things in a MySQL update log.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,18 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysql_fix_extensions \- Corrects MySQL database file names.
.SH SYNOPSIS
mysql_fix_extensions <datadir>
.SH DESCRIPTION
Makes .frm lowercase and .MYI/MYD/ISM/ISD uppercase
useful when datafiles are copied from windows.
Does not work with RAID, with InnoDB or BDB tables.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (8)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,16 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysql_install_db \- MySQL helper program.
.SH SYNOPSIS
mysql_install_db [options]
.SH DESCRIPTION
This program is normally not needed by any user.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,17 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysql_secure_installation \- Secures the MySQL access control lists.
.SH SYNOPSIS
mysql_secure_installation [options]
.SH DESCRIPTION
This interactive programm suggests changes like removing anonymous users that
are supposed to make your installation more secure.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (8)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,23 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysql_setpermission \- Adds MySQL users or changes passwords.
.SH SYNOPSIS
mysql_setpermission [options]
.SH DESCRIPTION
The permission setter is a little program which can help you add users
or databases or change passwords in MySQL. Keep in mind that we don't
check permissions which already been set in MySQL. So if you can't
connect to MySQL using the permission you just added, take a look at
the permissions which have already been set in MySQL.
The permission setter first reads your .my.cnf file in your Home
directory if it exists.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,322 +0,0 @@
.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. | will give a
.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
.\" expand to `' in nroff, nothing in troff, for use with C<>.
.tr \(*W-|\(bv\*(Tr
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
'br\}
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. nr % 0
. rr F
.\}
.\"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.hy 0
.if n .na
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds /
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "MYSQL_TABLEINFO 1"
.TH MYSQL_TABLEINFO 1 "2003-04-05" "perl v5.8.0" "User Contributed Perl Documentation"
.SH "NAME"
mysql_tableinfo \- creates and populates information tables with
the output of SHOW DATABASES, SHOW TABLES (or SHOW TABLE STATUS),
SHOW COLUMNS and SHOW INDEX.
.PP
This is version 1.1.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 1
\& mysql_tableinfo [OPTIONS] database_to_write [database_like_wild] [table_like_wild]
.Ve
.PP
.Vb 2
\& Do not backquote (``) database_to_write,
\& and do not quote ('') database_like_wild or table_like_wild
.Ve
.PP
.Vb 1
\& Examples:
.Ve
.PP
.Vb 1
\& mysql_tableinfo info
.Ve
.PP
.Vb 1
\& mysql_tableinfo info this_db
.Ve
.PP
.Vb 1
\& mysql_tableinfo info %a% b%
.Ve
.PP
.Vb 1
\& mysql_tableinfo info --clear-only
.Ve
.PP
.Vb 1
\& mysql_tableinfo info --col --idx --table-status
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
mysql_tableinfo asks a MySQL server information about its
databases, tables, table columns and index, and stores this
in tables called `db`, `tbl` (or `tbl_status`), `col`, `idx`
(with an optional prefix specified with \-\-prefix).
After that, you can query these information tables, for example
to build your admin scripts with \s-1SQL\s0 queries, like
.PP
\&\s-1SELECT\s0 \s-1CONCAT\s0(\*(L"\s-1CHECK\s0 \s-1TABLE\s0 \*(R",`database`,\*(L".\*(R",`table`,\*(L" \s-1EXTENDED\s0;\*(R")
\&\s-1FROM\s0 info.tbl \s-1WHERE\s0 ... ;
.PP
as people usually do with some other \s-1RDBMS\s0
(note: to increase the speed of your queries on the info tables,
you may add some index on them).
.PP
The database_like_wild and table_like_wild instructs the program
to gather information only about databases and tables
whose names match these patterns. If the info
tables already exist, their rows matching the patterns are simply
deleted and replaced by the new ones. That is,
old rows not matching the patterns are not touched.
If the database_like_wild and table_like_wild arguments
are not specified on the command-line they default to \*(L"%\*(R".
.PP
The program :
.PP
\&\- does \s-1CREATE\s0 \s-1DATABASE\s0 \s-1IF\s0 \s-1NOT\s0 \s-1EXISTS\s0 database_to_write
where database_to_write is the database name specified on the command\-line.
.PP
\&\- does \s-1CREATE\s0 \s-1TABLE\s0 \s-1IF\s0 \s-1NOT\s0 \s-1EXISTS\s0 database_to_write.`db`
.PP
\&\- fills database_to_write.`db` with the output of
\&\s-1SHOW\s0 \s-1DATABASES\s0 \s-1LIKE\s0 database_like_wild
.PP
\&\- does \s-1CREATE\s0 \s-1TABLE\s0 \s-1IF\s0 \s-1NOT\s0 \s-1EXISTS\s0 database_to_write.`tbl`
(respectively database_to_write.`tbl_status`
if the \-\-tbl\-status option is on)
.PP
\&\- for every found database,
fills database_to_write.`tbl` (respectively database_to_write.`tbl_status`)
with the output of
\&\s-1SHOW\s0 \s-1TABLES\s0 \s-1FROM\s0 found_db \s-1LIKE\s0 table_like_wild
(respectively \s-1SHOW\s0 \s-1TABLE\s0 \s-1STATUS\s0 \s-1FROM\s0 found_db \s-1LIKE\s0 table_like_wild)
.PP
\&\- if the \-\-col option is on,
* does \s-1CREATE\s0 \s-1TABLE\s0 \s-1IF\s0 \s-1NOT\s0 \s-1EXISTS\s0 database_to_write.`col`
* for every found table,
fills database_to_write.`col` with the output of
\s-1SHOW\s0 \s-1COLUMNS\s0 \s-1FROM\s0 found_tbl \s-1FROM\s0 found_db
.PP
\&\- if the \-\-idx option is on,
* does \s-1CREATE\s0 \s-1TABLE\s0 \s-1IF\s0 \s-1NOT\s0 \s-1EXISTS\s0 database_to_write.`idx`
* for every found table,
fills database_to_write.`idx` with the output of
\s-1SHOW\s0 \s-1INDEX\s0 \s-1FROM\s0 found_tbl \s-1FROM\s0 found_db
.PP
Some options may modify this general scheme (see below).
.PP
As mentioned, the contents of the info tables are the output of
\&\s-1SHOW\s0 commands. In fact the contents are slightly more complete :
.PP
\&\- the `tbl` (or `tbl_status`) info table
has an extra column which contains the database name,
.PP
\&\- the `col` info table
has an extra column which contains the table name,
and an extra column which contains, for each described column,
the number of this column in the table owning it (this extra column
is called `Seq_in_table`). `Seq_in_table` makes it possible for you
to retrieve your columns in sorted order, when you are querying
the `col` table.
.PP
\&\- the `index` info table
has an extra column which contains the database name.
.PP
Caution: info tables contain certain columns (e.g.
Database, Table, Null...) whose names, as they are MySQL reserved words,
need to be backquoted (`...`) when used in \s-1SQL\s0 statements.
.PP
Caution: as information fetching and info tables filling happen at the
same time, info tables may contain inaccurate information about
themselves.
.SH "OPTIONS"
.IX Header "OPTIONS"
.IP "\-\-clear" 4
.IX Item "--clear"
Does \s-1DROP\s0 \s-1TABLE\s0 on the info tables (only those that the program is
going to fill, for example if you do not use \-\-col it won't drop
the `col` table) and processes normally. Does not drop database_to_write.
.IP "\-\-clear\-only" 4
.IX Item "--clear-only"
Same as \-\-clear but exits after the DROPs.
.IP "\-\-col" 4
.IX Item "--col"
Adds columns information (into table `col`).
.IP "\-\-idx" 4
.IX Item "--idx"
Adds index information (into table `idx`).
.IP "\-\-prefix prefix" 4
.IX Item "--prefix prefix"
The info tables are named from the concatenation of prefix and,
respectively, db, tbl (or tbl_status), col, idx. Do not quote ('')
or backquote (``) prefix.
.IP "\-q, \-\-quiet" 4
.IX Item "-q, --quiet"
Does not warn you about what the script is going to do (\s-1DROP\s0 \s-1TABLE\s0 etc)
and does not ask for a confirmation before starting.
.IP "\-\-tbl\-status" 4
.IX Item "--tbl-status"
Instead of using \s-1SHOW\s0 \s-1TABLES\s0, uses \s-1SHOW\s0 \s-1TABLE\s0 \s-1STATUS\s0
(much more complete information, but slower).
.IP "\-\-help" 4
.IX Item "--help"
Display helpscreen and exit
.IP "\-u, \-\-user=#" 4
.IX Item "-u, --user=#"
user for database login if not current user. Give a user
who has sufficient privileges (\s-1CREATE\s0, ...).
.IP "\-p, \-\-password=# (INSECURE)" 4
.IX Item "-p, --password=# (INSECURE)"
password to use when connecting to server.
WARNING: Providing a password on command line is insecure as it is visible through /proc to anyone for a short time.
.IP "\-h, \-\-host=#" 4
.IX Item "-h, --host=#"
host to connect to
.IP "\-P, \-\-port=#" 4
.IX Item "-P, --port=#"
port to use when connecting to server
.IP "\-S, \-\-socket=#" 4
.IX Item "-S, --socket=#"
\&\s-1UNIX\s0 domain socket to use when connecting to server
.SH "WARRANTY"
.IX Header "WARRANTY"
This software is free and comes without warranty of any kind. You
should never trust backup software without studying the code yourself.
Study the code inside this script and only rely on it if \fIyou\fR believe
that it does the right thing for you.
.Sp
Patches adding bug fixes, documentation and new features are welcome.
.SH "TO DO"
.IX Header "TO DO"
Use extended inserts to be faster (for servers with many databases
or tables). But to do that, must care about net\-buffer\-length.
.SH "AUTHOR"
.IX Header "AUTHOR"
2002\-06\-18 Guilhem Bichot (guilhem.bichot@mines\-paris.org)
.Sp
And all the authors of mysqlhotcopy, which served as a model for
the structure of the program.

View file

@ -1,20 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysql_waitpid \- Waits a specified amount of seconds for a PID to terminate.
.SH SYNOPSIS
mysql_waitpid [options] <pid> <seconds>
.SH DESCRIPTION
Description: Waits for a program, which program id is #pid, to
terminate within #time seconds. If the program terminates within
this time, or if the #pid no longer exists, value 0 is returned.
Otherwise 1 is returned. Both #pid and #time must be positive
integer arguments.
See mysql_waitpid for options.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,17 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysqlbinlog \- Dumps MySQL binary logs.
.SH SYNOPSIS
mysqlbinlog [options]
.SH DESCRIPTION
Dumps a MySQL binary log in a format usable for viewing or for pipeing to
the mysql command line client
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,14 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysqlbug \- MySQL bug reporting tool.
.SH SYNOPSIS
mysqlbug [options]
.SH DESCRIPTION
Interactive bug reporting tool. Use reportbug on Debian systems.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,28 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysqlcheck \- MySQL program for repairing, checking and optimizing tables.
.SH SYNOPSIS
mysqlcheck | mysqlanalyze | mysqloptimize [options]
.SH DESCRIPTION
This program can be used to CHECK (-c,-m,-C), REPAIR (-r), ANALYZE (-a)
or OPTIMIZE (-o) tables. Some of the options (like -e or -q) can be
used same time. It works on MyISAM and in some cases on BDB tables.
Please consult the MySQL manual for latest information about the
above. The options -c,-r,-a and -o are exclusive to each other, which
means that the last option will be used, if several was specified.
The option -c will be used by default, if none was specified. You
can change the default behavior by making a symbolic link, or
copying this file somewhere with another name, the alternatives are:
mysqlrepair: The default option will be -r
mysqlanalyze: The default option will be -a
mysqloptimize: The default option will be -o
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (8)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,2 +0,0 @@
[mysqld_safe]
syslog

View file

@ -1,50 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysqldumpslow \- Parse and summarize the MySQL slow query log.
.SH SYNOPSIS
mysqldumpslow [options]
.SH DESCRIPTION
This program parses and summarizes a 'slow query log'.
.TP
\fB\-v\fR
verbose
.TP
\fB\-d\fR
debug
.TP
\fB\-s=WORD\fR
what to sort by (t, at, l, al, r, ar etc)
.TP
\fB\-r\fR
reverse the sort order (largest last instead of first)
.TP
\fB\-t=NUMBER\fR
just show the top n queries
.TP
\fB\-a\fR
don't abstract all numbers to N and strings to 'S'
.TP
\fB\-n=NUMBER\fR
abstract numbers with at least n digits within names
.TP
\fB\-g=WORD\fR
grep: only consider stmts that include this string
.TP
\fB\-h=WORD\fR
hostname of db server for *-slow.log filename (can be wildcard)
.TP
\fB\-i=WORD\fR
name of server instance (if using mysql.server startup script)
.TP
\fB\-l\fR
don't subtract lock time from total time
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org> based on
the commends in the code.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,20 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysqlimport \- Imports text files with MySQL database queries.
.SH SYNOPSIS
mysqlimport [options]
.SH DESCRIPTION
Loads tables from text files in various formats. The base name of the
text file must be the name of the table that should be used.
If one uses sockets to connect to the MySQL server, the server will open and
read the text file directly. In other cases the client will open the text
file. The SQL command 'LOAD DATA INFILE' is used to import the rows.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,49 +0,0 @@
.TH mysql 1 "March 2005" "MySQL 4.1" "MySQL database"
.SH NAME
mysqlmanager \- Manages instances of MySQL server.
.SH SYNOPSIS
.B mysqlmanager
[\fIOPTIONS\fR]
.SH DESCRIPTION
Manages instances of MySQL server.
.TP
\-?, \fB\-\-help\fR
Display this help and exit.
.TP
\fB\-P\fR, \fB\-\-port=\fR#
Port number to listen on.
.TP
\fB\-l\fR, \fB\-\-log\fR=\fIname\fR
Path to log file.
.TP
\fB\-b\fR, \fB\-\-bind\-address=\fR#
Address to listen on.
.HP
\fB\-B\fR, \fB\-\-tcp\-backlog=\fR# Size of TCP/IP listen queue.
.HP
\fB\-g\fR, \fB\-\-greeting\fR=\fIname\fR Set greeting on connect.
.TP
\fB\-m\fR, \fB\-\-max\-command\-len=\fR#
Maximum command length.
.TP
\fB\-d\fR, \fB\-\-one\-thread\fR
Use one thread ( for debugging).
.TP
\fB\-C\fR, \fB\-\-connect\-retries=\fR#
Number of attempts to establish MySQL connection.
.TP
\fB\-p\fR, \fB\-\-password\-file\fR=\fIname\fR
Password file for manager.
.HP
\fB\-f\fR, \fB\-\-pid\-file\fR=\fIname\fR Pid file to use.
.TP
\fB\-V\fR, \fB\-\-version\fR
Output version information and exit.
.SH "SEE ALSO"
The full documentation for
.B mysqlmanager
is available in the package mysql-doc-4.1 or on the MySQL
homepage www.mysql.com.
.SH AUTHOR
This manpage was created by Christian Hammers <ch@debian.org>
using help2man.

File diff suppressed because it is too large Load diff

View file

@ -1,180 +0,0 @@
.TH "mysqlreport" "1" "2.5 2006-09-01 (docrev 2006-05-19)" "Daniel Nichter" "MYSQL"
.SH "NAME"
.LP
mysqlreport \- Makes a friendly report of important MySQL status values
.SH "SYNTAX"
.LP
mysqlreport [\fIoptions\fP]
.SH "DESCRIPTION"
.LP
mysqlreport makes a friendly report of important MySQL status values. Actually,
it makes a friendly report of nearly every status value from SHOW STATUS.
Unlike SHOW STATUS which simply dumps over 100 values to screen in one long
list, mysqlreport interprets and formats the values and presents the basic
values and many more inferred values in a human\-readable format. Numerous
example reports are available at the mysqlreport web page at
http://hackmysql.com/mysqlreport.
The benefit of mysqlreport is that it allows you to very quickly see a wide
array of performance indicators for your MySQL server which would otherwise
need to be calculated by hand from all the various SHOW STATUS values. For
example, the Index Read Ratio is an important value but it's not present in
SHOW STATUS; it's an inferred value (the ratio of Key_reads to
Key_read_requests).
This documentation outlines all the command line options in mysqlreport, most
of which control which reports are printed. This document does not address
how to interpret these reports; that topic is covered in the document Guide
To Understanding mysqlreport at http://hackmysql.com/mysqlreportguide.
.SH "OPTIONS"
Technically, command line options are in the form \-\-option, but \-option works
too. All options can be abbreviated if the abbreviation is unique. For example,
option \-\-host can be abbreviated \-\-ho but not \-\-h because \-\-h is ambiguous: it
could mean \-\-host or \-\-help.
.LP
.TP
\fB\-\-help\fR
Output help information and exit.
.TP
\fB\-\-user USER\fR
.TP
\fB\-\-password\fR
As of version 2.3 \-\-password can take the password on the
command line like "\-\-password FOO". Using \-\-password
alone without giving a password on the command line
causes mysqlreport to prompt for a password.
.TP
\fB\-\-host ADDRESS\fR
.TP
\fB\-\-port PORT\fR
.TP
\fB\-\-socket SOCKET\fR
.TP
\fB\-\-no\-mycnf\fR
\-\-no\-mycnf makes mysqlreport not read ~/.my.cnf which it does by default
otherwise. \-\-user and \-\-password always override values from ~/.my.cnf.
.TP
\fB\-\-dtq\fR
Print Distribution of Total Queries (DTQ) report (under
Total in Questions report). Queries (or Questions) can
be divided into four main areas: DMS (see \-\-dms below),
Com_ (see \-\-com below), COM_QUIT (see COM_QUIT and
Questions at http://hackmysql.com/com_quit), and
Unknown. \-\-dtq lists the number of queries in each of
these areas in descending order.
.TP
\fB\-\-dms\fR
Print Data Manipulation Statements (DMS) report (under
DMS in Questions report). DMS are those from the MySQL
manual section 13.2. Data Manipulation Statements.
(Currently, mysqlreport considers only SELECT, INSERT,
REPLACE, UPDATE, and DELETE.) Each DMS is listed in
descending order by count.
.TP
\fB\-\-com N\fR
Print top N number of non\-DMS Com_ status values in
descending order (after DMS in Questions report). If N
is not given, default is 3. Such non\-DMS Com_ values
include Com_change_db, Com_show_tables, Com_rollback,
etc.
.TP
\fB\-\-sas\fR
Print report for Select_ and Sort_ status values (after
Questions report). See MySQL Select and Sort Status
Variables at http://hackmysql.com/selectandsort.
.TP
\fB\-\-tab\fR
Print Threads, Aborted, and Bytes status reports (after
Created temp report). As of mysqlreport v2.3 the
Threads report reports on all Threads_ status values.
.TP
\fB\-\-qcache\fR
Print Query Cache report.
.TP
\fB\-\-all\fR
Equivalent to "\-\-dtq \-\-dms \-\-com 3 \-\-sas \-\-qcache".
(Notice \-\-tab is not invoked by \-\-all.)
.TP
\fB\-\-infile FILE\fR
Instead of getting SHOW STATUS values from MySQL, read
values from FILE. FILE is often a copy of the output of
SHOW STATUS including formatting characters (|, +, \-).
mysqlreport expects FILE to have the format
" value number " where value is only alpha and
underscore characters (A\-Z and _) and number is a
positive integer. Anything before, between, or after
value and number is ignored. mysqlreport also needs
the following MySQL server variables: version,
table_cache, max_connections, key_buffer_size,
query_cache_size. These values can be specified in
INFILE in the format "name = value" where name is one
of the aforementioned server variables and value is a
positive integer with or without a trailing M and
possible periods (for version). For example, to specify
an 18M key_buffer_size: key_buffer_size = 18M. Or, a
256 table_cache: table_cache = 256. The M implies
Megabytes not million, so 18M means 18,874,368 not
18,000,000. If these server variables are not specified
the following defaults are used (respectively) which
may cause strange values to be reported: 0.0.0, 64,
100, 8M, 0.
.TP
\fB\-\-outfile FILE\fR
After printing the report to screen, print the report
to FILE too. Internally, mysqlreport always writes the
report to a temp file first: /tmp/mysqlreport.PID on
*nix, c:\mysqlreport.PID on Windows (PID is the
script's process ID). Then it prints the temp file to
screen. Then if \-\-outfile is specified, the temp file
is copied to OUTFILE. After \-\-email (below), the temp
file is deleted.
.TP
\fB\-\-email ADDRESS\fR
After printing the report to screen, email the report
to ADDRESS. This option requires sendmail in
/usr/sbin/, therefore it does not work on Windows.
/usr/sbin/sendmail can be a sym link to qmail, for
example, or any MTA that emulates sendmail's \-t
command line option and operation. The FROM: field is
"mysqlreport", SUBJECT: is "MySQL status report".
.TP
\fB\-\-flush\-status\fR
Execute a "FLUSH STATUS;" after generating the reports.
If you do not have permissions in MySQL to do this an
error from DBD::mysql::st will be printed after the
reports.
.SH "AUTHORS"
.LP
Daniel Nichter
If mysqlreport breaks, send me a message from
http://hackmysql.com/feedback
with the error.
.SH "SEE ALSO"
.LP
mytop(1)
.LP
The comprehensive Guide To Understanding mysqlreport at
http://hackmysql.com/mysqlreportguide.

View file

@ -1,16 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
mysqltest \- Regressiontest program for MySQL.
.SH SYNOPSIS
mysqltest [options]
.SH DESCRIPTION
Runs a test against the mysql server and compares output with a results file.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,19 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
myisampack \- Compresses MySQL database files.
.SH SYNOPSIS
myisampack [options]
.SH DESCRIPTION
Pack a ISAM-table to take much smaller space
Keys are not updated, so you must run isamchk -rq on any table
that has keys after you have compressed it
You should give the .ISM file as the filename argument
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,16 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
resolve_stack_dump \- MySQL helper program for reporting bugs.
.SH SYNOPSIS
resolve_stack_dump [options]
.SH DESCRIPTION
Resolve numeric stack strace dump into symbols.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

View file

@ -1,16 +0,0 @@
.TH mysql 1 "17 March 2003" "MySQL 3.23" "MySQL database"
.SH NAME
resolveip \- MySQL helper program to retrive IP addresses.
.SH SYNOPSIS
resolveip [options]
.SH DESCRIPTION
Get hostname based on IP-address or IP-address based on hostname.
For more information start the program with '--help'.
.SH "SEE ALSO"
mysql (1), mysqld (1)
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page

File diff suppressed because it is too large Load diff

View file

@ -1 +0,0 @@
4

View file

@ -1,118 +0,0 @@
Source: percona-xtradb-dfsg-5.1
Section: misc
Priority: optional
Maintainer: Percona SQL Development Team <mysql-dev@percona.com>
Uploaders: Aleksandr Kuzminsky <aleksandr.kuzminsky@percona.com>
Build-Depends: libtool (>= 1.4.2-7), procps | hurd, debhelper (>= 4.1.16), file (>= 3.28-1), libncurses5-dev (>= 5.0-6), perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3), zlib1g-dev (>= 1:1.1.3-5), libreadline5-dev | libreadline-dev, psmisc, po-debconf, chrpath, automake1.9, doxygen, gs, dpatch, gawk, bison, lsb-release, fakeroot
Standards-Version: 3.8.0
Homepage: http://www.percona.com/
Vcs-Browser: http://bazaar.launchpad.net/~percona-dev/percona-xtradb/release-1.0/files
Vcs-Bzr: bzr+ssh://bazaar.launchpad.net/~percona-dev/percona-xtradb/release-1.0/
Package: libpercona-xtradb-client16
Section: libs
Architecture: any
Depends: percona-xtradb-common (>= ${source:Version}), ${shlibs:Depends}
Description: Percona SQL database client library
Percona SQL is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of Percona SQL are speed, robustness and
ease of use.
.
This package includes the client library.
Package: libpercona-xtradb-client15-dev
Architecture: all
Section: libdevel
Depends: libpercona-xtradb-client-dev (>= ${source:Version})
Description: Percona SQL database development files - empty transitional package
This is an empty package that depends on libpercona-xtradb-client-dev to ease the
transition for packages with versioned build-deps on libpercona-xtradb-client15-dev.
Package: libpercona-xtradb-client-dev
Architecture: any
Section: libdevel
Depends: libpercona-xtradb-client16 (>= ${source:Version}), zlib1g-dev, , ${shlibs:Depends}
Conflicts: libmysqlclient14-dev, libmysqlclient12-dev, libmysqlclient10-dev, libmysqlclient15-dev, libmysqlclient16-dev
Replaces: libmysqlclient14-dev, libmysqlclient12-dev, libmysqlclient10-dev, libmysqlclient15-dev, libmysqlclient16-dev
Description: Percona SQL database development files
Percona SQL is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of Percona SQL are speed, robustness and
ease of use.
.
This package includes development libraries and header files.
Package: percona-xtradb-common
Section: database
Architecture: all
Depends: ${shlibs:Depends}, ${misc:Depends}
Conflicts: mysql-common-4.1, mysql-common-5.0, mysql-common-5.1, mysql-common
Provides: mysql-common
Replaces: mysql-common-4.1, mysql-common-5.0, mysql-common-5.1, mysql-common
Description: Percona SQL database common files (e.g. /etc/mysql/my.cnf)
Percona SQL is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of Percona SQL are speed, robustness and
ease of use.
.
This package includes files needed by all versions of the client library
(e.g. /etc/mysql/my.cnf).
Package: percona-xtradb-client-5.1
Architecture: any
Depends: debianutils (>=1.6), libdbi-perl, percona-xtradb-common (>= ${source:Version}), libpercona-xtradb-client16 (>= ${source:Version}), ${perl:Depends}, ${shlibs:Depends}, ${misc:Depends}
Provides: virtual-mysql-client, mysql-client, mysql-client-4.1, percona-xtradb-client, percona-xtradb-client-5.1
Conflicts: mysql-client (<< ${source:Version}), mysql-client-5.0, mysql-client-5.1, percona-xtradb-client-5.0
Replaces: mysql-client (<< ${source:Version}), mysql-client-5.0, mysql-client-5.1, percona-xtradb-client-5.0
Description: Percona SQL database client binaries
Percona SQL is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of Percona SQL are speed, robustness and
ease of use.
.
This package includes the client binaries and the additional tools
innotop and mysqlreport.
Package: percona-xtradb-server-5.1
Architecture: any
Suggests: tinyca
Recommends: mailx, libhtml-template-perl
Pre-Depends: percona-xtradb-common (>= ${source:Version}), adduser (>= 3.40), debconf
Depends: percona-xtradb-client-5.1 (>= ${source:Version}), libdbi-perl, perl (>= 5.6), ${shlibs:Depends}, ${misc:Depends}, psmisc, passwd, lsb-base (>= 3.0-10)
Conflicts: mysql-server (<< ${source:Version}), mysql-server-4.1, percona-xtradb-server-5.0
Provides: mysql-server, virtual-mysql-server, mysql-server-5.0, percona-xtradb-server-5.1
Replaces: mysql-server (<< ${source:Version}), mysql-server-5.0, percona-xtradb-server-5.0
Description: Percona SQL database server binaries
Percona SQL is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of Percona SQL are speed, robustness and
ease of use.
.
This package includes the server binaries.
Package: percona-xtradb-server
Section: database
Architecture: all
Depends: percona-xtradb-server-5.1
Description: Percona SQL database server (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
percona-xtradb-server (currently percona-xtradb-server-5.1), as determined by the Percona SQL
maintainers. Install this package if in doubt about which Percona SQL
version you need. That will install the version recommended by the
package maintainers.
.
Percona SQL is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of Percona SQL are speed, robustness and
ease of use.
Package: percona-xtradb-client
Section: database
Architecture: all
Depends: percona-xtradb-client-5.1
Description: Percona SQL database client (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
percona-xtradb-client (currently percona-xtradb-client-5.1), as determined by the Percona SQL
maintainers. Install this package if in doubt about which Percona SQL version
you want, as this is the one we consider to be in the best shape.

View file

@ -1,169 +0,0 @@
== MySQL ==
The Debian package of MySQL was first debianzed on 1997-04-12 by Christian
Schwarz <schwarz@debian.org> and ist maintained since 1999-04-20 by
Christian Hammers <ch@debian.org>.
It can be downloaded from http://www.mysql.com/
Copyright:
According to the file "COPYING" all parts of this package are licenced
under the terms of the GNU GPL Version 2 of which a copy is available
in /usr/share/common-licenses.
To allow free software with other licences than the GPL to link against the
shared library, special terms for "derived works" are defined in the file
"EXCEPTIONS-CLIENT" which is quoted below.
More information can be found on http://www.mysql.com/company/legal/licensing/
The manual had to be removed as it is not free in the sense of the
Debian Free Software Guidelines (DFSG).
> Appendix I MySQL FLOSS License Exception
> ****************************************
>
> Version 0.3, 10 February 2005
>
> The MySQL AB Exception for Free/Libre and Open Source Software-only
> Applications Using MySQL Client Libraries (the "FLOSS Exception").
>
> Exception Intent
> ================
>
> We want specified Free/Libre and Open Source Software ("FLOSS")
> applications to be able to use specified GPL-licensed MySQL client
> libraries (the "Program") despite the fact that not all FLOSS licenses
> are compatible with version 2 of the GNU General Public License (the
> "GPL").
>
> Legal Terms and Conditions
> ==========================
>
> As a special exception to the terms and conditions of version 2.0 of the
> GPL:
>
> 1. You are free to distribute a Derivative Work that is formed
> entirely from the Program and one or more works (each, a "FLOSS
> Work") licensed under one or more of the licenses listed below in
> section 1, as long as:
>
> a. You obey the GPL in all respects for the Program and the
> Derivative Work, except for identifiable sections of the
> Derivative Work which are not derived from the Program, and
> which can reasonably be considered independent and separate
> works in themselves,
>
> b. all identifiable sections of the Derivative Work which are not
> derived from the Program, and which can reasonably be
> considered independent and separate works in themselves,
>
> i
> are distributed subject to one of the FLOSS licenses
> listed below, and
>
> ii
> the object code or executable form of those sections are
> accompanied by the complete corresponding
> machine-readable source code for those sections on the
> same medium and under the same FLOSS license as the
> corresponding object code or executable forms of those
> sections, and
>
> c. any works which are aggregated with the Program or with a
> Derivative Work on a volume of a storage or distribution
> medium in accordance with the GPL, can reasonably be
> considered independent and separate works in themselves which
> are not derivatives of either the Program, a Derivative Work
> or a FLOSS Work.
>
> If the above conditions are not met, then the Program may only be
> copied, modified, distributed or used under the terms and
> conditions of the GPL or another valid licensing option from MySQL
> AB.
>
> 2. FLOSS License List
>
> *License name* *Version(s)/Copyright Date*
> Academic Free License 2.0
> Apache Software License 1.0/1.1/2.0
> Apple Public Source License 2.0
> Artistic license From Perl 5.8.0
> BSD license "July 22 1999"
> Common Public License 1.0
> GNU Library or "Lesser" General Public 2.0/2.1
> License (LGPL)
> Jabber Open Source License 1.0
> MIT license -
> Mozilla Public License (MPL) 1.0/1.1
> Open Software License 2.0
> OpenSSL license (with original SSLeay "2003" ("1998")
> license)
> PHP License 3.0
> Python license (CNRI Python License) -
> Python Software Foundation License 2.1.1
> Sleepycat License "1999"
> W3C License "2001"
> X11 License "2001"
> Zlib/libpng License -
> Zope Public License 2.0
>
> Due to the many variants of some of the above licenses, we require
> that any version follow the 2003 version of the Free Software
> Foundation's Free Software Definition
> (`http://www.gnu.org/philosophy/free-sw.html') or version 1.9 of
> the Open Source Definition by the Open Source Initiative
> (`http://www.opensource.org/docs/definition.php').
>
> 3. Definitions
>
> a. Terms used, but not defined, herein shall have the meaning
> provided in the GPL.
>
> b. Derivative Work means a derivative work under copyright law.
>
> 4. Applicability This FLOSS Exception applies to all Programs that
> contain a notice placed by MySQL AB saying that the Program may be
> distributed under the terms of this FLOSS Exception. If you
> create or distribute a work which is a Derivative Work of both the
> Program and any other work licensed under the GPL, then this FLOSS
> Exception is not available for that work; thus, you must remove
> the FLOSS Exception notice from that work and comply with the GPL
> in all respects, including by retaining all GPL notices. You may
> choose to redistribute a copy of the Program exclusively under the
> terms of the GPL by removing the FLOSS Exception notice from that
> copy of the Program, provided that the copy has never been
> modified by you or any third party.
== innotop ==
Author: Baron Schwartz <baron@xaprb.com>
URL: http://innotop.sourceforge.net
License:
> This software is dual licensed, either GPL version 2 or Artistic License.
>
> This package is free software; you can redistribute it and/or modify
> it under the terms of the GNU General Public License as published by
> the Free Software Foundation; either version 2 of the License, or
> (at your option) any later version.
>
> This package is distributed in the hope that it will be useful,
> but WITHOUT ANY WARRANTY; without even the implied warranty of
> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> GNU General Public License for more details.
>
> You should have received a copy of the GNU General Public License
> along with this package; if not, write to the Free Software
> Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian systems, the complete text of the GNU General Public License and the
Artistic License can be found in `/usr/share/common-licenses/'.
The upstream author explained here: http://bugs.gentoo.org/show_bug.cgi?id=14760
that these licenses also apply to the following files:
- innotop.html
- InnoDBParser.pm

View file

@ -1,4 +0,0 @@
The examples directory includes files that might be needed by some
developers:
- header files not installed by default
- the example file udf_example.c

View file

@ -1,2 +0,0 @@
usr/include/
usr/lib/

View file

@ -1 +0,0 @@
EXCEPTIONS-CLIENT

View file

@ -1 +0,0 @@
sql/udf_example.c

View file

@ -1,7 +0,0 @@
usr/bin/mysql_config
usr/include/mysql/*.h
usr/lib/libmysqlclient.a
usr/lib/libmysqlclient.la
usr/lib/mysql/*.a
usr/lib/mysql/*.la
usr/share/man/man1/mysql_config.1

View file

@ -1,2 +0,0 @@
usr/lib/libmysqlclient.so.16 usr/lib/libmysqlclient.so
usr/lib/libmysqlclient_r.so.16 usr/lib/libmysqlclient_r.so

View file

@ -1 +0,0 @@
usr/lib/

View file

@ -1 +0,0 @@
EXCEPTIONS-CLIENT

View file

@ -1 +0,0 @@
usr/lib/libmysqlclient*.so.*

View file

@ -1,12 +0,0 @@
#!/bin/bash -e
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0
# vim: ts=4

View file

@ -1,6 +0,0 @@
33_scripts__mysql_create_system_tables__no_test.dpatch
38_scripts__mysqld_safe.sh__signals.dpatch
41_scripts__mysql_install_db.sh__no_test.dpatch
44_scripts__mysql_config__libs.dpatch
50_mysql-test__db_test.dpatch
60_percona_support.dpatch

View file

@ -1,776 +0,0 @@
#! /bin/sh /usr/share/dpatch/dpatch-run
## 01_MAKEFILES__Docs_Makefile.in.dpatch by <ch@debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Creates Docs/Makefile.in
@DPATCH@
--- old/Docs/Images/Makefile.in 2005-03-01 02:08:01.877429040 +0100
+++ new/Docs/Images/Makefile.in 2005-02-28 21:21:24.000000000 +0100
@@ -0,0 +1,765 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# Process this file with automake to create Makefile.in
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+ASSEMBLER_FALSE = @ASSEMBLER_FALSE@
+ASSEMBLER_TRUE = @ASSEMBLER_TRUE@
+ASSEMBLER_sparc32_FALSE = @ASSEMBLER_sparc32_FALSE@
+ASSEMBLER_sparc32_TRUE = @ASSEMBLER_sparc32_TRUE@
+ASSEMBLER_sparc64_FALSE = @ASSEMBLER_sparc64_FALSE@
+ASSEMBLER_sparc64_TRUE = @ASSEMBLER_sparc64_TRUE@
+ASSEMBLER_x86_FALSE = @ASSEMBLER_x86_FALSE@
+ASSEMBLER_x86_TRUE = @ASSEMBLER_x86_TRUE@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AVAILABLE_LANGUAGES = @AVAILABLE_LANGUAGES@
+AVAILABLE_LANGUAGES_ERRORS = @AVAILABLE_LANGUAGES_ERRORS@
+AWK = @AWK@
+CC = @CC@
+CCAS = @CCAS@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CHARSETS_NEED_SOURCE = @CHARSETS_NEED_SOURCE@
+CHARSET_OBJS = @CHARSET_OBJS@
+CHARSET_SRCS = @CHARSET_SRCS@
+CHECK_PID = @CHECK_PID@
+CHMOD = @CHMOD@
+CLIENT_EXTRA_LDFLAGS = @CLIENT_EXTRA_LDFLAGS@
+CLIENT_LIBS = @CLIENT_LIBS@
+CMP = @CMP@
+COMPILATION_COMMENT = @COMPILATION_COMMENT@
+COMPILE_PSTACK_FALSE = @COMPILE_PSTACK_FALSE@
+COMPILE_PSTACK_TRUE = @COMPILE_PSTACK_TRUE@
+CONF_COMMAND = @CONF_COMMAND@
+CP = @CP@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXLDFLAGS = @CXXLDFLAGS@
+CXX_VERSION = @CXX_VERSION@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOT_FRM_VERSION = @DOT_FRM_VERSION@
+DVIS = @DVIS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FIND_PROC = @FIND_PROC@
+GETCONF = @GETCONF@
+GXX = @GXX@
+HAVE_NETWARE_FALSE = @HAVE_NETWARE_FALSE@
+HAVE_NETWARE_TRUE = @HAVE_NETWARE_TRUE@
+HOSTNAME = @HOSTNAME@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+IS_LINUX = @IS_LINUX@
+KILL = @KILL@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBDL = @LIBDL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIB_EXTRA_CCFLAGS = @LIB_EXTRA_CCFLAGS@
+LM_CFLAGS = @LM_CFLAGS@
+LN = @LN@
+LN_CP_F = @LN_CP_F@
+LN_S = @LN_S@
+LOCAL_FALSE = @LOCAL_FALSE@
+LOCAL_TRUE = @LOCAL_TRUE@
+LTLIBOBJS = @LTLIBOBJS@
+MACHINE_TYPE = @MACHINE_TYPE@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MAKE_BINARY_DISTRIBUTION_OPTIONS = @MAKE_BINARY_DISTRIBUTION_OPTIONS@
+MAKE_SHELL = @MAKE_SHELL@
+MT_INCLUDES = @MT_INCLUDES@
+MT_LD_ADD = @MT_LD_ADD@
+MV = @MV@
+MYSQLD_DEFAULT_SWITCHES = @MYSQLD_DEFAULT_SWITCHES@
+MYSQLD_EXTRA_LDFLAGS = @MYSQLD_EXTRA_LDFLAGS@
+MYSQLD_USER = @MYSQLD_USER@
+MYSQL_BASE_VERSION = @MYSQL_BASE_VERSION@
+MYSQL_NO_DASH_VERSION = @MYSQL_NO_DASH_VERSION@
+MYSQL_SERVER_SUFFIX = @MYSQL_SERVER_SUFFIX@
+MYSQL_TCP_PORT = @MYSQL_TCP_PORT@
+MYSQL_TCP_PORT_DEFAULT = @MYSQL_TCP_PORT_DEFAULT@
+MYSQL_UNIX_ADDR = @MYSQL_UNIX_ADDR@
+MYSQL_VERSION_ID = @MYSQL_VERSION_ID@
+NOINST_LDFLAGS = @NOINST_LDFLAGS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFMANUAL = @PDFMANUAL@
+PERL = @PERL@
+PERL5 = @PERL5@
+PROTOCOL_VERSION = @PROTOCOL_VERSION@
+PS = @PS@
+RANLIB = @RANLIB@
+RM = @RM@
+SAVE_ASFLAGS = @SAVE_ASFLAGS@
+SAVE_CFLAGS = @SAVE_CFLAGS@
+SAVE_CXXFLAGS = @SAVE_CXXFLAGS@
+SAVE_CXXLDFLAGS = @SAVE_CXXLDFLAGS@
+SAVE_LDFLAGS = @SAVE_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHARED_LIB_VERSION = @SHARED_LIB_VERSION@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYSTEM_TYPE = @SYSTEM_TYPE@
+TAR = @TAR@
+TERMCAP_LIB = @TERMCAP_LIB@
+THREAD_LOBJECTS = @THREAD_LOBJECTS@
+THREAD_LPROGRAMS = @THREAD_LPROGRAMS@
+VERSION = @VERSION@
+WRAPLIBS = @WRAPLIBS@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_GETCONF = @ac_ct_GETCONF@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bdb_includes = @bdb_includes@
+bdb_libs = @bdb_libs@
+bdb_libs_with_path = @bdb_libs_with_path@
+bench_dirs = @bench_dirs@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+default_charset = @default_charset@
+docs_dirs = @docs_dirs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+innodb_includes = @innodb_includes@
+innodb_libs = @innodb_libs@
+innodb_system_libs = @innodb_system_libs@
+install_sh = @install_sh@
+isam_libs = @isam_libs@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libmysqld_dirs = @libmysqld_dirs@
+linked_client_targets = @linked_client_targets@
+linked_netware_sources = @linked_netware_sources@
+localstatedir = @localstatedir@
+man_dirs = @man_dirs@
+mandir = @mandir@
+netware_dir = @netware_dir@
+oldincludedir = @oldincludedir@
+openssl_includes = @openssl_includes@
+openssl_libs = @openssl_libs@
+orbit_idl = @orbit_idl@
+orbit_includes = @orbit_includes@
+orbit_libs = @orbit_libs@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+pstack_dirs = @pstack_dirs@
+pstack_libs = @pstack_libs@
+readline_dir = @readline_dir@
+readline_link = @readline_link@
+sbindir = @sbindir@
+server_scripts = @server_scripts@
+sharedstatedir = @sharedstatedir@
+sql_client_dirs = @sql_client_dirs@
+sql_server_dirs = @sql_server_dirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+thread_dirs = @thread_dirs@
+tools_dirs = @tools_dirs@
+uname_prog = @uname_prog@
+vio_dir = @vio_dir@
+vio_libs = @vio_libs@
+
+AUTOMAKE_OPTIONS = foreign
+
+# These are built from source in the Docs directory
+EXTRA_DIST = INSTALL-SOURCE README COPYING EXCEPTIONS-CLIENT
+SUBDIRS = . include @docs_dirs@ @readline_dir@ \
+ @thread_dirs@ pstack @sql_client_dirs@ \
+ @sql_server_dirs@ scripts @man_dirs@ tests \
+ BUILD netware os2 @libmysqld_dirs@ \
+ @bench_dirs@ support-files @tools_dirs@
+
+
+# Relink after clean
+linked_sources = linked_client_sources linked_server_sources \
+ linked_libmysql_sources linked_libmysql_r_sources \
+ linked_libmysqld_sources linked_libmysqldex_sources \
+ linked_include_sources @linked_netware_sources@
+
+
+CLEANFILES = $(linked_sources)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = bdb/Makefile
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+ ps-recursive install-info-recursive uninstall-info-recursive \
+ all-recursive install-data-recursive install-exec-recursive \
+ installdirs-recursive install-recursive uninstall-recursive \
+ check-recursive installcheck-recursive
+DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure COPYING \
+ ChangeLog Makefile.am acconfig.h acinclude.m4 aclocal.m4 \
+ config.guess config.h.in config.sub configure configure.in \
+ depcomp install-sh ltconfig ltmain.sh missing mkinstalldirs
+DIST_SUBDIRS = $(SUBDIRS)
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
+
+$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+ cd $(srcdir) && $(AUTOCONF)
+
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h
+ cd $(top_srcdir) && $(AUTOHEADER)
+ touch $(srcdir)/config.h.in
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+bdb/Makefile: $(top_builddir)/config.status $(top_srcdir)/bdb/Makefile.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if (etags --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ else \
+ include_option=--include; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -f $$subdir/TAGS && \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = .
+distdir = $(PACKAGE)-$(VERSION)
+
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ mkdir $(distdir)
+ $(mkinstalldirs) $(distdir)/bdb $(distdir)/include
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d $(distdir)/$$subdir \
+ || mkdir $(distdir)/$$subdir \
+ || exit 1; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" \
+ distdir=../$(distdir)/$$subdir \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+dist-gzip: distdir
+ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ $(am__remove_distdir)
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && cd $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
+ && rm -f $(distdir).tar.gz \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+ $(am__remove_distdir)
+ @echo "$(distdir).tar.gz is ready for distribution" | \
+ sed 'h;s/./=/g;p;x;p;x'
+distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h
+installdirs: installdirs-recursive
+installdirs-am:
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+ clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive dist dist-all dist-gzip distcheck distclean \
+ distclean-generic distclean-hdr distclean-libtool \
+ distclean-recursive distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am dvi-recursive info info-am \
+ info-recursive install install-am install-data install-data-am \
+ install-data-recursive install-exec install-exec-am \
+ install-exec-recursive install-info install-info-am \
+ install-info-recursive install-man install-recursive \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am installdirs-recursive maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive mostlyclean \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+ pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
+ tags-recursive uninstall uninstall-am uninstall-info-am \
+ uninstall-info-recursive uninstall-recursive
+
+
+# This is just so that the linking is done early.
+config.h: $(linked_sources)
+
+linked_include_sources:
+ cd include; $(MAKE) link_sources
+ echo timestamp > linked_include_sources
+
+linked_client_sources: @linked_client_targets@
+ cd client; $(MAKE) link_sources
+ echo timestamp > linked_client_sources
+
+linked_libmysql_sources:
+ cd libmysql; $(MAKE) link_sources
+ echo timestamp > linked_libmysql_sources
+
+linked_libmysql_r_sources: linked_libmysql_sources
+ cd libmysql_r; $(MAKE) link_sources
+ echo timestamp > linked_libmysql_r_sources
+
+linked_libmysqld_sources:
+ cd libmysqld; $(MAKE) link_sources
+ echo timestamp > linked_libmysqld_sources
+
+linked_libmysqldex_sources:
+ cd libmysqld/examples; $(MAKE) link_sources
+ echo timestamp > linked_libmysqldex_sources
+
+linked_netware_sources:
+ cd @netware_dir@; $(MAKE) link_sources
+ echo timestamp > linked_netware_sources
+
+#avoid recursive make calls in sql directory
+linked_server_sources:
+ cd sql; rm -f mini_client_errors.c;@LN_CP_F@ ../libmysql/errmsg.c mini_client_errors.c
+ echo timestamp > linked_server_sources
+
+# Create permission databases
+init-db: all
+ $(top_builddir)/scripts/mysql_install_db
+
+bin-dist: all
+ $(top_builddir)/scripts/make_binary_distribution @MAKE_BINARY_DISTRIBUTION_OPTIONS@
+
+# Remove BK's "SCCS" subdirectories from source distribution
+dist-hook:
+ rm -rf `find $(distdir) -type d -name SCCS`
+
+tags:
+ support-files/build-tags
+.PHONY: init-db bin-dist
+
+# Test installation
+
+test:
+ cd mysql-test ; ./mysql-test-run
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

View file

@ -1,776 +0,0 @@
#! /bin/sh /usr/share/dpatch/dpatch-run
## 01_MAKEFILES__Docs_Makefile.in.dpatch by <ch@debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Creates Docs/Makefile.in
@DPATCH@
--- old/Docs/Makefile.in 2005-03-01 02:08:01.877429040 +0100
+++ new/Docs/Makefile.in 2005-02-28 21:21:24.000000000 +0100
@@ -0,0 +1,765 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# Process this file with automake to create Makefile.in
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+ASSEMBLER_FALSE = @ASSEMBLER_FALSE@
+ASSEMBLER_TRUE = @ASSEMBLER_TRUE@
+ASSEMBLER_sparc32_FALSE = @ASSEMBLER_sparc32_FALSE@
+ASSEMBLER_sparc32_TRUE = @ASSEMBLER_sparc32_TRUE@
+ASSEMBLER_sparc64_FALSE = @ASSEMBLER_sparc64_FALSE@
+ASSEMBLER_sparc64_TRUE = @ASSEMBLER_sparc64_TRUE@
+ASSEMBLER_x86_FALSE = @ASSEMBLER_x86_FALSE@
+ASSEMBLER_x86_TRUE = @ASSEMBLER_x86_TRUE@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AVAILABLE_LANGUAGES = @AVAILABLE_LANGUAGES@
+AVAILABLE_LANGUAGES_ERRORS = @AVAILABLE_LANGUAGES_ERRORS@
+AWK = @AWK@
+CC = @CC@
+CCAS = @CCAS@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CHARSETS_NEED_SOURCE = @CHARSETS_NEED_SOURCE@
+CHARSET_OBJS = @CHARSET_OBJS@
+CHARSET_SRCS = @CHARSET_SRCS@
+CHECK_PID = @CHECK_PID@
+CHMOD = @CHMOD@
+CLIENT_EXTRA_LDFLAGS = @CLIENT_EXTRA_LDFLAGS@
+CLIENT_LIBS = @CLIENT_LIBS@
+CMP = @CMP@
+COMPILATION_COMMENT = @COMPILATION_COMMENT@
+COMPILE_PSTACK_FALSE = @COMPILE_PSTACK_FALSE@
+COMPILE_PSTACK_TRUE = @COMPILE_PSTACK_TRUE@
+CONF_COMMAND = @CONF_COMMAND@
+CP = @CP@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXLDFLAGS = @CXXLDFLAGS@
+CXX_VERSION = @CXX_VERSION@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOT_FRM_VERSION = @DOT_FRM_VERSION@
+DVIS = @DVIS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FIND_PROC = @FIND_PROC@
+GETCONF = @GETCONF@
+GXX = @GXX@
+HAVE_NETWARE_FALSE = @HAVE_NETWARE_FALSE@
+HAVE_NETWARE_TRUE = @HAVE_NETWARE_TRUE@
+HOSTNAME = @HOSTNAME@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+IS_LINUX = @IS_LINUX@
+KILL = @KILL@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBDL = @LIBDL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIB_EXTRA_CCFLAGS = @LIB_EXTRA_CCFLAGS@
+LM_CFLAGS = @LM_CFLAGS@
+LN = @LN@
+LN_CP_F = @LN_CP_F@
+LN_S = @LN_S@
+LOCAL_FALSE = @LOCAL_FALSE@
+LOCAL_TRUE = @LOCAL_TRUE@
+LTLIBOBJS = @LTLIBOBJS@
+MACHINE_TYPE = @MACHINE_TYPE@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MAKE_BINARY_DISTRIBUTION_OPTIONS = @MAKE_BINARY_DISTRIBUTION_OPTIONS@
+MAKE_SHELL = @MAKE_SHELL@
+MT_INCLUDES = @MT_INCLUDES@
+MT_LD_ADD = @MT_LD_ADD@
+MV = @MV@
+MYSQLD_DEFAULT_SWITCHES = @MYSQLD_DEFAULT_SWITCHES@
+MYSQLD_EXTRA_LDFLAGS = @MYSQLD_EXTRA_LDFLAGS@
+MYSQLD_USER = @MYSQLD_USER@
+MYSQL_BASE_VERSION = @MYSQL_BASE_VERSION@
+MYSQL_NO_DASH_VERSION = @MYSQL_NO_DASH_VERSION@
+MYSQL_SERVER_SUFFIX = @MYSQL_SERVER_SUFFIX@
+MYSQL_TCP_PORT = @MYSQL_TCP_PORT@
+MYSQL_TCP_PORT_DEFAULT = @MYSQL_TCP_PORT_DEFAULT@
+MYSQL_UNIX_ADDR = @MYSQL_UNIX_ADDR@
+MYSQL_VERSION_ID = @MYSQL_VERSION_ID@
+NOINST_LDFLAGS = @NOINST_LDFLAGS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFMANUAL = @PDFMANUAL@
+PERL = @PERL@
+PERL5 = @PERL5@
+PROTOCOL_VERSION = @PROTOCOL_VERSION@
+PS = @PS@
+RANLIB = @RANLIB@
+RM = @RM@
+SAVE_ASFLAGS = @SAVE_ASFLAGS@
+SAVE_CFLAGS = @SAVE_CFLAGS@
+SAVE_CXXFLAGS = @SAVE_CXXFLAGS@
+SAVE_CXXLDFLAGS = @SAVE_CXXLDFLAGS@
+SAVE_LDFLAGS = @SAVE_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHARED_LIB_VERSION = @SHARED_LIB_VERSION@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYSTEM_TYPE = @SYSTEM_TYPE@
+TAR = @TAR@
+TERMCAP_LIB = @TERMCAP_LIB@
+THREAD_LOBJECTS = @THREAD_LOBJECTS@
+THREAD_LPROGRAMS = @THREAD_LPROGRAMS@
+VERSION = @VERSION@
+WRAPLIBS = @WRAPLIBS@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_GETCONF = @ac_ct_GETCONF@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bdb_includes = @bdb_includes@
+bdb_libs = @bdb_libs@
+bdb_libs_with_path = @bdb_libs_with_path@
+bench_dirs = @bench_dirs@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+default_charset = @default_charset@
+docs_dirs = @docs_dirs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+innodb_includes = @innodb_includes@
+innodb_libs = @innodb_libs@
+innodb_system_libs = @innodb_system_libs@
+install_sh = @install_sh@
+isam_libs = @isam_libs@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libmysqld_dirs = @libmysqld_dirs@
+linked_client_targets = @linked_client_targets@
+linked_netware_sources = @linked_netware_sources@
+localstatedir = @localstatedir@
+man_dirs = @man_dirs@
+mandir = @mandir@
+netware_dir = @netware_dir@
+oldincludedir = @oldincludedir@
+openssl_includes = @openssl_includes@
+openssl_libs = @openssl_libs@
+orbit_idl = @orbit_idl@
+orbit_includes = @orbit_includes@
+orbit_libs = @orbit_libs@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+pstack_dirs = @pstack_dirs@
+pstack_libs = @pstack_libs@
+readline_dir = @readline_dir@
+readline_link = @readline_link@
+sbindir = @sbindir@
+server_scripts = @server_scripts@
+sharedstatedir = @sharedstatedir@
+sql_client_dirs = @sql_client_dirs@
+sql_server_dirs = @sql_server_dirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+thread_dirs = @thread_dirs@
+tools_dirs = @tools_dirs@
+uname_prog = @uname_prog@
+vio_dir = @vio_dir@
+vio_libs = @vio_libs@
+
+AUTOMAKE_OPTIONS = foreign
+
+# These are built from source in the Docs directory
+EXTRA_DIST = INSTALL-SOURCE README COPYING EXCEPTIONS-CLIENT
+SUBDIRS = . include @docs_dirs@ @readline_dir@ \
+ @thread_dirs@ pstack @sql_client_dirs@ \
+ @sql_server_dirs@ scripts @man_dirs@ tests \
+ BUILD netware os2 @libmysqld_dirs@ \
+ @bench_dirs@ support-files @tools_dirs@
+
+
+# Relink after clean
+linked_sources = linked_client_sources linked_server_sources \
+ linked_libmysql_sources linked_libmysql_r_sources \
+ linked_libmysqld_sources linked_libmysqldex_sources \
+ linked_include_sources @linked_netware_sources@
+
+
+CLEANFILES = $(linked_sources)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = bdb/Makefile
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+ ps-recursive install-info-recursive uninstall-info-recursive \
+ all-recursive install-data-recursive install-exec-recursive \
+ installdirs-recursive install-recursive uninstall-recursive \
+ check-recursive installcheck-recursive
+DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure COPYING \
+ ChangeLog Makefile.am acconfig.h acinclude.m4 aclocal.m4 \
+ config.guess config.h.in config.sub configure configure.in \
+ depcomp install-sh ltconfig ltmain.sh missing mkinstalldirs
+DIST_SUBDIRS = $(SUBDIRS)
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
+
+$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+ cd $(srcdir) && $(AUTOCONF)
+
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h
+ cd $(top_srcdir) && $(AUTOHEADER)
+ touch $(srcdir)/config.h.in
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+bdb/Makefile: $(top_builddir)/config.status $(top_srcdir)/bdb/Makefile.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if (etags --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ else \
+ include_option=--include; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -f $$subdir/TAGS && \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = .
+distdir = $(PACKAGE)-$(VERSION)
+
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ mkdir $(distdir)
+ $(mkinstalldirs) $(distdir)/bdb $(distdir)/include
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d $(distdir)/$$subdir \
+ || mkdir $(distdir)/$$subdir \
+ || exit 1; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" \
+ distdir=../$(distdir)/$$subdir \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+dist-gzip: distdir
+ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ $(am__remove_distdir)
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && cd $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
+ && rm -f $(distdir).tar.gz \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+ $(am__remove_distdir)
+ @echo "$(distdir).tar.gz is ready for distribution" | \
+ sed 'h;s/./=/g;p;x;p;x'
+distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h
+installdirs: installdirs-recursive
+installdirs-am:
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+ clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive dist dist-all dist-gzip distcheck distclean \
+ distclean-generic distclean-hdr distclean-libtool \
+ distclean-recursive distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am dvi-recursive info info-am \
+ info-recursive install install-am install-data install-data-am \
+ install-data-recursive install-exec install-exec-am \
+ install-exec-recursive install-info install-info-am \
+ install-info-recursive install-man install-recursive \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am installdirs-recursive maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive mostlyclean \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+ pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
+ tags-recursive uninstall uninstall-am uninstall-info-am \
+ uninstall-info-recursive uninstall-recursive
+
+
+# This is just so that the linking is done early.
+config.h: $(linked_sources)
+
+linked_include_sources:
+ cd include; $(MAKE) link_sources
+ echo timestamp > linked_include_sources
+
+linked_client_sources: @linked_client_targets@
+ cd client; $(MAKE) link_sources
+ echo timestamp > linked_client_sources
+
+linked_libmysql_sources:
+ cd libmysql; $(MAKE) link_sources
+ echo timestamp > linked_libmysql_sources
+
+linked_libmysql_r_sources: linked_libmysql_sources
+ cd libmysql_r; $(MAKE) link_sources
+ echo timestamp > linked_libmysql_r_sources
+
+linked_libmysqld_sources:
+ cd libmysqld; $(MAKE) link_sources
+ echo timestamp > linked_libmysqld_sources
+
+linked_libmysqldex_sources:
+ cd libmysqld/examples; $(MAKE) link_sources
+ echo timestamp > linked_libmysqldex_sources
+
+linked_netware_sources:
+ cd @netware_dir@; $(MAKE) link_sources
+ echo timestamp > linked_netware_sources
+
+#avoid recursive make calls in sql directory
+linked_server_sources:
+ cd sql; rm -f mini_client_errors.c;@LN_CP_F@ ../libmysql/errmsg.c mini_client_errors.c
+ echo timestamp > linked_server_sources
+
+# Create permission databases
+init-db: all
+ $(top_builddir)/scripts/mysql_install_db
+
+bin-dist: all
+ $(top_builddir)/scripts/make_binary_distribution @MAKE_BINARY_DISTRIBUTION_OPTIONS@
+
+# Remove BK's "SCCS" subdirectories from source distribution
+dist-hook:
+ rm -rf `find $(distdir) -type d -name SCCS`
+
+tags:
+ support-files/build-tags
+.PHONY: init-db bin-dist
+
+# Test installation
+
+test:
+ cd mysql-test ; ./mysql-test-run
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

View file

@ -1,29 +0,0 @@
#! /bin/sh /usr/share/dpatch/dpatch-run
## 33_scripts__mysql_create_system_tables__no_test.dpatch by <ch@debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: scripts__mysql_create_system_tables__no_test
## DP: A user with no password prevents a normal user from login under certain
## DP: circumstances as it is checked first. See #301741.
## DP: http://bugs.mysql.com/bug.php?id=6901
@DPATCH@
--- old/scripts/mysql_system_tables_data.sql 2008-12-04 22:59:44.000000000 +0100
+++ new/scripts/mysql_system_tables_data.sql 2008-12-04 23:00:07.000000000 +0100
@@ -11,8 +11,6 @@
-- Fill "db" table with default grants for anyone to
-- access database 'test' and 'test_%' if "db" table didn't exist
CREATE TEMPORARY TABLE tmp_db LIKE db;
-INSERT INTO tmp_db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','N','N','Y','Y');
-INSERT INTO tmp_db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','N','N','Y','Y');
INSERT INTO db SELECT * FROM tmp_db WHERE @had_db_table=0;
DROP TABLE tmp_db;
@@ -24,7 +22,5 @@
INSERT INTO tmp_user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
REPLACE INTO tmp_user SELECT @current_hostname,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0 FROM dual WHERE LOWER( @current_hostname) != 'localhost';
REPLACE INTO tmp_user VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
-INSERT INTO tmp_user (host,user) VALUES ('localhost','');
-INSERT INTO tmp_user (host,user) SELECT @current_hostname,'' FROM dual WHERE LOWER(@current_hostname ) != 'localhost';
INSERT INTO user SELECT * FROM tmp_user WHERE @had_user_table=0;
DROP TABLE tmp_user;

View file

@ -1,43 +0,0 @@
#! /bin/sh /usr/share/dpatch/dpatch-run
## 38_scripts__mysqld_safe.sh__signals.dpatch by <ch@debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Executes /etc/init.d/mysql on signals
## DP: Reported as http://bugs.mysql.com/bug.php?id=31361
@DPATCH@
--- old/scripts/mysqld_safe.sh 2006-07-29 13:12:34.000000000 +0200
+++ old/scripts/mysqld_safe.sh 2006-07-29 13:14:08.000000000 +0200
@@ -16,8 +16,6 @@
# This command can be used as pipe to syslog. With "-s" it also logs to stderr.
ERR_LOGGER="logger -p daemon.err -t mysqld_safe -i"
-trap '' 1 2 3 15 # we shouldn't let anyone kill us
-
umask 007
defaults=
@@ -122,7 +122,7 @@
# sed buffers output (only GNU sed supports a -u (unbuffered) option)
# which means that messages may not get sent to syslog until the
# mysqld process quits.
- cmd="$cmd 2>&1 | logger -t '$syslog_tag_mysqld' -p daemon.error"
+ cmd="$cmd 2>&1 | logger -t '$syslog_tag_mysqld' -p daemon.error & wait"
;;
*)
echo "Internal program error (non-fatal):" \
@@ -352,6 +350,13 @@
fi
#
+# From now on, we catch signals to do a proper shutdown of mysqld
+# when signalled to do so.
+#
+trap '/usr/bin/mysqladmin --defaults-extra-file=/etc/mysql/debian.cnf refresh' 1 # HUP
+trap '/usr/bin/mysqladmin --defaults-extra-file=/etc/mysql/debian.cnf shutdown' 2 3 15 # INT QUIT and TERM
+
+#
# Uncomment the following lines if you want all tables to be automatically
# checked and repaired during startup. You should add sensible key_buffer
# and sort_buffer values to my.cnf to improve check performance or require

View file

@ -1,20 +0,0 @@
#! /bin/sh /usr/share/dpatch/dpatch-run
## 41_scripts__mysql_install_db.sh__no_test.dpatch by <ch@debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: scripts__mysql_install_db.sh__no_test
## DP: http://bugs.mysql.com/bug.php?id=6901
@DPATCH@
--- mysql-dfsg-5.1-5.1.23rc.orig/scripts/mysql_install_db.sh 2008-01-29 22:41:20.000000000 +0100
+++ mysql-dfsg-5.1-5.1.23rc/scripts/mysql_install_db.sh 2008-02-28 10:08:11.000000000 +0100
@@ -306,7 +306,7 @@
fi
# Create database directories
-for dir in $ldata $ldata/mysql $ldata/test
+for dir in $ldata $ldata/mysql
do
if test ! -d $dir
then

View file

@ -1,24 +0,0 @@
#! /bin/sh /usr/share/dpatch/dpatch-run
## 99-unnamed.dpatch by <ch@debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Removes unnecessary library dependencies. See #390692
@DPATCH@
diff -Nur mysql-dfsg-5.1-5.1.31.orig/scripts/mysql_config.sh mysql-dfsg-5.1-5.1.31/scripts/mysql_config.sh
--- mysql-dfsg-5.1-5.1.31.orig/scripts/mysql_config.sh 2009-01-19 17:30:55.000000000 +0100
+++ mysql-dfsg-5.1-5.1.31/scripts/mysql_config.sh 2009-02-08 17:17:48.000000000 +0100
@@ -104,10 +104,10 @@
# Create options
# We intentionally add a space to the beginning and end of lib strings, simplifies replace later
-libs=" $ldflags -L$pkglibdir -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@"
+libs=" $ldflags -L$pkglibdir -lmysqlclient"
libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@ "
-libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @LIBS@ @openssl_libs@ "
-embedded_libs=" $ldflags -L$pkglibdir -lmysqld @LIBDL@ @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @innodb_system_libs@ @openssl_libs@ "
+libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @openssl_libs@ "
+embedded_libs=" $ldflags -L$pkglibdir -lmysqld @LIBDL@ @WRAPLIBS@ @innodb_system_libs@ @openssl_libs@ "
if [ -r "$pkglibdir/libmygcc.a" ]; then
# When linking against the static library with a different version of GCC

View file

@ -1,23 +0,0 @@
#! /bin/sh /usr/share/dpatch/dpatch-run
## 50_mysql-test__db_test.dpatch by Christian Hammers <ch@debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Patch 33_scripts__mysql_create_system_tables__no_test removes the
## DP: rights for anybody to connect to the test database but the test
## DP: suite depends on them.
@DPATCH@
--- old/mysql-test/mysql-test-run.pl 2009-06-16 14:24:09.000000000 +0200
+++ new/mysql-test/mysql-test-run.pl 2009-07-04 00:03:34.000000000 +0200
@@ -2717,6 +2717,10 @@
mtr_appendfile_to_file("$sql_dir/mysql_system_tables_data.sql",
$bootstrap_sql_file);
+ mtr_tofile($bootstrap_sql_file, "-- Debian removed the default privileges on the 'test' database\n");
+ mtr_tofile($bootstrap_sql_file, "INSERT INTO mysql.db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','N','N','Y','Y');\n");
+
+
# Add test data for timezone - this is just a subset, on a real
# system these tables will be populated either by mysql_tzinfo_to_sql
# or by downloading the timezone table package from our website

View file

@ -1,16 +0,0 @@
#! /bin/sh /usr/share/dpatch/dpatch-run
@DPATCH@
--- a/scripts/mysql_install_db.sh 2009-08-08 09:20:07.000000000 +0000
+++ b/scripts/mysql_install_db.sh 2009-08-08 09:29:23.000000000 +0000
@@ -469,6 +469,9 @@
echo
echo "Please report any problems with the $scriptdir/mysqlbug script!"
echo
+ echo "For commercial support please contact Percona at http://www.percona.com/contacts.html"
+ echo
+
fi
exit 0

View file

@ -1,4 +0,0 @@
FAQ:
Q: My <tab> completition is gone, why?
A: You have "no-auto-rehash" in the "[mysql]" section of /etc/mysql/my.cnf!

View file

@ -1,3 +0,0 @@
usr/bin/
usr/share/man/man1/
usr/share/perl5/

View file

@ -1,3 +0,0 @@
debian/additions/innotop/changelog.innotop
EXCEPTIONS-CLIENT
README

View file

@ -1,39 +0,0 @@
usr/bin/innotop
usr/bin/myisam_ftdump
usr/bin/mysql
usr/bin/mysqlaccess
usr/bin/mysqladmin
usr/bin/mysqlbug
usr/bin/mysqlcheck
usr/bin/mysql_client_test
usr/bin/mysqldump
usr/bin/mysqldumpslow
usr/bin/mysql_find_rows
usr/bin/mysql_fix_extensions
usr/bin/mysqlimport
usr/bin/mysqlreport
usr/bin/mysqlshow
usr/bin/mysql_waitpid
usr/sbin/mysqlmanager
usr/share/lintian/overrides/percona-xtradb-client-5.1
usr/share/man/man1/innotop.1
usr/share/man/man1/myisam_ftdump.1
usr/share/man/man1/mysql.1
usr/share/man/man1/mysqlaccess.1
usr/share/man/man1/mysqladmin.1
usr/share/man/man1/mysqlbug.1
usr/share/man/man1/mysqlcheck.1
usr/share/man/man1/mysqldump.1
usr/share/man/man1/mysqldumpslow.1
usr/share/man/man1/mysql_find_rows.1
usr/share/man/man1/mysql_fix_extensions.1
usr/share/man/man1/mysqlimport.1
usr/share/man/man1/mysqlmanager.1
usr/share/man/man1/mysqlmanagerc.1
usr/share/man/man1/mysqlmanager-pwgen.1
usr/share/man/man1/mysqlreport.1
usr/share/man/man1/mysqlshow.1
usr/share/man/man1/mysql_tableinfo.1
usr/share/man/man1/mysql_waitpid.1
usr/share/man/man1/mysql_client_test.1
usr/share/perl5/InnoDBParser.pm

View file

@ -1,3 +0,0 @@
usr/bin/mysqlcheck usr/bin/mysqlrepair
usr/bin/mysqlcheck usr/bin/mysqlanalyze
usr/bin/mysqlcheck usr/bin/mysqloptimize

View file

@ -1,3 +0,0 @@
percona-xtradb-client-5.1: package-has-a-duplicate-relation
percona-xtradb-client-5.1: wrong-name-for-upstream-changelog usr/share/doc/percona-xtradb-client-5.1/changelog.innotop.gz
percona-xtradb-client-5.1: pkg-not-in-package-test innotop

View file

@ -1,3 +0,0 @@
# According to /usr/share/menu/ policy 1.4, not /usr/share/doc/debian-policy/
?package(innotop):needs="text" section="Applications/Data Management"\
title="innotop" command="/usr/bin/innotop"

View file

@ -1 +0,0 @@
etc/mysql/conf.d/

View file

@ -1,2 +0,0 @@
etc/mysql/my.cnf
usr/share/percona-xtradb-common/internal-use-only

View file

@ -1,2 +0,0 @@
script-not-executable ./usr/share/percona-xtradb-common/internal-use-only/_etc_init.d_mysql
script-not-executable ./usr/share/percona-xtradb-common/internal-use-only/_etc_mysql_debian-start

View file

@ -1,7 +0,0 @@
#!/bin/bash
if [ "$1" = "purge" ]; then
rmdir /etc/mysql 2>/dev/null || true
fi
#DEBHELPER#

View file

@ -1,34 +0,0 @@
mysql-dfsg-5.1 (5.1.38-1) unstable; urgency=low
* Please read http://dev.mysql.com/doc/refman/5.1/en/upgrading-from-5-0.html
* Make sure to do a REPAIR TABLE on all tables that use UTF-8 and have a
FULLTEXT index.
-- Christian Hammers <ch@debian.org> Sat, 4 Jul 2009 02:31:21 +0200
mysql-dfsg-5.0 (5.1.14beta-2) unstable; urgency=low
* The BerkeleyDB Storage Engine is no longer supported. If the options
have-bdb or skip-bdb are found, MySQL will not start. If you have BDB
tables, you should change them to use another storage engine before
upgrading to 5.1.
-- Monty Taylor <mordred@inaugust.com> Thu, 18 Jan 2007 12:28:21 -0800
mysql-dfsg-5.0 (5.0.45-2) unstable; urgency=low
* Binary logging is now disabled by default. If you really need it (e.g. on
a replication master), remove the comment from the log_bin line in my.cnf.
-- Norbert Tretkowski <nobse@debian.org> Sat, 10 Nov 2007 16:26:35 +0100
mysql-dfsg-5.0 (5.0.18-9) unstable; urgency=low
* Rotation of the binary logs is now configured in /etc/mysql/my.cnf with
"expire-logs-days" which defaults to 20 days. The old file
/etc/mysql/debian-log-rotate.conf should be removed together with
/etc/cron.daily/mysql-server after this value has been adjusted. Note that
the old variable defined the number of files whereas the new one defines
a time span in days.
-- Christian Hammers <ch@debian.org> Tue, 24 Jan 2006 22:18:21 +0100

View file

@ -1,109 +0,0 @@
* MYSQL WON'T START OR STOP?:
=============================
You may never ever delete the special mysql user "debian-sys-maint". This
user together with the credentials in /etc/mysql/debian.cnf are used by the
init scripts to stop the server as they would require knowledge of the mysql
root users password else.
So in most of the times you can fix the situation by making sure that the
debian.cnf file contains the right password, e.g. by setting a new one
(remember to do a "flush privileges" then).
* WHAT TO DO AFTER UPGRADES:
============================
The privilege tables are automatically updated so all there is left is read
the changelogs on dev.mysql.com to see if any changes affect custom apps.
* WHAT TO DO AFTER INSTALLATION:
================================
The MySQL manual describes certain steps to do at this stage in a separate
chapter. They are not necessary as the Debian packages does them
automatically.
The only thing that is left over for the admin is
- setting the passwords
- creating new users and databases
- read the rest of this text
* DOWNGRADING TO 4.0 or 4.1:
============================
Unsupported. Period.
But if you do and get problems or make interesting experiences, mail me, it
might help others.
Ok, if you really want, I would recommend to "mysqldump --opt" all tables,
then purge 4.1, delete /var/lib/mysql, install 4.0 and insert the dumps. Be
carefully, though, with the "mysql" table, you might not simply overwrite that
one as the password for the mysql "debian-sys-maint" user is stored in
/etc/mysql/debian.cnf and needed by /etc/init.d/ to start mysql and check if
it's alive.
* SOME APPLICATION CAN NO LONGER CONNECT:
=========================================
This application is probably linked against libmysqlclient12 or below and
somebody has created a mysql user with new-style passwords.
The old_passwords=1 option in /etc/mysql/my.cnf might help. If not the
application that inserted the user has to be changed or the application that
tries to connect updated to libmysqlclient14 or -15.
* NETWORKING:
=============
For security reasons, the Debian package has enabled networking only on the
loop-back device using "bind-address" in /etc/mysql/my.cnf. Check with
"netstat -tlnp" where it is listening. If your connection is aborted
immediately see if "mysqld: all" or similar is in /etc/hosts.allow and read
hosts_access(5).
* WHERE IS THE DOCUMENTATION?:
==============================
Unfortunately due to licensing restrictions, debian currently not able
to provide the mysql-doc package in any format. For the most up to date
documentation, please go to http://dev.mysql.com/doc.
* PASSWORDS:
============
It is strongly recommended to set a password for the mysql root user (which
/usr/bin/mysql -u root -D mysql -e "update user set password=password('new-password') where user='root'"
/usr/bin/mysql -u root -e "flush privileges"
If you already had a password set add "-p" before "-u" to the lines above.
If you are tired to type the password in every time or want to automate your
scripts you can store it in the file $HOME/.my.cnf. It should be chmod 0600
(-rw------- username username .my.cnf) to ensure that nobody else can read
it. Every other configuration parameter can be stored there, too. You will
find an example below and more information in the MySQL manual in
/usr/share/doc/mysql-doc or www.mysql.com.
ATTENTION: It is necessary, that a .my.cnf from root always contains a "user"
line wherever there is a "password" line, else, the Debian maintenance
scripts, that use /etc/mysql/debian.cnf, will use the username
"debian-sys-maint" but the password that is in root's .my.cnf. Also note,
that every change you make in the /root/.my.cnf will affect the mysql cron
script, too.
# an example of $HOME/.my.cnf
[client]
user = your-mysql-username
password = enter-your-good-new-password-here
* BIG_ROWS FOR EVEN MORE ROWS IN A TABLE:
=========================================
If you ever run out of rows in a table there is the possibility of building
the package with "-DBIG_ROWS" which, according to a MySQL employee on
packagers@lists.mysql.com should lead to a 64bit row index (I guess > 2^32
rows) but also to an approx. 5% performance loss.
* BerkeleyDB Storage Engine
===========================
Support for BerkeleyDB has been removed in 5.1, and consequently both the
have-bdb and skip-bdb configuration options will cause the server to fail.
Removing the options from /etc/mysql/my.cnf will fix this problem.
* FURTHER NOTES ON REPLICATION
===============================
If the MySQL server is acting as a replication slave, you should not
set --tmpdir to point to a directory on a memory-based filesystem or to
a directory that is cleared when the server host restarts. A replication
slave needs some of its temporary files to survive a machine restart so
that it can replicate temporary tables or LOAD DATA INFILE operations. If
files in the temporary file directory are lost when the server restarts,
replication fails.

View file

@ -1,46 +0,0 @@
#!/bin/bash -e
. /usr/share/debconf/confmodule
if [ -n "$DEBIAN_SCRIPT_DEBUG" ]; then set -v -x; DEBIAN_SCRIPT_TRACE=1; fi
${DEBIAN_SCRIPT_TRACE:+ echo "#42#DEBUG# RUNNING $0 $*" 1>&2 }
CNF=/etc/mysql/my.cnf
# Beware that there are two ypwhich one of them needs the 2>/dev/null!
if test -n "`which ypwhich 2>/dev/null`" && ypwhich >/dev/null 2>&1; then
db_input high percona-xtradb-server-5.1/nis_warning || true
db_go
fi
# only ask this question on fresh installs, during "reconfiguration" and when
# not upgrading from an existing 5.0 installation.
# there is also an additional check for empty root passwords in the
# postinst script when the tools are available for us to use.
if [ "$1" = "configure" ] && ([ -z "$2" ] && [ ! -e "/var/lib/mysql/debian-5.0.flag" ] ) || [ "$1" = "reconfigure" ]; then
while :; do
RET=""
db_input high percona-xtradb-server/root_password || true
db_go
db_get percona-xtradb-server/root_password
# if password isn't empty we ask for password verification
if [ -z "$RET" ]; then
db_fset percona-xtradb-server/root_password seen false
db_fset percona-xtradb-server/root_password_again seen false
break
fi
ROOT_PW="$RET"
db_input high percona-xtradb-server/root_password_again || true
db_go
db_get percona-xtradb-server/root_password_again
if [ "$RET" == "$ROOT_PW" ]; then
ROOT_PW=''
break
fi
db_fset percona-xtradb-server/password_mismatch seen false
db_input critical percona-xtradb-server/password_mismatch
db_set percona-xtradb-server/root_password ""
db_set percona-xtradb-server/root_password_again ""
db_go
done
fi

View file

@ -1,9 +0,0 @@
etc/init.d
etc/logrotate.d
etc/mysql/conf.d
usr/bin
usr/sbin
usr/share/man/man8
usr/share/mysql
var/run/mysqld
var/lib/mysql-upgrade

View file

@ -1 +0,0 @@
EXCEPTIONS-CLIENT

View file

@ -1,53 +0,0 @@
usr/lib/mysql/*so*
etc/mysql/debian-start
etc/mysql/conf.d/mysqld_safe_syslog.cnf
usr/bin/msql2mysql
usr/bin/my_print_defaults
usr/bin/myisamchk
usr/bin/myisamlog
usr/bin/myisampack
usr/bin/mysql_convert_table_format
usr/bin/mysql_fix_privilege_tables
usr/bin/mysql_install_db
usr/bin/mysql_secure_installation
usr/bin/mysql_setpermission
usr/bin/mysql_tzinfo_to_sql
usr/bin/mysql_upgrade
usr/bin/mysql_zap
usr/bin/mysqlbinlog
usr/bin/mysqld_multi
usr/bin/mysqld_safe
usr/bin/mysqlhotcopy
usr/bin/mysqltest
usr/bin/perror
usr/bin/replace
usr/bin/resolve_stack_dump
usr/bin/resolveip
usr/sbin/mysqld
usr/share/doc/percona-xtradb-server-5.1/
usr/share/lintian/overrides/percona-xtradb-server-5.1
usr/share/man/man1/msql2mysql.1
usr/share/man/man1/myisamchk.1
usr/share/man/man1/myisamlog.1
usr/share/man/man1/myisampack.1
usr/share/man/man1/my_print_defaults.1
usr/share/man/man1/mysqlbinlog.1
usr/share/man/man1/mysql_convert_table_format.1
usr/share/man/man1/mysqld_multi.1
usr/share/man/man1/mysqld_safe.1
usr/share/man/man1/mysql_fix_privilege_tables.1
usr/share/man/man1/mysqlhotcopy.1
usr/share/man/man1/mysql_install_db.1
usr/share/man/man1/mysql_secure_installation.1
usr/share/man/man1/mysql_setpermission.1
usr/share/man/man1/mysql_upgrade.1
usr/share/man/man1/mysqltest.1
usr/share/man/man1/mysql_zap.1
usr/share/man/man1/perror.1
usr/share/man/man1/replace.1
usr/share/man/man1/resolveip.1
usr/share/man/man1/resolve_stack_dump.1
usr/share/man/man1/innochecksum.1
usr/share/man/man1/mysql_tzinfo_to_sql.1
usr/share/man/man8/mysqld.8
usr/share/mysql/

View file

@ -1,2 +0,0 @@
usr/share/mysql/mysql-test/mysql-test-run.pl usr/share/mysql/mysql-test/mysql-test-run
usr/share/mysql/mysql-test/mysql-test-run.pl usr/share/mysql/mysql-test/mtr

View file

@ -1,4 +0,0 @@
percona-xtradb-server-5.1: possible-bashism-in-maintainer-script postinst:81 'p{("a".."z","A".."Z",0..9)[int(rand(62))]}'
percona-xtradb-server-5.1: possible-bashism-in-maintainer-script preinst:33 '${cmd/ */}'
percona-xtradb-server-5.1: statically-linked-binary ./usr/bin/mysql_tzinfo_to_sql
percona-xtradb-server-5.1: statically-linked-binary ./usr/sbin/mysqld

View file

@ -1,9 +0,0 @@
/etc/init.d/mysql\[[0-9]+\]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists\!$
/etc/init.d/mysql\[[0-9]+\]: '/usr/bin/mysqladmin --defaults-(extra-)?file=/etc/mysql/debian.cnf ping' resulted in$
/etc/mysql/debian-start\[[0-9]+\]: Checking for crashed MySQL tables\.$
mysqld\[[0-9]+\]: $
mysqld\[[0-9]+\]: Version: .* socket: '/var/run/mysqld/mysqld.sock' port: 3306$
mysqld\[[0-9]+\]: Warning: Ignoring user change to 'mysql' because the user was set to 'mysql' earlier on the command line$
mysqld_safe\[[0-9]+\]: started$
usermod\[[0-9]+\]: change user `mysql' GID from `([0-9]+)' to `\1'$
usermod\[[0-9]+\]: change user `mysql' shell from `/bin/false' to `/bin/false'$

View file

@ -1,32 +0,0 @@
/etc/init.d/mysql\[[0-9]+\]: [0-9]+ processes alive and '/usr/bin/mysqladmin --defaults-(extra-)?file=/etc/mysql/debian.cnf ping' resulted in$
/etc/init.d/mysql\[[0-9]+\]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists\!$
/etc/init.d/mysql\[[0-9]+\]: '/usr/bin/mysqladmin --defaults-(extra-)?file=/etc/mysql/debian.cnf ping' resulted in$
/etc/mysql/debian-start\[[0-9]+\]: Checking for crashed MySQL tables\.$
mysqld\[[0-9]+\]: ?$
mysqld\[[0-9]+\]: .*InnoDB: Shutdown completed
mysqld\[[0-9]+\]: .*InnoDB: Started;
mysqld\[[0-9]+\]: .*InnoDB: Starting shutdown\.\.\.$
mysqld\[[0-9]+\]: .*\[Note\] /usr/sbin/mysqld: Normal shutdown$
mysqld\[[0-9]+\]: .*\[Note\] /usr/sbin/mysqld: ready for connections\.$
mysqld\[[0-9]+\]: .*\[Note\] /usr/sbin/mysqld: Shutdown complete$
mysqld\[[0-9]+\]: /usr/sbin/mysqld: ready for connections\.$
mysqld\[[0-9]+\]: .*/usr/sbin/mysqld: Shutdown Complete$
mysqld\[[0-9]+\]: Version: .* socket
mysqld\[[0-9]+\]: Warning: Ignoring user change to 'mysql' because the user was set to 'mysql' earlier on the command line$
mysqld_safe\[[0-9]+\]: ?$
mysqld_safe\[[0-9]+\]: able to use the new GRANT command!$
mysqld_safe\[[0-9]+\]: ended$
mysqld_safe\[[0-9]+\]: http://www.mysql.com$
mysqld_safe\[[0-9]+\]: NOTE: If you are upgrading from a MySQL <= 3.22.10 you should run$
mysqld_safe\[[0-9]+\]: PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !$
mysqld_safe\[[0-9]+\]: Please report any problems with the /usr/bin/mysqlbug script!$
mysqld_safe\[[0-9]+\]: See the manual for more instructions.$
mysqld_safe\[[0-9]+\]: started$
mysqld_safe\[[0-9]+\]: Support MySQL by buying support/licenses at https://order.mysql.com$
mysqld_safe\[[0-9]+\]: The latest information about MySQL is available on the web at$
mysqld_safe\[[0-9]+\]: the /usr/bin/mysql_fix_privilege_tables. Otherwise you will not be$
mysqld_safe\[[0-9]+\]: To do so, start the server, then issue the following commands:$
mysqld_safe\[[0-9]+\]: /usr/bin/mysqladmin -u root -h app109 password 'new-password'$
mysqld_safe\[[0-9]+\]: /usr/bin/mysqladmin -u root password 'new-password'$
usermod\[[0-9]+\]: change user `mysql' GID from `([0-9]+)' to `\1'$
usermod\[[0-9]+\]: change user `mysql' shell from `/bin/false' to `/bin/false'$

Some files were not shown because too many files have changed in this diff Show more