1
0
mirror of https://github.com/MariaDB/server.git synced 2025-10-31 15:50:51 +03:00

Patches for NetBSD/macppc

Fixed bug in LEFT JOIN
Added bdb_log_buffer_size


Docs/manual.texi:
  Added documentation for mysqlhotcopy
client/mysql.cc:
  Fixed core dump when column names couldn't be read
configure.in:
  Fixed possible error
mit-pthreads/Changes-mysql:
  Patches for NetBSD/macppc
mit-pthreads/config/config.guess:
  Patches for NetBSD/macppc
mit-pthreads/config/configure.in:
  Patches for NetBSD/macppc
mit-pthreads/config/configure:
  Patches for NetBSD/macppc
mysql-test/r/join_outer.result:
  New join test
mysql-test/t/join_outer.test:
  New join test
scripts/mysqlhotcopy.sh:
  Patches from ASK
sql/ha_berkeley.cc:
  Adeed log buffer cache
sql/ha_berkeley.h:
  Adeed log buffer cache
sql/log.cc:
  Fixed possible overrun bug
sql/mysqld.cc:
  Fix for Mac OS X public beta
  Added bdb_log_buffer_size
sql/sql_select.cc:
  Fixed bug in LEFT JOIN
tests/mail_to_db.pl:
  Removed unsubscribe tails
tests/pmail.pl:
  Sort mails according to date
This commit is contained in:
unknown
2001-01-12 13:52:32 +02:00
parent 5060e7f3fe
commit 1a10224cac
21 changed files with 944 additions and 87 deletions

View File

