diff options
Diffstat (limited to 'Docs/manual.texi')
-rw-r--r-- | Docs/manual.texi | 244 |
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 |