summaryrefslogtreecommitdiff
path: root/Docs/manual.texi
diff options
context:
space:
mode:
Diffstat (limited to 'Docs/manual.texi')
-rw-r--r--Docs/manual.texi244
1 files changed, 62 insertions, 182 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi
index 6c2e1bb051d..3bd9005f87d 100644
--- a/Docs/manual.texi
+++ b/Docs/manual.texi
@@ -779,7 +779,7 @@ insert of many rows.
@item Locking -- Gamma
This is very system-dependent. On some systems there are big problems
using standard OS locking (@code{fcntl()}). In these cases, you should
-run @code{mysqld} with the @code{--skip-locking} flag.
+run @code{mysqld} with the @code{--skip-external-locking} flag.
Problems are known to occur on some Linux systems, and on SunOS when
using NFS-mounted filesystems.
@@ -7300,7 +7300,9 @@ programs.
@item
When MySQL is compiled using MIT-pthreads, system locking is
disabled by default for performance reasons. You can tell the server to use
-system locking with the @code{--use-locking} option.
+system locking with the @code{--external-locking} option. This is only
+needed if you want to be able to run two MySQL server against the same
+data files (not recommended).
@item
Sometimes the pthread @code{bind()} command fails to bind to a socket without
@@ -8130,6 +8132,9 @@ before. In particular, you will need @code{REPLICATION SLAVE}
The startup parameters @code{myisam_max_extra_sort_file_size} and
@code{myisam_max_extra_sort_file_size} are now given in bytes
(was megabytes before 4.0.3).
+External system locking of MyISAM/ISAM files is now turned of by default.
+One can turn this one by doing @code{--external-locking}. (For most users
+this is never needed).
@item
The following startup variables/options have been renamed:
@multitable @columnfractions .50 .50
@@ -8142,7 +8147,8 @@ The following startup variables/options have been renamed:
@item @code{warnings} @tab @code{log-warnings}
@end multitable
-The startup options @code{record_buffer}, @code{sort_buffer} and @code{warnings} will still work in MySQL 4.0 but are deprecated.
+The startup options @code{record_buffer}, @code{sort_buffer} and
+@code{warnings} will still work in MySQL 4.0 but are deprecated.
@item
The following SQL variables have changed name.
@multitable @columnfractions .50 .50
@@ -8157,6 +8163,10 @@ The old names still work in MySQL 4.0 but are depricated.
You have to use @code{SET GLOBAL SQL_SLAVE_SKIP_COUNTER=#} instead of
@code{SET SQL_SLAVE_SKIP_COUNTER=#}.
@item
+Renamed mysqld startup options @code{--skip-locking} to
+@code{--skip-external-locking} and @code{--enable-locking} to
+@code{--external-locking}.
+@item
@code{DOUBLE} and @code{FLOAT} columns now honour the
@code{UNSIGNED} flag on storage (before, @code{UNSIGNED} was ignored for
these columns).
@@ -14174,7 +14184,7 @@ Don't flush key buffers between writes for any @code{MyISAM} table.
Read the default keys used by @code{DES_ENCRYPT()} and @code{DES_DECRYPT()}
from this file.
-@item --enable-locking
+@item --enable-external-locking (was --enable-locking)
Enable system locking. Note that if you use this option on a system on
which @code{lockd} does not fully work (as on Linux), you will easily get
mysqld to deadlock.
@@ -14243,7 +14253,7 @@ also set this explicitly to @code{""} if you want to disable this
option. If this option is used, @code{mysqld} will on open check if the
table is marked as crashed or if the table wasn't closed properly.
(The last option only works if you are running with
-@code{--skip-locking}.) If this is the case @code{mysqld} will run
+@code{--skip-external-locking}.) If this is the case @code{mysqld} will run
check on the table. If the table was corrupted, @code{mysqld} will
attempt to repair it.
@@ -14334,7 +14344,7 @@ flush-privileges} or @code{mysqladmin reload}.)
Never use host name cache for faster name-ip resolution, but query DNS server
on every connect instead. @xref{DNS}.
-@item --skip-locking
+@item --skip-extrnal-locking (was --skip-locking)
Don't use system locking. To use @code{isamchk} or @code{myisamchk} you must
shut down the server. @xref{Stability}. Note that in MySQL Version
3.23 you can use @code{REPAIR} and @code{CHECK} to repair/check @code{MyISAM}
@@ -18084,7 +18094,7 @@ Print the @code{myisamchk} version and exit.
@item -w or, --wait
Instead of giving an error if the table is locked, wait until the table
is unlocked before continuing. Note that if you are running @code{mysqld}
-on the table with @code{--skip-locking}, the table can only be locked
+on the table with @code{--skip-external-locking}, the table can only be locked
by another @code{myisamchk} command.
@end table
@@ -18125,11 +18135,11 @@ Should, however, be good enough for most cases.
Store in the @file{.MYI} file when the table was checked and if the table crashed. This should be used to get full benefit of the
@code{--check-only-changed} option, but you shouldn't use this
option if the @code{mysqld} server is using the table and you are
-running @code{mysqld} with @code{--skip-locking}.
+running @code{mysqld} with @code{--skip-external-locking}.
@item -T or --read-only
Don't mark table as checked. This is useful if you use @code{myisamchk}
to check a table that is in use by some other application that doesn't
-use locking (like @code{mysqld --skip-locking}).
+use locking (like @code{mysqld --skip-external-locking}).
@end table
@@ -18289,9 +18299,9 @@ If you have a problem with disk space during repair, you can try to use
@cindex crash, recovery
@cindex recovery, from crash
-If you run @code{mysqld} with @code{--skip-locking} (which is the default on
-some systems, like Linux), you can't reliably use @code{myisamchk} to
-check a table when @code{mysqld} is using the same table. If you
+If you run @code{mysqld} with @code{--skip-external-locking} (which is the
+default on some systems, like Linux), you can't reliably use @code{myisamchk}
+to check a table when @code{mysqld} is using the same table. If you
can be sure that no one is accessing the tables through @code{mysqld}
while you run @code{myisamchk}, you only have to do @code{mysqladmin
flush-tables} before you start checking the tables. If you can't
@@ -18300,14 +18310,14 @@ check the tables. If you run @code{myisamchk} while @code{mysqld} is updating
the tables, you may get a warning that a table is corrupt even if it
isn't.
-If you are not using @code{--skip-locking}, you can use @code{myisamchk}
-to check tables at any time. While you do this, all clients that try
-to update the table will wait until @code{myisamchk} is ready before
+If you are not using @code{--skip-external-locking}, you can use
+@code{myisamchk} to check tables at any time. While you do this, all clients
+that try to update the table will wait until @code{myisamchk} is ready before
continuing.
If you use @code{myisamchk} to repair or optimise tables, you
@strong{must} always ensure that the @code{mysqld} server is not using
-the table (this also applies if you are using @code{--skip-locking}).
+the table (this also applies if you are using @code{--skip-external-locking}).
If you don't take down @code{mysqld} you should at least do a
@code{mysqladmin flush-tables} before you run @code{myisamchk}.
Your tables @strong{may be corrupted} if the server and @code{myisamchk}
@@ -18688,8 +18698,8 @@ here. We explain some of the information in more detail later:
@item myisamchk -d tbl_name
Runs @code{myisamchk} in ``describe mode'' to produce a description of
your table. If you start the MySQL server using the
-@code{--skip-locking} option, @code{myisamchk} may report an error for a
-table that is updated while it runs. However, because @code{myisamchk}
+@code{--skip-external-locking} option, @code{myisamchk} may report an error
+for a table that is updated while it runs. However, because @code{myisamchk}
doesn't change the table in describe mode, there isn't any risk of
destroying data.
@@ -20333,7 +20343,7 @@ The thread is wating for the client to send a new command to it.
The thread is waiting for getting to get a external system lock for the
table. If you are not using multiple mysqld servers that are accessing
the same tables, you can disable system locks with the
-@code{--skip-locking} option.
+@code{--skip-external-locking} option.
@item @code{Upgrading lock}
The @code{INSERT DELAYED} handler is trying to get a lock for the table
to insert rows.
@@ -21352,8 +21362,8 @@ Display version information and exit.
@item -w, --wait
Wait and retry if table is in use. If the @code{mysqld} server was
-invoked with the @code{--skip-locking} option, it is not a good idea to
-invoke @code{myisampack} if the table might be updated during the
+invoked with the @code{--skip-external-locking} option, it is not a good idea
+to invoke @code{myisampack} if the table might be updated during the
packing process.
@end table
@@ -27195,25 +27205,25 @@ If you have enough RAM, you could remove all swap devices. Some
operating systems will use a swap device in some contexts even if you
have free memory.
@item
-Use the @code{--skip-locking} MySQL option to avoid external
+Use the @code{--skip-external-locking} MySQL option to avoid external
locking. Note that this will not impact MySQL's functionality as
long as you only run one server. Just remember to take down the server (or
lock relevant parts) before you run @code{myisamchk}. On some system
this switch is mandatory because the external locking does not work in any
case.
-The @code{--skip-locking} option is on by default when compiling with
+The @code{--skip-external-locking} option is on by default when compiling with
MIT-pthreads, because @code{flock()} isn't fully supported by
MIT-pthreads on all platforms. It's also on default for Linux
as Linux file locking are not yet safe.
-The only case when you can't use @code{--skip-locking} is if you run
+The only case when you can't use @code{--skip-external-locking} is if you run
multiple MySQL @emph{servers} (not clients) on the same data,
or run @code{myisamchk} on the table without first flushing and locking
the @code{mysqld} server tables first.
You can still use @code{LOCK TABLES}/@code{UNLOCK TABLES} even if you
-are using @code{--skip-locking}
+are using @code{--skip-external-locking}
@end itemize
@@ -33832,7 +33842,6 @@ SELECT [STRAIGHT_JOIN]
[FROM table_references
[WHERE where_definition]
[GROUP BY @{unsigned_integer | col_name | formula@} [ASC | DESC], ...
- [WITH @{CUBE | ROLLUP@}] ]
[HAVING where_definition]
[ORDER BY @{unsigned_integer | col_name | formula@} [ASC | DESC] ,...]
[LIMIT [offset,] rows]
@@ -34042,10 +34051,6 @@ read the @code{GROUP BY} description.
@xref{Group by functions}.
@item
-Since Version 3.23.12 MySQL supports @code{CUBE} and @code{ROLLUP}
-clauses. @xref{CUBE and ROLLUP}.
-
-@item
@cindex hints
@code{STRAIGHT_JOIN} forces the optimiser to join the tables in the order in
which they are listed in the @code{FROM} clause. You can use this to speed up
@@ -34154,7 +34159,6 @@ the examined rows will be write locked.
@menu
* JOIN:: @code{JOIN} Syntax
* UNION:: @code{UNION} Syntax
-* CUBE and ROLLUP @code{CUBE} and @code{ROLLUP} Syntax
@end menu
@node JOIN, UNION, SELECT, SELECT
@@ -34319,7 +34323,7 @@ mysql> SELECT * FROM table1 IGNORE INDEX (key3)
@xref{LEFT JOIN optimisation, , @code{LEFT JOIN} optimisation}.
-@node UNION, CUBE and ROLLUP, JOIN, SELECT
+@node UNION, , JOIN, SELECT
@subsubsection @code{UNION} Syntax
@findex UNION
@@ -34337,9 +34341,10 @@ SELECT ...
@code{UNION} is used to combine the result from many @code{SELECT}
statements into one result set.
-The columns listed in the select_expression portion of the @code{SELECT} should
-have the same type. The column names used in the first @code{SELECT} query will be
-used as the column names for the results returned.
+The columns listed in the select_expression portion of the @code{SELECT}
+should have the same type. The column names used in the first
+@code{SELECT} query will be used as the column names for the results
+returned.
The @code{SELECT} commands are normal select commands, but with the following
restrictions:
@@ -34364,141 +34369,6 @@ UNION
ORDER BY a;
@end example
-@node CUBE and ROLLUP, , UNION, SELECT
-@subsubsection @code{CUBE} and @code{ROLLUP} Syntax
-
-Documentation for OLAP extension
-
-Introduction
-------------
-
-MySQL will first support CUBE and ROLLUP operators from entire OLAP
-functionality.
-
-The CUBE and ROLLUP extensions to SQL make querying and reporting
-easier in data warehousing environments. ROLLUP creates subtotals at
-increasing levels of aggregation, from the most detailed up to a grand
-total. CUBE is an extension similar to ROLLUP, enabling a single
-statement to calculate all possible combinations of subtotals.
-
-
-Syntax:
-------
-
-The syntax supported by the enhanced mysql for CUBE and ROLLUP
-operators.
-
-CUBE
-----
-
-SELECT field1, field2, ... AGGR(fieldn) FROM
-table GROUP BY field1, field2 field(n-1) WITH CUBE
-
-This would generate the aggregates with group bys of all the
-combinations of dimensions.
-
-ROLLUP:
------
-
- SELECT field1, field2, ... AGGR(fieldn) FROM table
- GROUP BY field1, field2 field(n-1) WITH ROLLUP
-
-Example:
--------
-
-mysql> select * from sales;
-+------------+---------------+------+--------+
-| product | country | year | profit |
-+------------+---------------+------+--------+
-| Computer | India | 2000 | 1200 |
-| TV | United States | 1999 | 150 |
-| Calculator | United States | 1999 | 50 |
-| Computer | United States | 1999 | 1500 |
-| Computer | United States | 2000 | 1500 |
-| TV | United States | 2000 | 150 |
-| TV | India | 2000 | 100 |
-| TV | India | 2000 | 100 |
-| Calculator | United States | 2000 | 75 |
-| Calculator | India | 2000 | 75 |
-| TV | India | 1999 | 100 |
-| Computer | India | 1999 | 1200 |
-| Computer | United States | 2000 | 1500 |
-| Calculator | United States | 2000 | 75 |
-+------------+---------------+------+--------+
-14 rows in set (0.00 sec)
-
-
-
-mysql> Select sales.product, sales.country , sales.year, sum(profit) from
-sales group by product, country, year with cube;
-
-+------------+---------------+------+-------------+
-| product | country | year | sum(profit) |
-+------------+---------------+------+-------------+
-| Calculator | India | 2000 | 75 |
-| Calculator | United States | 1999 | 50 |
-| Calculator | United States | 2000 | 150 |
-| Computer | India | 1999 | 1200 |
-| Computer | India | 2000 | 1200 |
-| Computer | United States | 1999 | 1500 |
-| Computer | United States | 2000 | 3000 |
-| TV | India | 1999 | 100 |
-| TV | India | 2000 | 200 |
-| TV | United States | 1999 | 150 |
-| TV | United States | 2000 | 150 |
-| ALL | India | 1999 | 1300 |
-| ALL | India | 2000 | 1475 |
-| ALL | United States | 1999 | 1700 |
-| ALL | United States | 2000 | 3300 |
-| Calculator | ALL | 1999 | 50 |
-| Calculator | ALL | 2000 | 225 |
-| Computer | ALL | 1999 | 2700 |
-| Computer | ALL | 2000 | 4200 |
-| TV | ALL | 1999 | 250 |
-| TV | ALL | 2000 | 350 |
-| Calculator | India | 0 | 75 |
-| Calculator | United States | 0 | 200 |
-| Computer | India | 0 | 2400 |
-| Computer | United States | 0 | 4500 |
-| TV | India | 0 | 300 |
-| TV | United States | 0 | 300 |
-| ALL | ALL | 1999 | 3000 |
-| ALL | ALL | 2000 | 4775 |
-| ALL | India | 0 | 2775 |
-| ALL | United States | 0 | 5000 |
-| Calculator | ALL | 0 | 275 |
-| Computer | ALL | 0 | 6900 |
-| TV | ALL | 0 | 600 |
-| ALL | ALL | 0 | 7775 |
-+------------+---------------+------+-------------+
-35 rows in set (0.00 sec)
-
-
-MySQL supports now CUBE and ROLLUP extensions, with all functions
-that one wishes to use with them.
-
-Those extensions already work in all tested combinations. They work
-with UNION's, should work with sub-selects in 4.1 and derived tables.
-
-TODO
-----
-
-For the moment, ORDER and LIMIT are disabled for CUBE and ROLLUP. This
-however remains to be added later.
-
-Another feature that has to be added later is grouping of select list
-itmes in order to alleviate user errors. For the moment, missing
-(hidden) columns are not used at all.
-
-Third feature to be done is to make SQL SET OPTION to set values for
-all values of the column optionally to:
-
-* ALL (as it is now)
-* NULL
-* blank
-
--------------------------------------------------------------------------
-
@findex HANDLER
@node HANDLER, INSERT, SELECT, Data Manipulation
@subsection @code{HANDLER} Syntax
@@ -37781,7 +37651,8 @@ The automatic recovery is activated if you start @code{mysqld} with
@code{--myisam-recover=#}. @xref{Command-line options}.
On open, the table is checked if it's marked as crashed or if the open
count variable for the table is not 0 and you are running with
-@code{--skip-locking}. If either of the above is true the following happens.
+@code{--skip-external-locking}. If either of the above is true the following
+happens.
@itemize @bullet
@item
@@ -47832,7 +47703,7 @@ without locking the table properly.
If you are running many @code{mysqld} servers on the same data on a
system that doesn't support good filesystem locks (normally handled by
the @code{lockd} daemon ) or if you are running
-multiple servers with @code{--skip-locking}
+multiple servers with @code{--skip-external-locking}
@item
You have a crashed index/datafile that contains very wrong data that
got @code{mysqld} confused.
@@ -47901,12 +47772,12 @@ what is happening.
Have you applied the latest patches for your operating system?
@item
-Use the @code{--skip-locking} option to @code{mysqld}. On some systems, the
-@code{lockd} lock manager does not work properly; the @code{--skip-locking}
-option tells @code{mysqld} not to use external locking. (This means that you
-cannot run 2 @code{mysqld} servers on the same data and that you must be
-careful if you use @code{myisamchk}, but it may be instructive to try the
-option as a test.)
+Use the @code{--skip-external-locking} option to @code{mysqld}. On some
+systems, the @code{lockd} lock manager does not work properly; the
+@code{--skip-external-locking} option tells @code{mysqld} not to use external
+locking. (This means that you cannot run 2 @code{mysqld} servers on the same
+data and that you must be careful if you use @code{myisamchk}, but it may be
+instructive to try the option as a test.)
@item
Have you tried @code{mysqladmin -u root processlist} when @code{mysqld}
@@ -50142,6 +50013,14 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
The startup parameters @code{myisam_max_extra_sort_file_size} and
@code{myisam_max_extra_sort_file_size} are now given in bytes, not megabytes.
@item
+External system locking of MyISAM/ISAM files is now turned off by default.
+One can turn this one by doing @code{--external-locking}. (For most users
+this is never needed).
+@item
+Fixed core dump bug with @code{INSERT ... SET db_name.table_name.colname=''}.
+@item
+Fixed client hangup bug when using some SQL commands with wrong syntax.
+@item
Fixed a timing bug in @code{DROP DATABASE}
@item
New @code{SET [GLOBAL | SESSION]} syntax to change thread specific and global
@@ -50155,14 +50034,14 @@ Renamed variable @code{query_cache_startup_type} to @code{query_cache_type},
Renamed some sql variables, but old names will still work until 5.0.
@xref{Upgrading-from-3.23}.
@item
+Renamed @code{--skip-locking} to @code{--skip-external-locking}.
+@item
Removed not used variable @code{query_buffer_size}.
@item
Fixed a bug that made the pager option in the @code{mysql} client
non-functional.
@item
Added full @code{AUTO_INCREMENT} support to @code{MERGE} tables.
-@item
-Added support for @code{CUBE} and @code{ROLLUP}.
@end itemize
@node News-4.0.2, News-4.0.1, News-4.0.3, News-4.0.x
@@ -50179,6 +50058,7 @@ Don't allow database names that contain @samp{\}.
@item
Added @code{XOR} operator (logical and bitwise @code{XOR}) with @code{^}
as a synonym for bitwise @code{XOR}.
+@item
Added function @code{IS_FREE_LOCK("lock_name")}.
Based on code contributed by Hartmut Holzgraefe @email{hartmut@@six.de}.
@item
@@ -54493,7 +54373,7 @@ Added optimisation to remove const reference tables from @code{ORDER BY} and
@item
@code{mysqld} now automatically disables system locking on Linux and Windows,
and for systems that use MIT-pthreads. You can force the use of locking
-with the @code{--enable-locking} option.
+with the @code{--enable-external-locking} option.
@item
Added @code{--console} option to @code{mysqld}, to force a console window
(for error messages) when using Windows.
@@ -54794,7 +54674,7 @@ index file and cause error 126 or 138.
@item
Fixed fatal bug in @code{refresh()} when running with the
-@code{--skip-locking} option. There was a ``very small'' time gap after
+@code{--skip-external-locking} option. There was a ``very small'' time gap after
a @code{mysqladmin refresh} when a table could be corrupted if one
thread updated a table while another thread did @code{mysqladmin
refresh} and another thread started a new update ont the same table