@@ -288,6 +288,11 @@ BSD/OS Notes
* BSDI3:: BSD/OS 3.x notes
* BSDI4:: BSD/OS 4.x notes
Mac OS X Notes
* Mac OS X Public Data::
* Mac OS X Server::
Windows Notes
* Windows installation:: Installing @strong{MySQL} on Windows
@@ -610,6 +615,7 @@ MySQL Utilites
* mysql:: The command line tool
* mysqladmin:: Administering a @strong{MySQL} server
* mysqldump:: Dumping the structure and data from @strong{MySQL} databases and tables
* mysqlhotcopy:: Copying @code{MySQL} Databases and Tables
* mysqlimport:: Importing data from text files
* perror:: Displaying error messages
* mysqlshow:: Showing databases, tables and columns
@@ -846,7 +852,7 @@ Changes in release 4.0.x (Development; Alpha)
Changes in release 3.23.x (Recommended; Gamma)
* News-3.23.31::
* News-3.23.31:: Changes in release 3.23.31
* News-3.23.30:: Changes in release 3.23.30
* News-3.23.29:: Changes in release 3.23.29
* News-3.23.28:: Changes in release 3.23.28
@@ -2260,6 +2266,11 @@ FutureForum Web Discussion Software.
SupportWizard; Interactive helpdesk on the Web (This product includes a
licensed copy of @strong{MySQL}.)
@item @uref{http://www.sonork.com/}@*
Sonork, Instant Messenger that is not only Internet oriented. It's
focused on private networks and on small to medium companies. Client
is free, server is free for up to 5 seats.
@item @uref{http://www.stweb.org/}@*
StWeb - Stratos Web and Application server - An easy-to-use, cross
platform, Internet/Intranet development and deployment system for
@@ -7968,12 +7979,30 @@ by HP's compilers. I did not change the flags.
@node Mac OS X, BEOS, HP-UX 11.x, Source install system issues
@subsection Mac OS X Notes
You can get @strong{MySQL} to work on Mac OS X by following the links to
the Mac OS X ports. @xref{Useful Links}.
@menu
* Mac OS X Public Data::
* Mac OS X Server::
@end menu
@strong{MySQL} Version 3.23.7 should include all patches necessary to configure
it on Mac OS X. You must, however, first install the pthread package from
@uref{http://www.prnet.de/RegEx/mysql.html} before configuring @strong{MySQL}.
@node Mac OS X Public Data, Mac OS X Server, Mac OS X, Mac OS X
@subsubsection Mac OS X Public beta
@strong{MySQL} should work without any probelms on Mac OS X public beta.
(Darwin); You don't need the pthread patches for this os!
@node Mac OS X Server, , Mac OS X Public Data, Mac OS X
@subsubsection Mac OS X Server
Before trying to configure @strong{MySQL} on Mac OS X server you must
first first install the pthread package from
@uref{http://www.prnet.de/RegEx/mysql.html}. Note that this is not neeaded
Our binary for Mac OS X is compiled on Rhapsody 5.5 with the following
configure line:
@example
CC=gcc CFLAGS="-O2 -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O2 -fomit-frame-pointer" ./configure --prefix=/usr/local/mysql "--with-comment=Official MySQL binary" --with-extra-charsets=complex --disable-shared
@end example
You might want to also add aliases to your shell's resource file to
access @code{mysql} and @code{mysqladmin} from the command line:
@@ -8199,8 +8228,8 @@ which protocol is used:
@end multitable
You can force a @strong{MySQL} client to use named pipes by specifying the
@code{--pipe} option. Use the @code{--socket} option to specify the name of
the pipe.
@code{--pipe} option or by specifying @code{.} as the host name.
Use the @code{--socket} option to specify the name of the pipe.
You can test whether or not @strong{MySQL} is working by executing the
following commands:
@@ -9347,7 +9376,9 @@ Don't flush key buffers between writes for any @code{MyISAM} table.
Enable system locking.
@item -T, --exit-info
Print some debug info at exit.
This is a bit mask of different flags one can use for debugging the
mysqld server; One should not use this option if one doesn't know
exactly what it does!
@item --flush
Flush all changes to disk after each SQL command. Normally @strong{MySQL}
@@ -18443,7 +18474,7 @@ BACKUP TABLE tbl_name[,tbl_name...] TO '/path/to/backup/directory'
Make a copy of all the table files to the backup directory that are the
minimum needed to restore it. Currenlty only works for @code{MyISAM}
tables. For @code{MyISAM} table, copies @code{.frm} (definition) and
@code{.MYD} (data) files. The index file can be rebuilt from those two.
@code{.MYD} (data) files. The index file can be rebuilt from those two.
During the backup, read lock will be held for each table, one at time,
as they are being backed up. If you want to backup several tables as
@@ -20167,8 +20198,8 @@ The status variables listed above have the following meaning:
@multitable @columnfractions .35 .65
@item @strong{Variable} @tab @strong{Meaning}
@item @code{Aborted_clients} @tab Number of connections aborted because the client died without closing the connection properly.
@item @code{Aborted_connects} @tab Number of tries to connect to the @strong{MySQL} server that failed.
@item @code{Aborted_clients} @tab Number of connections aborted because the client died without closing the connection properly. @xref{Communication errors}.
@item @code{Aborted_connects} @tab Number of tries to connect to the @strong{MySQL} server that failed. @xref{Communication errors}.
@item @code{Bytes_received} @tab Number of bytes received from all clients.
@item @code{Bytes_sent} @tab Number of bytes sent to all clients.
@item @code{Connections} @tab Number of connection attempts to the @strong{MySQL} server.
@@ -20244,12 +20275,6 @@ If @code{Handler_read_rnd} is big, then you probably have a lot of
queries that require @strong{MySQL} to scan whole tables or you have
joins that don't use keys properly.
@item
If @code{Created_tmp_tables} or @code{Sort_merge_passes} are high then
your @code{mysqld} @code{sort_buffer} variables is probably too small.
@item
@code{Created_tmp_files} doesn't count the files needed to handle temporary
tables.
@item
If @code{Threads_created} is big, you may want to increase the
@code{thread_cache_size} variable.
@end itemize
@@ -20274,6 +20299,7 @@ differ somewhat:
| back_log | 50 |
| basedir | /my/monty/ |
| bdb_cache_size | 16777216 |
| bdb_log_buffer_size | 32768 |
| bdb_home | /my/monty/data/ |
| bdb_max_lock | 10000 |
| bdb_logdir | |
@@ -20381,6 +20407,12 @@ The value of the @code{--basedir} option.
@item @code{bdb_cache_size}
The buffer that is allocated to cache index and rows for @code{BDB}
tables. If you don't use @code{BDB} tables, you should start
@code{mysqld} with @code{--skip-bdb} to not waste memory for this
cache.
@item @code{bdb_log_buffer_size}
The buffer that is allocated to cache index and rows for @code{BDB}
tables. If you don't use @code{BDB} tables, you should set this to 0 or
start @code{mysqld} with @code{--skip-bdb} to not waste memory for this
cache.
@@ -20552,7 +20584,13 @@ will be incremented. If you are using @code{--log-slow-queries}, the query
will be logged to the slow query logfile. @xref{Slow query log}.
@item @code{lower_case_table_names}
Table names are stored in lowercase on disk.
Is 1 if table names are stored in lowercase on disk. On @strong{MySQL} on Unix
tables are always case-sensitive; Is this a big problem for you can
start @code{mysqld} with @code{-O lower_case_table_names=1}
In this case @strong{MySQL} will convert all table names to lower case on
storage and lookup. Not that you need to first convert your old table
names to lower case before starting @code{mysqld} with this option.
@item @code{max_allowed_packet}
The maximum size of one packet. The message buffer is initialized to
@@ -21289,7 +21327,7 @@ When you use @code{LOCK TABLES}, you must lock all tables that you are
going to use and you must use the same alias that you are going to use
in your queries! If you are using a table multiple times in a query
(with aliases), you must get a lock for each alias! This policy ensures
that table locking is deadlock free andh makes the locking code smaller,
that table locking is deadlock free and makes the locking code smaller,
simpler and much faster.
Note that you should @strong{NOT} lock any tables that you are using with
@@ -22678,10 +22716,10 @@ Berkeley DB (@uref{http://www.sleepycat.com}) has provided
crashes and also provides @code{COMMIT} and @code{ROLLBACK} on
transactions. In order to build MySQL Version 3.23.x (BDB support first
appeared in Version 3.23.15) with support for @code{BDB} tables, you
will need Berkeley DB Version 3.2.3d or newer which can be downloaded from
will need Berkeley DB Version 3.2.3g or newer which can be downloaded from
@uref{http://www.mysql.com/downloads/mysql-3.23.html}. This is a patched
version of Berkeley DB that is only available from @strong{MySQL}; the
standard Berkeley DB @strong{will not work with MySQL}.
standard Berkeley DB @strong{will not yet work with MySQL}.
@node BDB install, BDB start, BDB overview, BDB
@subsection Installing BDB
@@ -22851,6 +22889,11 @@ TABLE}.
@itemize @bullet
@item
It's very slow to open many BDB tables at the same time. If you are
going to use BDB tables, you should not have a very big table cache (>
256 ?) and you should use @code{--no-auto-rehash} with the @code{mysql}
client. We plan to partly fix this in 4.0.
@item
@code{SHOW TABLE STATUS} doesn't yet provide that much information for BDB
tables.
@item
@@ -28310,6 +28353,7 @@ How big a @code{VARCHAR} column can be
* mysql:: The command line tool
* mysqladmin:: Administering a @strong{MySQL} server
* mysqldump:: Dumping the structure and data from @strong{MySQL} databases and tables
* mysqlhotcopy:: Copying @strong{MySQL} Databases and Tables
* mysqlimport:: Importing data from text files
* perror:: Displaying error messages
* mysqlshow:: Showing databases, tables and columns
@@ -29167,17 +29211,22 @@ If you do @code{myslqadmin shutdown} on a socket (in other words, on a
the computer where @code{mysqld} is running), @code{mysqladmin} will
wait until the @strong{MySQL} @code{pid-file} is removed to ensure that
the @code{mysqld} server has stopped properly.
@cindex dumping, databases
@cindex databases, dumping
@cindex tables, dumping
@cindex backing up, databases
@node mysqldump, mysqlimport, mysqladmin, Tools
@node mysqldump, mysqlhotcopy, mysqladmin, Tools
@section Dumping the Structure and Data from MySQL Databases and Tables
@cindex @code{mysqldump}
Utility to dump a database or a collection of database for backup or
for transferring the data to another SQL server. The dump will contain SQL
statements to create the table and/or populate the table:
Utility to dump a database or a collection of database for backup or for
transferring the data to another SQL server (not necessarily a MySQL
server). The dump will contain SQL statements to create the table
and/or populate the table.
If you are doing a backup on the server, you should consider using
the @code{mysqlhotcopy} instead. @xref{mysqlhotcopy}.
@example
shell> mysqldump [OPTIONS] database [tables]
@@ -29350,12 +29399,79 @@ If all the databases are wanted, one can use:
mysqldump --all-databases > all_databases.sql
@end example
@cindex dumping, databases
@cindex databases, dumping
@cindex tables, dumping
@cindex backing up, databases
@node mysqlhotcopy, mysqlimport, mysqldump, Tools
@section Copying MySQL Databases and Tables
@code{mysqlhotcopy} is a perl script that uses @code{LOCK TABLES},
@code{FLUSH TABLES} and @code{cp} or @code{scp} to quickly make a backup
of a database. It's the fastest way to make a backup of the database,
but it can only be run on the same machine where the database directories
are.
@example
mysqlhotcopy db_name [/path/to/new_directory]
mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory
mysqlhotcopy db_name./regex/
@end example
@code{mysqlhotcopy} supports the following options:
@table @code
@item -?, --help
Display a helpscreen and exit
@item -u, --user=#
User for database login
@item -p, --password=#
Password to use when connecting to server
@item -P, --port=#
Port to use when connecting to local server
@item -S, --socket=#
Socket to use when connecting to local server
@item --allowold
Don't abort if target already exists (rename it _old)
@item --keepold
Don't delete previous (now renamed) target when done
@item --noindices
Don't include full index files in copy to make the backup smaller and faster
The indexes can later be reconstructed with @code{myisamchk -rq.}.
@item --method=#
Method for copy (@code{cp} or @code{scp}).
@item -q, --quiet
Be silent except for errors
@item --debug
Enable debug
@item -n, --dryrun
Report actions without doing them
@item --regexp=#
Copy all databases with names matching regexp
@item --suffix=#
Suffix for names of copied databases
@item --checkpoint=#
Insert checkpoint entry into specified db.table
@item --flushlog
Flush logs once all tables are locked.
@item --tmpdir=#
Temporary directory (instead of /tmp).
@end table
You can use 'perldoc mysqlhotcopy' to get a more complete documentation for
@code{mysqlhotcopy}.
@code{mysqlhotcopy} reads the group @code{[mysqlhotcopy]} from the option
files.
@cindex importing, data
@cindex data, importing
@cindex files, text
@cindex text files, importing
@cindex @code{mysqlimport}
@node mysqlimport, perror, mysqldump, Tools
@node mysqlimport, perror, mysqlhotcopy, Tools
@section Importing Data from Text Files
@code{mysqlimport} provides a command-line interface to the @code{LOAD DATA
@@ -32882,22 +32998,49 @@ expecting to store the full length of a @code{BLOB} into a table, you'll need
to start the server with the @code{--set-variable=max_allowed_packet=16M}
option.
@cindex aborted clients
@cindex aborted connection
@cindex connection, aborted
@node Communication errors, Full table, Packet too large, Common errors
@subsection Communication Errors / Aborted Connection
If you find the error @code{Aborted connection} in the @code{hostname.err}
log file, this could be because of one of the following reasons:
The server variable @code{Aborted_clients} is incremented when:
@itemize @bullet
@item
The client had been sleeping more than @code{wait_timeout} without doing
any requests. @xref{SHOW VARIABLES}.
The client program did not call @code{mysql_close()} before exit.
@item
The client had been sleeping more than @code{wait_timeout} or
@code{interactive_timeout} without doing any requests. @xref{SHOW
VARIABLES}.
@item
The client program ended abruptly in the middle of the transfer.
@end itemize
When the above happens, the mysqld will write a note about an
@code{Aborted connection} in the @code{hostname.err}
The server variable @code{Aborted_connects} is incremented when:
@itemize @bullet
@item
The client program did not call @code{mysql_close()} before exit.
When a connection packet doesn't contain the right information.
@item
When the user didn't have privileges to connect to a database.
@item
When a user uses a wrong password.
@item
When it takes more than @code{connect_timeout} seconds to get
a connect package.
@end itemize
Note that the above could indicate that someone is trying to break into
your database!
@xref{SHOW VARIABLES}.
Other reason for problems with Aborted clients / Aborted connections.
@itemize @bullet
@item
Usage of duplex Ethernet protocol, both half and full with
Linux. Many Linux Ethernet drivers have this bug. You should test
@@ -32915,6 +33058,7 @@ Faulty Ethernets or hubs or switches, cables ... This can be diagnosed
properly only by replacing hardware.
@end itemize
@cindex table is full
@node Full table, Cannot create, Communication errors, Common errors
@subsection @code{The table is full} Error
@@ -33793,13 +33937,19 @@ mirror if needed. @code{LAST_INSERT_ID()} is also safe to use.
Because @strong{MySQL} tables are stored as files, it is easy to do a
backup. To get a consistent backup, do a @code{LOCK TABLES} on the
relevant tables. @xref{LOCK TABLES, , @code{LOCK TABLES}}. You only need a
read lock; this allows other threads to continue to query the tables while
you are making a copy of the files in the database directory. If you want to
make a SQL level backup of a table, you can use @code{SELECT INTO OUTFILE}.
relevant tables followed by @code{FLUSH TABLES} for the tables.
@xref{LOCK TABLES, , @code{LOCK TABLES}}.
@xref{FLUSH, , @code{FLUSH}}.
You only need a read lock; this allows other threads to continue to
query the tables while you are making a copy of the files in the
database directory.
Another way to back up a database is to use the @code{mysqldump} program:
@xref{mysqldump}.
If you want to make a SQL level backup of a table, you can use
@code{SELECT INTO OUTFILE} or @code{BACKUP
TABLE}. @xref{SELECT}. @xref{BACKUP TABLE}.
Another way to back up a database is to use the @code{mysqldump} program or
the @code{mysqlhotcopy script}. @xref{mysqldump}. @xref{mysqlhotcopy}.
@enumerate
@item
@@ -33807,6 +33957,10 @@ Do a full backup of your databases:
@example
shell> mysqldump --tab=/path/to/some/dir --opt --full
or
shell> mysqlhotcopy database /path/to/some/dir
@end example
You can also simply copy all table files (@file{*.frm}, @file{*.MYD}, and
@@ -33823,16 +33977,23 @@ you executed @code{mysqldump}.
@end enumerate
If you have to restore something, try to recover your tables using
@code{myisamchk -r} first. That should work in 99.9% of all cases. If
@code{myisamchk} fails, try the following procedure:
(This will only work if you have started @strong{MySQL} with
@code{REPAIR TABLE} or @code{myisamchk -r} first. That should work in
99.9% of all cases. If @code{myisamchk} fails, try the following
procedure: (This will only work if you have started @strong{MySQL} with
@code{--log-update}. @xref{Update log}.):
@enumerate
@item
Restore the original @code{mysqldump} backup.
@item
Execute the following command to re-run the updates in the update logs:
Execute the following command to re-run the updates in the binary log:
@example
shell> mysqlbinlog hostname-bin.[0-9]* | mysql
@end example
If you are using the update log you can use:
@example
shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql
@end example
@@ -40039,6 +40200,7 @@ developed a @strong{MySQL} feature themself or by giving us hardware for
@multitable @columnfractions .3 .7
@item Va Linux / Andover.net @tab Replication
@item NuSphere @tab Editing of the @strong{MySQL} manual.
@item Stork Design studio @tab The MySQL web site in use between 1998-2000
@item Intel @tab Contributed to development on Windows and Linux platforms
@item Compaq @tab Contributed to Development on Linux-alpha
@item SWSoft @tab Development on the embedded @code{mysqld} version.
@@ -40137,6 +40299,10 @@ though, so Version 3.23 is not released as a stable version yet.
@appendixsubsec Changes in release 3.23.31
@itemize @bullet
@item
Fixed bug when using expression of type
@code{SELECT ... FROM t1 left join t2 on (t1.a=t2.a) WHERE t1.a=t2.a}. In this
case the test in the @code{WHERE} clause was wrongly optimized away.
@item
Fixed bug in @code{MyISAM} when deleting keys with possible @code{NULL}
values, but the first key-column was not a prefix-compressed text column.
@item
@@ -40153,6 +40319,8 @@ Added @code{Threads_created} status variable to @code{mysqld}.
@appendixsubsec Changes in release 3.23.30
@itemize @bullet
@item
Fixed that @code{myisamdump} works against old mysqld servers.
@item
Fixed that @code{myisamchk -k#} works again.
@item
Fixed a problem with replication when the binary log file went over 2G
@@ -44714,6 +44882,13 @@ will probably be ignored).
Doing a @code{LOCK TABLE ..} and @code{FLUSH TABLES ..} doesn't
guarantee that there isn't a half-finished transaction in progress on the
table.
@item
BDB tables are a bit slow to open from this. If you have many BDB tables
in a database, it will take a long time to use the @code{mysql} client
on the database if you are not using the @code{-A} option or if you are
using @code{rehash}. This is especially notable when you have a big table
cache.
@end itemize
The following problems are known and will be fixed in due time:
@@ -44968,6 +45143,10 @@ Secure connections (with SSL).
Extend the optimizer to be able to optimize some @code{ORDER BY key_name DESC}
queries.
@item
@code{SHOW COLUMNS FROM table_name} (used by @code{mysql} client to allow
expansions of column names) should not open the table, but only the
definition file. This will require less memory and be much faster.
@item
New key cache
@end itemize
@@ -45559,20 +45738,20 @@ Stop the mysqld daemon (with @code{mysqladmin shutdown})
Check all tables with @code{myisamchk -s database/*.MYI}. Repair any
wrong tables with @code{myisamchk -r database/table.MYI}.
@item
Start @code{mysqld} with @code{--log-update}. @xref{Update log}.
Start @code{mysqld} with @code{--log-binary}. @xref{Binary log}.
@item
When you have gotten a crashed table, stop the @code{mysqld server}.
@item
Restore the backup.
@item
Restart the @code{mysqld} server @strong{without} @code{--log-update}
Restart the @code{mysqld} server @strong{without} @code{--log-binary}
@item
Re-execute the commands with @code{mysql < update-log}. The update log
is saved in the @strong{MySQL} database directory with the name
@code{your-hostname.#}.
Re-execute the commands with @code{mysqlbinlog update-log-file | mysql}.
The update log is saved in the @strong{MySQL} database directory with
the name @code{hostname-bin.#}.
@item
If the tables are corrupted again, you have found reproducible bug
in the @code{ISAM} code! FTP the tables and the update log to
in the @code{MyISAM} code! FTP the tables and the update log to
@uref{ftp://support.mysql.com/pub/mysql/secret} and we will fix this as soon as
possible!
@end itemize