texinfo syntax cleanup. 4.1 protocol sections are still too broken for this file to be compiled :(
This commit is contained in:
parent
d367d5ddb8
commit
a4aaac02f3
@ -51,6 +51,7 @@ This is a manual about @strong{MySQL} internals.
|
|||||||
|
|
||||||
@menu
|
@menu
|
||||||
* caching:: How MySQL Handles Caching
|
* caching:: How MySQL Handles Caching
|
||||||
|
* join_buffer_size::
|
||||||
* flush tables:: How MySQL Handles @code{FLUSH TABLES}
|
* flush tables:: How MySQL Handles @code{FLUSH TABLES}
|
||||||
* filesort:: How MySQL Does Sorting (@code{filesort})
|
* filesort:: How MySQL Does Sorting (@code{filesort})
|
||||||
* coding guidelines:: Coding Guidelines
|
* coding guidelines:: Coding Guidelines
|
||||||
@ -61,12 +62,12 @@ This is a manual about @strong{MySQL} internals.
|
|||||||
* MyISAM Record Structure:: MyISAM Record Structure
|
* MyISAM Record Structure:: MyISAM Record Structure
|
||||||
* InnoDB Record Structure:: InnoDB Record Structure
|
* InnoDB Record Structure:: InnoDB Record Structure
|
||||||
* InnoDB Page Structure:: InnoDB Page Structure
|
* InnoDB Page Structure:: InnoDB Page Structure
|
||||||
* Annotated List Of Files in the MySQL Source Code Distribution:: MySQL Source
|
* Files in MySQL Sources:: Annotated List Of Files in the MySQL Source Code Distribution
|
||||||
* Annotated List Of Files in the InnoDB Source Code Distribution:: InnoDB Source
|
* Files in InnoDB Sources:: Annotated List Of Files in the InnoDB Source Code Distribution
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
|
||||||
@node caching, flush tables, Top, Top
|
@node caching, join_buffer_size, Top, Top
|
||||||
@chapter How MySQL Handles Caching
|
@chapter How MySQL Handles Caching
|
||||||
|
|
||||||
@strong{MySQL} has the following caches:
|
@strong{MySQL} has the following caches:
|
||||||
@ -109,7 +110,7 @@ use many join caches in the worst case.
|
|||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node join_buffer_size, flush tables, caching, Top
|
@node join_buffer_size, flush tables, caching, Top
|
||||||
@subchapter How MySQL uses the join_buffer cache
|
@chapter How MySQL uses the join_buffer cache
|
||||||
|
|
||||||
Basic information about @code{join_buffer_size}:
|
Basic information about @code{join_buffer_size}:
|
||||||
|
|
||||||
@ -180,7 +181,7 @@ same algorithm described above to handle it. (In other words, we store
|
|||||||
the same row combination several times into different buffers)
|
the same row combination several times into different buffers)
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node flush tables, filesort, caching, Top
|
@node flush tables, filesort, join_buffer_size, Top
|
||||||
@chapter How MySQL Handles @code{FLUSH TABLES}
|
@chapter How MySQL Handles @code{FLUSH TABLES}
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@ -1655,8 +1656,8 @@ fe 00 . .
|
|||||||
|
|
||||||
@c @printindex fn
|
@c @printindex fn
|
||||||
|
|
||||||
@node 4.1 protocol,,,
|
@c @node 4.1 protocol,,,
|
||||||
@subchapter MySQL 4.1 protocol
|
@c @chapter MySQL 4.1 protocol
|
||||||
|
|
||||||
@node 4.1 protocol changes,,,
|
@node 4.1 protocol changes,,,
|
||||||
@section Changes to 4.0 protocol in 4.1
|
@section Changes to 4.0 protocol in 4.1
|
||||||
@ -1699,7 +1700,7 @@ results will sent as binary (low-byte-first).
|
|||||||
The field description packet is sent as a response to a query that
|
The field description packet is sent as a response to a query that
|
||||||
contains a result set. It can be distinguished from a ok packet by
|
contains a result set. It can be distinguished from a ok packet by
|
||||||
the fact that the first byte can't be 0 for a field packet.
|
the fact that the first byte can't be 0 for a field packet.
|
||||||
@xref {4.1 ok packet}.
|
@xref{4.1 ok packet}.
|
||||||
|
|
||||||
The header packet has the following structure:
|
The header packet has the following structure:
|
||||||
|
|
||||||
@ -1825,7 +1826,7 @@ parameter in the query:
|
|||||||
@item 2 @tab 2 byte column flags (NOT_NULL_FLAG etc)
|
@item 2 @tab 2 byte column flags (NOT_NULL_FLAG etc)
|
||||||
@item 1 @tab Number of decimals
|
@item 1 @tab Number of decimals
|
||||||
@item 4 @tab Max column length.
|
@item 4 @tab Max column length.
|
||||||
@end itemize
|
@end multitable
|
||||||
|
|
||||||
Note that the above is not yet in 4.1 but will be added this month.
|
Note that the above is not yet in 4.1 but will be added this month.
|
||||||
|
|
||||||
@ -1834,7 +1835,7 @@ able to provide the optimal information for all parameters.
|
|||||||
|
|
||||||
If number of columns, in the header packet, is not 0 then the
|
If number of columns, in the header packet, is not 0 then the
|
||||||
prepared statement will contain a result set. In this case the packet
|
prepared statement will contain a result set. In this case the packet
|
||||||
is followed by a field description result set. @xref{4.1 field descr}.
|
is followed by a field description result set. @xref{4.1 field desc}.
|
||||||
|
|
||||||
|
|
||||||
@node 4.1 long data,,,
|
@node 4.1 long data,,,
|
||||||
@ -1858,7 +1859,7 @@ This packet is sent from client -> server:
|
|||||||
@item 2 @tab Parameter number
|
@item 2 @tab Parameter number
|
||||||
@item 2 @tab Type of parameter (not used at this point)
|
@item 2 @tab Type of parameter (not used at this point)
|
||||||
@item # @tab data (Rest of packet)
|
@item # @tab data (Rest of packet)
|
||||||
@end itemize
|
@end multitable
|
||||||
|
|
||||||
The server will NOT send an @code{ok} or @code{error} packet in
|
The server will NOT send an @code{ok} or @code{error} packet in
|
||||||
responce for this. If there is any errors (like to big string), one
|
responce for this. If there is any errors (like to big string), one
|
||||||
@ -1880,7 +1881,7 @@ execute or if one has rebound the parameters.
|
|||||||
@item 2*param_count @tab Type of parameters (only given if new_parameter_bound flag is 1)
|
@item 2*param_count @tab Type of parameters (only given if new_parameter_bound flag is 1)
|
||||||
@item # @tab Parameter data, repeated for each parameter that are
|
@item # @tab Parameter data, repeated for each parameter that are
|
||||||
NOT NULL and not used with mysql_send_long_data().
|
NOT NULL and not used with mysql_send_long_data().
|
||||||
@end itemize
|
@end multitable
|
||||||
|
|
||||||
The null-bit-map is for all parameters (including parameters sent with
|
The null-bit-map is for all parameters (including parameters sent with
|
||||||
'mysql_send_long_data). If parameter 0 is NULL, then bit 0 in the
|
'mysql_send_long_data). If parameter 0 is NULL, then bit 0 in the
|
||||||
@ -1938,7 +1939,7 @@ DATETIME, DATE and TIME are sent to the server in a binary format as follows:
|
|||||||
The first byte is a length byte and then comes all parameters that are
|
The first byte is a length byte and then comes all parameters that are
|
||||||
not 0. (Always counted from the beginning).
|
not 0. (Always counted from the beginning).
|
||||||
|
|
||||||
@node Fulltext Search, , protocol, Top
|
@node Fulltext Search, MyISAM Record Structure, protocol, Top
|
||||||
@chapter Fulltext Search in MySQL
|
@chapter Fulltext Search in MySQL
|
||||||
|
|
||||||
Hopefully, sometime there will be complete description of
|
Hopefully, sometime there will be complete description of
|
||||||
@ -1981,6 +1982,7 @@ higher weights to individual B's. Also the first expression in
|
|||||||
much simplier. So it is the first one, that is implemented in MySQL.
|
much simplier. So it is the first one, that is implemented in MySQL.
|
||||||
|
|
||||||
|
|
||||||
|
@node MyISAM Record Structure, InnoDB Record Structure, Fulltext Search, Top
|
||||||
@chapter MyISAM Record Structure
|
@chapter MyISAM Record Structure
|
||||||
|
|
||||||
@section Introduction
|
@section Introduction
|
||||||
@ -2365,6 +2367,7 @@ Most of the formatting work for MyISAM columns is visible
|
|||||||
in the program /sql/field.cc in the source code directory.
|
in the program /sql/field.cc in the source code directory.
|
||||||
@*
|
@*
|
||||||
|
|
||||||
|
@node InnoDB Record Structure,InnoDB Page Structure,MyISAM Record Structure,Top
|
||||||
@chapter InnoDB Record Structure
|
@chapter InnoDB Record Structure
|
||||||
|
|
||||||
This page contains:
|
This page contains:
|
||||||
@ -2516,7 +2519,7 @@ Bytes is 1byte_offs_flag -- you need to know if 1byte_offs_flag is 1
|
|||||||
@*
|
@*
|
||||||
|
|
||||||
Given a pointer to the Origin, InnoDB finds the start of the record as follows:
|
Given a pointer to the Origin, InnoDB finds the start of the record as follows:
|
||||||
@enumerate @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
Let X = n_fields (the number of fields is by definition equal to the
|
Let X = n_fields (the number of fields is by definition equal to the
|
||||||
number of entries in the Field Start Offsets Table).
|
number of entries in the Field Start Offsets Table).
|
||||||
@ -2527,7 +2530,7 @@ two bytes for each entry instead of just one.
|
|||||||
Let X = X + 6, because the fixed size of Extra Bytes is 6.
|
Let X = X + 6, because the fixed size of Extra Bytes is 6.
|
||||||
@item
|
@item
|
||||||
The start of the record is at (pointer value minus X).
|
The start of the record is at (pointer value minus X).
|
||||||
@end enumerate
|
@end itemize
|
||||||
|
|
||||||
@subsection FIELD CONTENTS
|
@subsection FIELD CONTENTS
|
||||||
|
|
||||||
@ -2540,7 +2543,7 @@ at the end of a record.
|
|||||||
@*
|
@*
|
||||||
|
|
||||||
Here's an example.
|
Here's an example.
|
||||||
@enumerate @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
I made a table with this definition:
|
I made a table with this definition:
|
||||||
@*@*
|
@*@*
|
||||||
@ -2575,7 +2578,7 @@ I put some rows in the table. My last three INSERTs were:
|
|||||||
I ran Borland's TDUMP to get a hexadecimal dump of
|
I ran Borland's TDUMP to get a hexadecimal dump of
|
||||||
the contents of \mysql\data\ibdata1, which (in my case) is the
|
the contents of \mysql\data\ibdata1, which (in my case) is the
|
||||||
MySQL/InnoDB data file (on Windows).
|
MySQL/InnoDB data file (on Windows).
|
||||||
@end enumerate
|
@end itemize
|
||||||
|
|
||||||
Here is an extract of the dump:
|
Here is an extract of the dump:
|
||||||
|
|
||||||
@ -2670,6 +2673,7 @@ shorter because the NULLs take no space.
|
|||||||
The most relevant InnoDB source-code files are rem0rec.c, rem0rec.ic,
|
The most relevant InnoDB source-code files are rem0rec.c, rem0rec.ic,
|
||||||
and rem0rec.h in the rem ("Record Manager") directory.
|
and rem0rec.h in the rem ("Record Manager") directory.
|
||||||
|
|
||||||
|
@node InnoDB Page Structure,Files in MySQL Sources,InnoDB Record Structure,Top
|
||||||
@chapter InnoDB Page Structure
|
@chapter InnoDB Page Structure
|
||||||
|
|
||||||
InnoDB stores all records inside a fixed-size unit which is commonly called a
|
InnoDB stores all records inside a fixed-size unit which is commonly called a
|
||||||
@ -2751,6 +2755,7 @@ The Fil Header has eight parts, as follows:
|
|||||||
@tab the latest archived log file number at the time that FIL_PAGE_FILE_FLUSH_LSN was written (in the log)
|
@tab the latest archived log file number at the time that FIL_PAGE_FILE_FLUSH_LSN was written (in the log)
|
||||||
@end multitable
|
@end multitable
|
||||||
|
|
||||||
|
@itemize
|
||||||
@item
|
@item
|
||||||
FIL_PAGE_SPACE is a necessary identifier because different pages might belong to
|
FIL_PAGE_SPACE is a necessary identifier because different pages might belong to
|
||||||
different (table) spaces within the same file. The word
|
different (table) spaces within the same file. The word
|
||||||
@ -2796,6 +2801,7 @@ Work With MySQL And InnoDB" on devarticles.com.
|
|||||||
@item
|
@item
|
||||||
FIL_PAGE_FILE_FLUSH_LSN and FIL_PAGE_ARCH_LOG_NO are only valid for
|
FIL_PAGE_FILE_FLUSH_LSN and FIL_PAGE_ARCH_LOG_NO are only valid for
|
||||||
the first page of a data file.
|
the first page of a data file.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
@subsection Page Header
|
@subsection Page Header
|
||||||
|
|
||||||
@ -3098,6 +3104,7 @@ header.
|
|||||||
The most relevant InnoDB source-code files are page0page.c,
|
The most relevant InnoDB source-code files are page0page.c,
|
||||||
page0page.ic, and page0page.h in \page directory.
|
page0page.ic, and page0page.h in \page directory.
|
||||||
|
|
||||||
|
@node Files in MySQL Sources,Files in InnoDB Sources,InnoDB Page Structure,Top
|
||||||
@chapter Annotated List Of Files in the MySQL Source Code Distribution
|
@chapter Annotated List Of Files in the MySQL Source Code Distribution
|
||||||
|
|
||||||
This is a description of the files that you get when you download the
|
This is a description of the files that you get when you download the
|
||||||
@ -3153,7 +3160,8 @@ libmysqld -- The MySQL Library
|
|||||||
man -- Manual pages
|
man -- Manual pages
|
||||||
@item
|
@item
|
||||||
merge -- The MERGE table handler (see Reference Manual section 7.2)
|
merge -- The MERGE table handler (see Reference Manual section 7.2)
|
||||||
* myisam -- The MyISAM table handler
|
@item
|
||||||
|
myisam -- The MyISAM table handler
|
||||||
@item
|
@item
|
||||||
myisammrg -- The MyISAM Merge table handler
|
myisammrg -- The MyISAM Merge table handler
|
||||||
@item
|
@item
|
||||||
@ -3269,6 +3277,7 @@ server.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The C program files in the directory are:
|
The C program files in the directory are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
connect_test.c -- test that a connect is possible
|
connect_test.c -- test that a connect is possible
|
||||||
@item
|
@item
|
||||||
@ -3306,6 +3315,7 @@ showdb_test.c -- test that a show-databases is possible
|
|||||||
ssl_test.c -- test that SSL is possible
|
ssl_test.c -- test that SSL is possible
|
||||||
@item
|
@item
|
||||||
thread_test.c -- test that threading is possible
|
thread_test.c -- test that threading is possible
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection cmd-line-utils
|
@subsection cmd-line-utils
|
||||||
@ -3330,6 +3340,7 @@ Software Foundation.
|
|||||||
The \libedit (library of edit functions) subdirectory has files
|
The \libedit (library of edit functions) subdirectory has files
|
||||||
written by Christos Zoulas. They are for editing the line contents.
|
written by Christos Zoulas. They are for editing the line contents.
|
||||||
These are the program files in the \libedit subdirectory:
|
These are the program files in the \libedit subdirectory:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
chared.c -- character editor
|
chared.c -- character editor
|
||||||
@item
|
@item
|
||||||
@ -3372,6 +3383,7 @@ tokenizer.c -- Bourne shell line tokenizer
|
|||||||
tty.c -- for a tty interface
|
tty.c -- for a tty interface
|
||||||
@item
|
@item
|
||||||
vi.c -- commands used when in the vi (editor) mode
|
vi.c -- commands used when in the vi (editor) mode
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection dbug
|
@subsection dbug
|
||||||
@ -3394,6 +3406,7 @@ Features of the dbug library include profiling and state pushing.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The C programs in this directory are:
|
The C programs in this directory are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
dbug.c -- The main module
|
dbug.c -- The main module
|
||||||
@item
|
@item
|
||||||
@ -3410,6 +3423,7 @@ factorial.c -- A tiny example
|
|||||||
main.c -- A tiny example
|
main.c -- A tiny example
|
||||||
@item
|
@item
|
||||||
sanity.c -- Declaration of a variable
|
sanity.c -- Declaration of a variable
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection div
|
@subsection div
|
||||||
@ -3432,6 +3446,7 @@ documentation from developers themselves, will be placed here.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
These sub-directories are part of this directory:
|
These sub-directories are part of this directory:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
books -- .gif images and empty .txt files; no real information
|
books -- .gif images and empty .txt files; no real information
|
||||||
@item
|
@item
|
||||||
@ -3449,6 +3464,7 @@ documentation
|
|||||||
to-be-included... -- an empty subdirectory
|
to-be-included... -- an empty subdirectory
|
||||||
@item
|
@item
|
||||||
translations -- some Portuguese myodbc documentation
|
translations -- some Portuguese myodbc documentation
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
In the main directory, you'll find some .txt files related to the
|
In the main directory, you'll find some .txt files related to the
|
||||||
@ -3474,6 +3490,7 @@ These eight programs are all standalone utilities, that is, they have
|
|||||||
a main() function and their main role is to show information that the
|
a main() function and their main role is to show information that the
|
||||||
MySQL server needs or produces. Most are unimportant. They are as
|
MySQL server needs or produces. Most are unimportant. They are as
|
||||||
follows:
|
follows:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
my_print_defaults.c -- print all parameters in a default file
|
my_print_defaults.c -- print all parameters in a default file
|
||||||
@item
|
@item
|
||||||
@ -3488,6 +3505,7 @@ replace.c -- replace strings in text files
|
|||||||
resolve_stack_dump.c -- show symbolic info from a stack dump
|
resolve_stack_dump.c -- show symbolic info from a stack dump
|
||||||
@item
|
@item
|
||||||
resolveip.c -- convert an IP address to a hostname, or vice versa
|
resolveip.c -- convert an IP address to a hostname, or vice versa
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection fs
|
@subsection fs
|
||||||
@ -3512,6 +3530,7 @@ The descriptions imply that this is a development project.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
There are four program files in the directory:
|
There are four program files in the directory:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
database.c -- "emulate filesystem behaviour on top of SQL database"
|
database.c -- "emulate filesystem behaviour on top of SQL database"
|
||||||
@item
|
@item
|
||||||
@ -3587,6 +3606,7 @@ hp_test2.c -- * testing database and storing results
|
|||||||
hp_update.c -- * update an existing row
|
hp_update.c -- * update an existing row
|
||||||
@item
|
@item
|
||||||
hp_write.c -- * insert a new row
|
hp_write.c -- * insert a new row
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
There are fewer files in the heap directory than in the myisam
|
There are fewer files in the heap directory than in the myisam
|
||||||
@ -3638,6 +3658,7 @@ The ISAM table handler.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The C files in this directory are:
|
The C files in this directory are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
_cache.c -- for reading records from a cache
|
_cache.c -- for reading records from a cache
|
||||||
@item
|
@item
|
||||||
@ -3709,6 +3730,7 @@ write.c -- insert a new row
|
|||||||
@item
|
@item
|
||||||
pack_isam.c -- pack isam file (NOTE TO SELF ?? equivalent to
|
pack_isam.c -- pack isam file (NOTE TO SELF ?? equivalent to
|
||||||
\myisam\myisampack.c)
|
\myisam\myisampack.c)
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
Except for one minor C file (pack_isam.c) every program in the ISAM
|
Except for one minor C file (pack_isam.c) every program in the ISAM
|
||||||
@ -3743,6 +3765,7 @@ directory would hold the "server part" files.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The program files on this directory are:
|
The program files on this directory are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
conf_to_src.c -- has to do with charsets
|
conf_to_src.c -- has to do with charsets
|
||||||
@item
|
@item
|
||||||
@ -3755,6 +3778,7 @@ get_password.c -- get password
|
|||||||
libmysql.c -- the main "packet-sending emulation" program
|
libmysql.c -- the main "packet-sending emulation" program
|
||||||
@item
|
@item
|
||||||
manager.c -- initialize/connect/fetch with MySQL manager
|
manager.c -- initialize/connect/fetch with MySQL manager
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection libmysql_r
|
@subsection libmysql_r
|
||||||
@ -3764,8 +3788,10 @@ The MySQL Library, Part 2.
|
|||||||
|
|
||||||
This is a continuation of the libmysql directory. There is only one
|
This is a continuation of the libmysql directory. There is only one
|
||||||
file here:
|
file here:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
makefile.am
|
makefile.am
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection libmysqld
|
@subsection libmysqld
|
||||||
@ -3775,10 +3801,12 @@ The MySQL library, Part 3.
|
|||||||
|
|
||||||
This is a continuation of the libmysql directory. The program files on
|
This is a continuation of the libmysql directory. The program files on
|
||||||
this directory are:
|
this directory are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
libmysqld.c -- The called side, compare the mysqld.exe source
|
libmysqld.c -- The called side, compare the mysqld.exe source
|
||||||
@item
|
@item
|
||||||
lib_vio.c -- Emulate the vio directory's communication buffer
|
lib_vio.c -- Emulate the vio directory's communication buffer
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection man
|
@subsection man
|
||||||
@ -3805,6 +3833,7 @@ table handlers are all quite similar.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The related directories are:
|
The related directories are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
\isam -- for ISAM
|
\isam -- for ISAM
|
||||||
@item
|
@item
|
||||||
@ -3814,12 +3843,14 @@ The related directories are:
|
|||||||
@item
|
@item
|
||||||
\myisammrg -- for MyISAM MERGE (mostly call functions in \myisam
|
\myisammrg -- for MyISAM MERGE (mostly call functions in \myisam
|
||||||
programs)
|
programs)
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
To avoid duplication, only the \myisam program versions are discussed.
|
To avoid duplication, only the \myisam program versions are discussed.
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The C programs in this (merge) directory are:
|
The C programs in this (merge) directory are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
mrg_close.c -- compare \isam's close.c
|
mrg_close.c -- compare \isam's close.c
|
||||||
@item
|
@item
|
||||||
@ -3844,6 +3875,7 @@ mrg_rsame.c -- "" rsame.c
|
|||||||
mrg_static.c -- "" static.c
|
mrg_static.c -- "" static.c
|
||||||
@item
|
@item
|
||||||
mrg_update.c -- "" update.c
|
mrg_update.c -- "" update.c
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection myisam
|
@subsection myisam
|
||||||
@ -3852,6 +3884,7 @@ The MyISAM table handler.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The C files in this subdirectory come in six main groups:
|
The C files in this subdirectory come in six main groups:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
ft*.c files -- ft stands for "Full Text", code contributed by Sergei
|
ft*.c files -- ft stands for "Full Text", code contributed by Sergei
|
||||||
Golubchik
|
Golubchik
|
||||||
@ -3870,11 +3903,13 @@ Ramil Kalimullin
|
|||||||
@item
|
@item
|
||||||
sort.c -- this is a single file that sorts keys for index-create
|
sort.c -- this is a single file that sorts keys for index-create
|
||||||
purposes
|
purposes
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The "full text" and "rtree" and "spatial" program sets are for special
|
The "full text" and "rtree" and "spatial" program sets are for special
|
||||||
purposes, so this document focuses only on the mi*.c "myisam" C
|
purposes, so this document focuses only on the mi*.c "myisam" C
|
||||||
programs. They are:
|
programs. They are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
mi_cache.c -- for reading records from a cache
|
mi_cache.c -- for reading records from a cache
|
||||||
@item
|
@item
|
||||||
@ -3962,6 +3997,7 @@ mi_unique.c -- functions to check if a row is unique
|
|||||||
mi_update.c -- update an existing row
|
mi_update.c -- update an existing row
|
||||||
@item
|
@item
|
||||||
mi_write.c -- insert a new row
|
mi_write.c -- insert a new row
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection myisammrg
|
@subsection myisammrg
|
||||||
@ -3980,6 +4016,7 @@ myisam function, the myisammrg function returns.
|
|||||||
|
|
||||||
These are the 21 files in the myisammrg directory, with notes about
|
These are the 21 files in the myisammrg directory, with notes about
|
||||||
the myisam functions or programs they're connected with:
|
the myisam functions or programs they're connected with:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
myrg_close.c -- mi_close.c
|
myrg_close.c -- mi_close.c
|
||||||
@item
|
@item
|
||||||
@ -4028,6 +4065,7 @@ myrg_update.c -- mi_update.c / call mi_update function, see
|
|||||||
@item
|
@item
|
||||||
myrg_write.c -- mi_write.c / call mi_write function, see
|
myrg_write.c -- mi_write.c / call mi_write function, see
|
||||||
\myisam\mi_write.c
|
\myisam\mi_write.c
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection mysql-test
|
@subsection mysql-test
|
||||||
@ -4041,6 +4079,7 @@ and how to report errors.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
There are four subdirectories:
|
There are four subdirectories:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
\misc -- contains one minor Perl program
|
\misc -- contains one minor Perl program
|
||||||
@item
|
@item
|
||||||
@ -4050,6 +4089,7 @@ There are four subdirectories:
|
|||||||
\std_data -- contains standard data for input to tests
|
\std_data -- contains standard data for input to tests
|
||||||
@item
|
@item
|
||||||
\t -- contains tests
|
\t -- contains tests
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
There are 186 *.test files in the \t subdirectory. Primarily these are
|
There are 186 *.test files in the \t subdirectory. Primarily these are
|
||||||
@ -4075,6 +4115,7 @@ MySQL system library (Low level routines for file access etc.).
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
There are 115 *.c programs in this directory:
|
There are 115 *.c programs in this directory:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
array.c -- Dynamic array handling
|
array.c -- Dynamic array handling
|
||||||
@item
|
@item
|
||||||
@ -4334,6 +4375,7 @@ writer's lock
|
|||||||
tree.c -- Initialize/search/free binary trees
|
tree.c -- Initialize/search/free binary trees
|
||||||
@item
|
@item
|
||||||
typelib.c -- Determine what type a field has
|
typelib.c -- Determine what type a field has
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
You can find documentation for the main functions in these files
|
You can find documentation for the main functions in these files
|
||||||
@ -4380,9 +4422,11 @@ mysqld_safe.c -- Compare \scripts\mysqld_safe.sh
|
|||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
Perhaps the most important file is:
|
Perhaps the most important file is:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
netware.patch -- NetWare-specific build instructions and switches
|
netware.patch -- NetWare-specific build instructions and switches
|
||||||
(compare \mysql-4.1\ltmain.sh)
|
(compare \mysql-4.1\ltmain.sh)
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
For instructions about basic installation, see "Deployment Guide For
|
For instructions about basic installation, see "Deployment Guide For
|
||||||
@ -4411,6 +4455,7 @@ Alfredsson. There are no .C program files in this directory.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The contents of \os2 are:
|
The contents of \os2 are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
A Readme.Txt file
|
A Readme.Txt file
|
||||||
@item
|
@item
|
||||||
@ -4418,6 +4463,7 @@ An \include subdirectory containing .h files which are for OS/2 only
|
|||||||
@item
|
@item
|
||||||
Files used in the build process (configuration, switches, and one
|
Files used in the build process (configuration, switches, and one
|
||||||
.obj)
|
.obj)
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The README file refers to MySQL version 3.23, which suggests that
|
The README file refers to MySQL version 3.23, which suggests that
|
||||||
@ -4474,6 +4520,7 @@ Test cases for replication.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
There are six short and trivial-looking tests in these subdirectories:
|
There are six short and trivial-looking tests in these subdirectories:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
\test-auto-inc -- Do auto-Increment columns work?
|
\test-auto-inc -- Do auto-Increment columns work?
|
||||||
@item
|
@item
|
||||||
@ -4486,6 +4533,7 @@ There are six short and trivial-looking tests in these subdirectories:
|
|||||||
\test-repl-alter -- Does ALTER TABLE work?
|
\test-repl-alter -- Does ALTER TABLE work?
|
||||||
@item
|
@item
|
||||||
\test-repl-ts -- Does TIMESTAMP column work?
|
\test-repl-ts -- Does TIMESTAMP column work?
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection SCCS
|
@subsection SCCS
|
||||||
@ -4509,6 +4557,7 @@ Linux programmers use it where Windows programmers would use a *.bat
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The *.sh files on this directory are:
|
The *.sh files on this directory are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
fill_help_tables.sh -- Create help-information tables and insert
|
fill_help_tables.sh -- Create help-information tables and insert
|
||||||
@item
|
@item
|
||||||
@ -4556,6 +4605,7 @@ privileges
|
|||||||
mysql_tableinfo.sh -- Puts info re MySQL tables into a MySQL table
|
mysql_tableinfo.sh -- Puts info re MySQL tables into a MySQL table
|
||||||
@item
|
@item
|
||||||
mysql_zap.sh -- Kill processes which match pattern
|
mysql_zap.sh -- Kill processes which match pattern
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection sql
|
@subsection sql
|
||||||
@ -4564,6 +4614,7 @@ Programs for handling SQL commands. The "core" of MySQL.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
These are the .c and .cc files in the sql directory:
|
These are the .c and .cc files in the sql directory:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
cache_manager.cc -- manages a number of blocks
|
cache_manager.cc -- manages a number of blocks
|
||||||
@item
|
@item
|
||||||
@ -4755,8 +4806,8 @@ udf_example.cc -- Example file of user-defined functions
|
|||||||
@item
|
@item
|
||||||
uniques.cc -- Function to handle quick removal of duplicates
|
uniques.cc -- Function to handle quick removal of duplicates
|
||||||
@item
|
@item
|
||||||
unireg.cc -- Create a unireg form file from a FIELD and field-info
|
unireg.cc -- Create a unireg form file from a FIELD and field-info struct
|
||||||
struct
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection sql-bench
|
@subsection sql-bench
|
||||||
@ -4771,6 +4822,7 @@ available all the material necessary to reproduce all the tests.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
There are five subdirectories and sub-subdirectories:
|
There are five subdirectories and sub-subdirectories:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
\Comments -- Comments about results from tests of Access, Adabas,
|
\Comments -- Comments about results from tests of Access, Adabas,
|
||||||
etc.
|
etc.
|
||||||
@ -4783,6 +4835,7 @@ etc.
|
|||||||
\Results -- old test results
|
\Results -- old test results
|
||||||
@item
|
@item
|
||||||
\Results-win32 -- old test results from Windows 32-bit tests
|
\Results-win32 -- old test results from Windows 32-bit tests
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
There are twenty-four *.sh (shell script) files, which involve Perl
|
There are twenty-four *.sh (shell script) files, which involve Perl
|
||||||
@ -4824,6 +4877,7 @@ recent Pentium class processors, though.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The .C files are:
|
The .C files are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
atof.c -- ascii-to-float, MySQL version
|
atof.c -- ascii-to-float, MySQL version
|
||||||
@item
|
@item
|
||||||
@ -4925,6 +4979,7 @@ str_test.c -- test of all the string functions encoded in assembler
|
|||||||
udiv.c -- unsigned long divide
|
udiv.c -- unsigned long divide
|
||||||
@item
|
@item
|
||||||
xml.c -- read and parse XML strings
|
xml.c -- read and parse XML strings
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
There are also four .ASM files -- macros.asm, ptr_cmp.asm,
|
There are also four .ASM files -- macros.asm, ptr_cmp.asm,
|
||||||
@ -4958,8 +5013,10 @@ Tools -- well, actually, one tool.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The only file is:
|
The only file is:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
mysqlmanager.c -- A "server management daemon" by Sasha Pachev
|
mysqlmanager.c -- A "server management daemon" by Sasha Pachev
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection VC++Files
|
@subsection VC++Files
|
||||||
@ -4983,6 +5040,7 @@ Windows environments.
|
|||||||
In addition to the "subdirectories which are duplicates of
|
In addition to the "subdirectories which are duplicates of
|
||||||
directories", VC++Files contains these subdirectories, which are not
|
directories", VC++Files contains these subdirectories, which are not
|
||||||
duplicates:
|
duplicates:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
comp_err -- (nearly empty)
|
comp_err -- (nearly empty)
|
||||||
@item
|
@item
|
||||||
@ -5029,6 +5087,7 @@ thr_insert_test -- (nearly empty)
|
|||||||
thr_test -- one short program used to test for memory-allocation bug
|
thr_test -- one short program used to test for memory-allocation bug
|
||||||
@item
|
@item
|
||||||
winmysqladmin -- the winmysqladmin.exe source. machine-generated?
|
winmysqladmin -- the winmysqladmin.exe source. machine-generated?
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@subsection vio
|
@subsection vio
|
||||||
@ -5048,6 +5107,7 @@ WindowsNT), Shared Memory, and Secure Sockets (SSL).
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The C programs are:
|
The C programs are:
|
||||||
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
test-ssl.c -- Short standalone test program: SSL
|
test-ssl.c -- Short standalone test program: SSL
|
||||||
@item
|
@item
|
||||||
@ -5068,6 +5128,7 @@ viotest.cc -- Short standalone test program: general
|
|||||||
viotest-ssl.c -- Short standalone test program: SSL
|
viotest-ssl.c -- Short standalone test program: SSL
|
||||||
@item
|
@item
|
||||||
viotest-sslconnect.cc -- Short standalone test program: SSL connect
|
viotest-sslconnect.cc -- Short standalone test program: SSL connect
|
||||||
|
@end itemize
|
||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
The older functions -- raw_net_read, raw_net_write -- are now
|
The older functions -- raw_net_read, raw_net_write -- are now
|
||||||
@ -5103,6 +5164,7 @@ The MySQL program that uses zlib is \mysys\my_compress.c. The use is
|
|||||||
for packet compression. The client sends messages to the server which
|
for packet compression. The client sends messages to the server which
|
||||||
are compressed by zlib. See also: \sql\net_serv.cc.
|
are compressed by zlib. See also: \sql\net_serv.cc.
|
||||||
|
|
||||||
|
@node Files in InnoDB Sources,,Files in MySQL Sources,Top
|
||||||
@chapter Annotated List Of Files in the InnoDB Source Code Distribution
|
@chapter Annotated List Of Files in the InnoDB Source Code Distribution
|
||||||
|
|
||||||
ERRATUM BY HEIKKI TUURI (START)
|
ERRATUM BY HEIKKI TUURI (START)
|
||||||
@ -5207,6 +5269,7 @@ Now let's begin.
|
|||||||
@*@*
|
@*@*
|
||||||
|
|
||||||
@example
|
@example
|
||||||
|
|
||||||
@strong{\ha (HASHING)}
|
@strong{\ha (HASHING)}
|
||||||
File Name What Name Stands For Size Comment Inside File
|
File Name What Name Stands For Size Comment Inside File
|
||||||
--------- -------------------- ------ -------------------
|
--------- -------------------- ------ -------------------
|
||||||
@ -5529,6 +5592,7 @@ perhaps because they're not portable enough.
|
|||||||
|
|
||||||
InnoDB's transaction management is supposedly "in the style of Oracle"
|
InnoDB's transaction management is supposedly "in the style of Oracle"
|
||||||
and that's close to true but can mislead you.
|
and that's close to true but can mislead you.
|
||||||
|
@itemize
|
||||||
@item
|
@item
|
||||||
First: InnoDB uses rollback segments like Oracle8i does -- but
|
First: InnoDB uses rollback segments like Oracle8i does -- but
|
||||||
Oracle9i uses a different name
|
Oracle9i uses a different name
|
||||||
@ -5546,6 +5610,7 @@ Finally: InnoDB's documentation says it has to lock "the gaps before
|
|||||||
index keys" to prevent phantoms -- but any Oracle user will tell you that
|
index keys" to prevent phantoms -- but any Oracle user will tell you that
|
||||||
phantoms are impossible anyway at the SERIALIZABLE isolation level, so
|
phantoms are impossible anyway at the SERIALIZABLE isolation level, so
|
||||||
key-locks are unnecessary.
|
key-locks are unnecessary.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
The main idea, though, is that InnoDB has multi-versioning. So does
|
The main idea, though, is that InnoDB has multi-versioning. So does
|
||||||
Oracle. This is very different from the way that DB2 and SQL Server do
|
Oracle. This is very different from the way that DB2 and SQL Server do
|
||||||
@ -5737,7 +5802,7 @@ creation dates were between 1994 and 1998.
|
|||||||
Ryan Bannon, Alvin Chin, Faryaaz Kassam and Andrew Roszko @*
|
Ryan Bannon, Alvin Chin, Faryaaz Kassam and Andrew Roszko @*
|
||||||
"InnoDB Concrete Architecture" @*
|
"InnoDB Concrete Architecture" @*
|
||||||
@url{http://www.swen.uwaterloo.ca/~mrbannon/cs798/assignment_02/innodb.pdf}
|
@url{http://www.swen.uwaterloo.ca/~mrbannon/cs798/assignment_02/innodb.pdf}
|
||||||
@item
|
|
||||||
A student paper. It's an interesting attempt to figure out InnoDB's
|
A student paper. It's an interesting attempt to figure out InnoDB's
|
||||||
architecture using tools, but I didn't end up using it for the specific
|
architecture using tools, but I didn't end up using it for the specific
|
||||||
purposes of this article.
|
purposes of this article.
|
||||||
@ -5752,7 +5817,7 @@ Heikki Tuuri @*
|
|||||||
"InnoDB Engine in MySQL-Max-3.23.54 / MySQL-4.0.9: The Up-to-Date
|
"InnoDB Engine in MySQL-Max-3.23.54 / MySQL-4.0.9: The Up-to-Date
|
||||||
Reference Manual of InnoDB" @*
|
Reference Manual of InnoDB" @*
|
||||||
@url{http://www.innodb.com/ibman.html}
|
@url{http://www.innodb.com/ibman.html}
|
||||||
@item
|
|
||||||
This is the natural starting point for all InnoDB information. Mr
|
This is the natural starting point for all InnoDB information. Mr
|
||||||
Tuuri also appears frequently on MySQL forums.
|
Tuuri also appears frequently on MySQL forums.
|
||||||
@*@*
|
@*@*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user