Below is the list of changes that have just been committed into a local
mysqldoc repository of jon. When jon does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://www.mysql.com/doc/I/n/Installing_source_tree.html
ChangeSet
1.3426 05/08/31 17:17:56 jon@stripped +15 -0
Version-specific edits to Introduction chapter (all trees).
Reformat chapter files.
Updated Makefiles and Status files.
Added some version-specific entities.
Deleted refman-common/roadmap.xml
(needed to be put back into Introduction
due to version-specific content).
refman/introduction.xml
1.35 05/08/31 17:17:54 jon@stripped +829 -4
Version-specific edits
refman/Makefile
1.24 05/08/31 17:17:54 jon@stripped +1 -1
made depend
refman-5.1/versions.ent
1.4 05/08/31 17:17:54 jon@stripped +1 -0
updating...
refman-5.1/introduction.xml
1.14 05/08/31 17:17:54 jon@stripped +853 -5
Version-specific edits
refman-5.1/Status
1.6 05/08/31 17:17:54 jon@stripped +1 -1
updating...
refman-5.1/Makefile
1.14 05/08/31 17:17:54 jon@stripped +1 -1
made depend
refman-5.0/versions.ent
1.4 05/08/31 17:17:54 jon@stripped +1 -0
updating...
refman-5.0/introduction.xml
1.16 05/08/31 17:17:54 jon@stripped +851 -1
Version-specific edits
refman-5.0/Status
1.3 05/08/31 17:17:54 jon@stripped +1 -1
updating...
refman-5.0/Makefile
1.14 05/08/31 17:17:54 jon@stripped +1 -1
made depend
refman-4.1/versions.ent
1.4 05/08/31 17:17:54 jon@stripped +2 -0
updating...
refman-4.1/introduction.xml
1.34 05/08/31 17:17:54 jon@stripped +383 -3640
Version-specific edits
refman-4.1/Status
1.16 05/08/31 17:17:54 jon@stripped +1 -1
updating...
refman-4.1/Makefile
1.20 05/08/31 17:17:54 jon@stripped +1 -1
made depend
BitKeeper/deleted/.del-roadmap.xml~ba3d92d8f75dbc15
1.2 05/08/31 17:03:33 jon@stripped +0 -0
Delete: refman-common/roadmap.xml
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: jon
# Host: gigan.
# Root: /home/jon/bk/mysqldoc-copy
--- 1.15/refman-4.1/Status 2005-08-30 01:32:30 +10:00
+++ 1.16/refman-4.1/Status 2005-08-31 17:17:54 +10:00
@@ -11,9 +11,9 @@
charset
storage-engines
mysql-apis
+ introduction
- 4.1 chapters awaiting major edits:
- introduction
tutorial
replication
using-mysql-programs
--- 1.13/refman-5.0/Makefile 2005-08-30 01:32:30 +10:00
+++ 1.14/refman-5.0/Makefile 2005-08-31 17:17:54 +10:00
@@ -32,7 +32,7 @@
# Dependency list for MySQL Reference Manual
# This variable is updated by "make depend"
-MANUAL_SRCS = manual.xml preface.xml introduction.xml
refman-common/manual-conventions.xml refman-common/what-is-mysql-ab.xml
refman-common/what-is.xml refman-common/maxdb.xml refman-common/roadmap.xml
refman-common/information-sources.xml installing.xml tutorial.xml
using-mysql-programs.xml mysql-database-administration.xml replication.xml
mysql-optimization.xml client-side-scripts.xml language-structure.xml reservedwords.xml
charset.xml column-types.xml functions.xml sql-syntax.xml storage-engines.xml
partitioning.xml innodb.xml ndbcluster.xml images/cluster-components-1.png
images/multi-comp-1.png spatial-extensions-in-mysql.xml stored-procedures.xml
triggers.xml views.xml information-schema.xml precision-math.xml mysql-apis.xml
mysql-connectors.xml connector-odbc.xml images/myarchitecture.png images/mydsn-icon.png
images/mydsn.png images/mydsn-setup.png images/mydsn-example.png
images/mydsn-test-success.png images/mydsn-test-fail.png images/mydsn-options.png
images/mydsn
-icon.png images/mydsn.png images/mydsn-trace.png images/myaccess.png
images/myaccess-odbc.png images/mydsn-trace.png images/mydll-properties.png
images/mydsn-options.png images/myflowchart.png connector-net.xml
refman-common/news-connector-net.xml connector-j.xml connector-mxj.xml
extending-mysql.xml problems.xml error-handling.xml errmsgs-server.xml errmsgs-client.xml
refman-common/credits.xml news.xml refman-common/news-5.0.xml
refman-common/news-cluster.xml refman-common/news-myodbc.xml porting.xml
refman-common/environment-variables.xml regexp.xml limits.xml restrictions.xml
refman-common/gpl-license.xml refman-common/mysql-floss-license-exception.xml
+MANUAL_SRCS = manual.xml preface.xml introduction.xml
refman-common/manual-conventions.xml refman-common/what-is-mysql-ab.xml
refman-common/what-is.xml refman-common/maxdb.xml refman-common/information-sources.xml
installing.xml tutorial.xml using-mysql-programs.xml mysql-database-administration.xml
replication.xml mysql-optimization.xml client-side-scripts.xml language-structure.xml
reservedwords.xml charset.xml column-types.xml functions.xml sql-syntax.xml
storage-engines.xml partitioning.xml innodb.xml ndbcluster.xml
images/cluster-components-1.png images/multi-comp-1.png spatial-extensions-in-mysql.xml
stored-procedures.xml triggers.xml views.xml information-schema.xml precision-math.xml
mysql-apis.xml mysql-connectors.xml connector-odbc.xml images/myarchitecture.png
images/mydsn-icon.png images/mydsn.png images/mydsn-setup.png images/mydsn-example.png
images/mydsn-test-success.png images/mydsn-test-fail.png images/mydsn-options.png
images/mydsn-icon.png images/mydsn.png
images/mydsn-trace.png images/myaccess.png images/myaccess-odbc.png
images/mydsn-trace.png images/mydll-properties.png images/mydsn-options.png
images/myflowchart.png connector-net.xml refman-common/news-connector-net.xml
connector-j.xml connector-mxj.xml extending-mysql.xml problems.xml error-handling.xml
errmsgs-server.xml errmsgs-client.xml refman-common/credits.xml news.xml
refman-common/news-5.0.xml refman-common/news-cluster.xml refman-common/news-myodbc.xml
porting.xml refman-common/environment-variables.xml regexp.xml limits.xml
restrictions.xml refman-common/gpl-license.xml
refman-common/mysql-floss-license-exception.xml
manual-prepped.xml: $(MANUAL_SRCS)
manual-manprepped.xml: $(MANUAL_SRCS)
--- 1.2/refman-5.0/Status 2005-08-25 10:41:04 +10:00
+++ 1.3/refman-5.0/Status 2005-08-31 17:17:54 +10:00
@@ -1,7 +1,7 @@
- 5.0 chapters that have been edited:
mysql-database-administration
preface
- introduction
+ introduction (really, this time)
tutorial
language-structure
column-types
--- 1.13/refman-5.1/Makefile 2005-08-30 01:32:30 +10:00
+++ 1.14/refman-5.1/Makefile 2005-08-31 17:17:54 +10:00
@@ -32,7 +32,7 @@
# Dependency list for MySQL Reference Manual
# This variable is updated by "make depend"
-MANUAL_SRCS = manual.xml preface.xml introduction.xml
refman-common/manual-conventions.xml refman-common/what-is-mysql-ab.xml
refman-common/what-is.xml refman-common/maxdb.xml refman-common/roadmap.xml
refman-common/information-sources.xml installing.xml tutorial.xml
using-mysql-programs.xml mysql-database-administration.xml replication.xml
mysql-optimization.xml client-side-scripts.xml language-structure.xml reservedwords.xml
charset.xml column-types.xml functions.xml sql-syntax.xml storage-engines.xml
partitioning.xml innodb.xml ndbcluster.xml images/cluster-components-1.png
images/multi-comp-1.png spatial-extensions-in-mysql.xml stored-procedures.xml
triggers.xml views.xml information-schema.xml precision-math.xml mysql-apis.xml
mysql-connectors.xml connector-odbc.xml images/myarchitecture.png images/mydsn-icon.png
images/mydsn.png images/mydsn-setup.png images/mydsn-example.png
images/mydsn-test-success.png images/mydsn-test-fail.png images/mydsn-options.png
images/mydsn
-icon.png images/mydsn.png images/mydsn-trace.png images/myaccess.png
images/myaccess-odbc.png images/mydsn-trace.png images/mydll-properties.png
images/mydsn-options.png images/myflowchart.png connector-net.xml
refman-common/news-connector-net.xml connector-j.xml connector-mxj.xml
extending-mysql.xml problems.xml error-handling.xml errmsgs-server.xml errmsgs-client.xml
refman-common/credits.xml news.xml refman-common/news-5.1.xml
refman-common/news-myodbc.xml porting.xml refman-common/environment-variables.xml
regexp.xml limits.xml restrictions.xml refman-common/gpl-license.xml
refman-common/mysql-floss-license-exception.xml
+MANUAL_SRCS = manual.xml preface.xml introduction.xml
refman-common/manual-conventions.xml refman-common/what-is-mysql-ab.xml
refman-common/what-is.xml refman-common/maxdb.xml refman-common/information-sources.xml
installing.xml tutorial.xml using-mysql-programs.xml mysql-database-administration.xml
replication.xml mysql-optimization.xml client-side-scripts.xml language-structure.xml
reservedwords.xml charset.xml column-types.xml functions.xml sql-syntax.xml
storage-engines.xml partitioning.xml innodb.xml ndbcluster.xml
images/cluster-components-1.png images/multi-comp-1.png spatial-extensions-in-mysql.xml
stored-procedures.xml triggers.xml views.xml information-schema.xml precision-math.xml
mysql-apis.xml mysql-connectors.xml connector-odbc.xml images/myarchitecture.png
images/mydsn-icon.png images/mydsn.png images/mydsn-setup.png images/mydsn-example.png
images/mydsn-test-success.png images/mydsn-test-fail.png images/mydsn-options.png
images/mydsn-icon.png images/mydsn.png
images/mydsn-trace.png images/myaccess.png images/myaccess-odbc.png
images/mydsn-trace.png images/mydll-properties.png images/mydsn-options.png
images/myflowchart.png connector-net.xml refman-common/news-connector-net.xml
connector-j.xml connector-mxj.xml extending-mysql.xml problems.xml error-handling.xml
errmsgs-server.xml errmsgs-client.xml refman-common/credits.xml news.xml
refman-common/news-5.1.xml refman-common/news-myodbc.xml porting.xml
refman-common/environment-variables.xml regexp.xml limits.xml restrictions.xml
refman-common/gpl-license.xml refman-common/mysql-floss-license-exception.xml
manual-prepped.xml: $(MANUAL_SRCS)
manual-manprepped.xml: $(MANUAL_SRCS)
--- 1.5/refman-5.1/Status 2005-08-25 10:41:04 +10:00
+++ 1.6/refman-5.1/Status 2005-08-31 17:17:54 +10:00
@@ -1,9 +1,9 @@
- 5.1 chapters that have been edited:
mysql-apis
+ introduction
- 5.1 chapters awaiting major edits:
preface
- introduction
tutorial
mysql-database-administration
language-structure
--- 1.13/refman-5.1/introduction.xml 2005-08-30 01:32:30 +10:00
+++ 1.14/refman-5.1/introduction.xml 2005-08-31 17:17:54 +10:00
@@ -45,10 +45,6 @@
<itemizedlist>
- <remark role="todo">
- Fix the item referencing node todo if possible, cut otherwise.
- </remark>
-
<listitem>
<para>
For a discussion about the capabilities of the MySQL Database
@@ -107,6 +103,8 @@
</listitem>
<!--
+
+<remark role="todo">Fix this if possible, cut otherwise.</remark>
<listitem><para>
For future plans, see <xref linkend="todo"/>.
</para></listitem>
@@ -277,7 +275,857 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/maxdb.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/roadmap.xml"/>
+ <section id="roadmap">
+
+ <title id='title-roadmap'>&title-roadmap;</title>
+
+ <para>
+ This section provides a snapshot of the MySQL development roadmap,
+ including major features implemented in or planned for the various
+ MySQL releases. The following sections provide information for
+ each release series.
+ </para>
+
+ <remark role="todo">
+ [js] Update as required when we start a new release series.
+ </remark>
+
+ <para>
+ The current production release series is MySQL ¤t-series;,
+ which was declared stable for production use as of Version 4.1.7,
+ released in October 2004. The previous production release series
+ was MySQL &previous-series;, which was declared stable for
+ production use as of Version 4.0.12, released in March 2003.
+ Production status means that future 4.1 and 4.0 development is
+ limited only to bugfixes. For the older MySQL 3.23 series, only
+ critical bugfixes are made.
+ </para>
+
+ <remark role="todo">
+ [js] Update as required when we start a new release series.
+ </remark>
+
+ <para>
+ Active MySQL development currently is taking place in the MySQL
+ 5.0 and 5.1 release series; and new features are being added only
+ to the latter.
+ </para>
+
+ <para>
+ Before upgrading from one release series to the next, please see
+ the notes at <xref linkend="upgrade"/>.
+ </para>
+
+ <para>
+ The most requested features and the versions in which they were
+ implemented or are scheduled for implementation are summarized in
+ the following table:
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colwidth="30*"/>
+ <colspec colwidth="60*"/>
+ <tbody>
+ <row>
+ <entry><emphasis
role="bold">Feature</emphasis></entry>
+ <entry><emphasis role="bold">MySQL
Series</emphasis></entry>
+ </row>
+ <row>
+ <entry>Foreign keys</entry>
+ <entry>3.23 (for the <literal>InnoDB</literal> storage
engine)</entry>
+ </row>
+ <row>
+ <entry>Unions</entry>
+ <entry>4.0</entry>
+ </row>
+ <row>
+ <entry>Subqueries</entry>
+ <entry>4.1</entry>
+ </row>
+ <row>
+ <entry>R-trees</entry>
+ <entry>4.1 (for the <literal>MyISAM</literal> storage
engine)</entry>
+ </row>
+ <row>
+ <entry>Stored procedures</entry>
+ <entry>5.0</entry>
+ </row>
+ <row>
+ <entry>Views</entry>
+ <entry>5.0</entry>
+ </row>
+ <row>
+ <entry>Cursors</entry>
+ <entry>5.0</entry>
+ </row>
+ <row>
+ <entry>Foreign keys</entry>
+ <entry>5.1 (implemented in 3.23 for
<literal>InnoDB</literal>)</entry>
+ </row>
+ <row>
+ <entry>Triggers</entry>
+ <entry>5.0 and 5.1</entry>
+ </row>
+ <row>
+ <entry>Full outer joins</entry>
+ <entry>5.1</entry>
+ </row>
+ <row>
+ <entry>Constraints</entry>
+ <entry>5.1 (implemented in 3.23 for
<literal>InnoDB</literal>)</entry>
+ </row>
+ <row>
+ <entry>Partitioning</entry>
+ <entry>5.1</entry>
+ </row>
+ <row>
+ <entry>Row-Based Replication</entry>
+ <entry>5.1</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <section id="mysql-4-0-nutshell">
+
+ <title
id='title-mysql-4-0-nutshell'>&title-mysql-4-0-nutshell;</title>
+
+ <para>
+ MySQL 4.0 is available for download at
+ <ulink url="http://dev.mysql.com/"/> and from our mirrors. MySQL
+ 4.0 has been tested by a large number of users and is in
+ production use at many large sites.
+ </para>
+
+ <section id="nutshell-4-0-features">
+
+ <title
id="title-nutshell-4-0-features">&title-nutshell-4-0-features;</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Speed enhancements
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ MySQL 4.0 implemented a query cache that can give a
+ major speed boost to applications with repetitive
+ queries. See <xref linkend="query-cache"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Version 4.0 further increased the speed of MySQL
+ Server in a number of areas, such as bulk
+ <literal>INSERT</literal> statements, searching on
+ packed indexes, full-text searching (using
+ <literal>FULLTEXT</literal> indexes), and
+ <literal>COUNT(DISTINCT)</literal>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Introduction of Embedded MySQL Server
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The Embedded Server library added in this release can
+ easily be used to create standalone and embedded
+ applications. The embedded server provides an
+ alternative to using MySQL in a client/server
+ environment. See
+ <xref linkend="nutshell-embedded-mysql"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>InnoDB</literal> storage engine as standard
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The <literal>InnoDB</literal> storage engine began to
+ be offered as a standard feature of the MySQL server.
+ This provided full support for ACID transactions,
+ foreign keys with cascading <literal>UPDATE</literal>
+ and <literal>DELETE</literal>, and row-level locking
+ as standard features. See <xref linkend="innodb"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ New functionality
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The enhanced <literal>FULLTEXT</literal> search
+ capabilities of MySQL Server 4.0 enabled
+ <literal>FULLTEXT</literal> indexing of large text
+ masses with both binary and natural-language searching
+ logic. It became possible to customize minimal word
+ length and define your own stop word lists in most
+ human languages, enabling a broader class of
+ applications to be built with MySQL Server. See
+ <xref linkend="fulltext-search"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Standards compliance, portability, and migration
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ MySQL Server added support for the
+ <literal>UNION</literal> statement, a standard SQL
+ feature.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Starting with version 4.0, MySQL runs natively on
+ Novell NetWare 6.0 and higher. See
+ <xref linkend="netware-installation"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Features to simplify migration from other database
+ systems to MySQL Server include <literal>TRUNCATE
+ TABLE</literal> (as in Oracle)
+
+ <remark role="note">
+ Commented out IDENTITY until someone explains what
+ it means...
+ </remark>
+
+
+
+ <remark>
+ and IDENTITY as a synonym for automatically
+ incremented keys (as in Sybase)
+ </remark>
+
+ .
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Internationalization
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ German-speaking users should note that MySQL 4.0 added
+ support for a new character set,
+ <literal>latin1_de</literal>, which ensures that words
+ with umlauts are sorted in the same order as in German
+ telephone books.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Usability enhancements</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ As of Version 4.0, most <command>mysqld</command>
+ parameters (startup options) can be set without taking
+ down the server. This is a convenient feature for
+ database administrators. See
+ <xref linkend="set-option"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Multiple-table <literal>DELETE</literal> and
+ <literal>UPDATE</literal> statements were added.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On Windows, symbolic link handling at the database
+ level was enabled by default. On Unix, the
+ <literal>MyISAM</literal> storage engine added support
+ for symbolic linking at the table level (and not just
+ the database level as before).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The addition of the
+ <literal>SQL_CALC_FOUND_ROWS</literal> and
+ <literal>FOUND_ROWS()</literal> functions made it
+ possible to find out the number of rows a
+ <literal>SELECT</literal> query that includes a
+ <literal>LIMIT</literal> clause would have returned
+ without that clause.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For a more comprehensive list of MySQL 4.0 features, see the
+ &title-refman-4-1;, available at the MySQL AB website, which
+ covers MySQL 4.1 and previous versions of the MySQL server
+ software.
+ </para>
+
+ </section>
+
+ <section id="nutshell-embedded-mysql">
+
+ <title
id='title-nutshell-embedded-mysql'>&title-nutshell-embedded-mysql;</title>
+
+ <para>
+ The <literal>libmysqld</literal> embedded server library made
+ MySQL Server suitable for a wider range of applications. Using
+ this library, developers can embed MySQL Server into various
+ applications and electronics devices, where the end user has
+ no knowledge of there actually being an underlying database.
+ Embedded MySQL Server is ideal for use in Internet appliances,
+ public kiosks, turnkey hardware/software combination units,
+ high performance Internet servers, self-contained databases
+ distributed on CD-ROM, and so on.
+ </para>
+
+ <para>
+ The embedded MySQL library uses the same interface as the
+ normal client library. See <xref linkend="libmysqld"/>.
+ Embedded MySQL is available under the same dual-licensing
+ model as the MySQL Server; see
+ <ulink url="http://www.mysql.com/company/legal/licensing/"/>
+ for more information.
+ </para>
+
+ <para>
+ On Windows there are two different libraries:
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colwidth="30*"/>
+ <colspec colwidth="60*"/>
+ <tbody>
+ <row>
+ <entry><literal>libmysqld.lib</literal></entry>
+ <entry>Dynamic library for threaded applications.</entry>
+ </row>
+ <row>
+ <entry><literal>mysqldemb.lib</literal></entry>
+ <entry>Static library for not threaded applications.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ </section>
+
+ </section>
+
+ <section id="mysql-4-1-nutshell">
+
+ <title
id='title-mysql-4-1-nutshell'>&title-mysql-4-1-nutshell;</title>
+
+ <para>
+ MySQL Server 4.0 laid the foundation for new features
+ implemented in MySQL 4.1, such as subqueries and Unicode
+ support, which were desired by many of our customers.
+ </para>
+
+ <para>
+ MySQL Server 4.1 is currently in production status, and binaries
+ are available for download at
+ <ulink url="http://dev.mysql.com/downloads/mysql/4.1.html"/>.
+ All binary releases pass our extensive test suite without any
+ errors on the platforms on which we test. See the
+ &title-refman-4-1;, available at the MySQL AB website for more
+ specific information.
+ </para>
+
+ <para>
+ For those wishing to use the most recent development source for
+ MySQL 4.1, we also make our BitKeeper repositories publicly
+ available. See <xref linkend="installing-source-tree"/>.
+ </para>
+
+ <section id="nutshell-4-1-features">
+
+ <title
id='title-nutshell-4-1-features'>&title-nutshell-4-1-features;</title>
+
+ <para>
+ This section lists features implemented in MySQL 4.1. Features
+ that are available in MySQL 5.0 are described in
+ <xref linkend="mysql-5-0-nutshell"/>.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Support for subqueries and derived
+ tables</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ A <quote>subquery</quote> is a
+ <literal>SELECT</literal> statement nested within
+ another statement. A <quote>derived table</quote> (an
+ unnamed view) is a subquery in the
+ <literal>FROM</literal> clause of another statement.
+ See <xref linkend="subqueries"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Speed enhancements</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Faster binary client/server protocol with support for
+ prepared statements and parameter binding. See
+ <xref linkend="c-api-prepared-statements"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>BTREE</literal> indexing is supported for
+ <literal>HEAP</literal> tables, significantly
+ improving response time for non-exact searches.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Added functionality</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>CREATE TABLE
+ <replaceable>tbl_name2</replaceable> LIKE
+ <replaceable>tbl_name1</replaceable></literal> allows
+ you to create, with a single statement, a new table
+ with a structure exactly like that of an existing
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>MyISAM</literal> storage engine added
+ support for OpenGIS spatial types for storing
+ geographical data. See
+ <xref linkend="spatial-extensions-in-mysql"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support was added for replication over SSL
+ connections.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support for a number of additional storage engines was
+ implemented in the MySQL 4.1 release series:
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The <literal>EXAMPLE</literal> storage engine is
+ a <quote>stub</quote> engine that serves as an
+ example in the MySQL source code for writing new
+ storage engines, and is primarily of interest to
+ developers. See
+ <xref linkend="example-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>NDB Cluster</literal> is the storage
+ engine used by MySQL Cluster to implement tables
+ that are partitioned over many computers. See
+ <xref linkend="ndbcluster"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>ARCHIVE</literal> storage engine is
+ used for storing large amounts of data without
+ indexes in a very small footprint. See
+ <xref linkend="archive-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>CSV</literal> storage engine stores
+ data in text files using comma-separated-values
+ format. See
+ <xref linkend="csv-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>BLACKHOLE</literal> storage engine
+ accepts but does not store data, and always
+ returns an empty result set. It is for use
+ primarily in replication. See
+ <xref linkend="blackhole-storage-engine"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <emphasis role="bold">Note</emphasis>: These engines
+ were implemented at different points in the
+ development of MySQL 4.1. Please see the indicated
+ sections for particulars in each case.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Standards compliance, portability,
+ and migration</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The enhanced client/server protocol available
+ beginning with MySQL 4.1.1 provides the ability to
+ pass multiple warnings to the client, rather than only
+ a single result, making it much easier to track
+ problems that occur in operations such as bulk data
+ loading.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>SHOW WARNINGS</literal> shows warnings for
+ the last command. See <xref linkend="show-warnings"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Internationalization and
+ Localization</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ To support applications that require the use of local
+ languages, the MySQL software added extensive Unicode
+ support through the <literal>utf8</literal> and
+ <literal>ucs2</literal> character sets.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Definition of character sets by column, table, and
+ database. This allows for a high degree of flexibility
+ in application design, particularly for multi-language
+ Web sites. See <xref linkend="charset"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Per-connection time zones support, allowing individual
+ clients to select their own time zones when necessary.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Usability enhancements</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The addition of a server-based <literal>HELP</literal>
+ command that can be used to get help information for
+ SQL statements. This information is always applicable
+ to the particular server version being used. Because
+ this information is available by issuing an SQL
+ statement, any client can access it. For example, the
+ <literal>help</literal> command of the
+ <command>mysql</command> command-line client has been
+ modified to have this capability.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The improved client/server protocol allows multiple
+ statements to be issued with a single call, and for
+ returning multiple result sets. See
+ <xref linkend="c-api-multiple-queries"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The syntax <literal>INSERT ... ON DUPLICATE KEY UPDATE
+ ...</literal> was implemented. This allows you to
+ update an existing row if the insert would have caused
+ a duplicate value for a primary or unique index. See
+ <xref linkend="insert"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The aggregate function
+ <literal>GROUP_CONCAT()</literal>, added the
+ capability to concatenate column values from grouped
+ rows into a single result string. See
+ <xref linkend="group-by-functions-and-modifiers"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For a more comprehensive list of MySQL 4.1 features, see the
+ &title-refman-4-1;, available at the MySQL AB website.
+ </para>
+
+ </section>
+
+ </section>
+
+ <section id="mysql-5-0-nutshell">
+
+ <title
id='title-mysql-5-0-nutshell'>&title-mysql-5-0-nutshell;</title>
+
+ <para>
+ The following features are implemented in MySQL 5.0.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold"><literal>BIT</literal> Data
+ Type</emphasis>: Can be used to store numbers in binary
+ notation. See <xref linkend="numeric-type-overview"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Cursors</emphasis>: Elementary support
+ for server-side cursors. See <xref linkend="cursors"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Data Dictionary (Information
+ Schema)</emphasis>: The introduction of the
+ <literal>INFORMATION_SCHEMA</literal> database in MySQL 5.0
+ provided a standards-compliant means for accessing the MySQL
+ Server's metadata, that is, data about the databases
+ (schemas) on the server and the objects which they contain.
+ See <xref linkend="information-schema"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Instance Manager</emphasis>: Can be
+ used to start and stop the MySQL Server, even from a remote
+ host. See <xref linkend="instance-manager"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Precision Math</emphasis>: MySQL 5.0
+ introduced stricter criteria for acceptance or rejection of
+ data, and implemented a new library for fixed-point
+ arithmetic. These contributed to a much higher degree of
+ accuracy for mathematical operations and greater control
+ over invalid values. See <xref linkend="precision-math"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Storage Engines</emphasis>: Storage
+ engines added in MySQL 5.0 include
+ <literal>ARCHIVE</literal> and
<literal>FEDERATED</literal>.
+ See <xref linkend="archive-storage-engine"/> and
+ <xref linkend="federated-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Stored Routines</emphasis>: Support
+ for named stored procedures and stored functions was
+ implemented in MySQL 5.0. See
+ <xref linkend="stored-procedures"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Strict Mode and Standard Error
+ Handling</emphasis>: MySQL 5.0 added a strict mode where by
+ it follows standard SQL in a number of ways in which it did
+ not previously. Support for standard SQLSTATE error messages
+ was also implemented. See <xref linkend="server-sql-mode"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Triggers</emphasis>: MySQL 5.0 added
+ limited support for triggers. See <xref linkend="triggers"/>
+ and <xref linkend="ansi-diff-triggers"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold"><literal>VARCHAR</literal> Data
+ Type</emphasis>: The maximum effective length of a
+ <literal>VARCHAR</literal> column was increased to 65,532
+ bytes, and stripping of trailing whitespace was eliminated.
+ See <xref linkend="string-types"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Views</emphasis>: MySQL 5.0 added
+ support for named, updateable views. See
+ <xref linkend="views"/> and
+ <xref linkend="ansi-diff-views"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For more detailed information on changes in MySQL 5.0, see the
+ &title-refman-5-0;, available from the MySQL AB website.
+ </para>
+
+ <para>
+ For those wishing to take a look at the bleeding edge of MySQL
+ development, we make our BitKeeper repository for MySQL publicly
+ available. See <xref linkend="installing-source-tree"/>.
+ </para>
+
+ <remark role="todo">
+ [js] Add nutshell-5-1 section. This needs to be done by the time
+ that 5.0 goes GA.
+ </remark>
+
+ </section>
+
+ </section>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/information-sources.xml"/>
--- 1.3/refman-4.1/versions.ent 2005-08-30 01:32:30 +10:00
+++ 1.4/refman-4.1/versions.ent 2005-08-31 17:17:54 +10:00
@@ -6,4 +6,6 @@
-->
<!ENTITY top "MySQL 4.1 Reference Manual"><!-- Title of Manual current edition.
-->
<!ENTITY current-series "4.1"><!-- Current MySQL release series -->
+<!ENTITY previous-series "4.0"><!-- Previous MySQL release series -->
<!ENTITY current-version "4.1.14"><!-- Latest 4.1.x Version - update with new
releases -->
+
--- 1.3/refman-5.0/versions.ent 2005-08-30 01:32:30 +10:00
+++ 1.4/refman-5.0/versions.ent 2005-08-31 17:17:54 +10:00
@@ -6,6 +6,7 @@
-->
<!ENTITY top "MySQL 5.0 Reference Manual"><!-- Title of Manual current edition.
-->
<!ENTITY title-refman-previous "MySQL 4.1 Reference Manual"><!-- Title of Manual
previous edition -->
+<!ENTITY title-refman-4-1 "MySQL 4.1 Reference Manual"><!-- Title of Manual 4.1
edition -->
<!ENTITY current-series "5.0"><!-- Current MySQL release series -->
<!ENTITY previous-series "4.1"><!-- Previous MySQL release series -->
<!ENTITY current-version "5.0.11-beta"><!-- Current MySQL Version - update with
new releases -->
--- 1.3/refman-5.1/versions.ent 2005-08-30 01:32:31 +10:00
+++ 1.4/refman-5.1/versions.ent 2005-08-31 17:17:54 +10:00
@@ -6,6 +6,7 @@
-->
<!ENTITY top "MySQL 5.1 Reference Manual"><!-- Title of Manual current edition.
-->
<!ENTITY title-refman-previous "MySQL 5.0 Reference Manual"><!-- Title of Manual
previous edition -->
+<!ENTITY title-refman-5-0 "MySQL 5.0 Reference Manual"><!-- Title of Manual 5.0
edition -->
<!ENTITY title-refman-4-1 "MySQL 4.1 Reference Manual"><!-- Title of Manual 4.1
edition -->
<!ENTITY current-series "5.1"><!-- Current MySQL release series -->
<!ENTITY previous-series "5.0"><!-- Previous MySQL release series -->
--- 1.23/refman/Makefile 2005-08-30 01:32:31 +10:00
+++ 1.24/refman/Makefile 2005-08-31 17:17:54 +10:00
@@ -32,7 +32,7 @@
# Dependency list for MySQL Reference Manual
# This variable is updated by "make depend"
-MANUAL_SRCS = manual.xml preface.xml introduction.xml
refman-common/manual-conventions.xml refman-common/what-is-mysql-ab.xml
refman-common/what-is.xml refman-common/maxdb.xml refman-common/roadmap.xml
refman-common/information-sources.xml installing.xml tutorial.xml
using-mysql-programs.xml mysql-database-administration.xml replication.xml
mysql-optimization.xml client-side-scripts.xml language-structure.xml reservedwords.xml
charset.xml column-types.xml functions.xml sql-syntax.xml storage-engines.xml innodb.xml
ndbcluster.xml images/cluster-components-1.png images/multi-comp-1.png
spatial-extensions-in-mysql.xml stored-procedures.xml triggers.xml views.xml
information-schema.xml precision-math.xml mysql-apis.xml mysql-connectors.xml
connector-odbc.xml images/myarchitecture.png images/mydsn-icon.png images/mydsn.png
images/mydsn-setup.png images/mydsn-example.png images/mydsn-test-success.png
images/mydsn-test-fail.png images/mydsn-options.png images/mydsn-icon.png images/
mydsn.png images/mydsn-trace.png images/myaccess.png images/myaccess-odbc.png
images/mydsn-trace.png images/mydll-properties.png images/mydsn-options.png
images/myflowchart.png connector-net.xml refman-common/news-connector-net.xml
connector-j.xml connector-mxj.xml extending-mysql.xml problems.xml error-handling.xml
errmsgs-server.xml errmsgs-client.xml refman-common/credits.xml todo.xml news.xml
refman-common/news-5.0.xml refman-common/news-4.1.xml refman-common/news-4.0.xml
refman-common/news-3.23.xml refman-common/news-3.22.xml refman-common/news-3.21.xml
refman-common/news-3.20.xml refman-common/news-3.19.xml refman-common/news-innodb.xml
refman-common/news-cluster.xml refman-common/news-myodbc.xml porting.xml
refman-common/environment-variables.xml regexp.xml restrictions.xml
refman-common/gpl-license.xml refman-common/mysql-floss-license-exception.xml
+MANUAL_SRCS = manual.xml preface.xml introduction.xml
refman-common/manual-conventions.xml refman-common/what-is-mysql-ab.xml
refman-common/what-is.xml refman-common/maxdb.xml refman-common/information-sources.xml
installing.xml tutorial.xml using-mysql-programs.xml mysql-database-administration.xml
replication.xml mysql-optimization.xml client-side-scripts.xml language-structure.xml
reservedwords.xml charset.xml column-types.xml functions.xml sql-syntax.xml
storage-engines.xml innodb.xml ndbcluster.xml images/cluster-components-1.png
images/multi-comp-1.png spatial-extensions-in-mysql.xml stored-procedures.xml
triggers.xml views.xml information-schema.xml precision-math.xml mysql-apis.xml
mysql-connectors.xml connector-odbc.xml images/myarchitecture.png images/mydsn-icon.png
images/mydsn.png images/mydsn-setup.png images/mydsn-example.png
images/mydsn-test-success.png images/mydsn-test-fail.png images/mydsn-options.png
images/mydsn-icon.png images/mydsn.png images/mydsn-tra
ce.png images/myaccess.png images/myaccess-odbc.png images/mydsn-trace.png
images/mydll-properties.png images/mydsn-options.png images/myflowchart.png
connector-net.xml refman-common/news-connector-net.xml connector-j.xml connector-mxj.xml
extending-mysql.xml problems.xml error-handling.xml errmsgs-server.xml errmsgs-client.xml
refman-common/credits.xml todo.xml news.xml refman-common/news-5.0.xml
refman-common/news-4.1.xml refman-common/news-4.0.xml refman-common/news-3.23.xml
refman-common/news-3.22.xml refman-common/news-3.21.xml refman-common/news-3.20.xml
refman-common/news-3.19.xml refman-common/news-innodb.xml refman-common/news-cluster.xml
refman-common/news-myodbc.xml porting.xml refman-common/environment-variables.xml
regexp.xml restrictions.xml refman-common/gpl-license.xml
refman-common/mysql-floss-license-exception.xml
manual-prepped.xml: $(MANUAL_SRCS)
manual-manprepped.xml: $(MANUAL_SRCS)
--- 1.19/refman-4.1/Makefile 2005-08-25 23:59:25 +10:00
+++ 1.20/refman-4.1/Makefile 2005-08-31 17:17:54 +10:00
@@ -32,7 +32,7 @@
# Dependency list for MySQL Reference Manual
# This variable is updated by "make depend"
-MANUAL_SRCS = manual.xml preface.xml introduction.xml installing.xml tutorial.xml
using-mysql-programs.xml mysql-database-administration.xml replication.xml
mysql-optimization.xml client-side-scripts.xml language-structure.xml reservedwords.xml
charset.xml column-types.xml functions.xml sql-syntax.xml storage-engines.xml innodb.xml
ndbcluster.xml images/cluster-components-1.png images/multi-comp-1.png
spatial-extensions-in-mysql.xml mysql-apis.xml mysql-connectors.xml connector-odbc.xml
images/myarchitecture.png images/mydsn-icon.png images/mydsn.png images/mydsn-setup.png
images/mydsn-example.png images/mydsn-test-success.png images/mydsn-test-fail.png
images/mydsn-options.png images/mydsn-icon.png images/mydsn.png images/mydsn-trace.png
images/myaccess.png images/myaccess-odbc.png images/mydsn-trace.png
images/mydll-properties.png images/mydsn-options.png images/myflowchart.png
connector-net.xml refman-common/news-connector-net.xml connector-j.xml connector-mxj.xml
extendi
ng-mysql.xml problems.xml error-handling.xml errmsgs-server.xml errmsgs-client.xml
refman-common/credits.xml news.xml refman-common/news-4.1.xml refman-common/news-4.0.xml
refman-common/news-3.23.xml refman-common/news-innodb.xml refman-common/news-cluster.xml
refman-common/news-myodbc.xml porting.xml refman-common/environment-variables.xml
regexp.xml limits.xml restrictions.xml refman-common/gpl-license.xml
refman-common/mysql-floss-license-exception.xml
+MANUAL_SRCS = manual.xml preface.xml introduction.xml
refman-common/manual-conventions.xml refman-common/what-is-mysql-ab.xml
refman-common/what-is.xml refman-common/maxdb.xml refman-common/information-sources.xml
installing.xml tutorial.xml using-mysql-programs.xml mysql-database-administration.xml
replication.xml mysql-optimization.xml client-side-scripts.xml language-structure.xml
reservedwords.xml charset.xml column-types.xml functions.xml sql-syntax.xml
storage-engines.xml innodb.xml ndbcluster.xml images/cluster-components-1.png
images/multi-comp-1.png spatial-extensions-in-mysql.xml mysql-apis.xml
mysql-connectors.xml connector-odbc.xml images/myarchitecture.png images/mydsn-icon.png
images/mydsn.png images/mydsn-setup.png images/mydsn-example.png
images/mydsn-test-success.png images/mydsn-test-fail.png images/mydsn-options.png
images/mydsn-icon.png images/mydsn.png images/mydsn-trace.png images/myaccess.png
images/myaccess-odbc.png images/mydsn-trace.png images/mydll
-properties.png images/mydsn-options.png images/myflowchart.png connector-net.xml
refman-common/news-connector-net.xml connector-j.xml connector-mxj.xml
extending-mysql.xml problems.xml error-handling.xml errmsgs-server.xml errmsgs-client.xml
refman-common/credits.xml news.xml refman-common/news-4.1.xml refman-common/news-4.0.xml
refman-common/news-3.23.xml refman-common/news-innodb.xml refman-common/news-cluster.xml
refman-common/news-myodbc.xml porting.xml refman-common/environment-variables.xml
regexp.xml limits.xml restrictions.xml refman-common/gpl-license.xml
refman-common/mysql-floss-license-exception.xml
manual-prepped.xml: $(MANUAL_SRCS)
manual-manprepped.xml: $(MANUAL_SRCS)
--- 1.33/refman-4.1/introduction.xml 2005-08-29 03:56:42 +10:00
+++ 1.34/refman-4.1/introduction.xml 2005-08-31 17:17:54 +10:00
@@ -6,12 +6,12 @@
%fixedchars.entities;
<!ENTITY % title.entities SYSTEM "refman-common/titles.ent">
%title.entities;
- <!ENTITY % versions.entities SYSTEM "versions.ent">
+ <!ENTITY % versions.entities SYSTEM "versions.ent">
%versions.entities;
]>
-<chapter id="introduction">
+<chapter id='introduction'>
- <title id="title-introduction">&title-introduction;</title>
+ <title id='title-introduction'>&title-introduction;</title>
<indexterm type="concept">
<primary>overview</primary>
@@ -21,10 +21,6 @@
<primary>general information</primary>
</indexterm>
- <remark role="todo">
- change this to a Registered symbol
- </remark>
-
<para>
The MySQL® software delivers a very fast, multi-threaded,
multi-user, and robust SQL (Structured Query Language) database
@@ -71,13 +67,17 @@
</listitem>
<!--
-
-<remark role="todo">Uncomment following section when we figure out where the
- link should point to.</remark>
- <listitem><para>
- For information about upgrading from a Version 4.1 release, see
- <xref linkend="upgrading-from-4-1"/>.
- </para></listitem>
+ <listitem>
+ <remark role="todo">
+ [js] Replace the following internal reference with a link, and
+ uncomment.
+ </remark>
+
+ <para>
+ For information about upgrading from a Version 4.1 release, see
+ <xref linkend="upgrading-from-4-1"/>.
+ </para>
+ </listitem>
-->
<listitem>
@@ -118,7 +118,7 @@
<listitem>
<para>
- For a list of currently known bugs and misfeatures, see
+ For a list of current known bugs and misfeatures, see
<xref linkend="bugs"/>.
</para>
</listitem>
@@ -187,12 +187,12 @@
<para>
This is the Reference Manual for all releases of the MySQL
- Database System through Version ¤t-version;. It is
- applicable for older versions of the MySQL software (such as 3.23
- or 4.0-production) because functional changes are indicated with
- reference to a version number.
+ Database System through Version ¤t-version;. It is also
+ applicable for versions of the MySQL software previous to
+ ¤t-series; (such as 3.23 or 4.0) because functional changes
+ are indicated with reference to version numbers.
- <remark>
+ <remark role="todo">
Update following as appropriate.
</remark>
@@ -224,10 +224,6 @@
<primary>Texinfo</primary>
</indexterm>
- <remark>
- Next paragraph needs to be updated.
- </remark>
-
<para>
The primary document is a set of
<ulink url="http://docbook.org/">DocBook</ulink> XML files. The
@@ -236,7 +232,7 @@
<ulink
url="http://docbook.sourceforge.net/release/xsl/current/doc/reference.html">DocBook
XSL stylesheets</ulink>.
- <remark>
+ <remark role="todo">
[SH] We might want to add details about creating CHM, PDF, INFO,
...
</remark>
@@ -248,8 +244,8 @@
<email>docs@stripped</email>.
</para>
- <remark>
- Next paragraph needs to be updated.
+ <remark role="todo">
+ Update following as appropriate.
</remark>
<para>
@@ -270,2334 +266,48 @@
</section>
- <section id="manual-conventions">
-
- <title
id="title-manual-conventions">&title-manual-conventions;</title>
-
- <remark role="todo">
- After conversion to DocBook, we'll be able to incorporate the
- </remark>
-
- <remark>
- &lt;userinput&gt; tag. Uncomment the item below that
- </remark>
-
- <remark>
- refers to the bold constant convention. Change it
- </remark>
-
- <remark>
- to &lt;userinput&gt;.
- </remark>
-
- <para>
- This manual uses certain typographical conventions:
- </para>
-
- <indexterm type="concept">
- <primary>manual</primary>
- <secondary>typographical conventions</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>typographical conventions</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>conventions</primary>
- <secondary>typographical</secondary>
- </indexterm>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <literal>Text in this style</literal> is used for SQL
- statements; database, table, and column names; C and Perl
- code; and environment variables. Example: <quote>To reload the
- grant tables, use the <literal>FLUSH PRIVILEGES</literal>
- statement.</quote>
- </para>
-
- <remark>
- @item
- </remark>
-
- <remark>
- @strong{@code{Text in this style}} is used to indicate input
- </remark>
-
- <remark>
- that you type in examples.
- </remark>
- </listitem>
-
- <listitem>
- <para>
- <replaceable>Text in this style</replaceable> is used for
- variable input for which you should substitute a value of your
- own choosing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Filenames and directory names are written like this:
- <quote>The global <filename>my.cnf</filename> file is located
- in the <filename>/etc</filename> directory.</quote>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Character sequences are written like this: <quote>To specify a
- wildcard, use the ‘<literal>%</literal>’
- character.</quote>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis>Text in this style</emphasis> is used for emphasis.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis role="bold">Text in this style</emphasis> is used in
- table headings and to convey especially strong emphasis.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- When commands are shown that are meant to be executed from within
- a particular program, the program is indicated by a prompt shown
- before the command. For example, <literal>shell></literal>
- indicates a command that you execute from your login shell, and
- <literal>mysql></literal> indicates a statement that you
- execute from the <command>mysql</command> client program:
- </para>
-
-<programlisting>
-shell> <userinput>type a shell command here</userinput>
-mysql> <userinput>type a mysql statement here</userinput>
-</programlisting>
-
- <para>
- The <quote>shell</quote> is your command interpreter. On Unix,
- this is typically a program such as <command>sh</command> or
- <command>csh</command>. On Windows, the equivalent program is
- <command>command.com</command> or
<command>cmd.exe</command>,
- typically run in a console window.
- </para>
-
- <para>
- When you enter a command or statement shown in an example, do not
- type the prompt shown in the example.
- </para>
-
- <para>
- Database, table, and column names must often be substituted into
- statements. To indicate that such substitution is necessary, this
- manual uses <replaceable>db_name</replaceable>,
- <replaceable>tbl_name</replaceable>, and
- <replaceable>col_name</replaceable>. For example, you might see a
- statement like this:
- </para>
-
-<programlisting>
-mysql> <userinput>SELECT <replaceable>col_name</replaceable>
FROM
<replaceable>db_name</replaceable>.<replaceable>tbl_name</replaceable>;</userinput>
-</programlisting>
-
- <para>
- This means that if you were to enter a similar statement, you
- would supply your own database, table, and column names, perhaps
- like this:
- </para>
-
-<programlisting>
-mysql> <userinput>SELECT author_name FROM
biblio_db.author_list;</userinput>
-</programlisting>
-
- <para>
- SQL keywords are not case sensitive and may be written in
- uppercase or lowercase. This manual uses uppercase.
- </para>
-
- <para>
- In syntax descriptions, square brackets
- (‘<literal>[</literal>’ and
- ‘<literal>]</literal>’) are used to indicate
optional
- words or clauses. For example, in the following statement,
- <literal>IF EXISTS</literal> is optional:
- </para>
-
-<programlisting>
-DROP TABLE [IF EXISTS] <replaceable>tbl_name</replaceable>
-</programlisting>
-
- <para>
- When a syntax element consists of a number of alternatives, the
- alternatives are separated by vertical bars
- (‘<literal>|</literal>’). When one member from a
set
- of choices <emphasis>may</emphasis> be chosen, the alternatives
- are listed within square brackets
- (‘<literal>[</literal>’ and
- ‘<literal>]</literal>’):
- </para>
-
-<programlisting>
-TRIM([[BOTH | LEADING | TRAILING] [<replaceable>remstr</replaceable>] FROM]
<replaceable>str</replaceable>)
-</programlisting>
-
- <para>
- When one member from a set of choices <emphasis>must</emphasis> be
- chosen, the alternatives are listed within braces
- (‘<literal>{</literal>’ and
- ‘<literal>}</literal>’):
- </para>
-
-<programlisting>
-{DESCRIBE | DESC} <replaceable>tbl_name</replaceable>
[<replaceable>col_name</replaceable> |
<replaceable>wild</replaceable>]
-</programlisting>
-
- <para>
- An ellipsis (<literal>...</literal>) indicates the omission of a
- section of a statement, typically to provide a shorter version of
- more complex syntax. For example, <literal>INSERT ...
- SELECT</literal> is shorthand for the form of
- <literal>INSERT</literal> statement that is followed by a
- <literal>SELECT</literal> statement.
- </para>
-
- <para>
- An ellipsis can also indicate that the preceding syntax element of
- a statement may be repeated. In the following example, multiple
- <replaceable>reset_option</replaceable> values may be given, with
- each of those after the first preceded by commas:
- </para>
-
-<programlisting>
-RESET <replaceable>reset_option</replaceable>
[,<replaceable>reset_option</replaceable>] ...
-</programlisting>
-
- <para>
- Commands for setting shell variables are shown using Bourne shell
- syntax. For example, the sequence to set an environment variable
- and run a command looks like this in Bourne shell syntax:
- </para>
-
-<programlisting>
-shell>
<userinput><replaceable>VARNAME</replaceable>=<replaceable>value</replaceable>
<replaceable>some_command</replaceable></userinput>
-</programlisting>
-
- <indexterm type="concept">
- <primary>shell syntax</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>command syntax</primary>
- </indexterm>
-
- <para>
- If you are using <command>csh</command> or
- <command>tcsh</command>, you must issue commands somewhat
- differently. You would execute the sequence just shown like this:
- </para>
-
-<programlisting>
-shell> <userinput>setenv <replaceable>VARNAME</replaceable>
<replaceable>value</replaceable></userinput>
-shell>
<userinput><replaceable>some_command</replaceable></userinput>
-</programlisting>
-
- </section>
-
- <section id="what-is-mysql-ab">
-
- <title id="title-what-is-mysql-ab">&title-what-is-mysql-ab;</title>
-
- <indexterm type="concept">
- <primary>MySQL AB</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- <para>
- MySQL AB is the company of the MySQL founders and main developers.
- MySQL AB was originally established in Sweden by David Axmark,
- Allan Larsson, and Michael <quote>Monty</quote> Widenius.
- </para>
-
- <para>
- We are dedicated to developing the MySQL database software and
- promoting it to new users. MySQL AB owns the copyright to the
- MySQL source code, the MySQL logo and (registered) trademark, and
- this manual. See <xref linkend="what-is"/>.
- </para>
-
- <para>
- The MySQL core values show our dedication to MySQL and Open
- Source.
- </para>
-
- <para>
- These core values direct how MySQL AB works with the MySQL server
- software:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- To be the best and the most widely used database in the world
- </para>
- </listitem>
-
- <listitem>
- <para>
- To be available and affordable by all
- </para>
- </listitem>
-
- <listitem>
- <para>
- To be easy to use
- </para>
- </listitem>
-
- <listitem>
- <para>
- To be continuously improved while remaining fast and safe
- </para>
- </listitem>
-
- <listitem>
- <para>
- To be fun to use and improve
- </para>
- </listitem>
-
- <listitem>
- <para>
- To be free from bugs
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- These are the core values of the company MySQL AB and its
- employees:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- We subscribe to the Open Source philosophy and support the
- Open Source community
- </para>
- </listitem>
-
- <listitem>
- <para>
- We aim to be good citizens
- </para>
- </listitem>
-
- <listitem>
- <para>
- We prefer partners that share our values and mindset
- </para>
- </listitem>
-
- <listitem>
- <para>
- We answer email and provide support
- </para>
- </listitem>
-
- <listitem>
- <para>
- We are a virtual company, networking with others
- </para>
- </listitem>
-
- <listitem>
- <para>
- We work against software patents
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The MySQL Web site (<ulink url="http://www.mysql.com/"/>) provides
- the latest information about MySQL and MySQL AB.
- </para>
-
- <para>
- By the way, the <quote>AB</quote> part of the company name is the
- acronym for the Swedish <quote>aktiebolag,</quote> or
<quote>stock
- company.</quote> It translates to <quote>MySQL, Inc.</quote> In
- fact, MySQL, Inc. and MySQL GmbH are examples of MySQL AB
- subsidiaries. They are located in the US and Germany,
- respectively.
- </para>
-
- </section>
-
- <section id="what-is">
-
- <title id="title-what-is">&title-what-is;</title>
-
- <indexterm type="concept">
- <primary>MySQL</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>MySQL</primary>
- <secondary>introduction</secondary>
- </indexterm>
-
- <para>
- MySQL, the most popular Open Source SQL database management
- system, is developed, distributed, and supported by MySQL AB.
- MySQL AB is a commercial company, founded by the MySQL developers.
- It is a second generation Open Source company that unites Open
- Source values and methodology with a successful business model.
- </para>
-
- <para>
- The MySQL Web site (<ulink url="http://www.mysql.com/"/>) provides
- the latest information about MySQL software and MySQL AB.
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- MySQL is a database management system.
- </para>
-
- <para>
- A database is a structured collection of data. It may be
- anything from a simple shopping list to a picture gallery or
- the vast amounts of information in a corporate network. To
- add, access, and process data stored in a computer database,
- you need a database management system such as MySQL Server.
- Since computers are very good at handling large amounts of
- data, database management systems play a central role in
- computing, as standalone utilities or as parts of other
- applications.
- </para>
- </listitem>
-
- <listitem>
- <para>
- MySQL is a relational database management system.
- </para>
-
- <para>
- <indexterm type="concept">
- <primary>databases</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- A relational database stores data in separate tables rather
- than putting all the data in one big storeroom. This adds
- speed and flexibility. The SQL part of <quote>MySQL</quote>
- stands for <quote>Structured Query Language.</quote> SQL is
- the most common standardized language used to access databases
- and is defined by the ANSI/ISO SQL Standard. The SQL standard
- has been evolving since 1986 and several versions exist. In
- this manual, <quote>SQL-92</quote> refers to the standard
- released in 1992, <quote>SQL:1999</quote> refers to the
- standard released in 1999, and <quote>SQL:2003</quote> refers
- to the current version of the standard. We use the phrase
- <quote>the SQL standard</quote> to mean the current version of
- the SQL Standard at any time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- MySQL software is Open Source.
- </para>
-
- <para>
- <indexterm type="concept">
- <primary>relational databases</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>SQL</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>Open Source</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>General Public License</primary>
- </indexterm>
-
- Open Source means that it is possible for anyone to use and
- modify the software. Anybody can download the MySQL software
- from the Internet and use it without paying anything. If you
- wish, you may study the source code and change it to suit your
- needs. The MySQL software uses the GPL (GNU General Public
- License), <ulink url="http://www.fsf.org/licenses/"/>, to
- define what you may and may not do with the software in
- different situations. If you feel uncomfortable with the GPL
- or need to embed MySQL code into a commercial application, you
- can buy a commercially licensed version from us. See the MySQL
- Licensing Overview for more information
- (<ulink url="http://www.mysql.com/company/legal/licensing/"/>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- The MySQL Database Server is very fast, reliable, and easy to
- use.
- </para>
-
- <para>
- If that is what you are looking for, you should give it a try.
- MySQL Server also has a practical set of features developed in
- close cooperation with our users. You can find a performance
- comparison of MySQL Server with other database managers on our
- benchmark page. See <xref linkend="mysql-benchmarks"/>.
- </para>
-
- <para>
- MySQL Server was originally developed to handle large
- databases much faster than existing solutions and has been
- successfully used in highly demanding production environments
- for several years. Although under constant development, MySQL
- Server today offers a rich and useful set of functions. Its
- connectivity, speed, and security make MySQL Server highly
- suited for accessing databases on the Internet.
- </para>
- </listitem>
-
- <listitem>
- <para>
- MySQL Server works in client/server or embedded systems.
- </para>
-
- <para>
- The MySQL Database Software is a client/server system that
- consists of a multi-threaded SQL server that supports
- different backends, several different client programs and
- libraries, administrative tools, and a wide range of
- application programming interfaces (APIs).
- </para>
-
- <para>
- We also provide MySQL Server as an embedded multi-threaded
- library that you can link into your application to get a
- smaller, faster, easier-to-manage product.
- </para>
- </listitem>
-
- <listitem>
- <para>
- A large amount of contributed MySQL software is available.
- </para>
-
- <para>
- It is very likely that your favorite application or language
- supports the MySQL Database Server.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <indexterm type="concept">
- <primary>pronunciation</primary>
- <secondary>MySQL</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>MySQL</primary>
- <secondary>pronunciation</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>goals of MySQL</primary>
- </indexterm>
-
- <para>
- The official way to pronounce <quote>MySQL</quote> is <quote>My
- Ess Que Ell</quote> (not <quote>my sequel</quote>), but we don't
- mind if you pronounce it as <quote>my sequel</quote> or in some
- other localized way.
- </para>
-
- <section id="history">
-
- <title id="title-history">&title-history;</title>
-
- <indexterm type="concept">
- <primary>MySQL history</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>history of MySQL</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>MySQL name</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>My</primary>
- <secondary>derivation</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>MySQL Dolphin name</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>Sakila</primary>
- </indexterm>
-
- <para>
- We started out with the intention of using
- <literal>mSQL</literal> to connect to our tables using our own
- fast low-level (ISAM) routines. However, after some testing, we
- came to the conclusion that <literal>mSQL</literal> was not fast
- enough or flexible enough for our needs. This resulted in a new
- SQL interface to our database but with almost the same API
- interface as <literal>mSQL</literal>. This API was designed to
- allow third-party code that was written for use with
- <literal>mSQL</literal> to be ported easily for use with MySQL.
- </para>
-
- <para>
- The derivation of the name MySQL is not clear. Our base
- directory and a large number of our libraries and tools have had
- the prefix <quote>my</quote> for well over 10 years. However,
- co-founder Monty Widenius's daughter is also named My. Which of
- the two gave its name to MySQL is still a mystery, even for us.
- </para>
-
- <para>
- The name of the MySQL Dolphin (our logo) is
- <quote>Sakila,</quote> which was chosen by the founders of MySQL
- AB from a huge list of names suggested by users in our
- <quote>Name the Dolphin</quote> contest. The winning name was
- submitted by Ambrose Twebaze, an Open Source software developer
- from Swaziland, Africa. According to Ambrose, the feminine name
- Sakila has its roots in SiSwati, the local language of
- Swaziland. Sakila is also the name of a town in Arusha,
- Tanzania, near Ambrose's country of origin, Uganda.
- </para>
-
- </section>
-
- <section id="features">
-
- <title id="title-features">&title-features;</title>
-
- <indexterm type="concept">
- <primary>main features of MySQL</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>features of MySQL</primary>
- </indexterm>
-
- <para>
- The following list describes some of the important
- characteristics of the MySQL Database Software. See also
- <xref linkend="roadmap"/> for more information about current and
- upcoming features.
- </para>
-
- <remark>
- This list is too technical and should be divided into one
- feature
- </remark>
-
- <remark>
- list comparable to commercial competition and a very technical
- on
- </remark>
-
- <remark>
- with max limits (from crash-me) and so on.
- </remark>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Internals and Portability
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Written in C and C++.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tested with a broad range of different compilers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Works on many different platforms. See
- <xref linkend="which-os"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Uses GNU Automake, Autoconf, and Libtool for
- portability.
- </para>
- </listitem>
-
- <listitem>
- <para>
- APIs for C, C++, Eiffel, Java, Perl, PHP, Python, Ruby,
- and Tcl are available. See <xref linkend="mysql-apis"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fully multi-threaded using kernel threads. It can easily
- use multiple CPUs if they are available.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provides transactional and non-transactional storage
- engines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Uses very fast B-tree disk tables
- (<literal>MyISAM</literal>) with index compression.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Relatively easy to add another storage engine. This is
- useful if you want to add an SQL interface to an
- in-house database.
- </para>
- </listitem>
-
- <listitem>
- <para>
- A very fast thread-based memory allocation system.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Very fast joins using an optimized one-sweep multi-join.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In-memory hash tables, which are used as temporary
- tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- SQL functions are implemented using a highly optimized
- class library and should be as fast as possible. Usually
- there is no memory allocation at all after query
- initialization.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The MySQL code is tested with Purify (a commercial
- memory leakage detector) as well as with Valgrind, a GPL
- tool
- (<ulink url="http://developer.kde.org/~sewardj/"/>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- The server is available as a separate program for use in
- a client/server networked environment. It is also
- available as a library that can be embedded (linked)
- into standalone applications. Such applications can be
- used in isolation or in environments where no network is
- available.
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- Column Types
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Many column types: signed/unsigned integers 1, 2, 3, 4,
- and 8 bytes long, <literal>FLOAT</literal>,
- <literal>DOUBLE</literal>,
<literal>CHAR</literal>,
- <literal>VARCHAR</literal>,
<literal>TEXT</literal>,
- <literal>BLOB</literal>, <literal>DATE</literal>,
- <literal>TIME</literal>,
<literal>DATETIME</literal>,
- <literal>TIMESTAMP</literal>,
<literal>YEAR</literal>,
- <literal>SET</literal>, <literal>ENUM</literal>,
and
- OpenGIS spatial types. See
- <xref linkend="column-types"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed-length and variable-length records.
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- Statements and Functions
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Full operator and function support in the
- <literal>SELECT</literal> and
<literal>WHERE</literal>
- clauses of queries. For example:
- </para>
-
-<programlisting>
-mysql> <userinput>SELECT CONCAT(first_name, ' ',
last_name)</userinput>
- -> <userinput>FROM citizen</userinput>
- -> <userinput>WHERE income/dependents > 10000 AND age >
30;</userinput>
-</programlisting>
- </listitem>
-
- <listitem>
- <para>
- Full support for SQL <literal>GROUP BY</literal> and
- <literal>ORDER BY</literal> clauses. Support for group
- functions (<literal>COUNT()</literal>,
- <literal>COUNT(DISTINCT ...)</literal>,
- <literal>AVG()</literal>,
<literal>STD()</literal>,
- <literal>SUM()</literal>,
<literal>MAX()</literal>,
- <literal>MIN()</literal>, and
- <literal>GROUP_CONCAT()</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support for <literal>LEFT OUTER JOIN</literal> and
- <literal>RIGHT OUTER JOIN</literal> with both standard
- SQL and ODBC syntax.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support for aliases on tables and columns as required by
- standard SQL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DELETE</literal>,
<literal>INSERT</literal>,
- <literal>REPLACE</literal>, and
- <literal>UPDATE</literal> return the number of rows that
- were changed (affected). It is possible to return the
- number of rows matched instead by setting a flag when
- connecting to the server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The MySQL-specific <literal>SHOW</literal> command can
- be used to retrieve information about databases,
- database engines, tables, and indexes. The
- <literal>EXPLAIN</literal> command can be used to
- determine how the optimizer resolves a query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Function names do not clash with table or column names.
- For example, <literal>ABS</literal> is a valid column
- name. The only restriction is that for a function call,
- no spaces are allowed between the function name and the
- ‘<literal>(</literal>’ that follows it.
See
- <xref linkend="reserved-words"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- You can mix tables from different databases in the same
- query (as of MySQL 3.22).
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- Security
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- A privilege and password system that is very flexible
- and secure, and that allows host-based verification.
- Passwords are secure because all password traffic is
- encrypted when you connect to a server.
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- Scalability and Limits
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Handles large databases. We use MySQL Server with
- databases that contain 50 million records. We also know
- of users who use MySQL Server with 60,000 tables and
- about 5,000,000,000 rows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Up to 64 indexes per table are allowed (32 before MySQL
- 4.1.2). Each index may consist of 1 to 16 columns or
- parts of columns. The maximum index width is 1000 bytes
- (500 before MySQL 4.1.2). An index may use a prefix of a
- column for <literal>CHAR</literal>,
- <literal>VARCHAR</literal>,
<literal>BLOB</literal>, or
- <literal>TEXT</literal> column types.
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- Connectivity
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Clients can connect to the MySQL server using TCP/IP
- sockets on any platform. On Windows systems in the NT
- family (NT, 2000, XP, or 2003), clients can connect
- using named pipes. On Unix systems, clients can connect
- using Unix domain socket files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MySQL 4.1 and higher, Windows servers also support
- shared-memory connections if started with the
- <option>--shared-memory</option> option. Clients can
- connect through shared memory by using the
- <option>--protocol=memory</option> option.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The Connector/ODBC (MyODBC) interface provides MySQL
- support for client programs that use ODBC (Open Database
- Connectivity) connections. For example, you can use MS
- Access to connect to your MySQL server. Clients can be
- run on Windows or Unix. MyODBC source is available. All
- ODBC 2.5 functions are supported, as are many others.
- See <xref linkend="mysql-connectors"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The Connector/J interface provides MySQL support for
- Java client programs that use JDBC connections. Clients
- can be run on Windows or Unix. Connector/J source is
- available. See <xref linkend="mysql-connectors"/>.
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- Localization
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- The server can provide error messages to clients in many
- languages. See <xref linkend="languages"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Full support for several different character sets,
- including <literal>latin1</literal> (cp1252),
- <literal>german</literal>,
<literal>big5</literal>,
- <literal>ujis</literal>, and more. For example, the
- Scandinavian characters
- ‘<literal>â</literal>’,
- ‘<literal>ä</literal>’ and
- ‘<literal>ö</literal>’ are allowed
in table
- and column names. Unicode support is available as of
- MySQL 4.1.
- </para>
- </listitem>
-
- <listitem>
- <para>
- All data is saved in the chosen character set. All
- comparisons for normal string columns are
- case-insensitive.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sorting is done according to the chosen character set
- (using Swedish collation by default). It is possible to
- change this when the MySQL server is started. To see an
- example of very advanced sorting, look at the Czech
- sorting code. MySQL Server supports many different
- character sets that can be specified at compile time and
- runtime.
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- Clients and Tools
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- The MySQL server has built-in support for SQL statements
- to check, optimize, and repair tables. These statements
- are available from the command line through the
- <command>mysqlcheck</command> client. MySQL also
- includes <command>myisamchk</command>, a very fast
- command-line utility for performing these operations on
- <literal>MyISAM</literal> tables. See
- <xref linkend="mysql-database-administration"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- All MySQL programs can be invoked with the
- <option>--help</option> or <option>-?</option>
options
- to obtain online assistance.
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="stability">
-
- <title id="title-stability">&title-stability;</title>
-
- <indexterm type="concept">
- <primary>stability</primary>
- </indexterm>
-
- <para>
- This section addresses the questions, <quote><emphasis>How
- stable is MySQL Server?</emphasis></quote> and,
- <quote><emphasis>Can I depend on MySQL Server in this
- project?</emphasis></quote> We will try to clarify these issues
- and answer some important questions that concern many potential
- users. The information in this section is based on data gathered
- from the mailing lists, which are very active in identifying
- problems as well as reporting types of use.
- </para>
-
- <para>
- The original code stems back to the early 1980s. It provides a
- stable code base, and the <literal>ISAM</literal> table format
- used by the original storage engine remains backward-compatible.
- At TcX, the predecessor of MySQL AB, MySQL code has worked in
- projects since mid-1996, without any problems. When the MySQL
- Database Software initially was released to a wider public, our
- new users quickly found some pieces of untested code. Each new
- release since then has had fewer portability problems, even
- though each new release has also had many new features.
- </para>
-
- <para>
- Each release of the MySQL Server has been usable. Problems have
- occurred only when users try code from the <quote>gray
- zones.</quote> Naturally, new users don't know what the gray
- zones are; this section therefore attempts to document those
- areas that are currently known. The descriptions mostly deal
- with Version 3.23, 4.0 and 4.1 of MySQL Server. All known and
- reported bugs are fixed in the latest version, with the
- exception of those listed in the bugs section, which are
- design-related. See <xref linkend="bugs"/>.
- </para>
-
- <para>
- The MySQL Server design is multi-layered with independent
- modules. Some of the newer modules are listed here with an
- indication of how well-tested each of them is:
- </para>
-
- <indexterm type="concept">
- <primary>modules</primary>
- <secondary>list of</secondary>
- </indexterm>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Replication (Stable)
- </para>
-
- <para>
- Large groups of servers using replication are in production
- use, with good results. Work on enhanced replication
- features is continuing in MySQL 5.x.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>InnoDB</literal> tables (Stable)
- </para>
-
- <para>
- The <literal>InnoDB</literal> transactional storage engine
- has been declared stable in the MySQL 3.23 tree, starting
- from version 3.23.49. <literal>InnoDB</literal> is being
- used in large, heavy-load production systems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>BDB</literal> tables (Stable)
- </para>
-
- <para>
- The <literal>Berkeley DB</literal> code is very stable, but
- we are still improving the <literal>BDB</literal>
- transactional storage engine interface in MySQL Server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Full-text searches (Stable)
- </para>
-
- <para>
- Full-text searching is widely used. Important feature
- enhancements were added in MySQL 4.0 and 4.1.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>MyODBC</literal> 3.51 (Stable)
- </para>
-
- <para>
- <literal>MyODBC</literal> 3.51 uses ODBC SDK 3.51 and is in
- wide production use. Some issues brought up appear to be
- application-related and independent of the ODBC driver or
- underlying database server.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="table-size">
-
- <title id="title-table-size">&title-table-size;</title>
-
- <remark role="todo">
- move to MyISAM storage engine section, replace with
- </remark>
-
- <remark>
- more general "limits" section.
- </remark>
-
- <indexterm type="concept">
- <primary>tables</primary>
- <secondary>maximum size</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>size of tables</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>operating systems</primary>
- <secondary>file-size limits</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>limits</primary>
- <secondary>file-size</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>files</primary>
- <secondary>size limits</secondary>
- </indexterm>
-
- <para>
- MySQL 3.22 had a 4GB (4 gigabyte) limit on table size. With the
- <literal>MyISAM</literal> storage engine in MySQL 3.23, the
- maximum table size was increased to 65536 terabytes
- (256<superscript>7</superscript> − 1 bytes). With this
- larger allowed table size, the maximum effective table size for
- MySQL databases is usually determined by operating system
- constraints on file sizes, not by MySQL internal limits.
- </para>
-
- <para>
- The <literal>InnoDB</literal> storage engine maintains
- <literal>InnoDB</literal> tables within a tablespace that can be
- created from several files. This allows a table to exceed the
- maximum individual file size. The tablespace can include raw
- disk partitions, which allows extremely large tables. The
- maximum tablespace size is 64TB.
- </para>
-
- <para>
- The following table lists some examples of operating system
- file-size limits. This is only a rough guide and is not intended
- to be definitive. For the most up-to-date information, be sure
- to check the documentation specific to your operating system.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <colspec colwidth="30*"/>
- <colspec colwidth="50*"/>
- <tbody>
- <row>
- <entry><emphasis role="bold">Operating
System</emphasis></entry>
- <entry><emphasis role="bold">File-size
Limit</emphasis></entry>
- </row>
- <row>
- <entry>Linux 2.2-Intel 32-bit</entry>
- <entry>2GB (LFS: 4GB)</entry>
- </row>
- <row>
- <entry>Linux 2.4</entry>
- <entry>(using ext3 filesystem) 4TB</entry>
- </row>
- <row>
- <entry>Solaris 9/10</entry>
- <entry>16TB</entry>
- </row>
- <row>
- <entry>NetWare w/NSS filesystem</entry>
- <entry>8TB</entry>
- </row>
- <row>
- <entry>win32 w/ FAT/FAT32</entry>
- <entry>2GB/4GB</entry>
- </row>
- <row>
- <entry>win32 w/ NTFS</entry>
- <entry>2TB (possibly larger)</entry>
- </row>
- <row>
- <entry>MacOS X w/ HFS+</entry>
- <entry>2TB</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- On Linux 2.2, you can get <literal>MyISAM</literal> tables
- larger than 2GB in size by using the Large File Support (LFS)
- patch for the ext2 filesystem. On Linux 2.4, patches also exist
- for ReiserFS to get support for big files (up to 2TB). Most
- current Linux distributions are based on kernel 2.4 and include
- all the required LFS patches. With JFS and XFS, petabyte and
- larger files are possible on Linux. However, the maximum
- available file size still depends on several factors, one of
- them being the filesystem used to store MySQL tables.
- </para>
-
- <para>
- For a detailed overview about LFS in Linux, have a look at
- Andreas Jaeger's <citetitle>Large File Support in
- Linux</citetitle> page at
- <ulink url="http://www.suse.de/~aj/linux_lfs.html"/>.
- </para>
-
- <para>
- Windows users please note: FAT and VFAT (FAT32) are
- <emphasis role="bold">not</emphasis> considered suitable for
- production use with MySQL. Use NTFS instead.
- </para>
-
- <para>
- By default, MySQL creates <literal>MyISAM</literal> tables with
- an internal structure that allows a maximum size of about 4GB.
- You can check the maximum table size for a table with the
- <literal>SHOW TABLE STATUS</literal> statement or with
- <command>myisamchk -dv
- <replaceable>tbl_name</replaceable></command>. See
- <xref linkend="show"/>.
- </para>
-
- <para>
- If you need a <literal>MyISAM</literal> table that is larger
- than 4GB in size (and your operating system supports large
- files), the <literal>CREATE TABLE</literal> statement allows
- <literal>AVG_ROW_LENGTH</literal> and
- <literal>MAX_ROWS</literal> options. See
- <xref linkend="create-table"/>. You can also change these
- options with <literal>ALTER TABLE</literal> after the table has
- been created, to increase the table's maximum allowable size.
- See <xref linkend="alter-table"/>.
- </para>
-
- <para>
- Other ways to work around file-size limits for
- <literal>MyISAM</literal> tables are as follows:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- If your large table is read-only, you can use
- <command>myisampack</command> to compress it.
- <command>myisampack</command> usually compresses a table by
- at least 50%, so you can have, in effect, much bigger
- tables. <command>myisampack</command> also can merge
- multiple tables into a single table. See
- <xref linkend="myisampack"/>.
- </para>
-
- <remark>
- @item
- </remark>
-
- <remark>
- Another way to get around the operating system file limit
- for @code{MyISAM}
- </remark>
-
- <remark>
- data files is by using the @code{RAID} options.
- </remark>
-
- <remark>
- @xref{CREATE TABLE, , @code{CREATE TABLE}}.
- </remark>
- </listitem>
-
- <listitem>
- <para>
- MySQL includes a <literal>MERGE</literal> library that
- allows you to handle a collection of
- <literal>MyISAM</literal> tables that have identical
- structure as a single <literal>MERGE</literal> table. See
- <xref linkend="merge-storage-engine"/>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="year-2000-compliance">
-
- <title
id="title-year-2000-compliance">&title-year-2000-compliance;</title>
-
- <indexterm type="concept">
- <primary>Year 2000 compliance</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>compliance</primary>
- <secondary>Y2K</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>date functions</primary>
- <secondary>Y2K compliance</secondary>
- </indexterm>
-
- <para>
- The MySQL Server itself has no problems with Year 2000 (Y2K)
- compliance:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- MySQL Server uses Unix time functions that handle dates into
- the year <literal>2037</literal> for
- <literal>TIMESTAMP</literal> values. For
- <literal>DATE</literal> and
<literal>DATETIME</literal>
- values, dates through the year <literal>9999</literal> are
- accepted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- All MySQL date functions are implemented in one source file,
- <filename>sql/time.cc</filename>, and are coded very
- carefully to be year 2000-safe.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MySQL 3.22 and later, the <literal>YEAR</literal> column
- type can store years <literal>0</literal> and
- <literal>1901</literal> to <literal>2155</literal> in
one
- byte and display them using two or four digits. All
- two-digit years are considered to be in the range
- <literal>1970</literal> to <literal>2069</literal>,
which
- means that if you store <literal>01</literal> in a
- <literal>YEAR</literal> column, MySQL Server treats it as
- <literal>2001</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The following simple demonstration illustrates that MySQL Server
- has no problems with <literal>DATE</literal> or
- <literal>DATETIME</literal> values through the year 9999, and no
- problems with <literal>TIMESTAMP</literal> values until after
- the year 2030:
- </para>
-
-<programlisting>
-mysql> <userinput>DROP TABLE IF EXISTS y2k;</userinput>
-Query OK, 0 rows affected (0.01 sec)
-
-mysql> <userinput>CREATE TABLE y2k (date DATE,</userinput>
- -> <userinput>date_time DATETIME,</userinput>
- -> <userinput>time_stamp TIMESTAMP);</userinput>
-Query OK, 0 rows affected (0.01 sec)
-
-mysql> <userinput>INSERT INTO y2k VALUES</userinput>
- -> <userinput>('1998-12-31','1998-12-31
23:59:59',19981231235959),</userinput>
- -> <userinput>('1999-01-01','1999-01-01
00:00:00',19990101000000),</userinput>
- -> <userinput>('1999-09-09','1999-09-09
23:59:59',19990909235959),</userinput>
- -> <userinput>('2000-01-01','2000-01-01
00:00:00',20000101000000),</userinput>
- -> <userinput>('2000-02-28','2000-02-28
00:00:00',20000228000000),</userinput>
- -> <userinput>('2000-02-29','2000-02-29
00:00:00',20000229000000),</userinput>
- -> <userinput>('2000-03-01','2000-03-01
00:00:00',20000301000000),</userinput>
- -> <userinput>('2000-12-31','2000-12-31
23:59:59',20001231235959),</userinput>
- -> <userinput>('2001-01-01','2001-01-01
00:00:00',20010101000000),</userinput>
- -> <userinput>('2004-12-31','2004-12-31
23:59:59',20041231235959),</userinput>
- -> <userinput>('2005-01-01','2005-01-01
00:00:00',20050101000000),</userinput>
- -> <userinput>('2030-01-01','2030-01-01
00:00:00',20300101000000),</userinput>
- -> <userinput>('2040-01-01','2040-01-01
00:00:00',20400101000000),</userinput>
- -> <userinput>('9999-12-31','9999-12-31
23:59:59',99991231235959);</userinput>
-Query OK, 14 rows affected (0.01 sec)
-Records: 14 Duplicates: 0 Warnings: 2
-
-mysql> <userinput>SELECT * FROM y2k;</userinput>
-+------------+---------------------+----------------+
-| date | date_time | time_stamp |
-+------------+---------------------+----------------+
-| 1998-12-31 | 1998-12-31 23:59:59 | 19981231235959 |
-| 1999-01-01 | 1999-01-01 00:00:00 | 19990101000000 |
-| 1999-09-09 | 1999-09-09 23:59:59 | 19990909235959 |
-| 2000-01-01 | 2000-01-01 00:00:00 | 20000101000000 |
-| 2000-02-28 | 2000-02-28 00:00:00 | 20000228000000 |
-| 2000-02-29 | 2000-02-29 00:00:00 | 20000229000000 |
-| 2000-03-01 | 2000-03-01 00:00:00 | 20000301000000 |
-| 2000-12-31 | 2000-12-31 23:59:59 | 20001231235959 |
-| 2001-01-01 | 2001-01-01 00:00:00 | 20010101000000 |
-| 2004-12-31 | 2004-12-31 23:59:59 | 20041231235959 |
-| 2005-01-01 | 2005-01-01 00:00:00 | 20050101000000 |
-| 2030-01-01 | 2030-01-01 00:00:00 | 20300101000000 |
-| 2040-01-01 | 2040-01-01 00:00:00 | 00000000000000 |
-| 9999-12-31 | 9999-12-31 23:59:59 | 00000000000000 |
-+------------+---------------------+----------------+
-14 rows in set (0.00 sec)
-</programlisting>
-
- <para>
- The final two <literal>TIMESTAMP</literal> column values are
- zero because the year values (<literal>2040</literal>,
- <literal>9999</literal>) exceed the
<literal>TIMESTAMP</literal>
- maximum. The <literal>TIMESTAMP</literal> data type, which is
- used to store the current time, supports values that range from
- <literal>19700101000000</literal> to
- <literal>20300101000000</literal> on 32-bit machines (signed
- value). On 64-bit machines, <literal>TIMESTAMP</literal> handles
- values up to <literal>2106</literal> (unsigned value).
- </para>
-
- <para>
- Although MySQL Server itself is Y2K-safe, you may run into
- problems if you use it with applications that are not Y2K-safe.
- For example, many old applications store or manipulate years
- using two-digit values (which are ambiguous) rather than
- four-digit values. This problem may be compounded by
- applications that use values such as <literal>00</literal> or
- <literal>99</literal> as <quote>missing</quote> value
- indicators. Unfortunately, these problems may be difficult to
- fix because different applications may be written by different
- programmers, each of whom may use a different set of conventions
- and date-handling functions.
- </para>
-
- <para>
- Thus, even though MySQL Server has no Y2K problems, it is the
- application's responsibility to provide unambiguous input. See
- <xref linkend="y2k-issues"/> for MySQL Server's rules for
- dealing with ambiguous date input data that contains two-digit
- year values.
- </para>
-
- </section>
-
- </section>
-
- <section id="maxdb">
-
- <title id="title-maxdb">&title-maxdb;</title>
-
- <para>
- MaxDB is an enterprise-level database. MaxDB is the new name of a
- database management system formerly called SAP DB.
- </para>
-
- <section id="maxdb-history">
-
- <title id="title-maxdb-history">&title-maxdb-history;</title>
-
- <para>
- The history of MaxDB goes back to SAP DB, SAP AG's DBMS, i.e.
- MaxDB is a re-branded and enhanced version of SAP DB. For many
- years, MaxDB has been used for small, medium, and large
- installations of the mySAP Business Suite and other demanding
- SQL applications requiring an enterprise-class DBMS with regard
- to the number of users, the transactional workload, and the size
- of the database.
- </para>
-
- <para>
- SAP DB was meant to provide an alternative to third-party
- database systems such as Oracle, Microsoft SQL Server, and DB2
- by IBM. In October 2000, SAP AG released SAP DB under the GNU
- GPL license (see <xref linkend="gpl-license"/>), thus making it
- open source software.
- </para>
-
- <para>
- Today, MaxDB is used in about 3,500 SAP customer installations
- worldwide. Moreover, the majority of all DBMS installations on
- Unix and Linux within SAP’s IT department rely on MaxDB. MaxDB
- is tuned towards heavy-duty online transaction processing (OLTP)
- with several thousand users and database sizes ranging from
- several hundred GB to multiple TB.
- </para>
-
- <para>
- In 2003 SAP and MySQL concluded a partnership and development
- cooperation agreement. As a result, SAP's database system SAP DB
- has been delivered under the name of MaxDB by MySQL since the
- release of version 7.5 (November 2003).
- </para>
-
- <para>
- Version 7.5 of MaxDB is a direct advancement of the SAP DB 7.4
- code base. Therefore, the MaxDB software version 7.5 can be used
- as a direct upgrade of previous SAP DB versions starting 7.2.04
- and higher.
- </para>
-
- <para>
- Now, as before, the former SAP DB development team at SAP AG is
- responsible for developing and supporting MaxDB. Both SAP AG and
- MySQL AB handle the sale and distribution of MaxDB. The
- advancement of MaxDB and the MySQL Server leverages synergies
- that benefit both product lines.
- </para>
-
- <para>
- MaxDB is subjected to SAP AG's complete quality assurance
- process before it is shipped with SAP solutions or provided as a
- download from the MySQL site.
- </para>
-
- </section>
-
- <section id="maxdb-licensing">
-
- <title id="title-maxdb-licensing">&title-maxdb-licensing;</title>
-
- <para>
- MaxDB can be used under the same licenses available for the
- other products distributed by MySQL AB. Thus, MaxDB is available
- under the GNU General Public License, and a commercial license.
- For more information on licensing, see
- <ulink url="http://www.mysql.com/company/legal/licensing/"/>.
- </para>
-
- <para>
- MySQL offers MaxDB support to non-SAP customers.
- </para>
-
- </section>
-
- <section id="maxdb-links">
-
- <title id="title-maxdb-links">&title-maxdb-links;</title>
-
- <para>
- The main page for information about MaxDB is
- <ulink url="http://www.mysql.com/products/maxdb"/>. Information
- formerly available at <ulink url="http://www.sapdb.org"/> is
- only related to releases 7.3 and 7.4 and is no longer
- maintained.
- </para>
-
- </section>
-
- <section id="maxdb-basics">
-
- <title id="title-maxdb-basics">&title-maxdb-basics;</title>
-
- <para>
- MaxDB operates as a client/server product. It was developed to
- meet the needs of installations in OLTP and Data
- Warehouse/OLAP/Decision Support scenarios.
- <emphasis role="bold">Benefits:</emphasis>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <emphasis role="bold">Easy configuration and
- administration:</emphasis> GUI-based Installation Manager
- and Database Manager as single admin tools for DBMS
- operations
- </para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis role="bold">Around-the-clock operation, no
- planned downtimes, no permanent attendance
- required:</emphasis> Automatic space management, no need
- for reorganizations
- </para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis role="bold">Elaborate backup and restore
- capabilities:</emphasis> Online and incremental backups,
- recovery wizard to guide you through the recovery scenario
- </para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis role="bold">Supports large number of users,
- database sizes in the terabytes, and demanding
- workloads:</emphasis> Proven reliability, performance, and
- scalability
- </para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis role="bold">High availability:</emphasis>
- Cluster support, standby configuration, hot standby
- configuration
- </para>
- </listitem>
-
- </itemizedlist>
- </para>
-
- </section>
-
- <section id="maxdb-mysql-differences">
-
- <title
id="title-maxdb-mysql-differences">&title-maxdb-mysql-differences;</title>
-
- <para>
- The following list provides a short summary of the main
- differences between MaxDB and MySQL; it is not complete.
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- MaxDB runs as a client/server system. MySQL can run as a
- client/server system or as an embedded system.
- </para>
- </listitem>
-
- <listitem>
- <para>
- MaxDB might not run on all platforms supported by MySQL. For
- example, MaxDB does not run on IBM's OS/2.
- </para>
- </listitem>
-
- <listitem>
- <para>
- MaxDB uses a proprietary network protocol for client/server
- communication. MySQL uses either TCP/IP (with or without SSL
- encryption), sockets (under Unix-like systems), or named
- pipes (under Windows NT-family systems).
- </para>
- </listitem>
-
- <listitem>
- <para>
- MaxDB supports stored procedures. For MySQL, stored
- procedures are implemented in version 5.0. MaxDB also
- supports programming of triggers through an SQL extension,
- which is scheduled for MySQL 5.1. MaxDB contains a debugger
- for stored procedure languages, can cascade nested triggers,
- and supports multiple triggers per action and row.
- </para>
- </listitem>
-
- <listitem>
- <para>
- MaxDB is distributed with user interfaces that are
- text-based, graphical, or Web-based. MySQL is distributed
- with text-based user interfaces only; graphical user
- interface (MySQL Control Center, MySQL Administrator) are
- shipped separately from the main distributions. Web-based
- user interfaces for MySQL are offered by third parties.
- </para>
- </listitem>
-
- <listitem>
- <para>
- MaxDB supports a number of programming interfaces that also
- are supported by MySQL. For developing with MaxDB, the MaxDB
- ODBC Driver, SQL Database Connectivity (SQLDBC), JDBC
- Driver, Perl and Python modules and a MaxDB PHP extension,
- which provides access to the MySQL MaxDB databases using
- PHP, are available. Third Party Programming Interfaces:
- Support for OLE DB, ADO, DAO, RDO and .NET through ODBC.
- MaxDB supports embedded SQL with C/C++.
- </para>
- </listitem>
-
- <listitem>
- <para>
- MaxDB includes administrative features that MySQL does not
- have: job scheduling by time, event, and alert, and sending
- messages to a database administrator on alert thresholds.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <remark>
- Maybe add table showing maxima for MaxDB and MySQL. Might be
- obtained from crash-me comparison.
- </remark>
-
- </section>
-
- <section id="maxdb-mysql-interoperability">
-
- <title
id="title-maxdb-mysql-interoperability">&title-maxdb-mysql-interoperability;</title>
-
- <para>
- As part of MaxDB 7.6, the MaxDB Synchronization Manager is
- released. The Synchronization Manager supports creation of
- asynchronous replication scenarios between several MaxDB
- instances. However, interoperability features also are planned,
- so that the Synchronization Manager supports replication to and
- from a MySQL server.
- </para>
-
- <para>
- In the first release, the Synchronization Manager supports
- inserting data into MySQL. This means that initially only
- replication from MaxDB to MySQL is supported. In the course of
- 2005, exporting of data from a MySQL server to the
- Synchronization Manager will be added, thus adding support for
- MySQL to MaxDB replication scenarios.
- </para>
-
- <para>
- MaxDB 7.6, with the Synchronization Manager, was released as a
- beta version in January 2005.
-
- <remark>
- The production release is planned for April 2005.
- </remark>
- </para>
-
- </section>
-
- <section id="maxdb-reserved-words">
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/manual-conventions.xml"/>
- <title
id="title-maxdb-reserved-words">&title-maxdb-reserved-words;</title>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/what-is-mysql-ab.xml"/>
- <para>
- Like MySQL, MaxDB has a number of reserved words that have
- special meanings. Normally, they cannot be used as names of
- identifiers, such as database or table names. The following
- table lists reserved words in MaxDB, indicates the context in
- which those words are used, and indicates whether or not they
- have counterparts in MySQL. If such a counterpart exists, the
- meaning in MySQL might be identical or differing in some
- aspects. The main purpose is to list in which respects MaxDB
- differs from MySQL; therefore, this list is not complete.
- </para>
-
- <para>
- For the list of reserved words in MySQL, see
- <xref linkend="reserved-words"/>.
- </para>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/what-is.xml"/>
- <informaltable>
- <tgroup cols="3">
- <colspec colwidth="20*"/>
- <colspec colwidth="30*"/>
- <colspec colwidth="50*"/>
- <tbody>
- <row>
- <entry><emphasis role="bold">Reserved in
MaxDB</emphasis></entry>
- <entry><emphasis role="bold">Context of usage in
MaxDB</emphasis></entry>
- <entry><emphasis role="bold">MySQL
counterpart</emphasis></entry>
- </row>
- <row>
- <entry><literal>@</literal></entry>
- <entry>Can prefix identifier, like
<quote>@table</quote></entry>
- <entry>Not allowed</entry>
- </row>
- <row>
- <entry><literal>ADDDATE()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>ADDDATE()</literal>; new in MySQL
4.1.1</entry>
- </row>
- <row>
- <entry><literal>ADDTIME()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>ADDTIME()</literal>; new in MySQL
4.1.1</entry>
- </row>
- <row>
- <entry><literal>ALPHA</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>ARRAY</literal></entry>
- <entry>Data type</entry>
- <entry>Not implemented</entry>
- </row>
- <row>
- <entry><literal>ASCII()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>ASCII()</literal>, but implemented with a
different meaning</entry>
- </row>
- <row>
- <entry><literal>AUTOCOMMIT</literal></entry>
- <entry>Transactions; <literal>ON</literal> by
default</entry>
- <entry>Transactions; <literal>OFF</literal> by
default</entry>
- </row>
- <row>
- <entry><literal>BOOLEAN</literal></entry>
- <entry>Column types; <literal>BOOLEAN</literal> accepts
as values only
- <literal>TRUE</literal>,
<literal>FALSE</literal>, and
- <literal>NULL</literal></entry>
- <entry><literal>BOOLEAN</literal> was added in MySQL
4.1.0; it is a synonym for
- <literal>BOOL</literal> which is mapped to
- <literal>TINYINT(1)</literal>. It accepts integer values
- in the same range as <literal>TINYINT</literal> as well
- as <literal>NULL</literal>.
<literal>TRUE</literal> and
- <literal>FALSE</literal> can be used as aliases for
- <literal>1</literal> and
<literal>0</literal>.</entry>
- </row>
- <row>
- <entry><literal>CHECK</literal></entry>
- <entry><literal>CHECK TABLE</literal></entry>
- <entry><literal>CHECK TABLE</literal>; similar, but not
identical usage</entry>
- </row>
- <row>
- <entry><literal>COLUMN</literal></entry>
- <entry>Column types</entry>
- <entry><literal>COLUMN</literal>; noise
word</entry>
- </row>
- <row>
- <entry><literal>CHAR()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>CHAR()</literal>; identical syntax;
similar, not identical
- usage</entry>
- </row>
- <row>
- <entry><literal>COMMIT</literal></entry>
- <entry>Implicit commits of transactions happen when data definition
statements
- are issued</entry>
- <entry>Implicit commits of transactions happen when data definition
statements
- are issued, and also with a number of other statements</entry>
- </row>
- <row>
- <entry><literal>COSH()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>COT()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>COT()</literal>; identical syntax and
implementation</entry>
- </row>
- <row>
- <entry><literal>CREATE</literal></entry>
- <entry>SQL, data definition language</entry>
- <entry><literal>CREATE</literal></entry>
- </row>
- <row>
- <entry><literal>DATABASE</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>DATABASE()</literal>;
<literal>DATABASE</literal> is used in a
- different context; for example, <literal>CREATE
- DATABASE</literal></entry>
- </row>
- <row>
- <entry><literal>DATE()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>CURRENT_DATE</literal></entry>
- </row>
- <row>
- <entry><literal>DATEDIFF()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>DATEDIFF()</literal>; new in MySQL
4.1.1</entry>
- </row>
- <row>
- <entry><literal>DAY()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>DAYOFWEEK()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>DAYOFWEEK()</literal>; by default,
<literal>1</literal>
- represents Monday in MaxDB and Sunday in MySQL</entry>
- </row>
- <row>
- <entry><literal>DISTINCT</literal></entry>
- <entry>SQL functions <literal>AVG</literal>,
<literal>MAX</literal>,
- <literal>MIN</literal>,
<literal>SUM</literal></entry>
- <entry><literal>DISTINCT</literal>; but used in a
different context:
- <literal>SELECT DISTINCT</literal></entry>
- </row>
- <row>
- <entry><literal>DROP</literal></entry>
- <entry><literal>DROP INDEX</literal>, for
example</entry>
- <entry><literal>DROP INDEX</literal>; similar, but not
identical usage</entry>
- </row>
- <row>
- <entry><literal>EBCDIC()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>EXPAND()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>EXPLAIN</literal></entry>
- <entry>Optimization</entry>
- <entry><literal>EXPLAIN</literal>; similar, but not
identical usage</entry>
- </row>
- <row>
- <entry><literal>FIXED()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>FLOAT()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>HEX()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>HEX()</literal>; similar, but not
identical usage</entry>
- </row>
- <row>
- <entry><literal>INDEX()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>INSTR()</literal> or
<literal>LOCATE()</literal>; similar, but
- not identical syntaxes and meanings</entry>
- </row>
- <row>
- <entry><literal>INDEX</literal></entry>
- <entry><literal>USE INDEX</literal>,
<literal>IGNORE INDEX</literal> and
- similar hints are used right after
- <literal>SELECT</literal>; for example, <literal>SELECT
- ... USE INDEX</literal></entry>
- <entry><literal>USE INDEX</literal>,
<literal>IGNORE INDEX</literal> and
- similar hints are used in the <literal>FROM</literal>
- clause of a <literal>SELECT</literal> query; for
- example, in <literal>SELECT ... FROM ... USE
- INDEX</literal></entry>
- </row>
- <row>
- <entry><literal>INITCAP()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>LENGTH()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>LENGTH()</literal>; identical syntax, but
slightly different
- implementation</entry>
- </row>
- <row>
- <entry><literal>LFILL()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>LIKE</literal></entry>
- <entry>Comparisons</entry>
- <entry><literal>LIKE</literal>; but the extended
<literal>LIKE</literal> MaxDB
- provides rather resembles the MySQL
- <literal>REGEX</literal></entry>
- </row>
- <row>
- <entry><literal>LIKE</literal> wildcards</entry>
- <entry>MaxDB supports <quote>%</quote>,
<quote>_</quote>,
- <quote>Control-underline</quote>, <quote>Control-up
- arrow</quote>, <quote>*</quote>, and
<quote>?</quote> as
- wildcards in <literal>LIKE</literal>
comparisons</entry>
- <entry>MySQL supports <quote>%</quote>, and
<quote>_</quote> as wildcards in
- <literal>LIKE</literal> comparisons</entry>
- </row>
- <row>
- <entry><literal>LPAD()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>LPAD()</literal>; slightly different
implementation</entry>
- </row>
- <row>
- <entry><literal>LTRIM()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>LTRIM()</literal>; slightly different
implementation</entry>
- </row>
- <row>
- <entry><literal>MAKEDATE()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>MAKEDATE()</literal>; new in MySQL
4.1.1</entry>
- </row>
- <row>
- <entry><literal>MAKETIME()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>MAKETIME()</literal>; new in MySQL
4.1.1</entry>
- </row>
- <row>
- <entry><literal>MAPCHAR()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>MICROSECOND()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>MICROSECOND()</literal>; new in MySQL
4.1.1</entry>
- </row>
- <row>
- <entry><literal>NOROUND()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>NULL</literal></entry>
- <entry>Column types; comparisons</entry>
- <entry><literal>NULL</literal>; MaxDB supports special
<literal>NULL</literal>
- values that are returned by arithmetic operations that
- lead to an overflow or a division by zero; MySQL does
- not support such special values</entry>
- </row>
- <row>
- <entry><literal>PI</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>PI()</literal>; identical syntax and
implementation, but
- parentheses are mandatory in MySQL</entry>
- </row>
- <row>
- <entry><literal>REF</literal></entry>
- <entry>Data type</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>RFILL()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>ROWNO</literal></entry>
- <entry>Predicate in <literal>WHERE</literal>
clause</entry>
- <entry>Similar to <literal>LIMIT</literal>
clause</entry>
- </row>
- <row>
- <entry><literal>RPAD()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>RPAD()</literal>; slightly different
implementation</entry>
- </row>
- <row>
- <entry><literal>RTRIM()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>RTRIM()</literal>; slightly different
implementation</entry>
- </row>
- <row>
- <entry><literal>SEQUENCE</literal></entry>
- <entry><literal>CREATE SEQUENCE</literal>,
<literal>DROP SEQUENCE</literal></entry>
- <entry><literal>AUTO_INCREMENT</literal>; similar
concept, but different
- implementation</entry>
- </row>
- <row>
- <entry><literal>SINH()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>SOUNDS()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>SOUNDEX()</literal>; slightly different
syntax</entry>
- </row>
- <row>
- <entry><literal>STATISTICS</literal></entry>
- <entry><literal>UPDATE STATISTICS</literal></entry>
- <entry><literal>ANALYZE TABLE</literal>; similar concept,
but different
- implementation</entry>
- </row>
- <row>
- <entry><literal>SUBSTR()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>SUBSTRING()</literal>; slightly different
implementation</entry>
- </row>
- <row>
- <entry><literal>SUBTIME()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>SUBTIME()</literal>; new in MySQL
4.1.1</entry>
- </row>
- <row>
- <entry><literal>SYNONYM</literal></entry>
- <entry>Data definition language: <literal>CREATE [PUBLIC]
SYNONYM</literal>,
- <literal>RENAME SYNONYM</literal>, <literal>DROP
- SYNONYM</literal></entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>TANH()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>TIME()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>CURRENT_TIME</literal></entry>
- </row>
- <row>
- <entry><literal>TIMEDIFF()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>TIMEDIFF()</literal>; new in MySQL
4.1.1</entry>
- </row>
- <row>
- <entry><literal>TIMESTAMP()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>TIMESTAMP()</literal>; new in MySQL
4.1.1</entry>
- </row>
- <row>
- <entry><literal>TIMESTAMP()</literal> as argument to
- <literal>DAYOFMONTH()</literal> and
- <literal>DAYOFYEAR()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>TIMEZONE()</literal></entry>
- <entry>SQL function</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>TRANSACTION()</literal></entry>
- <entry>Returns the ID of the current transaction</entry>
- <entry>Nothing comparable</entry>
- </row>
- <row>
- <entry><literal>TRANSLATE()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>REPLACE()</literal>; identical syntax and
implementation</entry>
- </row>
- <row>
- <entry><literal>TRIM()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>TRIM()</literal>; slightly different
implementation</entry>
- </row>
- <row>
- <entry><literal>TRUNC()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>TRUNCATE()</literal>; slightly different
syntax and
- implementation</entry>
- </row>
- <row>
- <entry><literal>USE</literal></entry>
- <entry>Switches to a new database instance; terminates the connection
to the
- current database instance; all subsequent commands are
- referred to this database instance</entry>
- <entry><literal>USE</literal>; identical syntax, but does
not terminate the
- connection to the current database</entry>
- </row>
- <row>
- <entry><literal>USER</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>USER()</literal>; identical syntax, but
slightly different
- implementation, and parentheses are mandatory in MySQL</entry>
- </row>
- <row>
- <entry><literal>UTC_DIFF()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>UTC_DATE()</literal>; provides a means to
calculate the same
- result as <literal>UTC_DIFF()</literal></entry>
- </row>
- <row>
- <entry><literal>VALUE()</literal></entry>
- <entry>SQL function, alias for
<literal>COALESCE()</literal></entry>
- <entry><literal>COALESCE()</literal>; identical syntax
and implementation</entry>
- </row>
- <row>
- <entry><literal>VARIANCE()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>VARIANCE()</literal>; new in MySQL
4.1.0</entry>
- </row>
- <row>
- <entry><literal>WEEKOFYEAR()</literal></entry>
- <entry>SQL function</entry>
- <entry><literal>WEEKOFYEAR()</literal>; new in MySQL
4.1.1</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- </section>
-
- </section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/maxdb.xml"/>
<section id="roadmap">
- <title id="title-roadmap">&title-roadmap;</title>
+ <title id='title-roadmap'>&title-roadmap;</title>
<para>
This section provides a snapshot of the MySQL development roadmap,
- including major features implemented or planned for MySQL 4.0,
- 4.1, 5.0, and 5.1. The following sections provide information for
+ including major features implemented in or planned for the various
+ MySQL releases. The following sections provide information for
each release series.
</para>
+ <remark role="todo">
+ [js] Update as required when we start a new release series.
+ </remark>
+
<para>
- The current production release series is MySQL 4.1, which was
- declared stable for production use as of Version 4.1.7, released
- in October 2004. The previous production release series is MySQL
- 4.0, which was declared stable for production use as of Version
- 4.0.12, released in March 2003. Production status means that
- future 4.1 and 4.0 development is limited only to bugfixes. For
- the older MySQL 3.23 series, only critical bugfixes are made.
+ The current production release series is MySQL ¤t-series;,
+ which was declared stable for production use as of Version 4.1.7,
+ released in October 2004. The previous production release series
+ was MySQL &previous-series;, which was declared stable for
+ production use as of Version 4.0.12, released in March 2003.
+ Production status means that future 4.1 and 4.0 development is
+ limited only to bugfixes. For the older MySQL 3.23 series, only
+ critical bugfixes are made.
</para>
+ <remark role="todo">
+ [js] Update as required when we start a new release series.
+ </remark>
+
<para>
Active MySQL development currently is taking place in the MySQL
- 5.0 release series, this means that new features are being added
- there. MySQL 5.0 is available in beta status.
+ 5.0 and 5.1 release series; and new features are being added only
+ to the latter.
</para>
<para>
@@ -2606,8 +316,9 @@
</para>
<para>
- Plans for some of the most requested features are summarized in
- the following table.
+ The most requested features and the versions in which they were
+ implemented or are scheduled for implementation are summarized in
+ the following table:
</para>
<informaltable>
@@ -2656,11 +367,19 @@
<entry>5.0 and 5.1</entry>
</row>
<row>
- <entry>Full outer join</entry>
+ <entry>Full outer joins</entry>
<entry>5.1</entry>
</row>
<row>
<entry>Constraints</entry>
+ <entry>5.1 (implemented in 3.23 for
<literal>InnoDB</literal>)</entry>
+ </row>
+ <row>
+ <entry>Partitioning</entry>
+ <entry>5.1</entry>
+ </row>
+ <row>
+ <entry>Row-Based Replication</entry>
<entry>5.1</entry>
</row>
</tbody>
@@ -2669,11 +388,7 @@
<section id="mysql-4-0-nutshell">
- <title
id="title-mysql-4-0-nutshell">&title-mysql-4-0-nutshell;</title>
-
- <para>
- MySQL Server 4.0 is available in production status.
- </para>
+ <title
id='title-mysql-4-0-nutshell'>&title-mysql-4-0-nutshell;</title>
<para>
MySQL 4.0 is available for download at
@@ -2682,14 +397,6 @@
production use at many large sites.
</para>
- <para>
- The major new features of MySQL Server 4.0 are geared toward our
- existing business and community users, enhancing the MySQL
- database software as the solution for mission-critical,
- heavy-load database systems. Other new features target the users
- of embedded databases.
- </para>
-
<section id="nutshell-4-0-features">
<title
id="title-nutshell-4-0-features">&title-nutshell-4-0-features;</title>
@@ -2705,15 +412,15 @@
<listitem>
<para>
- MySQL 4.0 has a query cache that can give a huge speed
- boost to applications with repetitive queries. See
- <xref linkend="query-cache"/>.
+ MySQL 4.0 implemented a query cache that can give a
+ major speed boost to applications with repetitive
+ queries. See <xref linkend="query-cache"/>.
</para>
</listitem>
<listitem>
<para>
- Version 4.0 further increases the speed of MySQL
+ Version 4.0 further increased the speed of MySQL
Server in a number of areas, such as bulk
<literal>INSERT</literal> statements, searching on
packed indexes, full-text searching (using
@@ -2727,17 +434,18 @@
<listitem>
<para>
- Embedded MySQL Server introduced
+ Introduction of Embedded MySQL Server
</para>
<itemizedlist>
<listitem>
<para>
- The new Embedded Server library can easily be used to
- create standalone and embedded applications. The
- embedded server provides an alternative to using MySQL
- in a client/server environment. See
+ The Embedded Server library added in this release can
+ easily be used to create standalone and embedded
+ applications. The embedded server provides an
+ alternative to using MySQL in a client/server
+ environment. See
<xref linkend="nutshell-embedded-mysql"/>.
</para>
</listitem>
@@ -2754,12 +462,12 @@
<listitem>
<para>
- The <literal>InnoDB</literal> storage engine is
- offered as a standard feature of the MySQL server.
- This means full support for ACID transactions, foreign
- keys with cascading <literal>UPDATE</literal> and
- <literal>DELETE</literal>, and row-level locking are
- standard features. See <xref linkend="innodb"/>.
+ The <literal>InnoDB</literal> storage engine began to
+ be offered as a standard feature of the MySQL server.
+ This provided full support for ACID transactions,
+ foreign keys with cascading <literal>UPDATE</literal>
+ and <literal>DELETE</literal>, and row-level locking
+ as standard features. See <xref linkend="innodb"/>.
</para>
</listitem>
@@ -2776,13 +484,14 @@
<listitem>
<para>
The enhanced <literal>FULLTEXT</literal> search
- properties of MySQL Server 4.0 enables
+ capabilities of MySQL Server 4.0 enabled
<literal>FULLTEXT</literal> indexing of large text
masses with both binary and natural-language searching
- logic. You can customize minimal word length and
- define your own stop word lists in any human language,
- enabling a new set of applications to be built with
- MySQL Server. See <xref linkend="fulltext-search"/>.
+ logic. It became possible to customize minimal word
+ length and define your own stop word lists in most
+ human languages, enabling a broader class of
+ applications to be built with MySQL Server. See
+ <xref linkend="fulltext-search"/>.
</para>
</listitem>
@@ -2798,15 +507,17 @@
<listitem>
<para>
- MySQL Server supports the <literal>UNION</literal>
- statement, a standard SQL feature.
+ MySQL Server added support for the
+ <literal>UNION</literal> statement, a standard SQL
+ feature.
</para>
</listitem>
<listitem>
<para>
- MySQL runs natively on Novell NetWare 6.0 and higher.
- See <xref linkend="netware-installation"/>.
+ Starting with version 4.0, MySQL runs natively on
+ Novell NetWare 6.0 and higher. See
+ <xref linkend="netware-installation"/>.
</para>
</listitem>
@@ -2814,22 +525,22 @@
<para>
Features to simplify migration from other database
systems to MySQL Server include <literal>TRUNCATE
- TABLE</literal> (as in Oracle).
+ TABLE</literal> (as in Oracle)
+
+ <remark role="note">
+ Commented out IDENTITY until someone explains what
+ it means...
+ </remark>
+
+
<remark>
- commented out IDENTITY until someone explains what
- it means
+ and IDENTITY as a synonym for automatically
+ incremented keys (as in Sybase)
</remark>
- </para>
- <remark>
- and @code{IDENTITY}
- </remark>
-
- <remark>
- as a synonym for automatically incremented keys (as in
- Sybase).
- </remark>
+ .
+ </para>
</listitem>
</itemizedlist>
@@ -2844,12 +555,11 @@
<listitem>
<para>
- Our German, Austrian, and Swiss users should note that
- MySQL 4.0 supports a new character set,
- <literal>latin1_de</literal>, which ensures that the
- <emphasis>German sorting order</emphasis> sorts words
- with umlauts in the same order as do German telephone
- books.
+ German-speaking users should note that MySQL 4.0 added
+ support for a new character set,
+ <literal>latin1_de</literal>, which ensures that words
+ with umlauts are sorted in the same order as in German
+ telephone books.
</para>
</listitem>
@@ -2858,23 +568,17 @@
<listitem>
<para>
- Usability enhancements
- </para>
-
- <para>
- In the process of implementing features for new users, we
- have not forgotten requests from our loyal community of
- existing users.
+ <emphasis role="bold">Usability enhancements</emphasis>
</para>
<itemizedlist>
<listitem>
<para>
- Most <command>mysqld</command> parameters (startup
- options) can be set without taking down the server.
- This is a convenient feature for database
- administrators (DBAs). See
+ As of Version 4.0, most <command>mysqld</command>
+ parameters (startup options) can be set without taking
+ down the server. This is a convenient feature for
+ database administrators. See
<xref linkend="set-option"/>.
</para>
</listitem>
@@ -2882,25 +586,26 @@
<listitem>
<para>
Multiple-table <literal>DELETE</literal> and
- <literal>UPDATE</literal> statements have been added.
+ <literal>UPDATE</literal> statements were added.
</para>
</listitem>
<listitem>
<para>
On Windows, symbolic link handling at the database
- level is enabled by default. On Unix, the
- <literal>MyISAM</literal> storage engine supports
- symbolic linking at the table level (and not just the
- database level as before).
+ level was enabled by default. On Unix, the
+ <literal>MyISAM</literal> storage engine added support
+ for symbolic linking at the table level (and not just
+ the database level as before).
</para>
</listitem>
<listitem>
<para>
+ The addition of the
<literal>SQL_CALC_FOUND_ROWS</literal> and
- <literal>FOUND_ROWS()</literal> are new functions that
- make it possible to find out the number of rows a
+ <literal>FOUND_ROWS()</literal> functions made it
+ possible to find out the number of rows a
<literal>SELECT</literal> query that includes a
<literal>LIMIT</literal> clause would have returned
without that clause.
@@ -2914,38 +619,34 @@
<para>
The news section of this manual includes a more in-depth list
- of features. See <xref linkend="news-4-0-x"/>.
+ of MySQL 4.0 features. See <xref linkend="news-4-0-x"/>.
</para>
</section>
<section id="nutshell-embedded-mysql">
- <title
id="title-nutshell-embedded-mysql">&title-nutshell-embedded-mysql;</title>
+ <title
id='title-nutshell-embedded-mysql'>&title-nutshell-embedded-mysql;</title>
<para>
- The <literal>libmysqld</literal> embedded server library makes
- MySQL Server suitable for a vastly expanded realm of
- applications. By using this library, developers can embed
- MySQL Server into various applications and electronics
- devices, where the end user has no knowledge of there actually
- being an underlying database. Embedded MySQL Server is ideal
- for use behind the scenes in Internet appliances, public
- kiosks, turnkey hardware/software combination units, high
- performance Internet servers, self-contained databases
+ The <literal>libmysqld</literal> embedded server library made
+ MySQL Server suitable for a wider range of applications. Using
+ this library, developers can embed MySQL Server into various
+ applications and electronics devices, where the end user has
+ no knowledge of there actually being an underlying database.
+ Embedded MySQL Server is ideal for use in Internet appliances,
+ public kiosks, turnkey hardware/software combination units,
+ high performance Internet servers, self-contained databases
distributed on CD-ROM, and so on.
</para>
<para>
- Many users of <literal>libmysqld</literal> benefit from the
- MySQL Dual Licensing. For those not wishing to be bound by the
- GPL, the software is also made available under a commercial
- license. See
+ The embedded MySQL library uses the same interface as the
+ normal client library. See <xref linkend="libmysqld"/>.
+ Embedded MySQL is available under the same dual-licensing
+ model as the MySQL Server; see
<ulink url="http://www.mysql.com/company/legal/licensing/"/>
- for more information on the licensing policy of MySQL AB. The
- embedded MySQL library uses the same interface as the normal
- client library, so it is convenient and easy to use. See
- <xref linkend="libmysqld"/>.
+ for more information.
</para>
<para>
@@ -2975,15 +676,12 @@
<section id="mysql-4-1-nutshell">
- <title
id="title-mysql-4-1-nutshell">&title-mysql-4-1-nutshell;</title>
+ <title
id='title-mysql-4-1-nutshell'>&title-mysql-4-1-nutshell;</title>
<para>
MySQL Server 4.0 laid the foundation for new features
implemented in MySQL 4.1, such as subqueries and Unicode
- support. These features come at the top of the wish list of many
- of our customers. Well-known for its stability, speed, and ease
- of use, MySQL Server is able to fulfill the requirement
- checklists of very demanding buyers.
+ support, which were desired by many of our customers.
</para>
<para>
@@ -3003,17 +701,20 @@
<section id="nutshell-4-1-features">
- <title
id="title-nutshell-4-1-features">&title-nutshell-4-1-features;</title>
+ <title
id='title-nutshell-4-1-features'>&title-nutshell-4-1-features;</title>
<para>
- This section lists features implemented in MySQL 4.1.
+ This section lists features implemented in MySQL 4.1. Features
+ that are available in MySQL 5.0 are described in
+ <xref linkend="mysql-5-0-nutshell"/>.
</para>
<itemizedlist>
<listitem>
<para>
- Support for subqueries and derived tables
+ <emphasis role="bold">Support for subqueries and derived
+ tables</emphasis>:
</para>
<itemizedlist>
@@ -3034,7 +735,7 @@
<listitem>
<para>
- Speed enhancements
+ <emphasis role="bold">Speed enhancements</emphasis>:
</para>
<itemizedlist>
@@ -3060,7 +761,7 @@
<listitem>
<para>
- New functionality
+ <emphasis role="bold">Added functionality</emphasis>:
</para>
<itemizedlist>
@@ -3078,15 +779,81 @@
<listitem>
<para>
- The <literal>MyISAM</literal> storage engine supports
- OpenGIS spatial types for storing geographical data.
- See <xref linkend="spatial-extensions-in-mysql"/>.
+ The <literal>MyISAM</literal> storage engine added
+ support for OpenGIS spatial types for storing
+ geographical data. See
+ <xref linkend="spatial-extensions-in-mysql"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support was added for replication over SSL
+ connections.
</para>
</listitem>
<listitem>
<para>
- Replication can be done over SSL connections.
+ Support for a number of additional storage engines was
+ implemented in the MySQL 4.1 release series:
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The <literal>EXAMPLE</literal> storage engine is
+ a <quote>stub</quote> engine that serves as an
+ example in the MySQL source code for writing new
+ storage engines, and is primarily of interest to
+ developers. See
+ <xref linkend="example-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>NDB Cluster</literal> is the storage
+ engine used by MySQL Cluster to implement tables
+ that are partitioned over many computers. See
+ <xref linkend="ndbcluster"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>ARCHIVE</literal> storage engine is
+ used for storing large amounts of data without
+ indexes in a very small footprint. See
+ <xref linkend="archive-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>CSV</literal> storage engine stores
+ data in text files using comma-separated-values
+ format. See
+ <xref linkend="csv-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>BLACKHOLE</literal> storage engine
+ accepts but does not store data, and always
+ returns an empty result set. It is for use
+ primarily in replication. See
+ <xref linkend="blackhole-storage-engine"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <emphasis role="bold">Note</emphasis>: These engine
+ were implemented at different points in the
+ development of MySQL 4.1. Please see the indicated
+ sections for particulars in each case.
</para>
</listitem>
@@ -3095,16 +862,18 @@
<listitem>
<para>
- Standards compliance, portability, and migration
+ <emphasis role="bold">Standards compliance, portability,
+ and migration</emphasis>:
</para>
<itemizedlist>
<listitem>
<para>
- The new client/server protocol adds the ability to
+ The enhanced client/server protocol available
+ beginning with MySQL 4.1.1 provides the ability to
pass multiple warnings to the client, rather than only
- a single result. This makes it much easier to track
+ a single result, making it much easier to track
problems that occur in operations such as bulk data
loading.
</para>
@@ -3122,7 +891,8 @@
<listitem>
<para>
- Internationalization and Localization
+ <emphasis role="bold">Internationalization and
+ Localization</emphasis>:
</para>
<itemizedlist>
@@ -3130,7 +900,7 @@
<listitem>
<para>
To support applications that require the use of local
- languages, the MySQL software offers extensive Unicode
+ languages, the MySQL software added extensive Unicode
support through the <literal>utf8</literal> and
<literal>ucs2</literal> character sets.
</para>
@@ -3138,25 +908,17 @@
<listitem>
<para>
- Character sets can be defined per column, table, and
+ Definition of character sets by column, table, and
database. This allows for a high degree of flexibility
in application design, particularly for multi-language
- Web sites.
- </para>
- </listitem>
-
- <listitem>
- <para>
- For documentation for this improved character set
- support, see <xref linkend="charset"/>.
+ Web sites. See <xref linkend="charset"/>.
</para>
</listitem>
<listitem>
<para>
- Per-connection time zones are supported, allowing
- individual clients to select their own time zone when
- necessary.
+ Per-connection time zones support, allowing individual
+ clients to select their own time zones when necessary.
</para>
</listitem>
@@ -3165,61 +927,50 @@
<listitem>
<para>
- Usability enhancements
+ <emphasis role="bold">Usability enhancements</emphasis>:
</para>
<itemizedlist>
<listitem>
<para>
- In response to popular demand, we have added a
- server-based <literal>HELP</literal> command that can
- be used to get help information for SQL statements.
- The advantage of having this information on the server
- side is that the information is always applicable to
- the particular server version that you actually are
- using. Because this information is available by
- issuing an SQL statement, any client can be written to
- access it. For example, the <literal>help</literal>
- command of the <command>mysql</command> command-line
- client has been modified to have this capability.
+ The addition of a server-based <literal>HELP</literal>
+ command that can be used to get help information for
+ SQL statements. This information is always applicable
+ to the particular server version being used. Because
+ this information is available by issuing an SQL
+ statement, any client can access it. For example, the
+ <literal>help</literal> command of the
+ <command>mysql</command> command-line client has been
+ modified to have this capability.
</para>
</listitem>
<listitem>
<para>
- In the new client/server protocol, multiple statements
- can be issued with a single call. See
+ The improved client/server protocol allows multiple
+ statements to be issued with a single call, and for
+ returning multiple result sets. See
<xref linkend="c-api-multiple-queries"/>.
</para>
</listitem>
<listitem>
<para>
- The new client/server protocol also supports returning
- multiple result sets. This might occur as a result of
- sending multiple statements, for example.
- </para>
- </listitem>
-
- <listitem>
- <para>
- A new <literal>INSERT ... ON DUPLICATE KEY UPDATE
- ...</literal> syntax has been implemented. This allows
- you to <literal>UPDATE</literal> an existing row if
- the <literal>INSERT</literal> would have caused a
- duplicate in a <literal>PRIMARY</literal> or
- <literal>UNIQUE</literal> index. See
+ The syntax <literal>INSERT ... ON DUPLICATE KEY UPDATE
+ ...</literal> was implemented. This allows you to
+ update an existing row if the insert would have caused
+ a duplicate value for a primary or unique index. See
<xref linkend="insert"/>.
</para>
</listitem>
<listitem>
<para>
- A new aggregate function,
- <literal>GROUP_CONCAT()</literal>, adds the extremely
- useful capability of concatenating column values from
- grouped rows into a single result string. See
+ The aggregate function
+ <literal>GROUP_CONCAT()</literal>, added the
+ capability to concatenate column values from grouped
+ rows into a single result string. See
<xref linkend="group-by-functions-and-modifiers"/>.
</para>
</listitem>
@@ -3230,1218 +981,140 @@
</itemizedlist>
<para>
- The news section of this manual includes a more in-depth list
- of features. See <xref linkend="news-4-1-x"/>.
- </para>
-
- </section>
-
- </section>
-
- </section>
-
- <section id="mysql-information-sources">
-
- <title
id="title-mysql-information-sources">&title-mysql-information-sources;</title>
-
- <remark role="todo">
- Update the intro to provide an overview of all information
- resources, including the user forums.
- </remark>
-
- <section id="questions">
-
- <title id="title-questions">&title-questions;</title>
-
- <indexterm type="concept">
- <primary>reporting</primary>
- <secondary>errors</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>errors</primary>
- <secondary>reporting</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>MySQL mailing lists</primary>
- </indexterm>
-
- <para>
- This section introduces the MySQL mailing lists and provides
- guidelines as to how the lists should be used. When you
- subscribe to a mailing list, you receive all postings to the
- list as email messages. You can also send your own questions and
- answers to the list.
- </para>
-
- <section id="mailing-list">
-
- <title id="title-mailing-list">&title-mailing-list;</title>
-
- <indexterm type="concept">
- <primary>mailing lists</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>email lists</primary>
- </indexterm>
-
- <para>
- To subscribe to or unsubscribe from any of the mailing lists
- described in this section, visit
- <ulink url="http://lists.mysql.com/"/>. For most of them, you
- can select the regular version of the list where you get
- individual messages, or a digest version where you get one
- large message per day.
- </para>
-
- <para>
- Please <emphasis>do not</emphasis> send messages about
- subscribing or unsubscribing to any of the mailing lists,
- because such messages are distributed automatically to
- thousands of other users.
- </para>
-
- <para>
- Your local site may have many subscribers to a MySQL mailing
- list. If so, the site may have a local mailing list, so that
- messages sent from <literal>lists.mysql.com</literal> to your
- site are propagated to the local list. In such cases, please
- contact your system administrator to be added to or dropped
- from the local MySQL list.
- </para>
-
- <para>
- If you wish to have traffic for a mailing list go to a
- separate mailbox in your mail program, set up a filter based
- on the message headers. You can use either the
- <literal>List-ID:</literal> or
- <literal>Delivered-To:</literal> headers to identify list
- messages.
- </para>
-
- <para>
- The MySQL mailing lists are as follows:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <literal>announce</literal>
- </para>
-
- <para>
- This list is for announcements of new versions of MySQL
- and related programs. This is a low-volume list to which
- all MySQL users should subscribe.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>mysql</literal>
- </para>
-
- <para>
- This is the main list for general MySQL discussion. Please
- note that some topics are better discussed on the
- more-specialized lists. If you post to the wrong list, you
- may not get an answer.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>bugs</literal>
- </para>
-
- <para>
- This list is for people who want to stay informed about
- issues reported since the last release of MySQL or who
- want to be actively involved in the process of bug hunting
- and fixing. See <xref linkend="bug-reports"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>internals</literal>
- </para>
-
- <para>
- This list is for people who work on the MySQL code. This
- is also the forum for discussions on MySQL development and
- for posting patches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>mysqldoc</literal>
- </para>
-
- <para>
- This list is for people who work on the MySQL
- documentation: people from MySQL AB, translators, and
- other community members.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>benchmarks</literal>
- </para>
-
- <para>
- This list is for anyone interested in performance issues.
- Discussions concentrate on database performance (not
- limited to MySQL), but also include broader categories
- such as performance of the kernel, filesystem, disk
- system, and so on.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>packagers</literal>
- </para>
-
- <para>
- This list is for discussions on packaging and distributing
- MySQL. This is the forum used by distribution maintainers
- to exchange ideas on packaging MySQL and on ensuring that
- MySQL looks and feels as similar as possible on all
- supported platforms and operating systems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>java</literal>
- </para>
-
- <para>
- This list is for discussions about the MySQL server and
- Java. It is mostly used to discuss JDBC drivers, including
- MySQL Connector/J.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>win32</literal>
- </para>
-
- <para>
- This list is for all topics concerning the MySQL software
- on Microsoft operating systems, such as Windows 9x, Me,
- NT, 2000, XP, and 2003.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>myodbc</literal>
- </para>
-
- <para>
- This list is for all topics concerning connecting to the
- MySQL server with ODBC.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>gui-tools</literal>
- </para>
-
- <para>
- This list is for all topics concerning MySQL GUI tools,
- including <literal>MySQL Administrator</literal> and the
- <literal>MySQL Control Center</literal> graphical client.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>cluster</literal>
- </para>
-
- <para>
- This list is for discussion of MySQL Cluster.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>dotnet</literal>
- </para>
-
- <para>
- This list is for discussion of the MySQL server and the
- .NET platform. Mostly related to the MySQL Connector/Net
- provider.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>plusplus</literal>
- </para>
-
- <para>
- This list is for all topics concerning programming with
- the C++ API for MySQL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>perl</literal>
- </para>
-
- <para>
- This list is for all topics concerning the Perl support
- for MySQL with <literal>DBD::mysql</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- If you're unable to get an answer to your questions from a
- MySQL mailing list or forum, one option is to purchase support
- from MySQL AB. This puts you in direct contact with MySQL
- developers.
- </para>
-
- <para>
- The following table shows some MySQL mailing lists in
- languages other than English. These lists are not operated by
- MySQL AB.
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
-
<literal><email>mysql-france-subscribe@stripped</email></literal>
- </para>
-
- <para>
- A French mailing list.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal><email>list@stripped</email></literal>
- </para>
-
- <para>
- A Korean mailing list. Email <literal>subscribe mysql
- your@stripped</literal> to this list.
- </para>
- </listitem>
-
- <listitem>
- <para>
-
<literal><email>mysql-de-request@stripped</email></literal>
- </para>
-
- <para>
- A German mailing list. Email <literal>subscribe mysql-de
- your@stripped</literal> to this list. You can find
- information about this mailing list at
- <ulink url="http://www.4t2.com/mysql/"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
-
<literal><email>mysql-br-request@stripped</email></literal>
- </para>
-
- <para>
- A Portuguese mailing list. Email <literal>subscribe
- mysql-br your@stripped</literal> to this list.
- </para>
- </listitem>
-
- <listitem>
- <para>
-
<literal><email>mysql-alta@stripped</email></literal>
- </para>
-
- <para>
- A Spanish mailing list. Email <literal>subscribe mysql
- your@stripped</literal> to this list.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="asking-questions">
-
- <title
id="title-asking-questions">&title-asking-questions;</title>
-
- <indexterm type="concept">
- <primary>net etiquette</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>mailing lists</primary>
- <secondary>archive location</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>searching</primary>
- <secondary>MySQL Web pages</secondary>
- </indexterm>
-
- <para>
- Before posting a bug report or question, please do the
- following:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Start by searching the MySQL online manual at
- <ulink url="http://dev.mysql.com/doc/"/>. We try to keep
- the manual up to date by updating it frequently with
- solutions to newly found problems. The change history
- (<ulink url="http://dev.mysql.com/doc/mysql/en/News.html"/>)
- can be particularly useful since it is quite possible that
- a newer version contains a solution to your problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Search in the bugs database at
- <ulink url="http://bugs.mysql.com/"/> to see whether the
- bug has been reported and fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Search the MySQL mailing list archives at
- <ulink url="http://lists.mysql.com/"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- You can also use
- <ulink url="http://www.mysql.com/search/"/> to search all
- the Web pages (including the manual) that are located at
- the MySQL AB Web site.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- If you can't find an answer in the manual or the archives,
- check with your local MySQL expert. If you still can't find an
- answer to your question, please follow the guidelines on
- sending mail to a MySQL mailing list, outlined in the next
- section, before contacting us.
- </para>
-
- </section>
-
- <section id="bug-reports">
-
- <title id="title-bug-reports">&title-bug-reports;</title>
-
- <indexterm type="concept">
- <primary>bugs</primary>
- <secondary>reporting</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>reporting</primary>
- <secondary>bugs</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>problems</primary>
- <secondary>reporting</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>errors</primary>
- <secondary>reporting</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary><command>mysqlbug</command> script</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>creating</primary>
- <secondary>bug reports</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>scripts</primary>
- <secondary><command>mysqlbug</command></secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>bugs.mysql.com</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>bugs database</primary>
- </indexterm>
-
- <para>
- The normal place to report bugs is
- <ulink url="http://bugs.mysql.com/"/>, which is the address
- for our bugs database. This database is public, and can be
- browsed and searched by anyone. If you log in to the system,
- you can enter new reports.
- </para>
-
- <para>
- Writing a good bug report takes patience, but doing it right
- the first time saves time both for us and for yourself. A good
- bug report, containing a full test case for the bug, makes it
- very likely that we will fix the bug in the next release. This
- section helps you write your report correctly so that you
- don't waste your time doing things that may not help us much
- or at all.
- </para>
-
- <para>
- We encourage everyone to use the <command>mysqlbug</command>
- script to generate a bug report (or a report about any
- problem). <command>mysqlbug</command> can be found in the
- <filename>scripts</filename> directory (source distribution)
- and in the <filename>bin</filename> directory under your MySQL
- installation directory (binary distribution). If you are
- unable to use <command>mysqlbug</command> (for example, if you
- are running on Windows), it is still vital that you include
- all the necessary information noted in this section (most
- importantly, a description of the operating system and the
- MySQL version).
- </para>
-
- <para>
- The <command>mysqlbug</command> script helps you generate a
- report by determining much of the following information
- automatically, but if something important is missing, please
- include it with your message. Please read this section
- carefully and make sure that all the information described
- here is included in your report.
- </para>
-
- <para>
- Preferably, you should test the problem using the latest
- production or development version of MySQL Server before
- posting. Anyone should be able to repeat the bug by just using
- <literal>mysql test < script_file</literal> on the included
- test case or by running the shell or Perl script that is
- included in the bug report.
- </para>
-
- <para>
- All bugs posted in the bugs database at
- <ulink url="http://bugs.mysql.com/"/> are corrected or
- documented in the next MySQL release. If only minor code
- changes are needed to correct a problem, we may also post a
- patch that fixes the problem.
- </para>
-
- <para>
- If you have found a sensitive security bug in MySQL, you can
- send email to <email>security@stripped</email>.
- </para>
-
- <para>
- If you have a repeatable bug report, please report it to the
- bugs database at <ulink url="http://bugs.mysql.com/"/>. Note
- that even in this case it's good to run the
- <command>mysqlbug</command> script first to find information
- about your system. Any bug that we are able to repeat has a
- high chance of being fixed in the next MySQL release.
- </para>
-
- <para>
- To report other problems, you can use one of the MySQL mailing
- lists.
- </para>
-
- <para>
- Remember that it is possible for us to respond to a message
- containing too much information, but not to one containing too
- little. People often omit facts because they think they know
- the cause of a problem and assume that some details don't
- matter. A good principle is this: If you are in doubt about
- stating something, state it. It is faster and less troublesome
- to write a couple more lines in your report than to wait
- longer for the answer if we must ask you to provide
- information that was missing from the initial report.
- </para>
-
- <para>
- The most common errors made in bug reports are (a) not
- including the version number of the MySQL distribution used,
- and (b) not fully describing the platform on which the MySQL
- server is installed (including the platform type and version
- number). This is highly relevant information, and in 99 cases
- out of 100, the bug report is useless without it. Very often
- we get questions like, <quote>Why doesn't this work for
- me?</quote> Then we find that the feature requested wasn't
- implemented in that MySQL version, or that a bug described in
- a report has been fixed in newer MySQL versions. Sometimes the
- error is platform-dependent; in such cases, it is next to
- impossible for us to fix anything without knowing the
- operating system and the version number of the platform.
- </para>
-
- <para>
- If you compiled MySQL from source, remember also to provide
- information about your compiler, if it is related to the
- problem. Often people find bugs in compilers and think the
- problem is MySQL-related. Most compilers are under development
- all the time and become better version by version. To
- determine whether your problem depends on your compiler, we
- need to know what compiler you use. Note that every compiling
- problem should be regarded as a bug and reported accordingly.
- </para>
-
- <para>
- It is most helpful when a good description of the problem is
- included in the bug report. That is, give a good example of
- everything you did that led to the problem and describe, in
- exact detail, the problem itself. The best reports are those
- that include a full example showing how to reproduce the bug
- or problem. See <xref linkend="reproduceable-test-case"/>.
- </para>
-
- <para>
- If a program produces an error message, it is very important
- to include the message in your report. If we try to search for
- something from the archives using programs, it is better that
- the error message reported exactly matches the one that the
- program produces. (Even the lettercase should be observed.)
- You should never try to reproduce from memory what the error
- message was; instead, copy and paste the entire message into
- your report.
- </para>
-
- <para>
- If you have a problem with Connector/ODBC (MyODBC), please try
- to generate a trace file and send it with your report. See
- <xref linkend="myodbc-bug-report"/>.
- </para>
-
- <para>
- Please remember that many of the people who read your report
- do so using an 80-column display. When generating reports or
- examples using the <command>mysql</command> command-line tool,
- you should therefore use the <option>--vertical</option>
- option (or the <literal>\G</literal> statement terminator) for
- output that would exceed the available width for such a
- display (for example, with the <literal>EXPLAIN
- SELECT</literal> statement; see the example later in this
- section).
- </para>
-
- <indexterm type="concept">
- <primary>bug reports</primary>
- <secondary>criteria for</secondary>
- </indexterm>
-
- <para>
- Please include the following information in your report:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- The version number of the MySQL distribution you are using
- (for example, MySQL 4.0.12). You can find out which
- version you are running by executing <command>mysqladmin
- version</command>. The <command>mysqladmin</command>
- program can be found in the <filename>bin</filename>
- directory under your MySQL installation directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The manufacturer and model of the machine on which you
- experience the problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The operating system name and version. If you work with
- Windows, you can usually get the name and version number
- by double-clicking your My Computer icon and pulling down
- the <quote>Help/About Windows</quote> menu. For most
- Unix-like operating systems, you can get this information
- by executing the command <literal>uname -a</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sometimes the amount of memory (real and virtual) is
- relevant. If in doubt, include these values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If you are using a source distribution of the MySQL
- software, the name and version number of the compiler used
- are needed. If you have a binary distribution, the
- distribution name is needed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If the problem occurs during compilation, include the
- exact error messages and also a few lines of context
- around the offending code in the file where the error
- occurs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If <command>mysqld</command> died, you should also report
- the query that crashed <command>mysqld</command>. You can
- usually find this out by running <command>mysqld</command>
- with query logging enabled, and then looking in the log
- after <command>mysqld</command> crashes See
- <xref linkend="using-log-files"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If a database table is related to the problem, include the
- output from <command>mysqldump --no-data
- <replaceable>db_name</replaceable>
- <replaceable>tbl_name</replaceable></command>. This is
- very easy to do and is a powerful way to get information
- about any table in a database. The information helps us
- create a situation matching the one you have experienced.
- </para>
- </listitem>
-
- <listitem>
- <para>
- For speed-related bugs or problems with
- <literal>SELECT</literal> statements, you should always
- include the output of <literal>EXPLAIN SELECT
- ...</literal>, and at least the number of rows that the
- <literal>SELECT</literal> statement produces. You should
- also include the output from <literal>SHOW CREATE TABLE
- <replaceable>tbl_name</replaceable></literal> for each
- involved table. The more information you give about your
- situation, the more likely it is that someone can help
- you.
- </para>
-
- <para>
- The following is an example of a very good bug report. It
- should be posted with the <command>mysqlbug</command>
- script. The example uses the <command>mysql</command>
- command-line tool. Note the use of the
- <literal>\G</literal> statement terminator for statements
- whose output width would otherwise exceed that of an
- 80-column display device.
- </para>
-
-<programlisting>
-mysql> <userinput>SHOW VARIABLES;</userinput>
-mysql> <userinput>SHOW COLUMNS FROM ...\G</userinput>
- <output from SHOW COLUMNS>
-mysql> <userinput>EXPLAIN SELECT ...\G</userinput>
- <output from EXPLAIN>
-mysql> <userinput>FLUSH STATUS;</userinput>
-mysql> <userinput>SELECT ...;</userinput>
- <A short version of the output from SELECT,
- including the time taken to run the query>
-mysql> <userinput>SHOW STATUS;</userinput>
- <output from SHOW STATUS>
-</programlisting>
- </listitem>
-
- <listitem>
- <para>
- If a bug or problem occurs while running
- <command>mysqld</command>, try to provide an input script
- that reproduces the anomaly. This script should include
- any necessary source files. The more closely the script
- can reproduce your situation, the better. If you can make
- a reproducible test case, you should post it on
- <ulink url="http://bugs.mysql.com/"/> for high-priority
- treatment.
- </para>
-
- <para>
- If you can't provide a script, you should at least include
- the output from <command>mysqladmin variables
- extended-status processlist</command> in your mail to
- provide some information on how your system is performing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If you can't produce a test case with only a few rows, or
- if the test table is too big to be mailed to the mailing
- list (more than 10 rows), you should dump your tables
- using <command>mysqldump</command> and create a
- <filename>README</filename> file that describes your
- problem.
- </para>
-
- <para>
- Create a compressed archive of your files using
- <command>tar</command> and <command>gzip</command>
or
- <command>zip</command>, and use FTP to transfer the
- archive to
- <ulink url="ftp://ftp.mysql.com/pub/mysql/upload/"/>. Then
- enter the problem into our bugs database at
- <ulink url="http://bugs.mysql.com/"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If you think that the MySQL server produces a strange
- result from a query, include not only the result, but also
- your opinion of what the result should be, and an account
- describing the basis for your opinion.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When giving an example of the problem, it's better to use
- the variable names, table names, and so on that exist in
- your actual situation than to come up with new names. The
- problem could be related to the name of a variable or
- table. These cases are rare, perhaps, but it is better to
- be safe than sorry. After all, it should be easier for you
- to provide an example that uses your actual situation, and
- it is by all means better for us. In case you have data
- that you don't want to show to others, you can use FTP to
- transfer it to
- <ulink url="ftp://ftp.mysql.com/pub/mysql/upload/"/>. If
- the information is really top secret and you don't want to
- show it even to us, then go ahead and provide an example
- using other names, but please regard this as the last
- choice.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Include all the options given to the relevant programs, if
- possible. For example, indicate the options that you use
- when you start the <command>mysqld</command> server as
- well as the options that you use to run any MySQL client
- programs. The options to programs such as
- <command>mysqld</command> and
<command>mysql</command>,
- and to the <command>configure</command> script, are often
- keys to answers and are very relevant. It is never a bad
- idea to include them. If you use any modules, such as Perl
- or PHP, please include the version numbers of those as
- well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If your question is related to the privilege system,
- please include the output of
- <command>mysqlaccess</command>, the output of
- <command>mysqladmin reload</command>, and all the error
- messages you get when trying to connect. When you test
- your privileges, you should first run
- <command>mysqlaccess</command>. After this, execute
- <command>mysqladmin reload version</command> and try to
- connect with the program that gives you trouble.
- <command>mysqlaccess</command> can be found in the
- <filename>bin</filename> directory under your MySQL
- installation directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If you have a patch for a bug, do include it. But don't
- assume that the patch is all we need, or that we can use
- it, if you don't provide some necessary information such
- as test cases showing the bug that your patch fixes. We
- might find problems with your patch or we might not
- understand it at all; if so, we can't use it.
- </para>
-
- <para>
- If we can't verify exactly what the purpose of the patch
- is, we won't use it. Test cases help us here. Show that
- the patch handles all the situations that may occur. If we
- find a borderline case (even a rare one) where the patch
- won't work, it may be useless.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guesses about what the bug is, why it occurs, or what it
- depends on are usually wrong. Even the MySQL team can't
- guess such things without first using a debugger to
- determine the real cause of a bug.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Indicate in your bug report that you have checked the
- reference manual and mail archive so that others know you
- have tried to solve the problem yourself.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If you get a <literal>parse error</literal>, please check
- your syntax closely. If you can't find something wrong
- with it, it's extremely likely that your current version
- of MySQL Server doesn't support the syntax you are using.
- If you are using the current version and the manual at
- <ulink url="http://dev.mysql.com/doc/"/> doesn't cover the
- syntax you are using, MySQL Server doesn't support your
- query. In this case, your only options are to implement
- the syntax yourself or email
- <email>licensing@stripped</email> and ask for an offer to
- implement it.
- </para>
-
- <para>
- If the manual covers the syntax you are using, but you
- have an older version of MySQL Server, you should check
- the MySQL change history to see when the syntax was
- implemented. In this case, you have the option of
- upgrading to a newer version of MySQL Server. See
- <xref linkend="news"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If your problem is that your data appears corrupt or you
- get errors when you access a particular table, you should
- first check and then try to repair your tables with
- <literal>CHECK TABLE</literal> and <literal>REPAIR
- TABLE</literal> or with <command>myisamchk</command>. See
- <xref linkend="mysql-database-administration"/>.
- </para>
-
- <para>
- If you are running Windows, please verify the value of
- <literal>lower_case_table_names</literal> using the
- <literal>SHOW VARIABLES LIKE
- 'lower_case_table_names'</literal> command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If you often get corrupted tables, you should try to find
- out when and why this happens. In this case, the error log
- in the MySQL data directory may contain some information
- about what happened. (This is the file with the
- <filename>.err</filename> suffix in the name.) See
- <xref linkend="error-log"/>. Please include any relevant
- information from this file in your bug report. Normally
- <command>mysqld</command> should
- <emphasis>never</emphasis> crash a table if nothing killed
- it in the middle of an update. If you can find the cause
- of <command>mysqld</command> dying, it's much easier for
- us to provide you with a fix for the problem. See
- <xref linkend="what-is-crashing"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If possible, download and install the most recent version
- of MySQL Server and check whether it solves your problem.
- All versions of the MySQL software are thoroughly tested
- and should work without problems. We believe in making
- everything as backward-compatible as possible, and you
- should be able to switch MySQL versions without
- difficulty. See <xref linkend="which-version"/>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <indexterm type="concept">
- <primary>technical support</primary>
- <secondary>mailing address</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>support</primary>
- <secondary>mailing address</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>customer support</primary>
- <secondary>mailing address</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>mailing address</primary>
- <secondary>for customer support</secondary>
- </indexterm>
-
- <para>
- If you are a support customer, please cross-post the bug
- report to <email>mysql-support@stripped</email> for
- higher-priority treatment, as well as to the appropriate
- mailing list to see whether someone else has experienced (and
- perhaps solved) the problem.
- </para>
-
- <para>
- For information on reporting bugs in MyODBC, see
- <xref linkend="myodbc-bug-report"/>.
- </para>
-
- <para>
- For solutions to some common problems, see
- <xref linkend="problems"/>.
- </para>
-
- <para>
- When answers are sent to you individually and not to the
- mailing list, it is considered good etiquette to summarize the
- answers and send the summary to the mailing list so that
- others may have the benefit of responses you received that
- helped you solve your problem.
- </para>
-
- </section>
-
- <section id="answering-questions">
-
- <title
id="title-answering-questions">&title-answering-questions;</title>
-
- <indexterm type="concept">
- <primary>net etiquette</primary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>questions</primary>
- <secondary>answering</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>answering questions</primary>
- <secondary>etiquette</secondary>
- </indexterm>
-
- <indexterm type="concept">
- <primary>mailing lists</primary>
- <secondary>guidelines</secondary>
- </indexterm>
-
- <para>
- If you consider your answer to have broad interest, you may
- want to post it to the mailing list instead of replying
- directly to the individual who asked. Try to make your answer
- general enough that people other than the original poster may
- benefit from it. When you post to the list, please make sure
- that your answer is not a duplication of a previous answer.
- </para>
-
- <para>
- Try to summarize the essential part of the question in your
- reply; don't feel obliged to quote the entire original
- message.
- </para>
-
- <para>
- Please don't post mail messages from your browser with HTML
- mode turned on. Many users don't read mail with a browser.
+ The News section of this manual includes a more in-depth list
+ of MySQL 4.1 features. See <xref linkend="news-4-1-x"/>.
</para>
</section>
</section>
- <section id="irc">
-
- <title id="title-irc">&title-irc;</title>
-
- <indexterm type="concept">
- <primary>IRC</primary>
- </indexterm>
+ <section id="mysql-5-0-nutshell">
- <indexterm type="concept">
- <primary>Internet Relay Chat</primary>
- </indexterm>
+ <title
id='title-mysql-5-0-nutshell'>&title-mysql-5-0-nutshell;</title>
<para>
- In addition to the various MySQL mailing lists, you can find
- experienced community people on <literal>IRC</literal>
- (<literal>Internet Relay Chat</literal>). These are the best
- networks/channels currently known to us:
+ The following features are implemented in MySQL 5.0.
</para>
<itemizedlist>
<listitem>
<para>
- <emphasis role="bold">freenode</emphasis> (see
- <ulink url="http://www.freenode.net/"/> for servers)
+ <emphasis role="bold"><literal>BIT</literal> Data
+ Type</emphasis>: Can be used to store numbers in binary
+ notation.
</para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <literal>#mysql</literal> Primarily MySQL questions, but
- other database and general SQL questions are welcome.
- Questions about PHP, Perl or C in combination with MySQL
- are also common.
- </para>
- </listitem>
-
- </itemizedlist>
</listitem>
- </itemizedlist>
-
- <remark role="todo">
- Update following paragraph, as the win32 version is no longer
- free.
- </remark>
-
- <para>
- If you are looking for IRC client software to connect to an IRC
- network, take a look at <literal>xChat</literal>
- (<ulink url="http://www.xchat.org/"/>). X-Chat (GPL licensed) is
- available for Unix as well as for Windows platforms (a free
- Windows build of X-Chat is available at
- <ulink url="http://www.silverex.org/download/"/>).
- </para>
-
- </section>
-
- <section id="forums">
-
- <title id="title-forums">&title-forums;</title>
-
- <indexterm type="concept">
- <primary>Forums</primary>
- </indexterm>
-
- <para>
- The latest community support resource are the forums at
- <ulink url="http://forums.mysql.com"/>.
- </para>
-
- <para>
- There are a variety of forums available, grouped in the
- following general categories:
- </para>
-
- <itemizedlist>
-
<listitem>
<para>
- Migration
+ <emphasis role="bold">Cursors</emphasis>: Elementary support
+ for server-side cursors.
</para>
</listitem>
<listitem>
<para>
- MySQL Usage
+ <emphasis role="bold">Data Dictionary (Information
+ Schema)</emphasis>: The introduction of the
+ <literal>INFORMATION_SCHEMA</literal> database in MySQL 5.0
+ provided a standards-compliant means for accessing the MySQL
+ Server's metadata, that is, data about the databases
+ (schemas) on the server and the objects which they contain.
</para>
</listitem>
<listitem>
<para>
- MySQL Connectors
+ <emphasis role="bold">Instance Manager</emphasis>: Can be
+ used to start and stop the MySQL Server, even from a remote
+ host.
</para>
</listitem>
<listitem>
<para>
- Programming Languages
+ <emphasis role="bold">Precision Math</emphasis>: MySQL 5.0
+ introduced stricter criteria for acceptance or rejection of
+ data, and implemented a new library for fixed-point
+ arithmetic. These contributed to a much higher degree of
+ accuracy for mathematical operations and greater control
+ over invalid values.
</para>
</listitem>
<listitem>
<para>
- Tools
+ <emphasis role="bold">Storage Engines</emphasis>: Storage
+ engines added in MySQL 5.0 include
+ <literal>ARCHIVE</literal> and
<literal>FEDERATED</literal>.
</para>
</listitem>
<listitem>
<para>
- 3rd-Party Applications
+ <emphasis role="bold">Stored Routines</emphasis>: Support
+ for named stored procedures and stored functions was
+ implemented in MySQL 5.0.
</para>
</listitem>
<listitem>
<para>
- Storage Engines
+ <emphasis role="bold">Strict Mode and Standard Error
+ Handling</emphasis>: MySQL 5.0 added a strict mode where by
+ it follows standard SQL in a number of ways in which it did
+ not previously. Support for standard SQLSTATE error messages
+ was also implemented.
</para>
</listitem>
<listitem>
<para>
- MySQL Technology
+ <emphasis role="bold">Triggers</emphasis>: MySQL 5.0 added
+ limited support for triggers.
</para>
</listitem>
<listitem>
<para>
- SQL Standards
+ <emphasis role="bold"><literal>VARCHAR</literal> Data
+ Type</emphasis>: The maximum effective length of a
+ <literal>VARCHAR</literal> column was increased to 65,532
+ bytes, and stripping of trailing whitespace was eliminated.
</para>
</listitem>
<listitem>
<para>
- Business
+ <emphasis role="bold">Views</emphasis>: MySQL 5.0 added
+ support for named, updateable views.
</para>
</listitem>
</itemizedlist>
+ <para>
+ For those wishing to take a look at the bleeding edge of MySQL
+ development, we make our BitKeeper repository for MySQL publicly
+ available. See <xref linkend="installing-source-tree"/>.
+ </para>
+
+ <remark role="todo">
+ [js] Add nutshell-5-1 section. This needs to be done by the time
+ that 5.0 goes GA.
+ </remark>
+
</section>
</section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/information-sources.xml"/>
+
<section id="compatibility">
- <title id="title-compatibility">&title-compatibility;</title>
+ <title id='title-compatibility'>&title-compatibility;</title>
<indexterm type="concept">
<primary>compatibility</primary>
@@ -4482,15 +1155,15 @@
standard released in 1999, and <quote>SQL:2003</quote> refers to
the current version of the standard. We use the phrase <quote>the
SQL standard</quote> to mean the current version of the SQL
- Standard at any given time.
+ Standard at any time.
</para>
<para>
- Our goal is to not restrict MySQL Server's usability without a
- very good reason for doing so. Even if we don't have the resources
- to perform development for every possible use, we are always
- willing to help and offer suggestions to people who are trying to
- use MySQL Server in new areas.
+ Our goal is to not restrict MySQL Server usability for any usage
+ without a very good reason for doing so. Even if we don't have the
+ resources to perform development for every possible use, we are
+ always willing to help and offer suggestions to people who are
+ trying to use MySQL Server in new territories.
</para>
<para>
@@ -5696,6 +2369,36 @@
</section>
+ <section id="ansi-diff-triggers">
+
+ <title
id='title-ansi-diff-triggers'>&title-ansi-diff-triggers;</title>
+
+ <indexterm type="concept">
+ <primary>stored procedures and triggers</primary>
+ <secondary>defined</secondary>
+ </indexterm>
+
+ <indexterm type="concept">
+ <primary>procedures</primary>
+ <secondary>stored</secondary>
+ </indexterm>
+
+ <indexterm type="concept">
+ <primary>triggers</primary>
+ </indexterm>
+
+ <para>
+ Stored procedures are implemented in MySQL version 5.0.
+ </para>
+
+ <para>
+ Basic triggers functionality is implemented in MySQL beginning
+ with version 5.0.2, with further development planned in MySQL
+ 5.1.
+ </para>
+
+ </section>
+
<section id="ansi-diff-foreign-keys">
<title
id="title-ansi-diff-foreign-keys">&title-ansi-diff-foreign-keys;</title>
@@ -5892,6 +2595,46 @@
</section>
+ <section id="ansi-diff-views">
+
+ <title id='title-ansi-diff-views'>&title-ansi-diff-views;</title>
+
+ <indexterm type="concept">
+ <primary>views</primary>
+ </indexterm>
+
+ <indexterm type="concept">
+ <primary>views</primary>
+ <secondary>updatable</secondary>
+ </indexterm>
+
+ <para>
+ Views (including updatable views) are implemented in the 5.0
+ version of MySQL Server. Views are available in binary
+ releases from 5.0.1 and up.
+ </para>
+
+ <para>
+ Views are useful for allowing users to access a set of
+ relations (tables) as if it were a single table, and limiting
+ their access to just that. Views can also be used to restrict
+ access to rows (a subset of a particular table). For access
+ control to columns, you can also use the sophisticated
+ privilege system in MySQL Server. See
+ <xref linkend="privilege-system"/>.
+ </para>
+
+ <para>
+ In designing an implementation of views, our ambitious goal,
+ as much as is possible within the confines of SQL, has been
+ full compliance with <quote>Codd's Rule #6</quote> for
+ relational database systems: <quote>All views that are
+ theoretically updatable, should in practice also be
+ updatable.</quote>
+ </para>
+
+ </section>
+
<section id="ansi-diff-comments">
<title
id="title-ansi-diff-comments">&title-ansi-diff-comments;</title>
@@ -6099,8 +2842,8 @@
<para>
You can get information about the number of rows actually
inserted or updated with the <literal>mysql_info()</literal> C
- API function. See <xref linkend="mysql-info"/>. In MySQL 4.1,
- you can also use the <literal>SHOW WARNINGS</literal>
+ API function. See <xref linkend="mysql-info"/>. In MySQL 4.1
+ and up, you also can use the <literal>SHOW WARNINGS</literal>
statement. See <xref linkend="show-warnings"/>.
</para>
--- 1.34/refman/introduction.xml 2005-08-30 01:32:31 +10:00
+++ 1.35/refman/introduction.xml 2005-08-31 17:17:54 +10:00
@@ -187,9 +187,9 @@
<para>
This is the Reference Manual for all releases of the MySQL
Database System through Version ¤t-version;. It is also
- applicable for versions of the MySQL software previous to
- ¤t-version; (such as 3.23 or 4.0) because functional changes
- are indicated with reference to version numbers.
+ applicable for all previous versions of the MySQL software (such
+ as 3.23 or 4.0) because functional changes are indicated with
+ reference to version numbers.
<remark role="todo">
Update following as appropriate.
@@ -268,7 +268,832 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/maxdb.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/roadmap.xml"/>
+ <section id="roadmap">
+
+ <title id='title-roadmap'>&title-roadmap;</title>
+
+ <para>
+ This section provides a snapshot of the MySQL development roadmap,
+ including major features implemented in or planned for the various
+ MySQL releases. The following sections provide information for
+ each release series.
+ </para>
+
+ <remark role="todo">
+ [js] Update as required when we start a new release series.
+ </remark>
+
+ <para>
+ The current production release series is MySQL 4.1, which was
+ declared stable for production use as of Version 4.1.7, released
+ in October 2004. The previous production release series is MySQL
+ 4.0, which was declared stable for production use as of Version
+ 4.0.12, released in March 2003. Production status means that
+ future 4.1 and 4.0 development is limited only to bugfixes. For
+ the older MySQL 3.23 series, only critical bugfixes are made.
+ </para>
+
+ <remark role="todo">
+ [js] Update as required when we start a new release series.
+ </remark>
+
+ <para>
+ Active MySQL development currently is taking place in the MySQL
+ 5.0 release series; this means that new features are being added
+ there. MySQL 5.0 is available in beta status.
+ </para>
+
+ <para>
+ Before upgrading from one release series to the next, please see
+ the notes at <xref linkend="upgrade"/>.
+ </para>
+
+ <para>
+ The most requested features and the versions in which they were
+ implemented or are scheduled for implementation are summarized in
+ the following table:
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colwidth="30*"/>
+ <colspec colwidth="60*"/>
+ <tbody>
+ <row>
+ <entry><emphasis
role="bold">Feature</emphasis></entry>
+ <entry><emphasis role="bold">MySQL
Series</emphasis></entry>
+ </row>
+ <row>
+ <entry>Foreign keys</entry>
+ <entry>3.23 (for the <literal>InnoDB</literal> storage
engine)</entry>
+ </row>
+ <row>
+ <entry>Unions</entry>
+ <entry>4.0</entry>
+ </row>
+ <row>
+ <entry>Subqueries</entry>
+ <entry>4.1</entry>
+ </row>
+ <row>
+ <entry>R-trees</entry>
+ <entry>4.1 (for the <literal>MyISAM</literal> storage
engine)</entry>
+ </row>
+ <row>
+ <entry>Stored procedures</entry>
+ <entry>5.0</entry>
+ </row>
+ <row>
+ <entry>Views</entry>
+ <entry>5.0</entry>
+ </row>
+ <row>
+ <entry>Cursors</entry>
+ <entry>5.0</entry>
+ </row>
+ <row>
+ <entry>Triggers</entry>
+ <entry>5.0 and 5.1</entry>
+ </row>
+ <row>
+ <entry>Partitioning</entry>
+ <entry>5.1</entry>
+ </row>
+ <row>
+ <entry>Row-Based Replication</entry>
+ <entry>5.1</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <section id="mysql-4-0-nutshell">
+
+ <title
id='title-mysql-4-0-nutshell'>&title-mysql-4-0-nutshell;</title>
+
+ <para>
+ MySQL Server 4.0 is available in production status.
+ </para>
+
+ <para>
+ MySQL 4.0 is available for download at
+ <ulink url="http://dev.mysql.com/"/> and from our mirrors. MySQL
+ 4.0 has been tested by a large number of users and is in
+ production use at many large sites.
+ </para>
+
+ <section id="nutshell-4-0-features">
+
+ <title
id='title-nutshell-4-0-features'>&title-nutshell-4-0-features;</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Speed enhancements
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ MySQL 4.0 implemented a query cache that can give a
+ major speed boost to applications with repetitive
+ queries. See <xref linkend="query-cache"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Version 4.0 further increased the speed of MySQL
+ Server in a number of areas, such as bulk
+ <literal>INSERT</literal> statements, searching on
+ packed indexes, full-text searching (using
+ <literal>FULLTEXT</literal> indexes), and
+ <literal>COUNT(DISTINCT)</literal>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Introduction of Embedded MySQL Server
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The Embedded Server library added in this release can
+ easily be used to create standalone and embedded
+ applications. The embedded server provides an
+ alternative to using MySQL in a client/server
+ environment. See
+ <xref linkend="nutshell-embedded-mysql"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>InnoDB</literal> storage engine as standard
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The <literal>InnoDB</literal> storage engine began to
+ be offered as a standard feature of the MySQL server.
+ This provided full support for ACID transactions,
+ foreign keys with cascading <literal>UPDATE</literal>
+ and <literal>DELETE</literal>, and row-level locking
+ as standard features. See <xref linkend="innodb"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ New functionality
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The enhanced <literal>FULLTEXT</literal> search
+ capabilities of MySQL Server 4.0 enabled
+ <literal>FULLTEXT</literal> indexing of large text
+ masses with both binary and natural-language searching
+ logic. It became possible to customize minimal word
+ length and define your own stop word lists in most
+ human languages, enabling a broader class of
+ applications to be built with MySQL Server. See
+ <xref linkend="fulltext-search"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Standards compliance, portability, and migration
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ MySQL Server added support for the
+ <literal>UNION</literal> statement, a standard SQL
+ feature.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Starting with version 4.0, MySQL runs natively on
+ Novell NetWare 6.0 and higher. See
+ <xref linkend="netware-installation"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Features to simplify migration from other database
+ systems to MySQL Server include <literal>TRUNCATE
+ TABLE</literal> (as in Oracle)
+
+ <remark role="note">
+ Commented out IDENTITY until someone explains what
+ it means...
+ </remark>
+
+
+
+ <remark>
+ and IDENTITY as a synonym for automatically
+ incremented keys (as in Sybase)
+ </remark>
+
+ .
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Internationalization
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ German-speaking users should note that MySQL 4.0 added
+ support for a new character set,
+ <literal>latin1_de</literal>, which ensures that words
+ with umlauts are sorted in the same order as in German
+ telephone books.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Usability enhancements</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ As of Version 4.0, most <command>mysqld</command>
+ parameters (startup options) can be set without taking
+ down the server. This is a convenient feature for
+ database administrators. See
+ <xref linkend="set-option"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Multiple-table <literal>DELETE</literal> and
+ <literal>UPDATE</literal> statements were added.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On Windows, symbolic link handling at the database
+ level was enabled by default. On Unix, the
+ <literal>MyISAM</literal> storage engine added support
+ for symbolic linking at the table level (and not just
+ the database level as before).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The addition of the
+ <literal>SQL_CALC_FOUND_ROWS</literal> and
+ <literal>FOUND_ROWS()</literal> functions made it
+ possible to find out the number of rows a
+ <literal>SELECT</literal> query that includes a
+ <literal>LIMIT</literal> clause would have returned
+ without that clause.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The news section of this manual includes a more in-depth list
+ of MySQL 4.0 features. See <xref linkend="news-4-0-x"/>.
+ </para>
+
+ </section>
+
+ <section id="nutshell-embedded-mysql">
+
+ <title
id='title-nutshell-embedded-mysql'>&title-nutshell-embedded-mysql;</title>
+
+ <para>
+ The <literal>libmysqld</literal> embedded server library made
+ MySQL Server suitable for a wider range of applications. Using
+ this library, developers can embed MySQL Server into various
+ applications and electronics devices, where the end user has
+ no knowledge of there actually being an underlying database.
+ Embedded MySQL Server is ideal for use in Internet appliances,
+ public kiosks, turnkey hardware/software combination units,
+ high performance Internet servers, self-contained databases
+ distributed on CD-ROM, and so on.
+ </para>
+
+ <para>
+ The embedded MySQL library uses the same interface as the
+ normal client library. See <xref linkend="libmysqld"/>.
+ Embedded MySQL is available under the same dual-licensing
+ model as the MySQL Server; see
+ <ulink url="http://www.mysql.com/company/legal/licensing/"/>
+ for more information.
+ </para>
+
+ <para>
+ On Windows there are two different libraries:
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colwidth="30*"/>
+ <colspec colwidth="60*"/>
+ <tbody>
+ <row>
+ <entry><literal>libmysqld.lib</literal></entry>
+ <entry>Dynamic library for threaded applications.</entry>
+ </row>
+ <row>
+ <entry><literal>mysqldemb.lib</literal></entry>
+ <entry>Static library for not threaded applications.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ </section>
+
+ </section>
+
+ <section id="mysql-4-1-nutshell">
+
+ <title
id='title-mysql-4-1-nutshell'>&title-mysql-4-1-nutshell;</title>
+
+ <para>
+ MySQL Server 4.0 laid the foundation for new features
+ implemented in MySQL 4.1, such as subqueries and Unicode
+ support, which were desired by many of our customers.
+ </para>
+
+ <para>
+ MySQL Server 4.1 is currently in production status, and binaries
+ are available for download at
+ <ulink url="http://dev.mysql.com/downloads/mysql/4.1.html"/>.
+ All binary releases pass our extensive test suite without any
+ errors on the platforms on which we test. See
+ <xref linkend="news-4-1-x"/>.
+ </para>
+
+ <para>
+ For those wishing to use the most recent development source for
+ MySQL 4.1, we also make our BitKeeper repositories publicly
+ available. See <xref linkend="installing-source-tree"/>.
+ </para>
+
+ <section id="nutshell-4-1-features">
+
+ <title
id='title-nutshell-4-1-features'>&title-nutshell-4-1-features;</title>
+
+ <para>
+ This section lists features implemented in MySQL 4.1. Features
+ that are available in MySQL 5.0 are described in
+ <xref linkend="todo-mysql-5-0"/>.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Support for subqueries and derived
+ tables</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ A <quote>subquery</quote> is a
+ <literal>SELECT</literal> statement nested within
+ another statement. A <quote>derived table</quote> (an
+ unnamed view) is a subquery in the
+ <literal>FROM</literal> clause of another statement.
+ See <xref linkend="subqueries"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Speed enhancements</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Faster binary client/server protocol with support for
+ prepared statements and parameter binding. See
+ <xref linkend="c-api-prepared-statements"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>BTREE</literal> indexing is supported for
+ <literal>HEAP</literal> tables, significantly
+ improving response time for non-exact searches.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Added functionality</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>CREATE TABLE
+ <replaceable>tbl_name2</replaceable> LIKE
+ <replaceable>tbl_name1</replaceable></literal> allows
+ you to create, with a single statement, a new table
+ with a structure exactly like that of an existing
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>MyISAM</literal> storage engine added
+ support for OpenGIS spatial types for storing
+ geographical data. See
+ <xref linkend="spatial-extensions-in-mysql"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support was added for replication over SSL
+ connections.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support for a number of additional storage engines was
+ implemented in the MySQL 4.1 release series:
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The <literal>EXAMPLE</literal> storage engine is
+ a <quote>stub</quote> engine that serves as an
+ example in the MySQL source code for writing new
+ storage engines, and is primarily of interest to
+ developers. See
+ <xref linkend="example-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>NDB Cluster</literal> is the storage
+ engine used by MySQL Cluster to implement tables
+ that are partitioned over many computers. See
+ <xref linkend="ndbcluster"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>ARCHIVE</literal> storage engine is
+ used for storing large amounts of data without
+ indexes in a very small footprint. See
+ <xref linkend="archive-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>CSV</literal> storage engine stores
+ data in text files using comma-separated-values
+ format. See
+ <xref linkend="csv-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>BLACKHOLE</literal> storage engine
+ accepts but does not store data, and always
+ returns an empty result set. It is for use
+ primarily in replication. See
+ <xref linkend="blackhole-storage-engine"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <emphasis role="bold">Note</emphasis>: These engine
+ were implemented at different points in the
+ development of MySQL 4.1. Please see the indicated
+ sections for particulars in each case.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Standards compliance, portability,
+ and migration</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The enhanced client/server protocol available
+ beginning with MySQL 4.1.1 provides the ability to
+ pass multiple warnings to the client, rather than only
+ a single result, making it much easier to track
+ problems that occur in operations such as bulk data
+ loading.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>SHOW WARNINGS</literal> shows warnings for
+ the last command. See <xref linkend="show-warnings"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Internationalization and
+ Localization</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ To support applications that require the use of local
+ languages, the MySQL software added extensive Unicode
+ support through the <literal>utf8</literal> and
+ <literal>ucs2</literal> character sets.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Definition of character sets by column, table, and
+ database. This allows for a high degree of flexibility
+ in application design, particularly for multi-language
+ Web sites. See <xref linkend="charset"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Per-connection time zones support, allowing individual
+ clients to select their own time zones when necessary.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Usability enhancements</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The addition of a server-based <literal>HELP</literal>
+ command that can be used to get help information for
+ SQL statements. This information is always applicable
+ to the particular server version being used. Because
+ this information is available by issuing an SQL
+ statement, any client can access it. For example, the
+ <literal>help</literal> command of the
+ <command>mysql</command> command-line client has been
+ modified to have this capability.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The improved client/server protocol allows multiple
+ statements to be issued with a single call, and for
+ returning multiple result sets. See
+ <xref linkend="c-api-multiple-queries"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The syntax <literal>INSERT ... ON DUPLICATE KEY UPDATE
+ ...</literal> was implemented. This allows you to
+ update an existing row if the insert would have caused
+ a duplicate value for a primary or unique index. See
+ <xref linkend="insert"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The aggregate function
+ <literal>GROUP_CONCAT()</literal>, added the
+ capability to concatenate column values from grouped
+ rows into a single result string. See
+ <xref linkend="group-by-functions-and-modifiers"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The News section of this manual includes a more in-depth list
+ of MySQL 4.1 features. See <xref linkend="news-4-1-x"/>.
+ </para>
+
+ </section>
+
+ </section>
+
+ <section id="mysql-5-0-nutshell">
+
+ <title
id='title-mysql-5-0-nutshell'>&title-mysql-5-0-nutshell;</title>
+
+ <para>
+ The following features are implemented in MySQL 5.0.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">BIT</emphasis> Data Type: See
+ <xref linkend="numeric-types"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Cursors</emphasis>: Elementary
+ support. See <xref linkend="cursors"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Data Dictionary (Information
+ Schema)</emphasis>: See
+ <xref linkend="information-schema"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Instance Manager</emphasis>: Can be
+ used to start and stop the MySQL Server, even from a remote
+ host. See <xref linkend="instance-manager"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Precision Math</emphasis>: See
+ <xref linkend="precision-math"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Storage Engines</emphasis>: Storage
+ engines added in MySQL 5.0 include
+ <literal>ARCHIVE</literal> and
<literal>FEDERATED</literal>.
+ See <xref linkend="archive-storage-engine"/> and
+ <xref linkend="federated-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Stored Procedures</emphasis>: See
+ <xref linkend="stored-procedures"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Strict Mode and Standard Error
+ Handling</emphasis>: See <xref linkend="server-sql-mode"/>
+ and <xref linkend="error-handling"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Triggers</emphasis>: See
+ <xref linkend="triggers"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold"><literal>VARCHAR</literal> Data
+ Type</emphasis>: The maximum effective length of a
+ <literal>VARCHAR</literal> column was increased to 65,532
+ bytes, and stripping of trailing whitespace was eliminated.
+ See <xref linkend="char"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Views</emphasis>: See
+ <xref linkend="views"/> and
+ <xref linkend="ansi-diff-views"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+<!--
+ <para>
+ The News section of this manual includes a more in-depth list
of
+ MySQL 5.0 features. See <xref linkend="news-5-0-x"/>.
+ </para>
+ -->
+
+ <para>
+ For those wishing to take a look at the bleeding edge of MySQL
+ development, we make our BitKeeper repository for MySQL publicly
+ available. See <xref linkend="installing-source-tree"/>.
+ </para>
+
+ <remark role="todo">
+ [js] Add nutshell-5-1 section. This needs to be done by the time
+ that 5.0 goes GA.
+ </remark>
+
+ </section>
+
+ </section>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/information-sources.xml"/>
--- 1.15/refman-5.0/introduction.xml 2005-08-30 01:32:30 +10:00
+++ 1.16/refman-5.0/introduction.xml 2005-08-31 17:17:54 +10:00
@@ -273,7 +273,857 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/maxdb.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/roadmap.xml"/>
+ <section id="roadmap">
+
+ <title id='title-roadmap'>&title-roadmap;</title>
+
+ <para>
+ This section provides a snapshot of the MySQL development roadmap,
+ including major features implemented in or planned for the various
+ MySQL releases. The following sections provide information for
+ each release series.
+ </para>
+
+ <remark role="todo">
+ [js] Update as required when we start a new release series.
+ </remark>
+
+ <para>
+ The current production release series is MySQL ¤t-series;,
+ which was declared stable for production use as of Version 4.1.7,
+ released in October 2004. The previous production release series
+ was MySQL &previous-series;, which was declared stable for
+ production use as of Version 4.0.12, released in March 2003.
+ Production status means that future 4.1 and 4.0 development is
+ limited only to bugfixes. For the older MySQL 3.23 series, only
+ critical bugfixes are made.
+ </para>
+
+ <remark role="todo">
+ [js] Update as required when we start a new release series.
+ </remark>
+
+ <para>
+ Active MySQL development currently is taking place in the MySQL
+ 5.0 and 5.1 release series; and new features are being added only
+ to the latter.
+ </para>
+
+ <para>
+ Before upgrading from one release series to the next, please see
+ the notes at <xref linkend="upgrade"/>.
+ </para>
+
+ <para>
+ The most requested features and the versions in which they were
+ implemented or are scheduled for implementation are summarized in
+ the following table:
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colwidth="30*"/>
+ <colspec colwidth="60*"/>
+ <tbody>
+ <row>
+ <entry><emphasis
role="bold">Feature</emphasis></entry>
+ <entry><emphasis role="bold">MySQL
Series</emphasis></entry>
+ </row>
+ <row>
+ <entry>Foreign keys</entry>
+ <entry>3.23 (for the <literal>InnoDB</literal> storage
engine)</entry>
+ </row>
+ <row>
+ <entry>Unions</entry>
+ <entry>4.0</entry>
+ </row>
+ <row>
+ <entry>Subqueries</entry>
+ <entry>4.1</entry>
+ </row>
+ <row>
+ <entry>R-trees</entry>
+ <entry>4.1 (for the <literal>MyISAM</literal> storage
engine)</entry>
+ </row>
+ <row>
+ <entry>Stored procedures</entry>
+ <entry>5.0</entry>
+ </row>
+ <row>
+ <entry>Views</entry>
+ <entry>5.0</entry>
+ </row>
+ <row>
+ <entry>Cursors</entry>
+ <entry>5.0</entry>
+ </row>
+ <row>
+ <entry>Foreign keys</entry>
+ <entry>5.1 (implemented in 3.23 for
<literal>InnoDB</literal>)</entry>
+ </row>
+ <row>
+ <entry>Triggers</entry>
+ <entry>5.0 and 5.1</entry>
+ </row>
+ <row>
+ <entry>Full outer joins</entry>
+ <entry>5.1</entry>
+ </row>
+ <row>
+ <entry>Constraints</entry>
+ <entry>5.1 (implemented in 3.23 for
<literal>InnoDB</literal>)</entry>
+ </row>
+ <row>
+ <entry>Partitioning</entry>
+ <entry>5.1</entry>
+ </row>
+ <row>
+ <entry>Row-Based Replication</entry>
+ <entry>5.1</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <section id="mysql-4-0-nutshell">
+
+ <title
id='title-mysql-4-0-nutshell'>&title-mysql-4-0-nutshell;</title>
+
+ <para>
+ MySQL 4.0 is available for download at
+ <ulink url="http://dev.mysql.com/"/> and from our mirrors. MySQL
+ 4.0 has been tested by a large number of users and is in
+ production use at many large sites.
+ </para>
+
+ <section id="nutshell-4-0-features">
+
+ <title
id="title-nutshell-4-0-features">&title-nutshell-4-0-features;</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Speed enhancements
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ MySQL 4.0 implemented a query cache that can give a
+ major speed boost to applications with repetitive
+ queries. See <xref linkend="query-cache"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Version 4.0 further increased the speed of MySQL
+ Server in a number of areas, such as bulk
+ <literal>INSERT</literal> statements, searching on
+ packed indexes, full-text searching (using
+ <literal>FULLTEXT</literal> indexes), and
+ <literal>COUNT(DISTINCT)</literal>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Introduction of Embedded MySQL Server
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The Embedded Server library added in this release can
+ easily be used to create standalone and embedded
+ applications. The embedded server provides an
+ alternative to using MySQL in a client/server
+ environment. See
+ <xref linkend="nutshell-embedded-mysql"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>InnoDB</literal> storage engine as standard
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The <literal>InnoDB</literal> storage engine began to
+ be offered as a standard feature of the MySQL server.
+ This provided full support for ACID transactions,
+ foreign keys with cascading <literal>UPDATE</literal>
+ and <literal>DELETE</literal>, and row-level locking
+ as standard features. See <xref linkend="innodb"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ New functionality
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The enhanced <literal>FULLTEXT</literal> search
+ capabilities of MySQL Server 4.0 enabled
+ <literal>FULLTEXT</literal> indexing of large text
+ masses with both binary and natural-language searching
+ logic. It became possible to customize minimal word
+ length and define your own stop word lists in most
+ human languages, enabling a broader class of
+ applications to be built with MySQL Server. See
+ <xref linkend="fulltext-search"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Standards compliance, portability, and migration
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ MySQL Server added support for the
+ <literal>UNION</literal> statement, a standard SQL
+ feature.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Starting with version 4.0, MySQL runs natively on
+ Novell NetWare 6.0 and higher. See
+ <xref linkend="netware-installation"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Features to simplify migration from other database
+ systems to MySQL Server include <literal>TRUNCATE
+ TABLE</literal> (as in Oracle)
+
+ <remark role="note">
+ Commented out IDENTITY until someone explains what
+ it means...
+ </remark>
+
+
+
+ <remark>
+ and IDENTITY as a synonym for automatically
+ incremented keys (as in Sybase)
+ </remark>
+
+ .
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Internationalization
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ German-speaking users should note that MySQL 4.0 added
+ support for a new character set,
+ <literal>latin1_de</literal>, which ensures that words
+ with umlauts are sorted in the same order as in German
+ telephone books.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Usability enhancements</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ As of Version 4.0, most <command>mysqld</command>
+ parameters (startup options) can be set without taking
+ down the server. This is a convenient feature for
+ database administrators. See
+ <xref linkend="set-option"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Multiple-table <literal>DELETE</literal> and
+ <literal>UPDATE</literal> statements were added.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On Windows, symbolic link handling at the database
+ level was enabled by default. On Unix, the
+ <literal>MyISAM</literal> storage engine added support
+ for symbolic linking at the table level (and not just
+ the database level as before).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The addition of the
+ <literal>SQL_CALC_FOUND_ROWS</literal> and
+ <literal>FOUND_ROWS()</literal> functions made it
+ possible to find out the number of rows a
+ <literal>SELECT</literal> query that includes a
+ <literal>LIMIT</literal> clause would have returned
+ without that clause.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For a more comprehensive list of MySQL 4.0 features, see the
+ &title-refman-4-1;, available at the MySQL AB website, which
+ covers MySQL 4.1 and previous versions of the MySQL server
+ software.
+ </para>
+
+ </section>
+
+ <section id="nutshell-embedded-mysql">
+
+ <title
id='title-nutshell-embedded-mysql'>&title-nutshell-embedded-mysql;</title>
+
+ <para>
+ The <literal>libmysqld</literal> embedded server library made
+ MySQL Server suitable for a wider range of applications. Using
+ this library, developers can embed MySQL Server into various
+ applications and electronics devices, where the end user has
+ no knowledge of there actually being an underlying database.
+ Embedded MySQL Server is ideal for use in Internet appliances,
+ public kiosks, turnkey hardware/software combination units,
+ high performance Internet servers, self-contained databases
+ distributed on CD-ROM, and so on.
+ </para>
+
+ <para>
+ The embedded MySQL library uses the same interface as the
+ normal client library. See <xref linkend="libmysqld"/>.
+ Embedded MySQL is available under the same dual-licensing
+ model as the MySQL Server; see
+ <ulink url="http://www.mysql.com/company/legal/licensing/"/>
+ for more information.
+ </para>
+
+ <para>
+ On Windows there are two different libraries:
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colwidth="30*"/>
+ <colspec colwidth="60*"/>
+ <tbody>
+ <row>
+ <entry><literal>libmysqld.lib</literal></entry>
+ <entry>Dynamic library for threaded applications.</entry>
+ </row>
+ <row>
+ <entry><literal>mysqldemb.lib</literal></entry>
+ <entry>Static library for not threaded applications.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ </section>
+
+ </section>
+
+ <section id="mysql-4-1-nutshell">
+
+ <title
id='title-mysql-4-1-nutshell'>&title-mysql-4-1-nutshell;</title>
+
+ <para>
+ MySQL Server 4.0 laid the foundation for new features
+ implemented in MySQL 4.1, such as subqueries and Unicode
+ support, which were desired by many of our customers.
+ </para>
+
+ <para>
+ MySQL Server 4.1 is currently in production status, and binaries
+ are available for download at
+ <ulink url="http://dev.mysql.com/downloads/mysql/4.1.html"/>.
+ All binary releases pass our extensive test suite without any
+ errors on the platforms on which we test. See the
+ &title-refman-4-1;, available at the MySQL AB website for more
+ specific information.
+ </para>
+
+ <para>
+ For those wishing to use the most recent development source for
+ MySQL 4.1, we also make our BitKeeper repositories publicly
+ available. See <xref linkend="installing-source-tree"/>.
+ </para>
+
+ <section id="nutshell-4-1-features">
+
+ <title
id='title-nutshell-4-1-features'>&title-nutshell-4-1-features;</title>
+
+ <para>
+ This section lists features implemented in MySQL 4.1. Features
+ that are available in MySQL 5.0 are described in
+ <xref linkend="mysql-5-0-nutshell"/>.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Support for subqueries and derived
+ tables</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ A <quote>subquery</quote> is a
+ <literal>SELECT</literal> statement nested within
+ another statement. A <quote>derived table</quote> (an
+ unnamed view) is a subquery in the
+ <literal>FROM</literal> clause of another statement.
+ See <xref linkend="subqueries"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Speed enhancements</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Faster binary client/server protocol with support for
+ prepared statements and parameter binding. See
+ <xref linkend="c-api-prepared-statements"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>BTREE</literal> indexing is supported for
+ <literal>HEAP</literal> tables, significantly
+ improving response time for non-exact searches.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Added functionality</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>CREATE TABLE
+ <replaceable>tbl_name2</replaceable> LIKE
+ <replaceable>tbl_name1</replaceable></literal> allows
+ you to create, with a single statement, a new table
+ with a structure exactly like that of an existing
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>MyISAM</literal> storage engine added
+ support for OpenGIS spatial types for storing
+ geographical data. See
+ <xref linkend="spatial-extensions-in-mysql"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support was added for replication over SSL
+ connections.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support for a number of additional storage engines was
+ implemented in the MySQL 4.1 release series:
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The <literal>EXAMPLE</literal> storage engine is
+ a <quote>stub</quote> engine that serves as an
+ example in the MySQL source code for writing new
+ storage engines, and is primarily of interest to
+ developers. See
+ <xref linkend="example-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>NDB Cluster</literal> is the storage
+ engine used by MySQL Cluster to implement tables
+ that are partitioned over many computers. See
+ <xref linkend="ndbcluster"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>ARCHIVE</literal> storage engine is
+ used for storing large amounts of data without
+ indexes in a very small footprint. See
+ <xref linkend="archive-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>CSV</literal> storage engine stores
+ data in text files using comma-separated-values
+ format. See
+ <xref linkend="csv-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <literal>BLACKHOLE</literal> storage engine
+ accepts but does not store data, and always
+ returns an empty result set. It is for use
+ primarily in replication. See
+ <xref linkend="blackhole-storage-engine"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <emphasis role="bold">Note</emphasis>: These engines
+ were implemented at different points in the
+ development of MySQL 4.1. Please see the indicated
+ sections for particulars in each case.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Standards compliance, portability,
+ and migration</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The enhanced client/server protocol available
+ beginning with MySQL 4.1.1 provides the ability to
+ pass multiple warnings to the client, rather than only
+ a single result, making it much easier to track
+ problems that occur in operations such as bulk data
+ loading.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>SHOW WARNINGS</literal> shows warnings for
+ the last command. See <xref linkend="show-warnings"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Internationalization and
+ Localization</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ To support applications that require the use of local
+ languages, the MySQL software added extensive Unicode
+ support through the <literal>utf8</literal> and
+ <literal>ucs2</literal> character sets.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Definition of character sets by column, table, and
+ database. This allows for a high degree of flexibility
+ in application design, particularly for multi-language
+ Web sites. See <xref linkend="charset"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Per-connection time zones support, allowing individual
+ clients to select their own time zones when necessary.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Usability enhancements</emphasis>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The addition of a server-based <literal>HELP</literal>
+ command that can be used to get help information for
+ SQL statements. This information is always applicable
+ to the particular server version being used. Because
+ this information is available by issuing an SQL
+ statement, any client can access it. For example, the
+ <literal>help</literal> command of the
+ <command>mysql</command> command-line client has been
+ modified to have this capability.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The improved client/server protocol allows multiple
+ statements to be issued with a single call, and for
+ returning multiple result sets. See
+ <xref linkend="c-api-multiple-queries"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The syntax <literal>INSERT ... ON DUPLICATE KEY UPDATE
+ ...</literal> was implemented. This allows you to
+ update an existing row if the insert would have caused
+ a duplicate value for a primary or unique index. See
+ <xref linkend="insert"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The aggregate function
+ <literal>GROUP_CONCAT()</literal>, added the
+ capability to concatenate column values from grouped
+ rows into a single result string. See
+ <xref linkend="group-by-functions-and-modifiers"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For a more comprehensive list of MySQL 4.1 features, see the
+ &title-refman-4-1;, available at the MySQL AB website.
+ </para>
+
+ </section>
+
+ </section>
+
+ <section id="mysql-5-0-nutshell">
+
+ <title
id='title-mysql-5-0-nutshell'>&title-mysql-5-0-nutshell;</title>
+
+ <para>
+ The following features are implemented in MySQL 5.0.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold"><literal>BIT</literal> Data
+ Type</emphasis>: Can be used to store numbers in binary
+ notation. See <xref linkend="numeric-type-overview"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Cursors</emphasis>: Elementary support
+ for server-side cursors. See <xref linkend="cursors"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Data Dictionary (Information
+ Schema)</emphasis>: The introduction of the
+ <literal>INFORMATION_SCHEMA</literal> database in MySQL 5.0
+ provided a standards-compliant means for accessing the MySQL
+ Server's metadata, that is, data about the databases
+ (schemas) on the server and the objects which they contain.
+ See <xref linkend="information-schema"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Instance Manager</emphasis>: Can be
+ used to start and stop the MySQL Server, even from a remote
+ host. See <xref linkend="instance-manager"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Precision Math</emphasis>: MySQL 5.0
+ introduced stricter criteria for acceptance or rejection of
+ data, and implemented a new library for fixed-point
+ arithmetic. These contributed to a much higher degree of
+ accuracy for mathematical operations and greater control
+ over invalid values. See <xref linkend="precision-math"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Storage Engines</emphasis>: Storage
+ engines added in MySQL 5.0 include
+ <literal>ARCHIVE</literal> and
<literal>FEDERATED</literal>.
+ See <xref linkend="archive-storage-engine"/> and
+ <xref linkend="federated-storage-engine"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Stored Routines</emphasis>: Support
+ for named stored procedures and stored functions was
+ implemented in MySQL 5.0. See
+ <xref linkend="stored-procedures"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Strict Mode and Standard Error
+ Handling</emphasis>: MySQL 5.0 added a strict mode where by
+ it follows standard SQL in a number of ways in which it did
+ not previously. Support for standard SQLSTATE error messages
+ was also implemented. See <xref linkend="server-sql-mode"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Triggers</emphasis>: MySQL 5.0 added
+ limited support for triggers. See <xref linkend="triggers"/>
+ and <xref linkend="ansi-diff-triggers"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold"><literal>VARCHAR</literal> Data
+ Type</emphasis>: The maximum effective length of a
+ <literal>VARCHAR</literal> column was increased to 65,532
+ bytes, and stripping of trailing whitespace was eliminated.
+ See <xref linkend="string-types"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Views</emphasis>: MySQL 5.0 added
+ support for named, updateable views. See
+ <xref linkend="views"/> and
+ <xref linkend="ansi-diff-views"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For more detailed information on changes in MySQL 5.0, see
+ <xref linkend="news-5-0-x"/>.
+ </para>
+
+ <para>
+ For those wishing to take a look at the bleeding edge of MySQL
+ development, we make our BitKeeper repository for MySQL publicly
+ available. See <xref linkend="installing-source-tree"/>.
+ </para>
+
+ <remark role="todo">
+ [js] Add nutshell-5-1 section. This needs to be done by the time
+ that 5.0 goes GA.
+ </remark>
+
+ </section>
+
+ </section>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="refman-common/information-sources.xml"/>
| Thread |
|---|
| • bk commit - mysqldoc@docsrva tree (jon:1.3426) | jon | 31 Aug |