mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 18:20:07 +01:00
Fixed indention, removed compiler varnings and fixed a bug
in FULLTEXT indexes. Docs/manual.texi: Removed some @ifset nushere tags which crashed the manual when using emacs client/mysql-test.c: ***MISSING WEAVE*** heap/hp_test2.c: Removed compiler warnings isam/pack_isam.c: Removed compiler warnings isam/update.c: Removed compiler warnings myisam/ft_parser.c: cleanup myisam/ft_update.c: Fixed crash when inserting a blob which was NULL myisam/mi_check.c: -e continues checking of other keys on error myisam/mi_rkey.c: cleanup myisam/myisamchk.c: cleanup myisam/myisamlog.c: Added use of rnd to make things more predictable myisammrg/myrg_rkey.c: Removed compiler warnings mysys/mf_pack.c: cleanup mysys/my_fstream.c: cleanup sql/ha_berkeley.cc: cleanup sql/handler.cc: cleanup sql/item_func.cc: cleanup sql/item_func.h: cleanup sql/net_serv.cc: cleanup sql/slave.cc: cleanup sql/sql_class.cc: cleanup sql/sql_show.cc: cleanup
This commit is contained in:
parent
3a5ab655f1
commit
c33289a3a1
21 changed files with 372 additions and 361 deletions
105
Docs/manual.texi
105
Docs/manual.texi
|
@ -163,18 +163,18 @@ General Information About MySQL
|
||||||
* General-SQL:: General SQL information and tutorials
|
* General-SQL:: General SQL information and tutorials
|
||||||
* Useful Links:: Useful @strong{MySQL}-related links
|
* Useful Links:: Useful @strong{MySQL}-related links
|
||||||
|
|
||||||
About this manual
|
About This Manual
|
||||||
|
|
||||||
* Manual conventions:: Conventions used in this manual
|
* Manual conventions:: Conventions used in this manual
|
||||||
|
|
||||||
MySQL mailing lists
|
MySQL Mailing Lists
|
||||||
|
|
||||||
* Mailing-list:: The @strong{MySQL} mailing lists
|
* Mailing-list:: The @strong{MySQL} mailing lists
|
||||||
* Asking questions:: Asking questions or reporting bugs
|
* Asking questions:: Asking questions or reporting bugs
|
||||||
* Bug reports:: How to report bugs or problems
|
* Bug reports:: How to report bugs or problems
|
||||||
* Answering questions:: Guidelines for answering questions on the mailing list
|
* Answering questions:: Guidelines for answering questions on the mailing list
|
||||||
|
|
||||||
MySQL licensing and support
|
MySQL Licensing and Support
|
||||||
|
|
||||||
* Licensing policy:: @strong{MySQL} licensing policy
|
* Licensing policy:: @strong{MySQL} licensing policy
|
||||||
* Copyright:: Copyrights used by @strong{MySQL}
|
* Copyright:: Copyrights used by @strong{MySQL}
|
||||||
|
@ -182,22 +182,22 @@ MySQL licensing and support
|
||||||
* Cost:: @strong{MySQL} licensing and support costs
|
* Cost:: @strong{MySQL} licensing and support costs
|
||||||
* Support:: Types of commercial support
|
* Support:: Types of commercial support
|
||||||
|
|
||||||
Copyrights used by MySQL
|
Copyrights Used by MySQL
|
||||||
|
|
||||||
* Copyright changes:: Possible future copyright changes
|
* Copyright changes:: Possible future copyright changes
|
||||||
|
|
||||||
Example licensing situations
|
Example Licensing Situations
|
||||||
|
|
||||||
* Products that use MySQL:: Selling products that use @strong{MySQL}
|
* Products that use MySQL:: Selling products that use @strong{MySQL}
|
||||||
* ISP:: ISP @strong{MySQL} services
|
* ISP:: ISP @strong{MySQL} services
|
||||||
* Web server:: Running a web server using @strong{MySQL}.
|
* Web server:: Running a web server using @strong{MySQL}.
|
||||||
|
|
||||||
@strong{MySQL} licensing and support costs
|
@strong{MySQL} Licensing and Support Costs
|
||||||
|
|
||||||
* Payment information:: Payment information
|
* Payment information:: Payment information
|
||||||
* Contact information:: Contact information
|
* Contact information:: Contact information
|
||||||
|
|
||||||
Types of commercial support
|
Types of Commercial Support
|
||||||
|
|
||||||
* Basic email support:: Basic email support
|
* Basic email support:: Basic email support
|
||||||
* Extended email support:: Extended email support
|
* Extended email support:: Extended email support
|
||||||
|
@ -223,31 +223,31 @@ Installing MySQL
|
||||||
* Post-installation:: Post-installation setup and testing
|
* Post-installation:: Post-installation setup and testing
|
||||||
* Upgrade:: Is there anything special to do when upgrading/downgrading @strong{MySQL}?
|
* Upgrade:: Is there anything special to do when upgrading/downgrading @strong{MySQL}?
|
||||||
|
|
||||||
Installing a MySQL binary distribution
|
Installing a MySQL Binary Distribution
|
||||||
|
|
||||||
* Linux-RPM:: Linux RPM files
|
* Linux-RPM:: Linux RPM files
|
||||||
* Building clients:: Building client programs
|
* Building clients:: Building client programs
|
||||||
* Binary install system issues:: System-specific issues
|
* Binary install system issues:: System-specific issues
|
||||||
|
|
||||||
System-specific issues
|
System-specific Issues
|
||||||
|
|
||||||
* Binary notes-Linux:: Linux notes for binary distribution
|
* Binary notes-Linux:: Linux notes for binary distribution
|
||||||
* Binary notes-HP-UX:: HP-UX notes for binary distribution
|
* Binary notes-HP-UX:: HP-UX notes for binary distribution
|
||||||
|
|
||||||
Installing a MySQL source distribution
|
Installing a MySQL Source Distribution
|
||||||
|
|
||||||
* Quick install:: Quick installation overview
|
* Quick install:: Quick installation overview
|
||||||
* Applying patches:: Applying patches
|
* Applying patches:: Applying patches
|
||||||
* configure options:: Typical @code{configure} options
|
* configure options:: Typical @code{configure} options
|
||||||
|
|
||||||
Perl installation comments
|
Perl Installation Comments
|
||||||
|
|
||||||
* Perl installation:: Installing Perl on Unix
|
* Perl installation:: Installing Perl on Unix
|
||||||
* ActiveState Perl:: Installing ActiveState Perl on Windows
|
* ActiveState Perl:: Installing ActiveState Perl on Windows
|
||||||
* Windows Perl:: Installing the @strong{MySQL} Perl distribution on Windows
|
* Windows Perl:: Installing the @strong{MySQL} Perl distribution on Windows
|
||||||
* Perl support problems:: Problems using the Perl @code{DBI}/@code{DBD} interface
|
* Perl support problems:: Problems using the Perl @code{DBI}/@code{DBD} interface
|
||||||
|
|
||||||
System-specific issues
|
System-specific Issues
|
||||||
|
|
||||||
* Solaris:: Solaris notes
|
* Solaris:: Solaris notes
|
||||||
* Solaris 2.7:: Solaris 2.7 / 2.8 notes
|
* Solaris 2.7:: Solaris 2.7 / 2.8 notes
|
||||||
|
@ -269,7 +269,7 @@ System-specific issues
|
||||||
* Mac OS X:: Mac OS X notes
|
* Mac OS X:: Mac OS X notes
|
||||||
* BEOS::
|
* BEOS::
|
||||||
|
|
||||||
Linux notes (all Linux versions)
|
Linux Notes (All Linux Versions)
|
||||||
|
|
||||||
* Linux-x86:: Linux-x86 notes
|
* Linux-x86:: Linux-x86 notes
|
||||||
* Linux-RedHat50:: RedHat 5.0 notes
|
* Linux-RedHat50:: RedHat 5.0 notes
|
||||||
|
@ -280,13 +280,13 @@ Linux notes (all Linux versions)
|
||||||
* Qube2:: Qube2 Linux notes
|
* Qube2:: Qube2 Linux notes
|
||||||
* Linux-Ia64::
|
* Linux-Ia64::
|
||||||
|
|
||||||
BSD/OS notes
|
BSD/OS Notes
|
||||||
|
|
||||||
* BSDI2:: BSD/OS 2.x notes
|
* BSDI2:: BSD/OS 2.x notes
|
||||||
* BSDI3:: BSD/OS 3.x notes
|
* BSDI3:: BSD/OS 3.x notes
|
||||||
* BSDI4:: BSD/OS 4.x notes
|
* BSDI4:: BSD/OS 4.x notes
|
||||||
|
|
||||||
Windows notes
|
Windows Notes
|
||||||
|
|
||||||
* Windows installation:: Installing @strong{MySQL} on Windows
|
* Windows installation:: Installing @strong{MySQL} on Windows
|
||||||
* Win95 start:: Starting @strong{MySQL} on Win95 / Win98
|
* Win95 start:: Starting @strong{MySQL} on Win95 / Win98
|
||||||
|
@ -298,7 +298,7 @@ Windows notes
|
||||||
* Windows and BDB tables.::
|
* Windows and BDB tables.::
|
||||||
* Windows vs Unix:: @strong{MySQL}-Windows compared to Unix @strong{MySQL}
|
* Windows vs Unix:: @strong{MySQL}-Windows compared to Unix @strong{MySQL}
|
||||||
|
|
||||||
Post-installation setup and testing
|
Post-installation Setup and Testing
|
||||||
|
|
||||||
* mysql_install_db:: Problems running @code{mysql_install_db}
|
* mysql_install_db:: Problems running @code{mysql_install_db}
|
||||||
* Starting server:: Problems starting the @strong{MySQL} server
|
* Starting server:: Problems starting the @strong{MySQL} server
|
||||||
|
@ -368,10 +368,10 @@ MySQL language reference
|
||||||
* DROP TABLE:: @code{DROP TABLE} syntax
|
* DROP TABLE:: @code{DROP TABLE} syntax
|
||||||
* OPTIMIZE TABLE:: @code{OPTIMIZE TABLE} syntax
|
* OPTIMIZE TABLE:: @code{OPTIMIZE TABLE} syntax
|
||||||
* CHECK TABLE:: @code{CHECK TABLE} syntax
|
* CHECK TABLE:: @code{CHECK TABLE} syntax
|
||||||
* ANALYZE TABLE:: @code{ANALYZE TABLE} syntax
|
|
||||||
* REPAIR TABLE:: @code{REPAIR TABLE} syntax
|
|
||||||
* BACKUP TABLE:: @code{BACKUP TABLE} syntax
|
* BACKUP TABLE:: @code{BACKUP TABLE} syntax
|
||||||
* RESTORE TABLE:: @code{RESTORE TABLE} syntax
|
* RESTORE TABLE:: @code{RESTORE TABLE} syntax
|
||||||
|
* ANALYZE TABLE:: @code{ANALYZE TABLE} syntax
|
||||||
|
* REPAIR TABLE:: @code{REPAIR TABLE} syntax
|
||||||
* DELETE:: @code{DELETE} syntax
|
* DELETE:: @code{DELETE} syntax
|
||||||
* SELECT:: @code{SELECT} syntax
|
* SELECT:: @code{SELECT} syntax
|
||||||
* JOIN:: @code{JOIN} syntax
|
* JOIN:: @code{JOIN} syntax
|
||||||
|
@ -465,7 +465,7 @@ Functions for use in @code{SELECT} and @code{WHERE} clauses
|
||||||
MySQL table types
|
MySQL table types
|
||||||
|
|
||||||
* MyISAM:: MyISAM tables
|
* MyISAM:: MyISAM tables
|
||||||
* MERGE:: MERGE tables
|
* MERGE::
|
||||||
* ISAM:: ISAM tables
|
* ISAM:: ISAM tables
|
||||||
* HEAP:: HEAP tables
|
* HEAP:: HEAP tables
|
||||||
* BDB:: BDB or Berkeley_db tables
|
* BDB:: BDB or Berkeley_db tables
|
||||||
|
@ -544,7 +544,7 @@ Replication in MySQL
|
||||||
* Replication Features:: Replication Features
|
* Replication Features:: Replication Features
|
||||||
* Replication Options:: Replication Options in my.cnf
|
* Replication Options:: Replication Options in my.cnf
|
||||||
* Replication SQL:: SQL Commands related to replication
|
* Replication SQL:: SQL Commands related to replication
|
||||||
* Replication FAQ:: Frequently asked questions about replication
|
* Replication FAQ:: Frequently Asked Questions about replication
|
||||||
|
|
||||||
Getting maximum performance from MySQL
|
Getting maximum performance from MySQL
|
||||||
|
|
||||||
|
@ -581,7 +581,7 @@ Speed of queries that access or update data
|
||||||
* Estimating performance:: Estimating query performance
|
* Estimating performance:: Estimating query performance
|
||||||
* SELECT speed:: Speed of @code{SELECT} queries
|
* SELECT speed:: Speed of @code{SELECT} queries
|
||||||
* Where optimizations:: How MySQL optimizes @code{WHERE} clauses
|
* Where optimizations:: How MySQL optimizes @code{WHERE} clauses
|
||||||
* LEFT JOIN optimization:: How MySQL optimizes @code{LEFT JOIN} and @code{RIGHT JOIN}
|
* LEFT JOIN optimization:: How MySQL optimizes @code{LEFT JOIN}
|
||||||
* LIMIT optimization:: How MySQL optimizes @code{LIMIT}
|
* LIMIT optimization:: How MySQL optimizes @code{LIMIT}
|
||||||
* Insert speed:: Speed of @code{INSERT} queries
|
* Insert speed:: Speed of @code{INSERT} queries
|
||||||
* Update speed:: Speed of @code{UPDATE} queries
|
* Update speed:: Speed of @code{UPDATE} queries
|
||||||
|
@ -812,6 +812,7 @@ MySQL change history
|
||||||
|
|
||||||
Changes in release 3.23.x (Recommended; beta)
|
Changes in release 3.23.x (Recommended; beta)
|
||||||
|
|
||||||
|
* News-3.23.26:: Changes in release 3.23.26
|
||||||
* News-3.23.25:: Changes in release 3.23.25
|
* News-3.23.25:: Changes in release 3.23.25
|
||||||
* News-3.23.24:: Changes in release 3.23.24
|
* News-3.23.24:: Changes in release 3.23.24
|
||||||
* News-3.23.23:: Changes in release 3.23.23
|
* News-3.23.23:: Changes in release 3.23.23
|
||||||
|
@ -939,7 +940,7 @@ Changes in release 3.19.x
|
||||||
* News-3.19.4:: Changes in release 3.19.4
|
* News-3.19.4:: Changes in release 3.19.4
|
||||||
* News-3.19.3:: Changes in release 3.19.3
|
* News-3.19.3:: Changes in release 3.19.3
|
||||||
|
|
||||||
List of things we want to add to MySQL in the future (The TODO)
|
MySQL and the future (The TODO)
|
||||||
|
|
||||||
* TODO future:: Things that must done in the very near future
|
* TODO future:: Things that must done in the very near future
|
||||||
* TODO sometime:: Things that have to be done sometime
|
* TODO sometime:: Things that have to be done sometime
|
||||||
|
@ -6401,8 +6402,8 @@ table. @xref{Crashing}.
|
||||||
|
|
||||||
To get a core dump on Linux if mysqld dies with a SIGSEGV
|
To get a core dump on Linux if mysqld dies with a SIGSEGV
|
||||||
signal, you can start mysqld with the @code{--core-file} option. Note
|
signal, you can start mysqld with the @code{--core-file} option. Note
|
||||||
that you also probably need to raise the @code{core file size} with
|
that you also probably need to raise the @code{core file size} by adding
|
||||||
@code{ulimit}!
|
@code{ulimit -c 1000000} to @code{safe_mysqld}.
|
||||||
|
|
||||||
If you are using LinuxThreads and @code{mysqladmin shutdown} doesn't work,
|
If you are using LinuxThreads and @code{mysqladmin shutdown} doesn't work,
|
||||||
you must upgrade to LinuxThreads Version 0.7.1 or newer.
|
you must upgrade to LinuxThreads Version 0.7.1 or newer.
|
||||||
|
@ -12270,10 +12271,10 @@ to restart @code{mysqld} with @code{--skip-grant-tables} to be able to run
|
||||||
* DROP TABLE:: @code{DROP TABLE} syntax
|
* DROP TABLE:: @code{DROP TABLE} syntax
|
||||||
* OPTIMIZE TABLE:: @code{OPTIMIZE TABLE} syntax
|
* OPTIMIZE TABLE:: @code{OPTIMIZE TABLE} syntax
|
||||||
* CHECK TABLE:: @code{CHECK TABLE} syntax
|
* CHECK TABLE:: @code{CHECK TABLE} syntax
|
||||||
* ANALYZE TABLE:: @code{ANALYZE TABLE} syntax
|
|
||||||
* REPAIR TABLE:: @code{REPAIR TABLE} syntax
|
|
||||||
* BACKUP TABLE:: @code{BACKUP TABLE} syntax
|
* BACKUP TABLE:: @code{BACKUP TABLE} syntax
|
||||||
* RESTORE TABLE:: @code{RESTORE TABLE} syntax
|
* RESTORE TABLE:: @code{RESTORE TABLE} syntax
|
||||||
|
* ANALYZE TABLE:: @code{ANALYZE TABLE} syntax
|
||||||
|
* REPAIR TABLE:: @code{REPAIR TABLE} syntax
|
||||||
* DELETE:: @code{DELETE} syntax
|
* DELETE:: @code{DELETE} syntax
|
||||||
* SELECT:: @code{SELECT} syntax
|
* SELECT:: @code{SELECT} syntax
|
||||||
* JOIN:: @code{JOIN} syntax
|
* JOIN:: @code{JOIN} syntax
|
||||||
|
@ -17774,6 +17775,7 @@ the @code{LIMIT} value.
|
||||||
@node SELECT, JOIN, DELETE, Reference
|
@node SELECT, JOIN, DELETE, Reference
|
||||||
@section @code{SELECT} syntax
|
@section @code{SELECT} syntax
|
||||||
|
|
||||||
|
@c help SELECT
|
||||||
@example
|
@example
|
||||||
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
|
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
|
||||||
[HIGH_PRIORITY]
|
[HIGH_PRIORITY]
|
||||||
|
@ -17788,6 +17790,7 @@ SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
|
||||||
[LIMIT [offset,] rows]
|
[LIMIT [offset,] rows]
|
||||||
[PROCEDURE procedure_name] ]
|
[PROCEDURE procedure_name] ]
|
||||||
@end example
|
@end example
|
||||||
|
@c help end
|
||||||
|
|
||||||
@code{SELECT} is used to retrieve rows selected from one or more tables.
|
@code{SELECT} is used to retrieve rows selected from one or more tables.
|
||||||
@code{select_expression} indicates the columns you want to retrieve.
|
@code{select_expression} indicates the columns you want to retrieve.
|
||||||
|
@ -36153,7 +36156,6 @@ The twz driver: A type 4 JDBC driver by Terrence W. Zellers
|
||||||
private and educational use. (not supported anymore)
|
private and educational use. (not supported anymore)
|
||||||
@c no answer from server 990830
|
@c no answer from server 990830
|
||||||
@c You can always find the latest driver at @uref{http://www.voicenet.com/~zellert/tjFM/}.
|
@c You can always find the latest driver at @uref{http://www.voicenet.com/~zellert/tjFM/}.
|
||||||
@item
|
|
||||||
@item @uref{http://www.mysql.com/Downloads/Contrib/pmdamysql.tgz,pmdamysql.tgz}
|
@item @uref{http://www.mysql.com/Downloads/Contrib/pmdamysql.tgz,pmdamysql.tgz}
|
||||||
A @strong{MySQL} PMDA. Provides @strong{MySQL} server status and configuration
|
A @strong{MySQL} PMDA. Provides @strong{MySQL} server status and configuration
|
||||||
variables.
|
variables.
|
||||||
|
@ -36255,6 +36257,11 @@ By Terry Jones
|
||||||
|
|
||||||
@item @uref{http://www.mysql.com/Downloads/Contrib/eiffel-wrapper-1.0.tar.gz,eiffel-wrapper-1.0.tar.gz}.
|
@item @uref{http://www.mysql.com/Downloads/Contrib/eiffel-wrapper-1.0.tar.gz,eiffel-wrapper-1.0.tar.gz}.
|
||||||
Eiffel wrapper by Michael Ravits.
|
Eiffel wrapper by Michael Ravits.
|
||||||
|
|
||||||
|
@item @uref{http://www.mysql.com/Downloads/Contrib/SQLmy0.06.tgz,SQLmy0.06.tgz}.
|
||||||
|
FlagShip Replaceable Database Driver (RDD) for MySQL. By Alejandro
|
||||||
|
Fernandez Herrero.
|
||||||
|
@uref{http://www.fship.com/rdds.html, Flagship RDD home page}
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@appendixsec Clients
|
@appendixsec Clients
|
||||||
|
@ -36698,7 +36705,6 @@ Previous versions of things found here that you probably won't be
|
||||||
interested in.
|
interested in.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
|
||||||
@page
|
@page
|
||||||
@node Credits, News, Contrib, Top
|
@node Credits, News, Contrib, Top
|
||||||
@appendix Contributors to MySQL
|
@appendix Contributors to MySQL
|
||||||
|
@ -36987,16 +36993,6 @@ ODBC and VisualC++ interface questions.
|
||||||
@strong{MySQL} server.
|
@strong{MySQL} server.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@c we don't want the entire change history in the nusphere manual
|
|
||||||
@ifset nusphere
|
|
||||||
@node News, Bugs, Credits, Top
|
|
||||||
@appendix MySQL change history
|
|
||||||
|
|
||||||
The MySQL change history can be found in the latest version of the mysql
|
|
||||||
manual at @url{http://www.mysql.com/documentation/manual/}
|
|
||||||
@end ifset
|
|
||||||
|
|
||||||
@ifclear nusphere
|
|
||||||
@node News, Bugs, Credits, Top
|
@node News, Bugs, Credits, Top
|
||||||
@appendix MySQL change history
|
@appendix MySQL change history
|
||||||
|
|
||||||
|
@ -37031,6 +37027,7 @@ version. The replication and BerkeleyDB code is still under development,
|
||||||
though, so 3.23 is not released as a stable version yet.
|
though, so 3.23 is not released as a stable version yet.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
|
* News-3.23.26:: Changes in release 3.23.26
|
||||||
* News-3.23.25:: Changes in release 3.23.25
|
* News-3.23.25:: Changes in release 3.23.25
|
||||||
* News-3.23.24:: Changes in release 3.23.24
|
* News-3.23.24:: Changes in release 3.23.24
|
||||||
* News-3.23.23:: Changes in release 3.23.23
|
* News-3.23.23:: Changes in release 3.23.23
|
||||||
|
@ -37059,7 +37056,16 @@ though, so 3.23 is not released as a stable version yet.
|
||||||
* News-3.23.0:: Changes in release 3.23.0
|
* News-3.23.0:: Changes in release 3.23.0
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node News-3.23.25, News-3.23.24, News-3.23.x, News-3.23.x
|
@node News-3.23.26, News-3.23.25, News-3.23.x, News-3.23.x
|
||||||
|
@appendixsubsec Changes in release 3.23.26
|
||||||
|
@itemize @bullet
|
||||||
|
@item
|
||||||
|
Fixed bug in @code{FULLTEXT} index when inserting a NULL column.
|
||||||
|
@item
|
||||||
|
Changed to use @code{mkstemp()} instead of @code{tempnam()}.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
@node News-3.23.25, News-3.23.24, News-3.23.26, News-3.23.x
|
||||||
@appendixsubsec Changes in release 3.23.25
|
@appendixsubsec Changes in release 3.23.25
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
|
@ -41195,7 +41201,6 @@ fields, the @code{BLOB} was garbage on output.
|
||||||
@item
|
@item
|
||||||
Fixed @code{DISTINCT} with calculated columns.
|
Fixed @code{DISTINCT} with calculated columns.
|
||||||
@end itemize
|
@end itemize
|
||||||
@end ifclear
|
|
||||||
|
|
||||||
@node Bugs, TODO, News, Top
|
@node Bugs, TODO, News, Top
|
||||||
@appendix Known errors and design deficiencies in MySQL
|
@appendix Known errors and design deficiencies in MySQL
|
||||||
|
@ -42555,15 +42560,6 @@ All new development is concentrated to @strong{MySQL}.
|
||||||
@page
|
@page
|
||||||
@c This node name is special
|
@c This node name is special
|
||||||
|
|
||||||
@ifset nusphere
|
|
||||||
@node GPL license, LGPL license, Unireg, Top
|
|
||||||
@appendix GNU General Public License
|
|
||||||
|
|
||||||
The GPL License can be found at ...
|
|
||||||
|
|
||||||
@end ifset
|
|
||||||
|
|
||||||
@ifclear nusphere
|
|
||||||
@node GPL license, LGPL license, Unireg, Top
|
@node GPL license, LGPL license, Unireg, Top
|
||||||
@appendix GNU General Public License
|
@appendix GNU General Public License
|
||||||
|
|
||||||
|
@ -42909,19 +42905,9 @@ library. If this is what you want to do, use the GNU Library General
|
||||||
Public License instead of this License.
|
Public License instead of this License.
|
||||||
|
|
||||||
@end example
|
@end example
|
||||||
@end ifclear
|
|
||||||
|
|
||||||
@page
|
@page
|
||||||
|
|
||||||
@ifset nusphere
|
|
||||||
@node LGPL license, Function Index, GPL license, Top
|
|
||||||
@appendix GNU Library General Public License
|
|
||||||
|
|
||||||
The LGPL License can be found at ...
|
|
||||||
|
|
||||||
@end ifset
|
|
||||||
|
|
||||||
@ifclear nusphere
|
|
||||||
@node LGPL license, Function Index, GPL license, Top
|
@node LGPL license, Function Index, GPL license, Top
|
||||||
@appendix GNU Library General Public License
|
@appendix GNU Library General Public License
|
||||||
|
|
||||||
|
@ -43408,7 +43394,6 @@ necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
That's all there is to it!
|
That's all there is to it!
|
||||||
@end example
|
@end example
|
||||||
@end ifclear
|
|
||||||
|
|
||||||
@node Function Index, Concept Index, LGPL license, Top
|
@node Function Index, Concept Index, LGPL license, Top
|
||||||
@unnumbered SQL command, type and function index
|
@unnumbered SQL command, type and function index
|
||||||
|
|
|
@ -62,6 +62,7 @@ char *argv[];
|
||||||
HP_KEYSEG keyseg[MAX_KEYS*5];
|
HP_KEYSEG keyseg[MAX_KEYS*5];
|
||||||
HEAP_PTR position;
|
HEAP_PTR position;
|
||||||
MY_INIT(argv[0]); /* init my_sys library & pthreads */
|
MY_INIT(argv[0]); /* init my_sys library & pthreads */
|
||||||
|
LINT_INIT(position);
|
||||||
|
|
||||||
filename= "test2";
|
filename= "test2";
|
||||||
filename2= "test2_2";
|
filename2= "test2_2";
|
||||||
|
|
|
@ -574,9 +574,9 @@ static int compress(MRG_INFO *mrg,char *result_table)
|
||||||
end_file_buffer();
|
end_file_buffer();
|
||||||
|
|
||||||
if (verbose && mrg->records)
|
if (verbose && mrg->records)
|
||||||
printf("Min record length: %6d Max length: %6d Mean total length: %6d\n",
|
printf("Min record length: %6d Max length: %6d Mean total length: %6lu\n",
|
||||||
mrg->min_pack_length,mrg->max_pack_length,
|
mrg->min_pack_length,mrg->max_pack_length,
|
||||||
(long) new_length/mrg->records);
|
(ulong) new_length/mrg->records);
|
||||||
|
|
||||||
if (!test_only)
|
if (!test_only)
|
||||||
{
|
{
|
||||||
|
@ -763,11 +763,11 @@ static int get_statistic(MRG_INFO *mrg,HUFF_COUNTS *huff_counts)
|
||||||
{
|
{
|
||||||
global_count=count;
|
global_count=count;
|
||||||
if (!(element=tree_insert(&count->int_tree,pos,0)) ||
|
if (!(element=tree_insert(&count->int_tree,pos,0)) ||
|
||||||
element->count == 1 &&
|
(element->count == 1 &&
|
||||||
count->tree_buff + tree_buff_length <
|
count->tree_buff + tree_buff_length <
|
||||||
count->tree_pos + count->field_length ||
|
count->tree_pos + count->field_length ||
|
||||||
count->field_length == 1 &&
|
count->field_length == 1 &&
|
||||||
count->int_tree.elements_in_tree > 1)
|
count->int_tree.elements_in_tree > 1))
|
||||||
{
|
{
|
||||||
delete_tree(&count->int_tree);
|
delete_tree(&count->int_tree);
|
||||||
my_free(count->tree_buff,MYF(0));
|
my_free(count->tree_buff,MYF(0));
|
||||||
|
@ -1760,8 +1760,8 @@ static int compress_isam_file(MRG_INFO *mrg, HUFF_COUNTS *huff_counts)
|
||||||
if (max_record_length >= max_allowed_length)
|
if (max_record_length >= max_allowed_length)
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Error: Found record with packed-length: %d, max is: %d\n",
|
"Error: Found record with packed-length: %d, max is: %lu\n",
|
||||||
max_record_length,max_allowed_length);
|
max_record_length, (ulong) max_allowed_length);
|
||||||
error=1;
|
error=1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ int nisam_update(register N_INFO *info, const byte *oldrec, const byte *newrec)
|
||||||
uchar old_key[N_MAX_KEY_BUFF],*new_key;
|
uchar old_key[N_MAX_KEY_BUFF],*new_key;
|
||||||
DBUG_ENTER("nisam_update");
|
DBUG_ENTER("nisam_update");
|
||||||
|
|
||||||
|
LINT_INIT(save_errno);
|
||||||
if (!(info->update & HA_STATE_AKTIV))
|
if (!(info->update & HA_STATE_AKTIV))
|
||||||
{
|
{
|
||||||
my_errno=HA_ERR_KEY_NOT_FOUND;
|
my_errno=HA_ERR_KEY_NOT_FOUND;
|
||||||
|
@ -54,7 +55,7 @@ int nisam_update(register N_INFO *info, const byte *oldrec, const byte *newrec)
|
||||||
info->s->base.max_key_file_length -
|
info->s->base.max_key_file_length -
|
||||||
info->s->blocksize* INDEX_BLOCK_MARGIN *info->s->state.keys)
|
info->s->blocksize* INDEX_BLOCK_MARGIN *info->s->state.keys)
|
||||||
{
|
{
|
||||||
my_errno=HA_ERR_INDEX_FILE_FULL;
|
save_errno=HA_ERR_INDEX_FILE_FULL;
|
||||||
goto err_end;
|
goto err_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,12 +109,9 @@ err:
|
||||||
info->update= (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED | HA_STATE_AKTIV |
|
info->update= (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED | HA_STATE_AKTIV |
|
||||||
key_changed);
|
key_changed);
|
||||||
err_end:
|
err_end:
|
||||||
nisam_log_record(LOG_UPDATE,info,newrec,info->lastpos,my_errno);
|
nisam_log_record(LOG_UPDATE,info,newrec,info->lastpos,save_errno);
|
||||||
VOID(_nisam_writeinfo(info,1));
|
VOID(_nisam_writeinfo(info,1));
|
||||||
allow_break(); /* Allow SIGHUP & SIGINT */
|
allow_break(); /* Allow SIGHUP & SIGINT */
|
||||||
if (save_errno == HA_ERR_KEY_NOT_FOUND)
|
my_errno=(save_errno == HA_ERR_KEY_NOT_FOUND) ? HA_ERR_CRASHED : save_errno;
|
||||||
my_errno=HA_ERR_CRASHED;
|
|
||||||
else
|
|
||||||
my_errno=save_errno;
|
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
} /* nisam_update */
|
} /* nisam_update */
|
||||||
|
|
|
@ -87,7 +87,7 @@ FT_WORD * ft_linearize(MI_INFO *info, uint keynr, byte *keybuf, TREE *wtree)
|
||||||
}
|
}
|
||||||
delete_tree(wtree);
|
delete_tree(wtree);
|
||||||
my_free((char*) wtree,MYF(0));
|
my_free((char*) wtree,MYF(0));
|
||||||
if (wlist==NULL)
|
if (!wlist)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
docstat.list->pos=NULL;
|
docstat.list->pos=NULL;
|
||||||
|
|
|
@ -37,9 +37,8 @@ static FT_WORD * _mi_ft_parserecord(MI_INFO *info, uint keynr, byte *keybuf,
|
||||||
byte *pos;
|
byte *pos;
|
||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
i=info->s->keyinfo[keynr].keysegs-FT_SEGS;
|
|
||||||
keyseg=info->s->keyinfo[keynr].seg;
|
keyseg=info->s->keyinfo[keynr].seg;
|
||||||
while(i--)
|
for (i=info->s->keyinfo[keynr].keysegs-FT_SEGS ; i-- ; )
|
||||||
{
|
{
|
||||||
uint len;
|
uint len;
|
||||||
|
|
||||||
|
@ -61,10 +60,12 @@ static FT_WORD * _mi_ft_parserecord(MI_INFO *info, uint keynr, byte *keybuf,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
len=keyseg->length;
|
len=keyseg->length;
|
||||||
|
if (!(parsed=ft_parse(parsed, pos, len)))
|
||||||
parsed=ft_parse(parsed, pos, len);
|
return NULL;
|
||||||
if (parsed==NULL) return NULL;
|
|
||||||
}
|
}
|
||||||
|
/* Handle the case where all columns are NULL */
|
||||||
|
if (!parsed && !(parsed=ft_parse(0, "", 0)))
|
||||||
|
return NULL;
|
||||||
return ft_linearize(info, keynr, keybuf, parsed);
|
return ft_linearize(info, keynr, keybuf, parsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -314,7 +314,7 @@ int chk_size(MI_CHECK *param, register MI_INFO *info)
|
||||||
|
|
||||||
int chk_key(MI_CHECK *param, register MI_INFO *info)
|
int chk_key(MI_CHECK *param, register MI_INFO *info)
|
||||||
{
|
{
|
||||||
uint key,found_keys=0,full_text_keys=0;
|
uint key,found_keys=0,full_text_keys=0,result=0;
|
||||||
ha_rows keys;
|
ha_rows keys;
|
||||||
ha_checksum old_record_checksum,init_checksum;
|
ha_checksum old_record_checksum,init_checksum;
|
||||||
my_off_t all_keydata,all_totaldata,key_totlength,length;
|
my_off_t all_keydata,all_totaldata,key_totlength,length;
|
||||||
|
@ -361,7 +361,10 @@ int chk_key(MI_CHECK *param, register MI_INFO *info)
|
||||||
{
|
{
|
||||||
mi_check_print_error(param,"Can't read indexpage from filepos: %s",
|
mi_check_print_error(param,"Can't read indexpage from filepos: %s",
|
||||||
llstr(share->state.key_root[key],buff));
|
llstr(share->state.key_root[key],buff));
|
||||||
|
if (!(param->testflag & T_INFO))
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
|
result= -1;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
param->key_file_blocks+=keyinfo->block_length;
|
param->key_file_blocks+=keyinfo->block_length;
|
||||||
keys=0;
|
keys=0;
|
||||||
|
@ -377,7 +380,10 @@ int chk_key(MI_CHECK *param, register MI_INFO *info)
|
||||||
{
|
{
|
||||||
mi_check_print_error(param,"Found %s keys of %s",llstr(keys,buff),
|
mi_check_print_error(param,"Found %s keys of %s",llstr(keys,buff),
|
||||||
llstr(info->state->records,buff2));
|
llstr(info->state->records,buff2));
|
||||||
|
if (!(param->testflag & T_INFO))
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
|
result= -1;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
if (found_keys - full_text_keys == 1 &&
|
if (found_keys - full_text_keys == 1 &&
|
||||||
((share->options &
|
((share->options &
|
||||||
|
@ -391,7 +397,10 @@ int chk_key(MI_CHECK *param, register MI_INFO *info)
|
||||||
key+1);
|
key+1);
|
||||||
else
|
else
|
||||||
mi_check_print_error(param,"Key 1 doesn't point at all records");
|
mi_check_print_error(param,"Key 1 doesn't point at all records");
|
||||||
|
if (!(param->testflag & T_INFO))
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
|
result= -1;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -193,7 +193,7 @@ static struct option long_options[] =
|
||||||
|
|
||||||
static void print_version(void)
|
static void print_version(void)
|
||||||
{
|
{
|
||||||
printf("%s Ver 1.31 for %s at %s\n",my_progname,SYSTEM_TYPE,
|
printf("%s Ver 1.32 for %s at %s\n",my_progname,SYSTEM_TYPE,
|
||||||
MACHINE_TYPE);
|
MACHINE_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
struct file_info {
|
struct file_info {
|
||||||
long process;
|
long process;
|
||||||
int filenr,id;
|
int filenr,id;
|
||||||
|
uint rnd;
|
||||||
my_string name,show_name,record;
|
my_string name,show_name,record;
|
||||||
MI_INFO *isam;
|
MI_INFO *isam;
|
||||||
bool closed,used;
|
bool closed,used;
|
||||||
|
@ -70,13 +71,14 @@ static void printf_log(const char *str,...);
|
||||||
static bool cmp_filename(struct file_info *file_info,my_string name);
|
static bool cmp_filename(struct file_info *file_info,my_string name);
|
||||||
|
|
||||||
static uint verbose=0,update=0,test_info=0,max_files=0,re_open_count=0,
|
static uint verbose=0,update=0,test_info=0,max_files=0,re_open_count=0,
|
||||||
recover=0,prefix_remove=0,opt_processes=0;
|
recover=0,prefix_remove=0,opt_processes=0,opt_myisam_with_debug=0;
|
||||||
static my_string log_filename=0,filepath=0,write_filename=0,record_pos_file=0;
|
static my_string log_filename=0,filepath=0,write_filename=0,record_pos_file=0;
|
||||||
static ulong com_count[10][3],number_of_commands=(ulong) ~0L,
|
static ulong com_count[10][3],number_of_commands=(ulong) ~0L,
|
||||||
isamlog_process;
|
isamlog_process;
|
||||||
static my_off_t isamlog_filepos,start_offset=0,record_pos= HA_OFFSET_ERROR;
|
static my_off_t isamlog_filepos,start_offset=0,record_pos= HA_OFFSET_ERROR;
|
||||||
static const char *command_name[]=
|
static const char *command_name[]=
|
||||||
{"open","write","update","delete","close","extra","lock","re-open","delete-all", NullS};
|
{"open","write","update","delete","close","extra","lock","re-open",
|
||||||
|
"delete-all", NullS};
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
|
@ -91,11 +93,11 @@ int main(int argc, char **argv)
|
||||||
max_files=(set_maximum_open_files(min(max_files,8))-6)/2;
|
max_files=(set_maximum_open_files(min(max_files,8))-6)/2;
|
||||||
|
|
||||||
if (update)
|
if (update)
|
||||||
printf("Trying to %s isamfiles according to log '%s'\n",
|
printf("Trying to %s MyISAM files according to log '%s'\n",
|
||||||
(recover ? "recover" : "update"),log_filename);
|
(recover ? "recover" : "update"),log_filename);
|
||||||
error= examine_log(log_filename,argv);
|
error= examine_log(log_filename,argv);
|
||||||
if (update && ! error)
|
if (update && ! error)
|
||||||
puts("isamfile:s updated successfully");
|
puts("Tables updated successfully");
|
||||||
total_count=total_error=total_recover=0;
|
total_count=total_error=total_recover=0;
|
||||||
for (i=first=0 ; command_name[i] ; i++)
|
for (i=first=0 ; command_name[i] ; i++)
|
||||||
{
|
{
|
||||||
|
@ -134,7 +136,7 @@ static void get_options(register int *argc, register char ***argv)
|
||||||
char option;
|
char option;
|
||||||
|
|
||||||
help=0;
|
help=0;
|
||||||
usage="Usage: %s [-?iruvIV] [-c #] [-f #] [-F filepath/] [-o #] [-R file recordpos] [-w write_file] [log-filename [table ...]] \n";
|
usage="Usage: %s [-?iruvDIV] [-c #] [-f #] [-F filepath/] [-o #] [-R file recordpos] [-w write_file] [log-filename [table ...]] \n";
|
||||||
pos="";
|
pos="";
|
||||||
|
|
||||||
while (--*argc > 0 && *(pos = *(++*argv)) == '-' ) {
|
while (--*argc > 0 && *(pos = *(++*argv)) == '-' ) {
|
||||||
|
@ -199,6 +201,9 @@ static void get_options(register int *argc, register char ***argv)
|
||||||
update=1;
|
update=1;
|
||||||
recover++;
|
recover++;
|
||||||
break;
|
break;
|
||||||
|
case 'D':
|
||||||
|
opt_myisam_with_debug=1;
|
||||||
|
break;
|
||||||
case 'P':
|
case 'P':
|
||||||
opt_processes=1;
|
opt_processes=1;
|
||||||
break;
|
break;
|
||||||
|
@ -246,7 +251,7 @@ static void get_options(register int *argc, register char ***argv)
|
||||||
/* Fall through */
|
/* Fall through */
|
||||||
case 'I':
|
case 'I':
|
||||||
case '?':
|
case '?':
|
||||||
printf("%s Ver 1.2 for %s at %s\n",my_progname,SYSTEM_TYPE,
|
printf("%s Ver 1.3 for %s at %s\n",my_progname,SYSTEM_TYPE,
|
||||||
MACHINE_TYPE);
|
MACHINE_TYPE);
|
||||||
puts("By Monty, for your professional use\n");
|
puts("By Monty, for your professional use\n");
|
||||||
if (version)
|
if (version)
|
||||||
|
@ -261,7 +266,7 @@ static void get_options(register int *argc, register char ***argv)
|
||||||
puts(" -o \"offset\" -p # \"remove # components from path\"");
|
puts(" -o \"offset\" -p # \"remove # components from path\"");
|
||||||
puts(" -r \"recover\" -R \"file recordposition\"");
|
puts(" -r \"recover\" -R \"file recordposition\"");
|
||||||
puts(" -u \"update\" -v \"verbose\" -w \"write file\"");
|
puts(" -u \"update\" -v \"verbose\" -w \"write file\"");
|
||||||
puts(" -P \"processes\"");
|
puts(" -D \"myisam compileled with DBUG\" -P \"processes\"");
|
||||||
puts("\nOne can give a second and a third '-v' for more verbose.");
|
puts("\nOne can give a second and a third '-v' for more verbose.");
|
||||||
puts("Normaly one does a update (-u).");
|
puts("Normaly one does a update (-u).");
|
||||||
puts("If a recover is done all writes and all possibly updates and deletes is done\nand errors are only counted.");
|
puts("If a recover is done all writes and all possibly updates and deletes is done\nand errors are only counted.");
|
||||||
|
@ -371,8 +376,10 @@ static int examine_log(my_string file_name, char **table_names)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (curr_file_info)
|
if (curr_file_info)
|
||||||
printf("\nWarning: %s is opened twice with same process and filenumber\n",
|
{
|
||||||
|
printf("\nWarning: %s is opened with same process and filenumber\nMaybe you should use the -P option ?\n",
|
||||||
curr_file_info->show_name);
|
curr_file_info->show_name);
|
||||||
|
}
|
||||||
if (my_b_read(&cache,(byte*) head,2))
|
if (my_b_read(&cache,(byte*) head,2))
|
||||||
goto err;
|
goto err;
|
||||||
file_info.name=0;
|
file_info.name=0;
|
||||||
|
@ -446,6 +453,10 @@ static int examine_log(my_string file_name, char **table_names)
|
||||||
goto end;
|
goto end;
|
||||||
files_open++;
|
files_open++;
|
||||||
file_info.closed=0;
|
file_info.closed=0;
|
||||||
|
if (opt_myisam_with_debug)
|
||||||
|
file_info.isam->s->rnd= 0;
|
||||||
|
else
|
||||||
|
file_info.isam->s->rnd= isamlog_process;
|
||||||
}
|
}
|
||||||
VOID(tree_insert(&tree,(gptr) &file_info,0));
|
VOID(tree_insert(&tree,(gptr) &file_info,0));
|
||||||
if (file_info.used)
|
if (file_info.used)
|
||||||
|
@ -482,10 +493,12 @@ static int examine_log(my_string file_name, char **table_names)
|
||||||
if (mi_extra(curr_file_info->isam,
|
if (mi_extra(curr_file_info->isam,
|
||||||
(int) extra_command) != (int) result)
|
(int) extra_command) != (int) result)
|
||||||
{
|
{
|
||||||
|
fflush(stdout);
|
||||||
VOID(fprintf(stderr,
|
VOID(fprintf(stderr,
|
||||||
"Warning: error %d, expected %d on command %s at %s\n",
|
"Warning: error %d, expected %d on command %s at %s\n",
|
||||||
my_errno,result,command_name[command],
|
my_errno,result,command_name[command],
|
||||||
llstr(isamlog_filepos,llbuff)));
|
llstr(isamlog_filepos,llbuff)));
|
||||||
|
fflush(stderr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -628,9 +641,11 @@ static int examine_log(my_string file_name, char **table_names)
|
||||||
command_name[command],result);
|
command_name[command],result);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
fflush(stdout);
|
||||||
VOID(fprintf(stderr,
|
VOID(fprintf(stderr,
|
||||||
"Error: found unknown command %d in logfile, aborted\n",
|
"Error: found unknown command %d in logfile, aborted\n",
|
||||||
command));
|
command));
|
||||||
|
fflush(stderr);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -643,12 +658,16 @@ static int examine_log(my_string file_name, char **table_names)
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
|
||||||
err:
|
err:
|
||||||
|
fflush(stdout);
|
||||||
VOID(fprintf(stderr,"Got error %d when reading from logfile\n",my_errno));
|
VOID(fprintf(stderr,"Got error %d when reading from logfile\n",my_errno));
|
||||||
|
fflush(stderr);
|
||||||
goto end;
|
goto end;
|
||||||
com_err:
|
com_err:
|
||||||
|
fflush(stdout);
|
||||||
VOID(fprintf(stderr,"Got error %d, expected %d on command %s at %s\n",
|
VOID(fprintf(stderr,"Got error %d, expected %d on command %s at %s\n",
|
||||||
my_errno,result,command_name[command],
|
my_errno,result,command_name[command],
|
||||||
llstr(isamlog_filepos,llbuff)));
|
llstr(isamlog_filepos,llbuff)));
|
||||||
|
fflush(stderr);
|
||||||
end:
|
end:
|
||||||
end_key_cache();
|
end_key_cache();
|
||||||
delete_tree(&tree);
|
delete_tree(&tree);
|
||||||
|
@ -792,6 +811,7 @@ static int close_some_file(TREE *tree)
|
||||||
(void*) &access_param,left_root_right));
|
(void*) &access_param,left_root_right));
|
||||||
if (!access_param.found)
|
if (!access_param.found)
|
||||||
return 1; /* No open file that is possibly to close */
|
return 1; /* No open file that is possibly to close */
|
||||||
|
access_param.found->rnd=access_param.found->isam->s->rnd;
|
||||||
if (mi_close(access_param.found->isam))
|
if (mi_close(access_param.found->isam))
|
||||||
return 1;
|
return 1;
|
||||||
access_param.found->closed=1;
|
access_param.found->closed=1;
|
||||||
|
@ -811,6 +831,7 @@ static int reopen_closed_file(TREE *tree, struct file_info *fileinfo)
|
||||||
if (!(fileinfo->isam= mi_open(name,O_RDWR,HA_OPEN_WAIT_IF_LOCKED)))
|
if (!(fileinfo->isam= mi_open(name,O_RDWR,HA_OPEN_WAIT_IF_LOCKED)))
|
||||||
return 1;
|
return 1;
|
||||||
fileinfo->closed=0;
|
fileinfo->closed=0;
|
||||||
|
fileinfo->isam->s->rnd=fileinfo->rnd;
|
||||||
re_open_count++;
|
re_open_count++;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,7 @@ int myrg_rkey(MYRG_INFO *info,byte *record,int inx, const byte *key,
|
||||||
MI_INFO *mi;
|
MI_INFO *mi;
|
||||||
int err;
|
int err;
|
||||||
byte *buf=((search_flag == HA_READ_KEY_EXACT) ? record: 0);
|
byte *buf=((search_flag == HA_READ_KEY_EXACT) ? record: 0);
|
||||||
|
LINT_INIT(key_buff);
|
||||||
|
|
||||||
if (_myrg_init_queue(info,inx,search_flag))
|
if (_myrg_init_queue(info,inx,search_flag))
|
||||||
return my_errno;
|
return my_errno;
|
||||||
|
|
|
@ -30,10 +30,9 @@ static my_string NEAR_F expand_tilde(my_string *path);
|
||||||
|
|
||||||
/* Pack a dirname ; Changes HOME to ~/ and current dev to ./ */
|
/* Pack a dirname ; Changes HOME to ~/ and current dev to ./ */
|
||||||
/* from is a dirname (from dirname() ?) ending with FN_LIBCHAR */
|
/* from is a dirname (from dirname() ?) ending with FN_LIBCHAR */
|
||||||
|
/* to may be == from */
|
||||||
|
|
||||||
void pack_dirname(my_string to, const char *from)
|
void pack_dirname(my_string to, const char *from)
|
||||||
|
|
||||||
/* to may be == from */
|
|
||||||
{
|
{
|
||||||
int cwd_err;
|
int cwd_err;
|
||||||
uint d_length,length,buff_length;
|
uint d_length,length,buff_length;
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "mysys_priv.h"
|
#include "mysys_priv.h"
|
||||||
#include "mysys_err.h"
|
#include "mysys_err.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#ifdef HAVE_FSEEKO
|
#ifdef HAVE_FSEEKO
|
||||||
#undef ftell
|
#undef ftell
|
||||||
|
|
|
@ -388,7 +388,6 @@ int ha_berkeley::close(void)
|
||||||
|
|
||||||
bool ha_berkeley::fix_rec_buff_for_blob(ulong length)
|
bool ha_berkeley::fix_rec_buff_for_blob(ulong length)
|
||||||
{
|
{
|
||||||
uint extra;
|
|
||||||
if (! rec_buff || length > alloced_rec_buff_length)
|
if (! rec_buff || length > alloced_rec_buff_length)
|
||||||
{
|
{
|
||||||
byte *newptr;
|
byte *newptr;
|
||||||
|
@ -663,7 +662,7 @@ int ha_berkeley::update_primary_key(DB_TXN *trans, bool primary_key_changed,
|
||||||
const byte * new_row, DBT *prim_key)
|
const byte * new_row, DBT *prim_key)
|
||||||
{
|
{
|
||||||
DBT row, old_key;
|
DBT row, old_key;
|
||||||
int error,new_error;
|
int error;
|
||||||
DBUG_ENTER("update_primary_key");
|
DBUG_ENTER("update_primary_key");
|
||||||
|
|
||||||
if (primary_key_changed)
|
if (primary_key_changed)
|
||||||
|
@ -705,9 +704,8 @@ int ha_berkeley::update_primary_key(DB_TXN *trans, bool primary_key_changed,
|
||||||
|
|
||||||
int ha_berkeley::update_row(const byte * old_row, byte * new_row)
|
int ha_berkeley::update_row(const byte * old_row, byte * new_row)
|
||||||
{
|
{
|
||||||
DBT row, prim_key, key, old_prim_key;
|
DBT prim_key, key, old_prim_key;
|
||||||
int error;
|
int error;
|
||||||
uint keynr;
|
|
||||||
DB_TXN *sub_trans;
|
DB_TXN *sub_trans;
|
||||||
bool primary_key_changed;
|
bool primary_key_changed;
|
||||||
DBUG_ENTER("update_row");
|
DBUG_ENTER("update_row");
|
||||||
|
@ -1242,7 +1240,7 @@ THR_LOCK_DATA **ha_berkeley::store_lock(THD *thd, THR_LOCK_DATA **to,
|
||||||
static int create_sub_table(const char *table_name, const char *sub_name,
|
static int create_sub_table(const char *table_name, const char *sub_name,
|
||||||
DBTYPE type, int flags)
|
DBTYPE type, int flags)
|
||||||
{
|
{
|
||||||
int error,error2;
|
int error;
|
||||||
DB *file;
|
DB *file;
|
||||||
DBUG_ENTER("create_sub_table");
|
DBUG_ENTER("create_sub_table");
|
||||||
DBUG_PRINT("enter",("sub_name: %s",sub_name));
|
DBUG_PRINT("enter",("sub_name: %s",sub_name));
|
||||||
|
|
|
@ -37,7 +37,6 @@
|
||||||
|
|
||||||
/* static functions defined in this file */
|
/* static functions defined in this file */
|
||||||
|
|
||||||
static void NEAR_F set_form_timestamp(TABLE *table, byte *record);
|
|
||||||
static int NEAR_F delete_file(const char *name,const char *ext,int extflag);
|
static int NEAR_F delete_file(const char *name,const char *ext,int extflag);
|
||||||
|
|
||||||
ulong ha_read_count, ha_write_count, ha_delete_count, ha_update_count,
|
ulong ha_read_count, ha_write_count, ha_delete_count, ha_update_count,
|
||||||
|
|
|
@ -775,7 +775,10 @@ longlong Item_func_locate::val_int()
|
||||||
return 0; /* purecov: inspected */
|
return 0; /* purecov: inspected */
|
||||||
}
|
}
|
||||||
null_value=0;
|
null_value=0;
|
||||||
uint start=0,start0=0;
|
uint start=0;
|
||||||
|
#ifdef USE_MB
|
||||||
|
uint start0=0;
|
||||||
|
#endif
|
||||||
if (arg_count == 3)
|
if (arg_count == 3)
|
||||||
{
|
{
|
||||||
start=(uint) args[2]->val_int()-1;
|
start=(uint) args[2]->val_int()-1;
|
||||||
|
|
|
@ -843,7 +843,7 @@ public:
|
||||||
FT_DOCLIST *ft_handler;
|
FT_DOCLIST *ft_handler;
|
||||||
|
|
||||||
Item_func_match(List<Item> &a, Item *b): Item_real_func(b),
|
Item_func_match(List<Item> &a, Item *b): Item_real_func(b),
|
||||||
fields(a), table(0), ft_handler(0), master(0) {}
|
fields(a), table(0), master(0), ft_handler(0) {}
|
||||||
~Item_func_match()
|
~Item_func_match()
|
||||||
{
|
{
|
||||||
if (!master)
|
if (!master)
|
||||||
|
|
|
@ -412,7 +412,6 @@ net_real_write(NET *net,const char *packet,ulong len)
|
||||||
|
|
||||||
static void my_net_skip_rest(NET *net, ulong remain, thr_alarm_t *alarmed)
|
static void my_net_skip_rest(NET *net, ulong remain, thr_alarm_t *alarmed)
|
||||||
{
|
{
|
||||||
char buff[1024];
|
|
||||||
ALARM alarm_buff;
|
ALARM alarm_buff;
|
||||||
uint retry_count=0;
|
uint retry_count=0;
|
||||||
if (!thr_alarm_in_use(alarmed))
|
if (!thr_alarm_in_use(alarmed))
|
||||||
|
|
12
sql/slave.cc
12
sql/slave.cc
|
@ -516,7 +516,6 @@ command");
|
||||||
static uint read_event(MYSQL* mysql, MASTER_INFO *mi)
|
static uint read_event(MYSQL* mysql, MASTER_INFO *mi)
|
||||||
{
|
{
|
||||||
uint len = packet_error;
|
uint len = packet_error;
|
||||||
NET* net = &mysql->net;
|
|
||||||
int read_errno = EINTR; // for convinience lets think we start by
|
int read_errno = EINTR; // for convinience lets think we start by
|
||||||
// being in the interrupted state :-)
|
// being in the interrupted state :-)
|
||||||
// my_real_read() will time us out
|
// my_real_read() will time us out
|
||||||
|
@ -543,14 +542,16 @@ static uint read_event(MYSQL* mysql, MASTER_INFO *mi)
|
||||||
}
|
}
|
||||||
|
|
||||||
DBUG_PRINT("info",( "len=%u, net->read_pos[4] = %d\n",
|
DBUG_PRINT("info",( "len=%u, net->read_pos[4] = %d\n",
|
||||||
len, net->read_pos[4]));
|
len, mysql->net.read_pos[4]));
|
||||||
|
|
||||||
return len - 1;
|
return len - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int exec_event(THD* thd, NET* net, MASTER_INFO* mi, int event_len)
|
static int exec_event(THD* thd, NET* net, MASTER_INFO* mi, int event_len)
|
||||||
{
|
{
|
||||||
Log_event * ev = Log_event::read_log_event((const char*)net->read_pos + 1 , event_len);
|
Log_event * ev = Log_event::read_log_event((const char*)net->read_pos + 1,
|
||||||
|
event_len);
|
||||||
if (ev)
|
if (ev)
|
||||||
{
|
{
|
||||||
switch(ev->get_type_code())
|
switch(ev->get_type_code())
|
||||||
|
@ -780,13 +781,10 @@ static int exec_event(THD* thd, NET* net, MASTER_INFO* mi, int event_len)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sql_print_error("Could not parse log event entry, check the master for binlog corruption\
|
sql_print_error("Could not parse log event entry, check the master for binlog corruption\n\
|
||||||
This may also be a network problem, or just a bug in the master or slave code");
|
This may also be a network problem, or just a bug in the master or slave code");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -553,11 +553,11 @@ bool select_dump::send_data(List<Item> &items)
|
||||||
}
|
}
|
||||||
while ((item=li++))
|
while ((item=li++))
|
||||||
{
|
{
|
||||||
Item_result result_type=item->result_type();
|
|
||||||
res=item->str_result(&tmp);
|
res=item->str_result(&tmp);
|
||||||
if (!res)
|
if (!res) // If NULL
|
||||||
{
|
{
|
||||||
if (my_b_write(&cache,(byte*) "",1)) goto err; // NULL
|
if (my_b_write(&cache,(byte*) "",1))
|
||||||
|
goto err;
|
||||||
}
|
}
|
||||||
else if (my_b_write(&cache,(byte*) res->ptr(),res->length()))
|
else if (my_b_write(&cache,(byte*) res->ptr(),res->length()))
|
||||||
{
|
{
|
||||||
|
|
|
@ -758,8 +758,6 @@ store_create_info(THD *thd, TABLE *table, String* packet)
|
||||||
|
|
||||||
if (key_part->field)
|
if (key_part->field)
|
||||||
packet->append(key_part->field->field_name);
|
packet->append(key_part->field->field_name);
|
||||||
KEY *key=table->key_info+i;
|
|
||||||
|
|
||||||
if (!key_part->field ||
|
if (!key_part->field ||
|
||||||
(key_part->length !=
|
(key_part->length !=
|
||||||
table->field[key_part->fieldnr-1]->key_length() &&
|
table->field[key_part->fieldnr-1]->key_length() &&
|
||||||
|
|
Loading…
Add table
Reference in a new issue