Author: mcbrown
Date: 2008-01-30 16:00:40 +0100 (Wed, 30 Jan 2008)
New Revision: 9664
Log:
Adding unique Maria reference manual based on 5.1 content
Added:
trunk/refman-5.1-maria/Makefile
trunk/refman-5.1-maria/Makefile.depends
trunk/refman-5.1-maria/all-entities.ent
trunk/refman-5.1-maria/manual.xml
trunk/refman-5.1-maria/se-maria.xml
trunk/refman-5.1-maria/storage-engines.xml
trunk/refman-5.1-maria/versions.ent
Modified:
trunk/Makefile
Modified: trunk/Makefile
===================================================================
--- trunk/Makefile 2008-01-30 11:43:53 UTC (rev 9663)
+++ trunk/Makefile 2008-01-30 15:00:40 UTC (rev 9664)
Changed blocks: 1, Lines Added: 1, Lines Deleted: 0; 321 bytes
@@ -29,6 +29,7 @@
refman-4.1 \
refman-5.0 \
refman-5.1 \
+ refman-5.1-maria \
refman-5.2 \
refman-6.0 \
refman-common \
Added: trunk/refman-5.1-maria/Makefile
===================================================================
--- trunk/refman-5.1-maria/Makefile (rev 0)
+++ trunk/refman-5.1-maria/Makefile 2008-01-30 15:00:40 UTC (rev 9664)
Changed blocks: 1, Lines Added: 96, Lines Deleted: 0; 2718 bytes
@@ -0,0 +1,96 @@
+# Makefile for MySQL Reference Manual
+
+# Location of repository root relative to current directory
+REPO_ROOT = ..
+
+# Location of directory containing Makefile components
+MAKE_DIR = $(REPO_ROOT)/make.d
+
+# Set any variables here that should override imported standard variables
+
+DOC_LANG = en
+DOC_VER = 5.1
+MAIN_DOC_BASENAME = manual
+
+DOC_URL_BASE = http://dev.mysql.com/doc/refman/$(DOC_VER)/$(DOC_LANG)/
+
+# Set IDMAP and remap variables
+
+IDMAP_LANG = $(DOC_LANG)
+IDMAP_MAIN = refman
+IDMAP_VER = $(DOC_VER)
+
+IDMAP_URLBASE = $(IDMAP_MAIN)/$(IDMAP_VER)/$(IDMAP_LANG)
+IDMAP_REFS = $(REPO_ROOT)/refman-5.1 $(REPO_ROOT)/refman-5.1-maria $(REPO_ROOT)/refman-common \
+ $(REPO_ROOT)/refman-6.0 $(REPO_ROOT)/ndbapi \
+ $(REPO_ROOT)/quick-guides
+IDMAP_SRCS = $(call base_xml_files)
+
+# Import standard variables
+
+include $(MAKE_DIR)/vars-layout
+include $(MAKE_DIR)/vars-shell
+include $(MAKE_DIR)/vars-docbook
+
+# Import default target rule (causes help message to print)
+
+include $(MAKE_DIR)/default-target
+
+# Files for which to generate dependencies
+DEPEND_FILES = manual.xml
+
+manual.wc: manual-prepped.xml
+ $(XMLWORDCOUNT) manual-prepped.xml
+
+mysql.info: manual.info
+ cp manual.info mysql.info
+
+clean::
+ $(RM) manual.txt
+
+# Help-table content generation.
+
+fill_help_tables.sql: manual.help $(FILL_HELP_TABLES2)
+ $(FILL_HELP_TABLES2) manual.help > $@-tmp
+ mv $@-tmp $@
+
+clean::
+ $(RM) fill_help_tables.sql fill_help_tables.sql-tmp
+
+# Import document dependency specifications
+
+include Makefile.depends
+
+# Import standard target rules
+
+# Need xml-html-dir for formatting the manual itself into a subdir,
+# but also need xml-html for formatting ReadMe.html
+
+include $(MAKE_DIR)/xml-dynxml
+include $(MAKE_DIR)/xml-valid
+include $(MAKE_DIR)/xml-format
+include $(MAKE_DIR)/xml-useless
+include $(MAKE_DIR)/xml-prep
+include $(MAKE_DIR)/xml-html
+include $(MAKE_DIR)/xml-html-dir
+include $(MAKE_DIR)/xml-html-section
+include $(MAKE_DIR)/xml-html-chapter
+include $(MAKE_DIR)/xml-html-web
+include $(MAKE_DIR)/xml-eclipse
+include $(MAKE_DIR)/xml-chm
+include $(MAKE_DIR)/xml-xhtml-dir
+include $(MAKE_DIR)/xml-pdf
+include $(MAKE_DIR)/xml-toc
+include $(MAKE_DIR)/xml-txt
+include $(MAKE_DIR)/xml-info
+include $(MAKE_DIR)/xml-man
+include $(MAKE_DIR)/xml-help
+include $(MAKE_DIR)/xml-remark
+include $(MAKE_DIR)/xml-titles
+include $(MAKE_DIR)/fragments
+include $(MAKE_DIR)/xml-depend
+include $(MAKE_DIR)/xml-listing
+
+# Import directory specific extensions
+
+include $(MAKE_DIR)/Makefile.ext
Added: trunk/refman-5.1-maria/Makefile.depends
===================================================================
--- trunk/refman-5.1-maria/Makefile.depends (rev 0)
+++ trunk/refman-5.1-maria/Makefile.depends 2008-01-30 15:00:40 UTC (rev 9664)
Changed blocks: 1, Lines Added: 438, Lines Deleted: 0; 24824 bytes
@@ -0,0 +1,438 @@
+manual_INCLUDES = \
+ ../common/fixedchars.ent \
+ ../common/phrases.ent \
+ ../refman-5.1/../common/fixedchars.ent \
+ ../refman-5.1/../common/phrases.ent \
+ ../refman-5.1/../dynamic-docs/build-configure/mysqld.xml \
+ ../refman-5.1/../dynamic-docs/changelog/connector-j-versions.xml \
+ ../refman-5.1/../dynamic-docs/changelog/connector-j.xml \
+ ../refman-5.1/../dynamic-docs/changelog/connector-mxj-versions.xml \
+ ../refman-5.1/../dynamic-docs/changelog/connector-mxj.xml \
+ ../refman-5.1/../dynamic-docs/changelog/connector-net-versions.xml \
+ ../refman-5.1/../dynamic-docs/changelog/connector-net.xml \
+ ../refman-5.1/../dynamic-docs/changelog/connector-odbc-versions.xml \
+ ../refman-5.1/../dynamic-docs/changelog/connector-odbc.xml \
+ ../refman-5.1/../dynamic-docs/changelog/mysql-proxy-versions.xml \
+ ../refman-5.1/../dynamic-docs/changelog/mysql-proxy.xml \
+ ../refman-5.1/../dynamic-docs/changelog/mysqld-1.xml \
+ ../refman-5.1/../dynamic-docs/changelog/mysqld-versions.xml \
+ ../refman-5.1/../dynamic-docs/changelog/mysqld.xml \
+ ../refman-5.1/../dynamic-docs/changelog/vstudioplugin-versions.xml \
+ ../refman-5.1/../dynamic-docs/changelog/vstudioplugin.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/myisamchk.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysql.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysql_tableinfo.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysqlaccess.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysqladmin.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysqlbinlog.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysqlcheck.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysqld.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysqldump.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysqlhotcopy.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysqlimport.xml \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysqlslap.xml \
+ ../refman-5.1/../dynamic-docs/open-bugs/mysqld-versions.xml \
+ ../refman-5.1/../dynamic-docs/open-bugs/mysqld.xml \
+ ../refman-5.1/../dynamic-docs/opsfunctions/opfunctions.xml \
+ ../refman-5.1/../refman-common/../common/fixedchars.ent \
+ ../refman-5.1/../refman-common/../refman-common/connector-j-connprops.xml \
+ ../refman-5.1/../refman-common/../refman-common/connector-j-errormap.xml \
+ ../refman-5.1/../refman-common/all-entities.ent \
+ ../refman-5.1/../refman-common/apis-cplusplus.xml \
+ ../refman-5.1/../refman-common/apis-eiffel.xml \
+ ../refman-5.1/../refman-common/apis-perl.xml \
+ ../refman-5.1/../refman-common/apis-php.xml \
+ ../refman-5.1/../refman-common/apis-python.xml \
+ ../refman-5.1/../refman-common/apis-tcl.xml \
+ ../refman-5.1/../refman-common/bug-reports.xml \
+ ../refman-5.1/../refman-common/connector-j.xml \
+ ../refman-5.1/../refman-common/connector-mxj.xml \
+ ../refman-5.1/../refman-common/connector-net.xml \
+ ../refman-5.1/../refman-common/connector-odbc.xml \
+ ../refman-5.1/../refman-common/connector-php.xml \
+ ../refman-5.1/../refman-common/connector-vstudioplugin.xml \
+ ../refman-5.1/../refman-common/credits.xml \
+ ../refman-5.1/../refman-common/ha-heartbeat.xml \
+ ../refman-5.1/../refman-common/images/published/active-master-mysql-server.png \
+ ../refman-5.1/../refman-common/images/published/blackhole-1.png \
+ ../refman-5.1/../refman-common/images/published/cluster-circular-replication-1.png \
+ ../refman-5.1/../refman-common/images/published/cluster-circular-replication-2.png \
+ ../refman-5.1/../refman-common/images/published/cluster-components-1.png \
+ ../refman-5.1/../refman-common/images/published/cluster-replication-binlog-injector.png \
+ ../refman-5.1/../refman-common/images/published/cluster-replication-overview.png \
+ ../refman-5.1/../refman-common/images/published/cluster-upgrade-downgrade-table.png \
+ ../refman-5.1/../refman-common/images/published/cmxj-overview.png \
+ ../refman-5.1/../refman-common/images/published/cnet-win-install-step1.png \
+ ../refman-5.1/../refman-common/images/published/cnet-win-install-step2.png \
+ ../refman-5.1/../refman-common/images/published/cnet-win-install-step3.png \
+ ../refman-5.1/../refman-common/images/published/cnet-win-install-step4.png \
+ ../refman-5.1/../refman-common/images/published/drbd-main.png \
+ ../refman-5.1/../refman-common/images/published/drbd-sepinterface.png \
+ ../refman-5.1/../refman-common/images/published/ha-heartbeat-overview.png \
+ ../refman-5.1/../refman-common/images/published/multi-comp-1.png \
+ ../refman-5.1/../refman-common/images/published/multi-db.png \
+ ../refman-5.1/../refman-common/images/published/myaccess-odbc.png \
+ ../refman-5.1/../refman-common/images/published/myaccess.png \
+ ../refman-5.1/../refman-common/images/published/myarchitecture.png \
+ ../refman-5.1/../refman-common/images/published/myflowchart.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-2.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-3.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-4.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-5.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-6.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-excel-step1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-excel-step2.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-excel-step3.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-excel-step4.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-excel-step5.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-link-step1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-link-step3.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-link-step4.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-link-step5.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step2.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step3.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step4.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step5.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step6.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-odbcadmin-adddsn.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-odbcadmin-main.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-odbcadmin-sampledsn.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-odbcadmin-tracing.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-install-step1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-install-step2.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-install-step3.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-install-step4.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-adddsn-5-1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-adddsn.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-advanced.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-driverselect.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-main.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-options-5-1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-options.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-sampledsn.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-ssl-5-1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-tracing.png \
+ ../refman-5.1/../refman-common/images/published/mysql-vstudioplugin-1.png \
+ ../refman-5.1/../refman-common/images/published/mysql-vstudioplugin-3.png \
+ ../refman-5.1/../refman-common/images/published/mysql-vstudioplugin-4.png \
+ ../refman-5.1/../refman-common/images/published/ndb-size-pl-1.png \
+ ../refman-5.1/../refman-common/images/published/proxy-architecture.png \
+ ../refman-5.1/../refman-common/images/published/redundancy-after.png \
+ ../refman-5.1/../refman-common/images/published/redundancy-before.png \
+ ../refman-5.1/../refman-common/images/published/replicas-groups-1-1.png \
+ ../refman-5.1/../refman-common/images/published/replicas-groups-1-2.png \
+ ../refman-5.1/../refman-common/images/published/rolling-restarts.png \
+ ../refman-5.1/../refman-common/images/published/scaleout.png \
+ ../refman-5.1/../refman-common/images/published/se-federated-structure.png \
+ ../refman-5.1/../refman-common/images/published/submaster-performance.png \
+ ../refman-5.1/../refman-common/information-sources.xml \
+ ../refman-5.1/../refman-common/manual-conventions.en.xml \
+ ../refman-5.1/../refman-common/mysql-proxy.xml \
+ ../refman-5.1/../refman-common/news-cj-core.xml \
+ ../refman-5.1/../refman-common/news-cmxj-core.xml \
+ ../refman-5.1/../refman-common/news-cnet-core.xml \
+ ../refman-5.1/../refman-common/news-codbc-core.xml \
+ ../refman-5.1/../refman-common/news-mysql-proxy-core.xml \
+ ../refman-5.1/../refman-common/news-vstudioplugin-core.xml \
+ ../refman-5.1/../refman-common/replication-drbd.xml \
+ ../refman-5.1/../refman-common/urls.ent \
+ ../refman-5.1/../refman-common/what-is-mysql-ab.en.xml \
+ ../refman-5.1/../refman-common/what-is.en.xml \
+ ../refman-5.1/all-entities.ent \
+ ../refman-5.1/apis-c.xml \
+ ../refman-5.1/apis-libmysqld.xml \
+ ../refman-5.1/apis.xml \
+ ../refman-5.1/connectors.xml \
+ ../refman-5.1/data-types.xml \
+ ../refman-5.1/dba-core.xml \
+ ../refman-5.1/dynxml-common-news-cj.xml \
+ ../refman-5.1/dynxml-common-news-cmxj.xml \
+ ../refman-5.1/dynxml-common-news-cnet.xml \
+ ../refman-5.1/dynxml-common-news-codbc.xml \
+ ../refman-5.1/dynxml-common-news-mysql-proxy.xml \
+ ../refman-5.1/dynxml-common-news-vstudioplugin.xml \
+ ../refman-5.1/dynxml-local-dba.xml \
+ ../refman-5.1/dynxml-local-errors-problems.xml \
+ ../refman-5.1/dynxml-local-functions.xml \
+ ../refman-5.1/dynxml-local-installing.xml \
+ ../refman-5.1/dynxml-local-language-structure.xml \
+ ../refman-5.1/dynxml-local-news-5.1.xml \
+ ../refman-5.1/dynxml-local-programs-admin-util.xml \
+ ../refman-5.1/dynxml-local-programs-client.xml \
+ ../refman-5.1/dynxml-local-programs-server.xml \
+ ../refman-5.1/dynxml-local-se-innodb.xml \
+ ../refman-5.1/dynxml-local-se-myisam.xml \
+ ../refman-5.1/errmsgs-client.xml \
+ ../refman-5.1/errmsgs-server.xml \
+ ../refman-5.1/errors-problems-core.xml \
+ ../refman-5.1/events.xml \
+ ../refman-5.1/extending-mysql.xml \
+ ../refman-5.1/faqs.xml \
+ ../refman-5.1/functions-core.xml \
+ ../refman-5.1/ha.xml \
+ ../refman-5.1/information-schema.xml \
+ ../refman-5.1/installing-core.xml \
+ ../refman-5.1/internationalization.xml \
+ ../refman-5.1/introduction.xml \
+ ../refman-5.1/legalnotice.en.xml \
+ ../refman-5.1/mysql-cluster-backup.xml \
+ ../refman-5.1/mysql-cluster-cge.xml \
+ ../refman-5.1/mysql-cluster-configuration.xml \
+ ../refman-5.1/mysql-cluster-disk-data.xml \
+ ../refman-5.1/mysql-cluster-glossary.xml \
+ ../refman-5.1/mysql-cluster-interconnects.xml \
+ ../refman-5.1/mysql-cluster-limitations.xml \
+ ../refman-5.1/mysql-cluster-management.xml \
+ ../refman-5.1/mysql-cluster-multi-computer.xml \
+ ../refman-5.1/mysql-cluster-overview.xml \
+ ../refman-5.1/mysql-cluster-process-management.xml \
+ ../refman-5.1/mysql-cluster-replication.xml \
+ ../refman-5.1/mysql-cluster-roadmap.xml \
+ ../refman-5.1/mysql-cluster-upgrade-downgrade.xml \
+ ../refman-5.1/mysql-cluster-utilities.xml \
+ ../refman-5.1/mysql-cluster.xml \
+ ../refman-5.1/news-5.1-core.xml \
+ ../refman-5.1/news.xml \
+ ../refman-5.1/optimization.xml \
+ ../refman-5.1/partitioning.xml \
+ ../refman-5.1/precision-math.xml \
+ ../refman-5.1/preface.xml \
+ ../refman-5.1/programs-admin-util-core.xml \
+ ../refman-5.1/programs-client-core.xml \
+ ../refman-5.1/programs-development.xml \
+ ../refman-5.1/programs-installation.xml \
+ ../refman-5.1/programs-miscellaneous.xml \
+ ../refman-5.1/programs-using.xml \
+ ../refman-5.1/programs.xml \
+ ../refman-5.1/replication-configuration.xml \
+ ../refman-5.1/replication-implementation.xml \
+ ../refman-5.1/replication-notes.xml \
+ ../refman-5.1/replication-solutions.xml \
+ ../refman-5.1/replication.xml \
+ ../refman-5.1/restrictions.xml \
+ ../refman-5.1/se-archive.xml \
+ ../refman-5.1/se-blackhole.xml \
+ ../refman-5.1/se-csv.xml \
+ ../refman-5.1/se-example.xml \
+ ../refman-5.1/se-federated.xml \
+ ../refman-5.1/se-innodb-core.xml \
+ ../refman-5.1/se-memory.xml \
+ ../refman-5.1/se-merge.xml \
+ ../refman-5.1/se-myisam-core.xml \
+ ../refman-5.1/spatial-extensions.xml \
+ ../refman-5.1/sql-syntax.xml \
+ ../refman-5.1/stored-procedures.xml \
+ ../refman-5.1/triggers.xml \
+ ../refman-5.1/tutorial.xml \
+ ../refman-5.1/versions.ent \
+ ../refman-5.1/views.xml \
+ ../refman-common/images/published/PSEArch.png \
+ ../refman-common/urls.ent \
+ all-entities.ent \
+ se-maria.xml \
+ storage-engines.xml \
+ versions.ent
+manual_IMAGES = \
+ ../refman-5.1/../refman-common/images/published/active-master-mysql-server.png \
+ ../refman-5.1/../refman-common/images/published/blackhole-1.png \
+ ../refman-5.1/../refman-common/images/published/cluster-circular-replication-1.png \
+ ../refman-5.1/../refman-common/images/published/cluster-circular-replication-2.png \
+ ../refman-5.1/../refman-common/images/published/cluster-components-1.png \
+ ../refman-5.1/../refman-common/images/published/cluster-replication-binlog-injector.png \
+ ../refman-5.1/../refman-common/images/published/cluster-replication-overview.png \
+ ../refman-5.1/../refman-common/images/published/cluster-upgrade-downgrade-table.png \
+ ../refman-5.1/../refman-common/images/published/cmxj-overview.png \
+ ../refman-5.1/../refman-common/images/published/cnet-win-install-step1.png \
+ ../refman-5.1/../refman-common/images/published/cnet-win-install-step2.png \
+ ../refman-5.1/../refman-common/images/published/cnet-win-install-step3.png \
+ ../refman-5.1/../refman-common/images/published/cnet-win-install-step4.png \
+ ../refman-5.1/../refman-common/images/published/drbd-main.png \
+ ../refman-5.1/../refman-common/images/published/drbd-sepinterface.png \
+ ../refman-5.1/../refman-common/images/published/ha-heartbeat-overview.png \
+ ../refman-5.1/../refman-common/images/published/multi-comp-1.png \
+ ../refman-5.1/../refman-common/images/published/multi-db.png \
+ ../refman-5.1/../refman-common/images/published/myaccess-odbc.png \
+ ../refman-5.1/../refman-common/images/published/myaccess.png \
+ ../refman-5.1/../refman-common/images/published/myarchitecture.png \
+ ../refman-5.1/../refman-common/images/published/myflowchart.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-2.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-3.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-4.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-5.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-crystal-6.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-excel-step1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-excel-step2.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-excel-step3.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-excel-step4.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-excel-step5.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-link-step1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-link-step3.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-link-step4.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-link-step5.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step2.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step3.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step4.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step5.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-install-step6.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-odbcadmin-adddsn.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-odbcadmin-main.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-odbcadmin-sampledsn.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-macosx-odbcadmin-tracing.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-install-step1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-install-step2.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-install-step3.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-install-step4.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-adddsn-5-1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-adddsn.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-advanced.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-driverselect.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-main.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-options-5-1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-options.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-sampledsn.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-odbcadmin-ssl-5-1.png \
+ ../refman-5.1/../refman-common/images/published/myodbc-win-tracing.png \
+ ../refman-5.1/../refman-common/images/published/mysql-vstudioplugin-1.png \
+ ../refman-5.1/../refman-common/images/published/mysql-vstudioplugin-3.png \
+ ../refman-5.1/../refman-common/images/published/mysql-vstudioplugin-4.png \
+ ../refman-5.1/../refman-common/images/published/ndb-size-pl-1.png \
+ ../refman-5.1/../refman-common/images/published/proxy-architecture.png \
+ ../refman-5.1/../refman-common/images/published/redundancy-after.png \
+ ../refman-5.1/../refman-common/images/published/redundancy-before.png \
+ ../refman-5.1/../refman-common/images/published/replicas-groups-1-1.png \
+ ../refman-5.1/../refman-common/images/published/replicas-groups-1-2.png \
+ ../refman-5.1/../refman-common/images/published/rolling-restarts.png \
+ ../refman-5.1/../refman-common/images/published/scaleout.png \
+ ../refman-5.1/../refman-common/images/published/se-federated-structure.png \
+ ../refman-5.1/../refman-common/images/published/submaster-performance.png \
+ ../refman-common/images/published/PSEArch.png
+manual_SOURCES = manual.xml $(manual_INCLUDES)
+manual_IDMAPS = \
+ ../ndbapi/metadata/class-ndb-cluster-connection.idmap \
+ ../ndbapi/metadata/class-ndb.idmap \
+ ../ndbapi/metadata/class-ndbdictionary.idmap \
+ ../ndbapi/metadata/class-ndboperation.idmap \
+ ../ndbapi/metadata/class-ndbtransaction.idmap \
+ ../ndbapi/metadata/mgm-api.idmap \
+ ../ndbapi/metadata/ndb-errors.idmap \
+ ../ndbapi/metadata/ndb-internals.idmap \
+ ../ndbapi/metadata/ndbapi.idmap \
+ ../quick-guides/metadata/reservedwords-core.idmap \
+ ../refman-5.1/metadata/language-structure-core.idmap \
+ ../refman-5.1/metadata/mysql-cluster-ccsg-merge-temp.idmap \
+ ../refman-5.1/metadata/programs-server-core.idmap \
+ ../refman-5.1/metadata/se-maria.idmap \
+ ../refman-5.1/metadata/storage-engines.idmap \
+ ../refman-6.0/metadata/dba-core.idmap \
+ ../refman-6.0/metadata/manual.idmap \
+ ../refman-common/metadata/apis-perl.idmap \
+ ../refman-common/metadata/apis-php.idmap \
+ ../refman-common/metadata/bug-reports.idmap \
+ ../refman-common/metadata/connector-j.idmap \
+ ../refman-common/metadata/connector-mxj.idmap \
+ ../refman-common/metadata/connector-net.idmap \
+ ../refman-common/metadata/connector-odbc.idmap \
+ ../refman-common/metadata/connector-vstudioplugin.idmap \
+ ../refman-common/metadata/credits.idmap \
+ ../refman-common/metadata/ha-heartbeat.idmap \
+ ../refman-common/metadata/ha-topology.idmap \
+ ../refman-common/metadata/information-sources.idmap \
+ ../refman-common/metadata/mysql-proxy.idmap \
+ ../refman-common/metadata/news-cj-core.idmap \
+ ../refman-common/metadata/news-cmxj-core.idmap \
+ ../refman-common/metadata/news-cnet-core.idmap \
+ ../refman-common/metadata/news-codbc-core.idmap \
+ ../refman-common/metadata/replication-drbd.idmap \
+ ../refman-common/metadata/what-is.en.idmap
+manual.validpure: $(manual_SOURCES)
+manual.titles: $(manual_SOURCES)
+manual.useless: $(manual_SOURCES)
+manual.valid: $(manual_SOURCES) $(manual_IDMAPS)
+manual.validwarn: $(manual_SOURCES) $(manual_IDMAPS)
+manual-prepped.xml: $(manual_SOURCES) $(manual_IDMAPS)
+manual-manprepped.xml: $(manual_SOURCES) $(manual_IDMAPS)
+manual-remprepped.xml: $(manual_SOURCES) $(manual_IDMAPS)
+
+se_maria_INCLUDES = \
+ ../common/fixedchars.ent \
+ ../common/phrases.ent \
+ ../refman-common/urls.ent \
+ all-entities.ent \
+ versions.ent
+se_maria_IMAGES =
+se_maria_SOURCES = se-maria.xml $(se_maria_INCLUDES)
+se_maria_IDMAPS = \
+ ../refman-5.1/metadata/programs-admin-util-core.idmap \
+ ../refman-5.1/metadata/se-maria.idmap \
+ ../refman-5.1/metadata/se-myisam-core.idmap
+se-maria.validpure: $(se_maria_SOURCES)
+se-maria.titles: $(se_maria_SOURCES)
+se-maria.useless: $(se_maria_SOURCES)
+se-maria.valid: $(se_maria_SOURCES) $(se_maria_IDMAPS)
+se-maria.validwarn: $(se_maria_SOURCES) $(se_maria_IDMAPS)
+se-maria-prepped.xml: $(se_maria_SOURCES) $(se_maria_IDMAPS)
+se-maria-manprepped.xml: $(se_maria_SOURCES) $(se_maria_IDMAPS)
+se-maria-remprepped.xml: $(se_maria_SOURCES) $(se_maria_IDMAPS)
+
+storage_engines_INCLUDES = \
+ ../common/fixedchars.ent \
+ ../common/phrases.ent \
+ ../refman-5.1/../common/fixedchars.ent \
+ ../refman-5.1/../common/phrases.ent \
+ ../refman-5.1/../dynamic-docs/command-optvars/mysqld.xml \
+ ../refman-5.1/../refman-common/images/published/blackhole-1.png \
+ ../refman-5.1/../refman-common/images/published/se-federated-structure.png \
+ ../refman-5.1/../refman-common/urls.ent \
+ ../refman-5.1/all-entities.ent \
+ ../refman-5.1/dynxml-local-se-innodb.xml \
+ ../refman-5.1/dynxml-local-se-myisam.xml \
+ ../refman-5.1/se-archive.xml \
+ ../refman-5.1/se-blackhole.xml \
+ ../refman-5.1/se-csv.xml \
+ ../refman-5.1/se-example.xml \
+ ../refman-5.1/se-federated.xml \
+ ../refman-5.1/se-innodb-core.xml \
+ ../refman-5.1/se-memory.xml \
+ ../refman-5.1/se-merge.xml \
+ ../refman-5.1/se-myisam-core.xml \
+ ../refman-5.1/versions.ent \
+ ../refman-common/images/published/PSEArch.png \
+ ../refman-common/urls.ent \
+ all-entities.ent \
+ se-maria.xml \
+ versions.ent
+storage_engines_IMAGES = \
+ ../refman-5.1/../refman-common/images/published/blackhole-1.png \
+ ../refman-5.1/../refman-common/images/published/se-federated-structure.png \
+ ../refman-common/images/published/PSEArch.png
+storage_engines_SOURCES = storage-engines.xml $(storage_engines_INCLUDES)
+storage_engines_IDMAPS = \
+ ../refman-5.1/metadata/dba-core.idmap \
+ ../refman-5.1/metadata/errors-problems-core.idmap \
+ ../refman-5.1/metadata/faqs.idmap \
+ ../refman-5.1/metadata/installing-core.idmap \
+ ../refman-5.1/metadata/internationalization.idmap \
+ ../refman-5.1/metadata/language-structure-core.idmap \
+ ../refman-5.1/metadata/mysql-cluster-ccsg-merge-temp.idmap \
+ ../refman-5.1/metadata/optimization.idmap \
+ ../refman-5.1/metadata/programs-admin-util-core.idmap \
+ ../refman-5.1/metadata/programs-client-core.idmap \
+ ../refman-5.1/metadata/programs-using.idmap \
+ ../refman-5.1/metadata/replication-configuration.idmap \
+ ../refman-5.1/metadata/se-maria.idmap \
+ ../refman-5.1/metadata/spatial-extensions.idmap \
+ ../refman-5.1/metadata/sql-syntax.idmap \
+ ../refman-5.1/metadata/storage-engines.idmap
+storage-engines.validpure: $(storage_engines_SOURCES)
+storage-engines.titles: $(storage_engines_SOURCES)
+storage-engines.useless: $(storage_engines_SOURCES)
+storage-engines.valid: $(storage_engines_SOURCES) $(storage_engines_IDMAPS)
+storage-engines.validwarn: $(storage_engines_SOURCES) $(storage_engines_IDMAPS)
+storage-engines-prepped.xml: $(storage_engines_SOURCES) $(storage_engines_IDMAPS)
+storage-engines-manprepped.xml: $(storage_engines_SOURCES) $(storage_engines_IDMAPS)
+storage-engines-remprepped.xml: $(storage_engines_SOURCES) $(storage_engines_IDMAPS)
+
Added: trunk/refman-5.1-maria/all-entities.ent
===================================================================
--- trunk/refman-5.1-maria/all-entities.ent (rev 0)
+++ trunk/refman-5.1-maria/all-entities.ent 2008-01-30 15:00:40 UTC (rev 9664)
Changed blocks: 1, Lines Added: 14, Lines Deleted: 0; 841 bytes
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file names all the entity files needed by .xml files in the
+ current directory. All ENTITY declarations should be given
+ first, followed by references to the those entities.
+-->
+<!ENTITY % fixedchars.entities SYSTEM "../common/fixedchars.ent">
+<!ENTITY % urls.entities SYSTEM "../refman-common/urls.ent">
+<!ENTITY % phrases.entities SYSTEM "../common/phrases.ent">
+<!ENTITY % versions.entities SYSTEM "versions.ent">
+%fixedchars.entities;
+%urls.entities;
+%phrases.entities;
+%versions.entities;
Added: trunk/refman-5.1-maria/manual.xml
===================================================================
--- trunk/refman-5.1-maria/manual.xml (rev 0)
+++ trunk/refman-5.1-maria/manual.xml 2008-01-30 15:00:40 UTC (rev 9664)
Changed blocks: 1, Lines Added: 101, Lines Deleted: 0; 4420 bytes
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % all.entities SYSTEM "all-entities.ent">
+ %all.entities;
+]>
+<book id="refman-5-1-maria" lang="en">
+
+ <title>MySQL 5.1 with Maria Reference Manual</title>
+
+ <bookinfo>
+
+ <abstract>
+
+ <para>
+ This is the MySQL Reference Manual. It documents MySQL
+ ¤t-series; through ¤t-version;. This manual also includes specific information on the <literal>Maria</literal> storage engine.
+ </para>
+
+ <para>
+ Document generated on:
+
+<?dbtimestamp format="Y-m-d"?>
+
+ <remark role="repository.revision"/>
+ </para>
+
+ </abstract>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/legalnotice.en.xml"/>
+
+ </bookinfo>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/preface.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/introduction.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/dynxml-local-installing.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/tutorial.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/programs.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/dynxml-local-dba.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/optimization.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/dynxml-local-language-structure.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/internationalization.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/data-types.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/dynxml-local-functions.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/sql-syntax.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="storage-engines.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/ha.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/replication.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/mysql-cluster.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/partitioning.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/spatial-extensions.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/stored-procedures.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/triggers.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/events.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/views.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/information-schema.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/precision-math.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/apis.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/connectors.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/../refman-common/mysql-proxy.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/extending-mysql.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/faqs.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/dynxml-local-errors-problems.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/news.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/restrictions.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/../refman-common/credits.xml"/>
+
+ <index/>
+
+</book>
Added: trunk/refman-5.1-maria/se-maria.xml
===================================================================
--- trunk/refman-5.1-maria/se-maria.xml (rev 0)
+++ trunk/refman-5.1-maria/se-maria.xml 2008-01-30 15:00:40 UTC (rev 9664)
Changed blocks: 1, Lines Added: 1567, Lines Deleted: 0; 53121 bytes
@@ -0,0 +1,1567 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % all.entities SYSTEM "all-entities.ent">
+ %all.entities;
+]>
+<section id="se-maria">
+
+ <title>The <literal>Maria</literal> Storage Engine</title>
+
+ <para>
+ <literal>Maria</literal> is a crash safe version of
+ <literal>MyISAM</literal> with planned support for transactions. The
+ <literal>Maria</literal> storage engine supports all of the main
+ functionality of the <literal>MyISAM</literal> engine, but includes
+ recovery support (in the event of a data crash), full logging
+ (including <literal>CREATE</literal>, <literal>DROP</literal>,
+ <literal>RENAME</literal> and <literal>TRUNCATE</literal>
+ operations), all <literal>MyISAM</literal> row formats and a new
+ <literal>Maria</literal> specific row format.
+ </para>
+
+ <note>
+ <para>
+ <literal>Maria</literal> is under heavy development. Currently it
+ is a crash-safe version of <literal>MyISAM</literal>, but it has
+ been designed to support fully ACID compliant transactions and
+ MVCC support. The documentation details the current implementation
+ of the <literal>Maria</literal> functionality, while including
+ information and details on some of the systems and implementation
+ notes that will support this furture functionality.
+ </para>
+ </note>
+
+ <para>
+ For more information on known bugs and limitations in
+ <literal>Maria</literal>, see <xref linkend="se-maria-openbugs"/>
+ </para>
+
+ <para>
+ To create a <literal>Maria</literal> table you must specify the
+ engine when using the <literal>CREATE TABLE</literal> statement:
+ </para>
+
+<programlisting>mysql> CREATE TABLE maria_table (id int) ENGINE=Maria;</programlisting>
+
+ <para>
+ You can also use <literal>ALTER TABLE</literal> to convert an
+ existing table to the <literal>Maria</literal> engine:
+ </para>
+
+<programlisting>mysql> ALTER TABLE myisam_table ENGINE=Maria;</programlisting>
+
+ <para>
+ Data in <literal>Maria</literal> tables is stored in three files:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <filename>table.frm</filename> — the standard MySQL FRM
+ file containing the table definition.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <filename>table.MAD</filename> — the
+ <literal>Maria</literal> data file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <filename>table.MAI</filename> — the
+ <literal>Maria</literal> index file.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In addition, <literal>Maria</literal> creates at least two
+ additional files in your standard <option>datadir</option>
+ directory:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <filename>maria_log.????????</filename> — the
+ <literal>Maria</literal> log file. Each file is named
+ numerically and sequentially, with new files automatically
+ created when the log file limit has been reached. You can
+ control the control the log file size using
+ <link linkend="option_mysqld_maria_log_file_size"><option>maria_log_file_size</option></link>
+ option, and control the deletion of logs using
+ <link linkend="option_mysqld_maria_log_purge_type"><option>maria_log_purge_type</option></link>.
+ The newly create files stay in place until deleted, either
+ automatically or manually.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <filename>maria_log_control</filename> — a control file
+ that holds information about the current different log files in
+ use.
+ </para>
+
+ <warning>
+ <para>
+ You should not delete the
+ <filename>maria_log_control</filename> file from an active
+ <literal>Maria</literal> installation as it records
+ information about the log files and the default page block
+ size used for the log and data files.
+ </para>
+ </warning>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The basic functionality of <literal>Maria</literal> matches the
+ functionality of <literal>MyISAM</literal> with a number of
+ differences. These are:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Two types of tables are supported. Non-crash safe tables
+ (non-transactional) are written immediately to their
+ corresponding data file. Transactional tables are crash safe and
+ data is written into the <literal>Maria</literal> log. For more
+ information on the log, see <xref linkend="se-maria-log"/>. Data
+ from the log is then written to the data files as the statement
+ completes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> supports auto-recovery in the event of
+ a crash. For more information, see
+ <xref linkend="se-maria-recovery"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> supports a single writer and multiple
+ readers. The writer supports both <literal>INSERT</literal> and
+ <literal>UPDATE</literal> operations. <literal>MyISAM</literal>
+ supports only concurrent <literal>INSERT</literal> and
+ <literal>SELECT</literal> statements. For more information, see
+ <xref linkend="se-maria-concurrency"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> provides a new row format,
+ <literal>PAGE</literal> on transactional tables. For more
+ information, see <xref linkend="se-maria-tableoptions"/>.
+ Existing <literal>MyISAM</literal> row formats are also
+ supported on non-transactional tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> supports atomic and crash-safe
+ operations over many statements by enclosing statements within
+ <literal>LOCK TABLES</literal> and <literal>UNLOCK
+ TABLES</literal> statements.
+ </para>
+
+ <note>
+ <para>
+ For future compatibility, you should use the
+ <literal>BEGIN</literal> and <literal>COMMIT</literal> syntax:
+ </para>
+
+<programlisting>
+BEGIN;
+LOCK TABLES ...;
+# statements
+UNLOCK TABLES;
+COMMIT;
+ </programlisting>
+
+ <para>
+ The <literal>LOCK</literal> and <literal>UNLOCK</literal>
+ statements will not be required in future.
+ </para>
+ </note>
+ </listitem>
+
+ </itemizedlist>
+
+ <section id="se-maria-configuration">
+
+ <title><literal>Maria</literal> Configuration</title>
+
+ <para>
+ <literal>Maria</literal> supports a number of configuration
+ options to control the operation and performance of the storage
+ engine. Many of the options are similar to options that are
+ already available within the <literal>MyISAM</literal>
+ configuration options. See
+ <xref linkend="refman-5.1:myisam-storage-engine"/>.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para id="option_mysqld_maria">
+ <literal>maria</literal> enables the <literal>Maria</literal>
+ plugin. You can disable <literal>Maria</literal> by using
+ <literal>--skip-maria</literal>.
+ </para>
+
+ <para>
+ Default is for the <literal>Maria</literal> plugin to be
+ enabled.
+ </para>
+
+ <note>
+ <para>
+ You cannot disable <literal>Maria</literal> if you have
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_block_size">
+ <literal>maria-block-size</literal>
+ </para>
+
+ <para>
+ Sets the block size to be used for <literal>Maria</literal>
+ index pages and data pages for the new <literal>PAGE</literal>
+ row format. Once the page size the first time
+ <literal>mysqld</literal> has been run, you cannot change the
+ block size without recreating all your
+ <literal>Maria</literal> tables.
+ </para>
+
+ <para>
+ The configuration setting of this value is recorded within the
+ <filename>maria_log_control</filename> file the first time
+ MySQL is started with the <literal>Maria</literal> engine
+ enabled.
+ </para>
+
+ <para>
+ The default size is 8192 (8KB).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_check_interval">
+ <literal>maria-check-interval</literal>
+ </para>
+
+ <para>
+ Sets the interval between automatic checkpoints. Checkpoints
+ in <literal>Maria</literal> synchronize the in-memory and
+ on-disk data and then collates information about the current
+ status of different transactions, before writing the
+ information about the current status to the
+ <literal>Maria</literal> log. The use of checkpoints improves
+ the ability and speed of <literal>Maria</literal> when
+ recovering from a crash, as recovery can continue from the
+ last stable checkpoint in the log, instead of replaying the
+ entire log.
+ </para>
+
+ <para>
+ The default checkpoint interval is 30 seconds. You can disable
+ checkpoints by setting the value to 0, but disabling
+ checkpoints will increase the time taken to recover in the
+ event of a failure. You should only set the value to 0 during
+ testing.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_log_dir_path">
+ <literal>maria_log_dir_path</literal>
+ </para>
+
+ <para>
+ Sets the path to the directory where the transactional log
+ files will be stored. You can set this to another device to
+ improve performance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_log_file_size">
+ <literal>maria_log_file_size</literal>
+ </para>
+
+ <para>
+ Sets the size of each of the <literal>Maria</literal> log
+ files. When the log reaches this figure, the log file is
+ closed, a new log file (with a new sequential log file number)
+ is created, and the <filename>maria_log_control</filename>
+ file is updated.
+ </para>
+
+ <para>
+ The default size is 1GB. The minimum log file size is 8MB and
+ the maximum log file size is 4GB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_log_purge_type">
+ <literal>maria_log_purge_type</literal>
+ </para>
+
+ <para>
+ Specifies how the transactional log with be purged. Supported
+ types are as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>at_flush</literal> — the logs will be
+ removed (deleted from disk) only when they have been
+ marked 'free' (i.e. not outstanding transactions), and a
+ <literal>FLUSH LOGS</literal> statement has been executed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>immediate</literal> — the logs are deleted
+ as soon as they no longer have pending transactions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>external</literal> — the logs are not
+ deleted automatically; it is assumed an external utility
+ is responsible for actually deleting the logs. This can be
+ used in combination with a backup solution to delete the
+ logs only once a backup has been completed.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_max_sort_file_size">
+ <literal>maria_max_sort_file_size</literal>
+ </para>
+
+ <para>
+ Don't use the fast sort index method to created index id the
+ temporary file would get bigger than this size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_page_checksum">
+ <literal>maria_page_checksum</literal>
+ </para>
+
+ <para>
+ Sets the default mode for page checksums. If a table has page
+ checksums, then <literal>Maria</literal> will use the checksum
+ to ensure that the page information is not corrupted. You can
+ override page checksums on a table by table level by using the
+ <literal>PAGE_CHECKSUM</literal> or
+ <literal>CHECKSUM</literal> option during <literal>CREATE
+ TABLE</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_pagecache_age_threshold">
+ <literal>maria_pagecache_age_threshold</literal>
+ </para>
+
+ <para>
+ The number of hits that a hot block in the page cache has to
+ be untouched until it is considered old enough to be
+ downgraded to a warm block. The specifies the percentage ratio
+ of the number of hits to the total number of blocks in the
+ page cache.
+ </para>
+
+ <para>
+ The default is 300.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_pagecache_buffer_size">
+ <literal>maria_pagecache_buffer_size</literal>
+ </para>
+
+ <para>
+ Sets the size of the buffer used for data and index blocks to
+ <literal>Maria</literal> tables. You should increase this
+ value to improve performance on index reads and writes,
+ ideally to the maximum figure supported by your environment.
+ </para>
+
+ <para>
+ The default value is 8MB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_pagecache_division_limit">
+ <literal>maria_pagecache_division_limit</literal>
+ </para>
+
+ <para>
+ The minimum percentage of warm blocks in the page cache.
+ </para>
+
+ <para>
+ The default value is 100.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_repair_threads">
+ <literal>maria_repair_threads</literal>
+ </para>
+
+ <para>
+ Number of threads to be used when repairing
+ <literal>Maria</literal> tables when using <literal>REPAIR
+ TABLE</literal>. The default value of 1 disables parallel
+ repair.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_sort_buffer_size">
+ <literal>maria_sort_buffer_size</literal>
+ </para>
+
+ <para>
+ Sets the size of the buffer that is allocated when sorting the
+ index when doing a <literal>REPAIR</literal> or when creating
+ indexes using <literal>CREATE INDEX</literal> or
+ <literal>ALTER TABLE</literal>. Increasing this option will
+ improve the speed of the index creation process.
+ </para>
+
+ <para>
+ The default value is 8MB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_stats_method">
+ <literal>maria_stats_method</literal>
+ </para>
+
+ <para>
+ Specifies how index statistics collection treats
+ <literal>NULL</literal> values. Valid choices are
+ <literal>nulls_unequal</literal>,
+ <literal>nulls_equal</literal>,
+ <literal>nulls_ignored</literal>.
+ </para>
+
+ <para>
+ The default setting is <literal>nulls_unequal</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para id="option_mysqld_maria_sync_log_dir">
+ <literal>maria_sync_log_dir</literal>
+ </para>
+
+ <para>
+ Controls the synchronization of the directory after log file
+ has been extended or a new log file has been created.
+ Supported values <literal>never</literal>,
+ <literal>newfile</literal> (only when a new log file is
+ created), and <literal>always</literal>.
+ </para>
+
+ <para>
+ The default setting is <literal>newfile</literal>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="se-maria-tableoptions">
+
+ <title><literal>Maria</literal> Table Options</title>
+
+ <para>
+ There are a number of options available when you create a new
+ <literal>Maria</literal> table:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>PAGE_CHECKSUM</literal>
+ </para>
+
+ <para>
+ The <literal>PAGE_CHECKSUM</literal> table option specifies
+ whether a page checksum for the table should be enabled. The
+ checksum can either be switched on (value 1) or off (value 0).
+ The default value of this option is implied by the
+ <option>maria_page_checksum</option> variable.
+ </para>
+
+ <para>
+ Because the default value of the
+ <literal>PAGE_CHECKSUM</literal> option is configurable, the
+ checksum setting is always included in the output of
+ <literal>SHOW CREATE TABLE</literal> if it was enabled when
+ the table was created.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>TRANSACTIONAL</literal>
+ </para>
+
+ <para>
+ <literal>Maria</literal> tables can be either transactional or
+ non-transactional. For <literal>Maria</literal> versions less
+ than 2.0, <literal>TRANSACTIONAL</literal> means crash-safe
+ and atomic. Full transaction support will only be available
+ with <literal>Maria</literal> 2.0 and later.
+ </para>
+
+ <para>
+ Transactional tables are recorded in the
+ <literal>Maria</literal> log and use slightly more space per
+ row than non-transactional tables. By default all tables are
+ transactional (i.e. <literal>TRANSACTIONAL=1</literal> is
+ implied within the <literal>CREATE TABLE</literal> definition.
+ This means that the transactional status of the table is not
+ written in the output of the <literal>SHOW CREATE
+ TABLE</literal> output:
+ </para>
+
+<programlisting>mysql> create table maria_trans (id int, title char(20)) engine=Maria;
+Query OK, 0 rows affected (0.05 sec)
+
+mysql> SHOW CREATE TABLE maria_trans;
++-------------+---------------------------------------+
+| Table | Create Table |
++-------------+---------------------------------------+
+| maria_trans | CREATE TABLE `maria_trans` (
+ `id` int(11) DEFAULT NULL,
+ `title` char(20) DEFAULT NULL
+) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 |
++-------------+---------------------------------------+
+1 row in set (0.00 sec)
+ </programlisting>
+
+ <para>
+ If you create a crash safe (non-transactional) table then the
+ option is shown
+ </para>
+
+<programlisting>
+mysql> CREATE TABLE maria_nontrans (id INT, title CHAR(20)) ENGINE=Maria TRANSACTIONAL=0;
+Query OK, 0 rows affected (0.02 sec)
+
+mysql> SHOW CREATE TABLE maria_nontrans;
++----------------+----------------------------------------------------+
+| Table | Create Table |
++----------------+----------------------------------------------------+
+| maria_nontrans | CREATE TABLE `maria_nontrans` (
+ `id` int(11) DEFAULT NULL,
+ `title` char(20) DEFAULT NULL
+) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0 |
++----------------+----------------------------------------------------+
+1 row in set (0.00 sec)
+</programlisting>
+
+ <para>
+ Currently, transactional tables cannot handle
+ <literal>SPATIAL</literal> or <literal>FULLTEXT</literal>
+ indexes. You must use a non-transactional table if you want to
+ use these index key types. If you try to create a table with
+ these options then an error will be used during
+ <literal>CREATE TABLE</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>TABLE_CHECKSUM</literal>, <literal>CHECKSUM</literal>
+ </para>
+
+ <para>
+ Forces MySQL to maintain a live checksum for all rows in the
+ table. This maintains a rolling checksum (i.e. one that
+ changes when the table data changes), and can be used to
+ identify corrupted tables. This is identical to the
+ <literal>CHECKSUM</literal> on <literal>MyISAM</literal>
+ tables.
+ </para>
+
+ <para>
+ The <literal>CHECKSUM TABLE</literal> statement, which returns
+ the checksum for a given table, ignores record's attributes
+ which have a <literal>NULL</literal> value. This is different
+ behavior from standard MySQL 5.1.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In addition, <literal>Maria</literal> supports the following row
+ formats:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>FIXED</literal> — identical to the
+ <literal>FIXED</literal> row format used by
+ <literal>MyISAM</literal>. Must be used with non-transactional
+ tables (i.e. where <literal>TRANSACTIONAL=0</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>DYNAMIC</literal> — identical to the
+ <literal>DYNAMIC</literal> row format used by
+ <literal>MyISAM</literal>. Must be used with non-transactional
+ tables (i.e. where <literal>TRANSACTIONAL=0</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>PAGE</literal> — new <literal>Maria</literal>
+ 'pages in block' row format where data and index information
+ is written into pages. The <literal>PAGE</literal> option can
+ be used with <literal>TRANSACTIONAL=0</literal> or
+ <literal>TRANSACTIONAL=1</literal>. The
+ <literal>PAGE</literal> format uses a different caching
+ mechanism than <literal>MyISAM</literal>. For more
+ information, see <xref linkend="se-maria-configuration"/>.
+ </para>
+
+ <para>
+ <literal>Maria</literal> data pages in <literal>PAGE</literal>
+ format has an overhead of 10 byte/page and 5 byte/rows.
+ Transaction and multiple concurrent writer support will use an
+ extra overhead of 7 bytes for new rows, 14 bytes for deleted
+ rows and 0 bytes for old compacted rows.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="se-maria-log">
+
+ <title><literal>Maria</literal> Transaction Log</title>
+
+ <para>
+ The transaction log within <literal>Maria</literal> keeps a record
+ of all changes, including DDL, to tables created using the
+ <literal>TRANSACTIONAL</literal> table option. Events from all
+ tables and all databases are written into a single log file
+ sequence. The <literal>Maria</literal> log consists of one log
+ control file (<filename>maria_log_control</filename>) and one or
+ more maria log files (named
+ <filename>maria_log.????????</filename>, where
+ <literal>????????</literal> is an eight-digit, sequential numeric
+ number with a maximum value of 16777215). The log control file and
+ log file are created automatically when <command>mysqld</command>
+ is started.
+ </para>
+
+ <para>
+ The log contains a copy of all the data and that log can be used
+ to replay and verify the contents of the data files in the event
+ of a crash. Data written into the log is checkpointed at
+ configurable intervals to ensure that on disk and log data is
+ synchronized. The default checkpoint interval is 30 seconds.
+ </para>
+
+ <para>
+ For tables using the transactional format, statements are recorded
+ in the log file, and data is transferred from the transaction log
+ to the index and data files. There is not fixed point when the
+ application of data from the log to the data and index files
+ occurs; it happens in the background during normal execution.
+ Although the data and index files and the transaction log may be
+ out of sync, all of the information is always available. In the
+ event of a crash, the recovery process will replay and apply the
+ contents of the log to bring the data and log files back into
+ synchronization.
+ </para>
+
+ <para>
+ Additional log files are created when the log file reaches the
+ configured maximum size (as controlled by
+ <literal>maria_log_file_size</literal>. The default value is 1GB.
+ This option can be controlled as a global variable and set with
+ the configuration file or on the command line.
+ </para>
+
+ <para>
+ You can determine the list of current log files using the
+ statement <literal>SHOW ENGINE MARIA LOGS</literal>:
+ </para>
+
+<programlisting>mysql> SHOW ENGINE MARIA LOGS;
++--------+-------------------------------------------------------------+----------+
+| Type | Name | Status |
++--------+-------------------------------------------------------------+----------+
+| maria | Size 191627264 ; /usr/local/mysql/var/maria_log.00000009 | unknown |
++--------+-------------------------------------------------------------+----------+
+1 row in set (0.00 sec)
+ </programlisting>
+
+ <para>
+ The <literal>Status</literal> shows the current status of the log
+ file:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>unknown</literal> — no checkpoint has taken
+ place, so the current status of the log file in unknown.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>in-use</literal> — information is still being
+ written to or read from the log, or outstanding statements are
+ still active that have information active within the log file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>free</literal> — the log file and any
+ statements related to it have been completed and the log file
+ is no longer active.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Any other message indicates an error in reading the log file
+ information.
+ </para>
+
+ <para>
+ New log files are created automatically as the size of the log
+ events reach the configured size. For example, shown below are the
+ log files after a statement that inserted a large volume of data
+ was executed ßafter the <literal>maria_log_file_size</literal>
+ variable has been reduced to 8MB (the minimum support value):
+ </para>
+
+<programlisting>mysql> SHOW ENGINE MARIA LOGS;
++--------+-------------------------------------------------------------+---------+
+| Type | Name | Status |
++--------+-------------------------------------------------------------+---------+
+| maria | Size 191627264 ; /usr/local/mysql/var/maria_log.00000009 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000010 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000011 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000012 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000013 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000014 | in use |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000015 | in use |
+| maria | Size 139264 ; /usr/local/mysql/var/maria_log.00000016 | in use |
++--------+-------------------------------------------------------------+---------+
+8 rows in set (0.00 sec)
+</programlisting>
+
+ <para>
+ Log files remain 'in use' until the events have been written to
+ the data files and the information has been synchronized on disk
+ with a checkpoint. Log files that no longer have transactions or
+ outstanding events are marked 'free':
+ </para>
+
+<programlisting>mysql> SHOW ENGINE MARIA LOGS;
++--------+-------------------------------------------------------------+---------+
+| Type | Name | Status |
++--------+-------------------------------------------------------------+---------+
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000002 | free |
+| maria | Size 2170880 ; /usr/local/mysql/var/maria_log.00000003 | in use |
++--------+-------------------------------------------------------------+---------+
+2 rows in set (0.00 sec)
+ </programlisting>
+
+ <para>
+ Log files are deleted according to the setting of the
+ <literal>maria_log_purge_type</literal> dynamic variable. Three
+ options are supported, <literal>immediate</literal>,
+ <literal>external</literal> and <literal>at_flush</literal>.
+ </para>
+
+ <para>
+ In <literal>immediate</literal> mode, the log files are deleted as
+ soon as they no longer have outstanding transactions or events.
+ This reduces the disk space used by these logs, but means that the
+ logs cannot be transferred to another machine for replaying. This
+ setting should not affect recovery functionality, as only logs
+ where there is no outstanding data to be committed are deleted.
+ </para>
+
+ <para>
+ In <literal>at_flush</literal> mode, the log files are only
+ deleted when you execute the <literal>FLUSH LOGS</literal>
+ statement. Issuing this statement will delete the logs that are no
+ longer 'in use' with affecting logs with outstanding transactions
+ or events.
+ </para>
+
+<programlisting>mysql> SHOW ENGINE MARIA LOGS;
++--------+-------------------------------------------------------------+---------+
+| Type | Name | Status |
++--------+-------------------------------------------------------------+---------+
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000002 | free |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000003 | free |
+| maria | Size 8388608 ; /usr/local/mysql/var/maria_log.00000004 | free |
+| maria | Size 4325376 ; /usr/local/mysql/var/maria_log.00000005 | in use |
++--------+-------------------------------------------------------------+---------+
+4 rows in set (0.00 sec)
+
+mysql> FLUSH LOGS;
+Query OK, 0 rows affected (0.00 sec)
+
+mysql> SHOW ENGINE MARIA LOGS;
++--------+-------------------------------------------------------------+---------+
+| Type | Name | Status |
++--------+-------------------------------------------------------------+---------+
+| maria | Size 4325376 ; /usr/local/mysql/var/maria_log.00000005 | in use |
++--------+-------------------------------------------------------------+---------+
+1 row in set (0.00 sec)
+ </programlisting>
+
+ <para>
+ When <literal>maria_log_purge_type</literal> is set to
+ <literal>external</literal>, log files are not deleted by MySQL at
+ all. Instead, it is assumed that an external process is
+ responsible for deleting log files. Care should be taken with this
+ setting as you should only delete log files that
+ <literal>Maria</literal> is no longer using.
+ </para>
+
+ <para>
+ Transaction log file events can be viewed using the
+ <command>maria_read_log</command> command, which also provides the
+ ability to replay log file contents and apply them to tables
+ without running <command>mysqld</command>. For more information,
+ see <xref linkend="se-maria-tools"/>.
+ </para>
+
+ </section>
+
+ <section id="se-maria-recovery">
+
+ <title><literal>Maria</literal> Recovery</title>
+
+ <para>
+ Any change (creation, insertion, deletion, update, etc.) in a
+ <literal>Maria</literal> table using the transactional format is
+ automatically written to the <literal>Maria</literal> log. Changes
+ to non-transactional tables are not written to the log.
+ </para>
+
+ <para>
+ In the event of a crash or other failure or
+ <command>mysqld</command>, the following takes place during the
+ next invocation of <command>mysqld</command>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Events in the log are replayed from the last checkpoint.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If a checkpoint is not available (for example, if the log file
+ was newly created and no checkpoint was written when the crash
+ occurred), then all events are replayed from the start of the
+ log file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For each active connection, events are replayed until the last
+ statement tha returned before the crash occured, unless the
+ statement was part of a <literal>LOCK TABLES</literal>
+ statement, in which case recovery takes place to the last
+ statement executed before the <literal>LOCK TABLES</literal>
+ statement was issued.
+ </para>
+
+ <para>
+ Because multiple connections can be active at the same time,
+ recovery takes for each connection individually.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ During recovery, if a statement fails due to a unique key
+ violation, then the entire statement is not rolled back. Only
+ the data that would have triggered the unique key violation is
+ rolled back. For example, if you had executed the following
+ statements into a table with a unique key:
+ </para>
+
+<programlisting>INSERT VALUES (1);
+INSERT VALUES (2),(1)</programlisting>
+
+ <para>
+ The second statement would generate a unique key violation,
+ but during recovery the statement would not be rolled back.
+ The table would still contain two rows containing the first
+ two values.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ You can see a sample of the recovery process after a crash below:
+ </para>
+
+<programlisting>080111 16:42:05 mysqld_safe Number of processes running now: 0
+080111 16:42:05 mysqld_safe mysqld restarted
+080111 16:42:05 [Note] mysqld: Maria engine: starting recovery
+recovered pages: 0% 99% 100% (0.9 seconds); transactions to roll back: 1 0 (3.8 seconds); tables to flush: 1 0 (0.5 seconds);
+080111 16:42:10 [Note] mysqld: Maria engine: recovery done
+080111 16:42:10 [Note] Event Scheduler: Loaded 0 events
+080111 16:42:10 [Note] /usr/local/mysql/libexec/mysqld: ready for connections.
+ </programlisting>
+
+ <para>
+ Recovery is automatic, but the length of time for recovery
+ increases in line with the number of incomplete events and tables
+ inconsistencies. The recovery process is single-threaded and
+ cannot be configured.
+ </para>
+
+ </section>
+
+ <section id="se-maria-concurrency">
+
+ <title><literal>Maria</literal> Statement Concurrency</title>
+
+ <para>
+ The concurrency of statement execution on tables is handled
+ differently in <literal>Maria</literal> depending on whether you
+ are using non-transactional or transactional tables.
+ </para>
+
+ <para>
+ For non-transactional tables, the rules are identical to MyISAM:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>SELECT</literal>
+ </para>
+
+ <para>
+ All issued <literal>SELECT</literal>'s are running
+ concurrently. While a <literal>SELECT</literal> is running,
+ all writers (<literal>INSERT</literal>,
+ <literal>DELETE</literal>, <literal>UPDATE</literal>) are
+ blocked from using any of the used tables (ie, they wait for
+ the table to be free before continuing) . The only exception
+ is that one <literal>INSERT CONCURRENT</literal> can be run on
+ each table that doesn't have any deleted rows.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>UPDATE</literal>
+ </para>
+
+ <para>
+ Only one <literal>UPDATE</literal> statement can run at the
+ same time one each table. While the <literal>UPDATE</literal>
+ is running all other threads are blocked from using this
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>DELETE</literal>
+ </para>
+
+ <para>
+ Only one <literal>DELETE</literal> statement can run at the
+ same time one each table. While the <literal>DELETE</literal>
+ is running all other threads are blocked from using this
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>INSERT</literal>
+ </para>
+
+ <para>
+ If <literal>INSERT CONCURRENT</literal> is used, and there are
+ no deleted rows in the table. only one <literal>INSERT
+ CONCURRENT</literal> statement can run at the same time on
+ each table. While the <literal>INSERT CONCURRENT</literal> is
+ running all other writer threads are blocked for using this
+ table. Any number of SELECT can use this table.
+ </para>
+
+ <para>
+ If normal <literal>INSERT</literal> is used or if there are
+ deleted rows in the table, only one INSERT statement can run
+ at the same time on the table. While the
+ <literal>INSERT</literal> is running all
+ <literal>SELECT</literal>, <literal>INSERT</literal>,
+ <literal>DELETE</literal> and <literal>UPDATE</literal> are
+ blocked from using this table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>CREATE</literal> or <literal>DROP</literal>
+ </para>
+
+ <para>
+ <literal>CREATE</literal>'s on different tables can be run
+ concurrently. On same table, first creator wins.
+ <literal>DROP</literal> waits until all statements using the
+ tables are completed, after which the table is dropped.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ When using transactional tables:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>SELECT</literal>
+ </para>
+
+ <para>
+ All issued <literal>SELECT</literal>'s are running
+ concurrently. While a <literal>SELECT</literal> is running,
+ all writers (<literal>INSERT</literal>,
+ <literal>DELETE</literal>, <literal>UPDATE</literal>) are
+ blocked from using any of the used tables (ie, they wait for
+ the table to be free before continuing).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>INSERT</literal>
+ </para>
+
+ <para>
+ Only one <literal>UPDATE</literal> statement can run at the
+ same time one each table. While the <literal>UPDATE</literal>
+ is running all other threads are blocked from using this
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>INSERT</literal>
+ </para>
+
+ <para>
+ Only one <literal>DELETE</literal> statement can run at the
+ same time one each table. While the <literal>DELETE</literal>
+ is running all other threads are blocked from using this
+ table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>INSERT</literal>
+ </para>
+
+ <para>
+ Only one <literal>INSERT</literal> statement can run at the
+ same time on the table. While the <literal>INSERT</literal> is
+ running all <literal>SELECT</literal>,
+ <literal>INSERT</literal>, <literal>DELETE</literal> and
+ <literal>UPDATE</literal> are blocked from using this table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>CREATE</literal> or <literal>DROP</literal>
+ </para>
+
+ <para>
+ <literal>CREATE</literal>'s on different tables can be run
+ concurrently. On same table, first creator wins.
+ <literal>DROP</literal> waits until all statements using the
+ tables are completed, after which the table is dropped.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="se-maria-designnotes">
+
+ <title><literal>Maria</literal> Design Notes</title>
+
+ <para>
+ <literal>Maria</literal> supports all aspects of
+ <literal>MyISAM</literal>, except as noted below. This includes
+ external and internal check/repair/compressing of rows, different
+ row formats, different index compress formats, maria_check etc.
+ After a normal shutdown one can copy <literal>Maria</literal>
+ files between servers.
+ </para>
+
+ <para>
+ <emphasis role="bold">Advantages of <literal>Maria</literal>
+ (Compared to <literal>MyISAM</literal>) </emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Data and indices are crash safe. On crash, things will
+ rollback to state of the start of statement or last
+ <literal>LOCK TABLES</literal> commands.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> can replay everything from the log.
+ Including
+ <literal>CREATE</literal>/<literal>DROP</literal>/<literal>RENAME</literal>/<literal>TRUNCATE</literal>
+ tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>LOAD INDEX</literal> can skip index blocks for not
+ wanted indexes
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Supports all <literal>MyISAM</literal> row formats and the new
+ transcational format where data is stored in pages.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ When using transactional format (default) row data can be
+ cached.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> has unit tests of most parts
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Supports both crash safe (soon to be transactional) and not
+ transactional tables. (Not transactional tables are not logged
+ and rows uses less space). <literal>CREATE TABLE foo (...)
+ TRANSACTIONAL=0|1</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Transactional is the only crashsafe/transactional row format.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Block format should give a notable speed improvement on
+ systems which bad data caching (for example Windows).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">Differences between <literal>Maria</literal>
+ and <literal>MyISAM</literal> </emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> uses big (1GB by default) log files.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> has a log control file
+ (<filename>maria_log_control</filename>) and log files (
+ <filename>maria_log.????????</filename>). The log files can be
+ automatically purged when not needed or purged on demand
+ (after backup).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> uses by default 8K pages
+ (<literal>MyISAM</literal> 1K). <literal>Maria</literal>
+ should be faster on static size indexes but slower on variable
+ length keys (until we add a directory to index pages).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">Disadvantages of <literal>Maria</literal>
+ (compared to <literal>MyISAM</literal>), that will be fixed in
+ forthcoming releases </emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> 1.0 has one writer or many readers.
+ (<literal>MyISAM</literal> can have one inserter and many
+ readers when using concurrent inserts).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Storage of very small rows (< 25 bytes) are not efficient
+ for <literal>BLOCK</literal> format.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> data pages in <literal>PAGE</literal>
+ format has an overhead of 10 byte/page and 5 byte/rows.
+ Transaction and multiple concurrent writer support will use an
+ extra overhead of 7 bytes for new rows, 14 bytes for deleted
+ rows and 0 bytes for old compacted rows.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> doesn't support <literal>INSERT
+ DELAYED</literal>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">Differences that are not likely to be
+ fixed</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ No external locking (<literal>MyISAM</literal> has external
+ locking, but is not much used).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> has one page size for both index and
+ data (defined when <literal>Maria</literal> is used first
+ time). <literal>MyISAM</literal> supports different page sizes
+ per index.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Index number requires one extra byte per index page.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Maria</literal> doesn't support RAID (disabled in
+ <literal>MyISAM</literal> too).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Minimum data file size for <literal>BLOCK</literal> format is
+ 16K (with 8K pages).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="se-maria-tools">
+
+ <title><literal>Maria</literal> Command-line Tools</title>
+
+ <para>
+ <literal>Maria</literal> supports a number of command-line tools
+ which operate in a similar fashion to the corresponding
+ <literal>MyISAM</literal> tools. These are:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <command>maria_chk</command> — checks
+ <literal>Maria</literal> tables for corruption. Similar to the
+ <command>myisamchk</command> command; see
+ <xref linkend="myisamchk"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>maria_ftdump</command> — dumps information
+ about fulltext indexes in <literal>Maria</literal> tables.
+ Similar to the <command>myisam_ftdump</command> command; see
+ <xref linkend="myisam-ftdump"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>maria_pack</command> — packs a
+ <literal>Maria</literal> table to save space. Similar to the
+ <command>myisampack</command> command; see
+ <xref linkend="myisampack"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>maria_read_log</command> — displays the
+ contents of a <literal>Maria</literal> log file or applies the
+ contents to existing tables. This tool is a utility for the
+ log files but is not used or required for recovery of data
+ from the log file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>maria_dump_log</command> — used for
+ interpreting log content for people who understand maria
+ transaction log internals.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+<!--
+
+
+<section id="se-maria-faq">
+ <title><literal>Maria</literal> Frequently Asked Questions (FAQ)</title>
+
+</section>
+ -->
+
+ <section id="se-maria-openbugs">
+
+ <title><literal>Maria</literal> Open Bugs</title>
+
+ <para>
+ This section contains all known fatal bugs in the
+ <literal>Maria</literal> storage engine for the last source or
+ binary release. Minor bugs, extensions and feature request and
+ bugs found since this release can be find in the MySQL bugs
+ databases at:
+ <ulink url="http://bugs.mysql.com/">http://bugs.mysql.com/</ulink>.
+ </para>
+
+ <note>
+ <para>
+ You can find additional information in the
+ <filename>KNOWN_BUGS.txt</filename> file within the
+ <literal>Maria</literal> repository.
+ </para>
+ </note>
+
+ <para>
+ There shouldn't normally be any bugs that affects normal
+ operations in any <literal>Maria</literal> release. Still, there
+ are always exceptions and edge cases and that's what this section
+ is for.
+ </para>
+
+ <para>
+ If you have found a bug that is not listed here, please add it to
+ http://bugs.mysql.com/ so that we can either fix it for next
+ release or in the worst case add it here for others to know!
+ </para>
+
+ <para>
+ <emphasis role="bold">Known bugs that are planned to be fixed
+ before next minor release</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ If the log files are damaged or inconsistent,
+ <literal>Maria</literal> may fail to start. We should fix that
+ if this happens and mysqld is restarted (thanks to
+ mysqld_safe, instance manager or other script) it should
+ disregard the old logs, start anyway and automatically repair
+ any tables that was found to be crashed on open.
+ </para>
+
+ <para>
+ Temporary fix is to remove <filename>
+ maria_log.????????</filename> files from the data directory,
+ restart <command>mysqld</command> and run <literal>CHECK
+ TABLE</literal>/<literal>REPAIR TABLE</literal> or
+ <command>mysqlcheck</command> on your <literal>Maria</literal>
+ tables.
+ </para>
+
+ <warning>
+ <para>
+ Do not remove the <filename>maria_log_control</filename>
+ file, as this contains the page size information required
+ for reading <literal>Maria</literal> log and data files.
+ </para>
+ </warning>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">Known bugs that are planned to be fixed
+ before Beta </emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ If we get a write failure on disk for the log, we should stop
+ all usage of transactional tables and mark all transactional
+ tables that are changed as crashed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Missing features that are planned to be
+ fixed before Beta</emphasis>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ We will add an maria-recover option to automatically repair
+ any crashed tables on open. (This is needed for
+ non-transactional tables and also in edge cases for
+ transactional tables when the table crashed because of a bug
+ in MySQL or <literal>Maria</literal> code)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">Features planned for future
+ releases</emphasis>
+ </para>
+
+ <para>
+ You can find details on additional features and functionality
+ planned for <literal>Maria</literal>, see
+ <ulink url="http://forge.mysql.com/worklog/">MySQL Forge
+ Worklog</ulink>.
+ </para>
+
+ </section>
+
+</section>
Added: trunk/refman-5.1-maria/storage-engines.xml
===================================================================
--- trunk/refman-5.1-maria/storage-engines.xml (rev 0)
+++ trunk/refman-5.1-maria/storage-engines.xml 2008-01-30 15:00:40 UTC (rev 9664)
Changed blocks: 1, Lines Added: 1034, Lines Deleted: 0; 36029 bytes
@@ -0,0 +1,1034 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % all.entities SYSTEM "all-entities.ent">
+ %all.entities;
+]>
+<chapter id="storage-engines">
+
+ <title>Storage Engines</title>
+
+ <remark role="help-category" condition="Storage Engines"/>
+
+ <indexterm>
+ <primary>types</primary>
+ <secondary>of tables</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>storage engines</primary>
+ <secondary>choosing</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>table types</primary>
+ <secondary>choosing</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MySQL storage engines</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>HEAP storage engine</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>InnoDB storage engine</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MEMORY storage engine</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MERGE storage engine</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MyISAM storage engine</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>EXAMPLE storage engine</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>CSV storage engine</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>ARCHIVE storage engine</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>BLACKHOLE storage engine</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>FEDERATED storage engine</primary>
+ </indexterm>
+
+ <para>
+ MySQL supports several storage engines that act as handlers for
+ different table types. MySQL storage engines include both those that
+ handle transaction-safe tables and those that handle
+ non-transaction-safe tables.
+ </para>
+
+ <para>
+ With MySQL 5.1, MySQL AB has introduced a new pluggable storage
+ engine architecture that allows storage engines to be loaded into
+ and unloaded from a running MySQL server.
+ </para>
+
+ <para>
+ This chapter describes each of the MySQL storage engines except for
+ <literal>NDB Cluster</literal>, which is covered in
+ <xref linkend="mysql-cluster"/>. It also contains a description of
+ the pluggable storage engine architecture (see
+ <xref linkend="pluggable-storage-overview"/>).
+ </para>
+
+ <para>
+ For answers to some commonly asked questions about MySQL storage
+ engines, see <xref linkend="faqs-storage-engines"/>.
+ </para>
+
+ <section id="pluggable-storage-overview">
+
+ <title>Overview of MySQL Storage Engine Architecture</title>
+
+ <para>
+ The MySQL pluggable storage engine architecture allows a database
+ professional to select a specialized storage engine for a
+ particular application need while being completely shielded from
+ the need to manage any specific application coding requirements.
+ The MySQL server architecture isolates the application programmer
+ and DBA from all of the low-level implementation details at the
+ storage level, providing a consistent and easy application model
+ and API. Thus, although there are different capabilities across
+ different storage engines, the application is shielded from these
+ differences.
+ </para>
+
+ <para>
+ The MySQL pluggable storage engine architecture is shown in
+ <xref linkend="figure-storage-engine-architecture"/>.
+ </para>
+
+ <figure id="figure-storage-engine-architecture">
+ <title>The MySQL architecture using pluggable storage engines</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="../refman-common/images/published/PSEArch.png" format="PNG" lang="en"/>
+ </imageobject>
+ <textobject>
+ <phrase lang="en">The MySQL pluggable storage engine
+ architecture</phrase>
+ </textobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ The pluggable storage engine architecture provides a standard set
+ of management and support services that are common among all
+ underlying storage engines. The storage engines themselves are the
+ components of the database server that actually perform actions on
+ the underlying data that is maintained at the physical server
+ level.
+ </para>
+
+ <para>
+ This efficient and modular architecture provides huge benefits for
+ those wishing to specifically target a particular application need
+ — such as data warehousing, transaction processing, or high
+ availability situations — while enjoying the advantage of
+ utilizing a set of interfaces and services that are independent of
+ any one storage engine.
+ </para>
+
+ <para>
+ The application programmer and DBA interact with the MySQL
+ database through Connector APIs and service layers that are above
+ the storage engines. If application changes bring about
+ requirements that demand the underlying storage engine change, or
+ that one or more additional storage engines be added to support
+ new needs, no significant coding or process changes are required
+ to make things work. The MySQL server architecture shields the
+ application from the underlying complexity of the storage engine
+ by presenting a consistent and easy-to-use API that applies across
+ storage engines.
+ </para>
+
+ <section id="pluggable-storage-common-layer">
+
+ <title>The Common Database Server Layer</title>
+
+ <para>
+ A MySQL pluggable storage engine is the component in the MySQL
+ database server that is responsible for performing the actual
+ data I/O operations for a database as well as enabling and
+ enforcing certain feature sets that target a specific
+ application need. A major benefit of using specific storage
+ engines is that you are only delivered the features needed for a
+ particular application, and therefore you have less system
+ overhead in the database, with the end result being more
+ efficient and higher database performance. This is one of the
+ reasons that MySQL has always been known to have such high
+ performance, matching or beating proprietary monolithic
+ databases in industry standard benchmarks.
+ </para>
+
+ <para>
+ From a technical perspective, what are some of the unique
+ supporting infrastructure components that are in a storage
+ engine? Some of the key feature differentiations include:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis>Concurrency</emphasis> — some applications
+ have more granular lock requirements (such as row-level
+ locks) than others. Choosing the right locking strategy can
+ reduce overhead and therefore improve overall performance.
+ This area also includes support for capabilities such as
+ multi-version concurrency control or <quote>snapshot</quote>
+ read.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis>Transaction Support</emphasis> — Not every
+ application needs transactions, but for those that do, there
+ are very well defined requirements such as ACID compliance
+ and more.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis>Referential Integrity</emphasis> — The need
+ to have the server enforce relational database referential
+ integrity through DDL defined foreign keys.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis>Physical Storage</emphasis> — This involves
+ everything from the overall page size for tables and indexes
+ as well as the format used for storing data to physical
+ disk.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis>Index Support</emphasis> — Different
+ application scenarios tend to benefit from different index
+ strategies. Each storage engine generally has its own
+ indexing methods, although some (such as B-tree indexes) are
+ common to nearly all engines.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis>Memory Caches</emphasis> — Different
+ applications respond better to some memory caching
+ strategies than others, so although some memory caches are
+ common to all storage engines (such as those used for user
+ connections or MySQL's high-speed Query Cache), others are
+ uniquely defined only when a particular storage engine is
+ put in play.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis>Performance Aids</emphasis> — This includes
+ multiple I/O threads for parallel operations, thread
+ concurrency, database checkpointing, bulk insert handling,
+ and more.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis>Miscellaneous Target Features</emphasis> —
+ This may include support for geospatial operations, security
+ restrictions for certain data manipulation operations, and
+ other similar features.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Each set of the pluggable storage engine infrastructure
+ components are designed to offer a selective set of benefits for
+ a particular application. Conversely, avoiding a set of
+ component features helps reduce unnecessary overhead. It stands
+ to reason that understanding a particular application's set of
+ requirements and selecting the proper MySQL storage engine can
+ have a dramatic impact on overall system efficiency and
+ performance.
+ </para>
+
+ </section>
+
+ <section id="pluggable-storage">
+
+ <title>Pluggable Storage Engine Architecture</title>
+
+ <para>
+ With MySQL 5.1, MySQL AB has introduced a new pluggable storage
+ engine architecture that allows storage engines to be loaded
+ into and unloaded from a running MySQL server.
+ </para>
+
+ <para>
+ <emphasis role="bold">Plugging in a Storage Engine</emphasis>
+ </para>
+
+ <para>
+ Before a storage engine can be used, the storage engine plugin
+ shared library must be loaded into MySQL using the
+ <literal>INSTALL PLUGIN</literal> statement. For example, if the
+ <literal>EXAMPLE</literal> engine plugin is named
+ <literal>ha_example</literal> and the shared library is named
+ <filename>ha_example.so</filename>, you load it with the
+ following statement:
+ </para>
+
+<programlisting>
+mysql> INSTALL PLUGIN ha_example SONAME 'ha_example.so';
+</programlisting>
+
+ <para>
+ To install a pluggable storage engine, the plugin file must be
+ located in the MySQL plugin directory, and the user issuing the
+ <literal>INSTALL PLUGIN</literal> statement must have
+ <literal>INSERT</literal> privileges for the
+ <literal>mysql.plugin</literal> table.
+ </para>
+
+ <para>
+ The shared library must be located in the MySQL server plugin
+ directory, the location of which is given by the
+ <literal>plugin_dir</literal> system variable.
+ </para>
+
+ <para>
+ <emphasis role="bold">Unplugging a Storage Engine</emphasis>
+ </para>
+
+ <para>
+ To unplug a storage engine, use the <literal>UNINSTALL
+ PLUGIN</literal> statement:
+ </para>
+
+<programlisting>
+mysql> UNINSTALL PLUGIN ha_example;
+</programlisting>
+
+ <para>
+ If you unplug a storage engine that is needed by existing
+ tables, those tables become inaccessible, but will still be
+ present on disk (where applicable). Ensure that there are no
+ tables using a storage engine before you unplug the storage
+ engine.
+ </para>
+
+ </section>
+
+ </section>
+
+ <section id="storage-engine-overview">
+
+ <title>Supported Storage Engines</title>
+
+ <para>
+ MySQL 5.1 supports the following storage engines:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <link linkend="myisam-storage-engine"><literal>MyISAM</literal></link>
+ — The default MySQL storage engine and the one that is
+ used the most in Web, data warehousing, and other application
+ environments. <literal>MyISAM</literal> is supported in all
+ MySQL configurations, and is the default storage engine unless
+ you have configured MySQL to use a different one by default.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <link linkend="innodb"><literal>InnoDB</literal></link>
+ — Used for transaction processing applications, and
+ sports a number of features including ACID transaction support
+ and foreign keys. <literal>InnoDB</literal> is included by
+ default in all MySQL ¤t-series; binary distributions. In
+ source distributions, you can enable or disable either engine
+ by configuring MySQL as you like.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <link linkend="memory-storage-engine"><literal>Memory</literal></link>
+ — Stores all data in RAM for extremely fast access in
+ environments that require quick lookups of reference and other
+ like data. This engine was formerly known as the
+ <literal>HEAP</literal> engine.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <link linkend="merge-storage-engine"><literal>Merge</literal></link>
+ — Allows a MySQL DBA or developer to logically group a
+ series of identical <literal>MyISAM</literal> tables and
+ reference them as one object. Good for VLDB environments such
+ as data warehousing.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <link linkend="archive-storage-engine"><literal>Archive</literal></link>
+ — Provides the perfect solution for storing and
+ retrieving large amounts of seldom-referenced historical,
+ archived, or security audit information.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <link linkend="federated-storage-engine"><literal>Federated</literal></link>
+ — Offers the ability to link separate MySQL servers to
+ create one logical database from many physical servers. Very
+ good for distributed or data mart environments.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <link linkend="mysql-cluster"><literal>NDB</literal></link>
+ — The Clustered database engine that is particularly
+ suited for applications with high performance lookup needs
+ that also require the highest possible degree of uptime and
+ availability.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <link linkend="csv-storage-engine"><literal>CSV</literal></link>
+ — The CSV storage engine stores data in text files using
+ comma-separated values format. You can use the CSV engine to
+ easily exchange data between other software and applications
+ that can import and export in CSV format.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <link linkend="blackhole-storage-engine"><literal>Blackhole</literal></link>
+ — The Blackhole storage engine accepts but does not
+ store data and retrievals always return an empty set. The
+ functionality can be used in distributed database design where
+ data is automatically replicated, but not stored locally.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <link linkend="example-storage-engine"><literal>Example</literal></link>
+ — The Example storage engine is <quote>stub</quote>
+ engine that does nothing. You can create tables with this
+ engine, but no data can be stored in them or retrieved from
+ them. The purpose of this engine is to serve as an example in
+ the MySQL source code that illustrates how to begin writing
+ new storage engines. As such, it is primarily of interest to
+ developers.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ This chapter describes each of the MySQL storage engines except
+ for <literal>NDB Cluster</literal>, which is covered in
+ <xref linkend="mysql-cluster"/>.
+ </para>
+
+ <para>
+ It is important to remember that you are not restricted to using
+ the same storage engine for an entire server or schema: you can
+ use a different storage engine for each table in your schema.
+ </para>
+
+ <section id="storage-engine-choosing">
+
+ <title>Choosing a Storage Engine</title>
+
+ <para>
+ The various storage engines provided with MySQL are designed
+ with different use-cases in mind. To use the pluggable storage
+ architecture effectively, it is good to have an idea of the
+ benefits and drawbacks of the various storage engines. The
+ following table provides an overview of some storage engines
+ provided with MySQL:
+ </para>
+
+ <informaltable>
+ <tgroup cols="6">
+ <colspec colwidth="18*"/>
+ <colspec colwidth="12*"/>
+ <colspec colwidth="12*"/>
+ <colspec colwidth="12*"/>
+ <colspec colwidth="12*"/>
+ <colspec colwidth="12*"/>
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Feature</emphasis></entry>
+ <entry><emphasis role="bold">MyISAM</emphasis></entry>
+ <entry><emphasis role="bold">Memory</emphasis></entry>
+ <entry><emphasis role="bold">InnoDB</emphasis></entry>
+ <entry><emphasis role="bold">Archive</emphasis></entry>
+ <entry><emphasis role="bold">NDB</emphasis></entry>
+ </row>
+ <row>
+ <entry>Storage limits</entry>
+ <entry>256TB</entry>
+ <entry>Yes</entry>
+ <entry>64TB</entry>
+ <entry>No</entry>
+ <entry>384EB
+
+ <footnote>
+
+ <para>
+ EB = exabyte (1024 * 1024 terabyte)
+ </para>
+
+ </footnote></entry>
+ </row>
+ <row>
+ <entry>Transactions</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ </row>
+ <row>
+ <entry>Locking granularity</entry>
+ <entry>Table</entry>
+ <entry>Table</entry>
+ <entry>Row</entry>
+ <entry>Row</entry>
+ <entry>Row</entry>
+ </row>
+ <row>
+ <entry>MVCC (snapshot read)</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ </row>
+ <row>
+ <entry>Geospatial datatype support</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ </row>
+ <row>
+ <entry>Geospatial indexing support</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ </row>
+ <row>
+ <entry>B-tree indexes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ </row>
+ <row>
+ <entry>Hash indexes</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ </row>
+ <row>
+ <entry>Full-text search indexes</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ </row>
+ <row>
+ <entry>Clustered indexes</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ </row>
+ <row>
+ <entry>Data caches</entry>
+ <entry>No</entry>
+ <entry>N/A</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ </row>
+ <row>
+ <entry>Index caches</entry>
+ <entry>Yes</entry>
+ <entry>N/A</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ </row>
+ <row>
+ <entry>Compressed data</entry>
+ <entry>Yes
+
+ <footnote>
+
+ <para>
+ Compressed MyISAM tables are only supported when
+ using the compressed row format. Tables using the
+ compressed row format with MyISAM are read only.
+ </para>
+
+ </footnote></entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ </row>
+ <row>
+ <entry>Encrypted data
+
+ <footnote>
+
+ <para>
+ Implemented in the server (via encryption
+ functions), rather than in the storage engine.
+ </para>
+
+ </footnote></entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ </row>
+ <row>
+ <entry>Cluster database support</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ </row>
+ <row>
+ <entry>Replication support
+
+ <footnote>
+
+ <para>
+ Implemented in the server, rather than in the
+ storage engine
+ </para>
+
+ </footnote></entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ </row>
+ <row>
+ <entry>Foreign key support</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ <entry>Yes</entry>
+ <entry>No</entry>
+ <entry>No</entry>
+ </row>
+ <row>
+ <entry>Backup / point-in-time recovery
+
+ <footnote>
+
+ <para>
+ Implemented in the server, rather than in the
+ storage engine
+ </para>
+
+ </footnote></entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ </row>
+ <row>
+ <entry>Query cache support</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ </row>
+ <row>
+ <entry>Update statistics for data dictionary</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ <entry>Yes</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ </section>
+
+ <section id="storage-engine-compare-transactions">
+
+ <title>Comparing Transaction and Non-Transaction Engines</title>
+
+ <para>
+ Transaction-safe tables (TSTs) have several advantages over
+ non-transaction-safe tables (NTSTs):
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ They are safer. Even if MySQL crashes or you get hardware
+ problems, you can get your data back, either by automatic
+ recovery or from a backup plus the transaction log.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ You can combine many statements and accept them all at the
+ same time with the <literal>COMMIT</literal> statement (if
+ autocommit is disabled).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ You can execute <literal>ROLLBACK</literal> to ignore your
+ changes (if autocommit is disabled).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If an update fails, all of your changes are reverted. (With
+ non-transaction-safe tables, all changes that have taken
+ place are permanent.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Transaction-safe storage engines can provide better
+ concurrency for tables that get many updates concurrently
+ with reads.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ You can combine transaction-safe and non-transaction-safe tables
+ in the same statements to get the best of both worlds. However,
+ although MySQL supports several transaction-safe storage
+ engines, for best results, you should not mix different storage
+ engines within a transaction with autocommit disabled. For
+ example, if you do this, changes to non-transaction-safe tables
+ still are committed immediately and cannot be rolled back. For
+ information about this and other problems that can occur in
+ transactions that use mixed storage engines, see
+ <xref linkend="commit"/>.
+ </para>
+
+ <para>
+ Non-transaction-safe tables have several advantages of their
+ own, all of which occur because there is no transaction
+ overhead:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Much faster
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Lower disk space requirements
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Less memory required to perform updates
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="storage-engines-other">
+
+ <title>Other Storage Engines</title>
+
+ <para>
+ Other storage engines may be available from third parties and
+ community members that have used the Custom Storage Engine
+ interface.
+ </para>
+
+ <para>
+ You can find more information on the list of third party storage
+ engines on the
+ <ulink url="http://forge.mysql.com/projects/search.php?t=tag&k=storage%20engine">MySQL
+ Forge Storage Engines</ulink> page.
+ </para>
+
+ <note>
+ <para>
+ Third party engines are not supported by MySQL. For further
+ information, documentation, installation guides, bug reporting
+ or for any help or assistance with these engines, please
+ contact the developer of the engine directly.
+ </para>
+ </note>
+
+ <para>
+ Third party engines that are known to be available include the
+ following; please see the MySQL Forge links provided for more
+ information:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold"><ulink url="http://forge.mysql.com/projects/view.php?id=43">PrimeBase
+ XT (PBXT)</ulink></emphasis> — PBXT has been designed
+ for modern, web-based, high concurrency environments.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold"><ulink url="http://forge.mysql.com/projects/view.php?id=82">RitmarkFS</ulink></emphasis>
+ — RitmarkFS allows you to access and manipulate the
+ filesystem using SQL queries. RitmarkFS also supports
+ filesystem replication and directory change tracking.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold"><ulink url="http://forge.mysql.com/projects/view.php?id=91">Distributed
+ Data Engine</ulink></emphasis> — The Distributed Data
+ Engine is an Open Source project that is dedicated to
+ provide a Storage Engine for distributed data according to
+ workload statistics.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold"><ulink url="http://forge.mysql.com/projects/view.php?id=98">mdbtools</ulink></emphasis>
+ — A pluggable storage engine that allows read-only
+ access to Microsoft Access <filename>.mdb</filename>
+ database files.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold"><ulink url="http://forge.mysql.com/projects/view.php?id=139">solidDB
+ for MySQL</ulink></emphasis> — solidDB Storage Engine
+ for MySQL is an open source, transactional storage engine
+ for MySQL Server. It is designed for mission-critical
+ implementations that require a robust, transactional
+ database. solidDB Storage Engine for MySQL is a
+ multi-threaded storage engine that supports full ACID
+ compliance with all expected transaction isolation levels,
+ row-level locking, and Multi-Version Concurrency Control
+ (MVCC) with non-blocking reads and writes.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For more information on developing a customer storage engine
+ that can be used with the Pluggable Storage Engine Architecture,
+ see
+ <ulink url="http://forge.mysql.com/wiki/MySQL_Internals_Custom_Engine">Writing
+ a Custom Storage Engine</ulink> on
+ <ulink url="http://forge.mysql.com/wiki">MySQL Forge</ulink>.
+ </para>
+
+ </section>
+
+ </section>
+
+ <section id="storage-engine-setting">
+
+ <title>Setting the Storage Engine</title>
+
+ <para>
+ When you create a new table, you can specify which storage engine
+ to use by adding an <literal>ENGINE</literal> table option to the
+ <literal>CREATE TABLE</literal> statement:
+ </para>
+
+<programlisting>CREATE TABLE t (i INT) ENGINE = INNODB;</programlisting>
+
+ <para>
+ If you omit the <literal>ENGINE</literal> or
+ <literal>TYPE</literal> option, the default storage engine is
+ used. Normally, this is <literal>MyISAM</literal>, but you can
+ change it by using the <option>--default-storage-engine</option>
+ or <option>--default-table-type</option> server startup option, or
+ by setting the <literal>default-storage-engine</literal> or
+ <literal>default-table-type</literal> option in the
+ <filename>my.cnf</filename> configuration file.
+ </para>
+
+ <para>
+ You can set the default storage engine to be used during the
+ current session by setting the <literal>storage_engine</literal>
+ variable:
+ </para>
+
+<programlisting>
+SET storage_engine=MYISAM;
+</programlisting>
+
+ <para>
+ When MySQL is installed on Windows using the MySQL Configuration
+ Wizard, the <literal>InnoDB</literal> storage engine can be
+ selected as the default instead of <literal>MyISAM</literal>. See
+ <xref linkend="mysql-config-wizard-database-usage"/>.
+ </para>
+
+ <para>
+ To convert a table from one storage engine to another, use an
+ <literal>ALTER TABLE</literal> statement that indicates the new
+ engine:
+ </para>
+
+<programlisting>
+ALTER TABLE t ENGINE = MYISAM;
+</programlisting>
+
+ <para>
+ See <xref linkend="create-table"/>, and
+ <xref linkend="alter-table"/>.
+ </para>
+
+ <remark>
+ We should consider removing this or making a new section 'What
+ happens when a table is created'. Currently it seems a bit out of
+ place and not that helpful.
+ </remark>
+
+ <para>
+ If you try to use a storage engine that is not compiled in or that
+ is compiled in but deactivated, MySQL instead creates a table
+ using the default storage engine, usually
+ <literal>MyISAM</literal>. This behavior is convenient when you
+ want to copy tables between MySQL servers that support different
+ storage engines. (For example, in a replication setup, perhaps
+ your master server supports transactional storage engines for
+ increased safety, but the slave servers use only non-transactional
+ storage engines for greater speed.)
+ </para>
+
+ <para>
+ This automatic substitution of the default storage engine for
+ unavailable engines can be confusing for new MySQL users. A
+ warning is generated whenever a storage engine is automatically
+ changed.
+ </para>
+
+ <para>
+ For new tables, MySQL always creates an <filename>.frm</filename>
+ file to hold the table and column definitions. The table's index
+ and data may be stored in one or more other files, depending on
+ the storage engine. The server creates the
+ <filename>.frm</filename> file above the storage engine level.
+ Individual storage engines create any additional files required
+ for the tables that they manage. If a table name contains special
+ characters, the names for the table files contain encoded versions
+ of those characters as described in
+ <xref linkend="identifier-mapping"/>.
+ </para>
+
+ <para>
+ A database may contain tables of different types. That is, tables
+ need not all be created with the same storage engine.
+ </para>
+
+ </section>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/dynxml-local-se-myisam.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="se-maria.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/dynxml-local-se-innodb.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/se-merge.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/se-memory.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/se-example.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/se-federated.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/se-archive.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/se-csv.xml"/>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../refman-5.1/se-blackhole.xml"/>
+
+</chapter>
Added: trunk/refman-5.1-maria/versions.ent
===================================================================
--- trunk/refman-5.1-maria/versions.ent (rev 0)
+++ trunk/refman-5.1-maria/versions.ent 2008-01-30 15:00:40 UTC (rev 9664)
Changed blocks: 1, Lines Added: 11, Lines Deleted: 0; 933 bytes
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file contains only entities for which the value varies per
+ version of the manual.
+-->
+<!ENTITY title-refman-previous "MySQL 5.0 Reference Manual"><!-- Title of Manual previous edition -->
+<!ENTITY current-series "5.1"><!-- Current MySQL release series -->
+<!ENTITY previous-series "5.0"><!-- Previous MySQL release series -->
+<!ENTITY next-series "6.0"><!-- Next MySQL release series -->
+<!ENTITY current-version "5.1.23-rc"><!-- Current MySQL version - update with new releases -->
+<!ENTITY current-maturity "release candidate"><!-- Current maturity level: alpha, beta, release candidate, production -->
| Thread |
|---|
| • svn commit - mysqldoc@docsrva: r9664 - in trunk: . refman-5.1-maria | mcbrown | 30 Jan |