From 368b7ea42d3d92665d6af4e702c7c38cf09c362d Mon Sep 17 00:00:00 2001 From: Konstantin Osipov <kostja@tarantool.org> Date: Fri, 4 May 2012 22:41:30 +0400 Subject: [PATCH] Apply documentation edits suggested by Peter Gulutzan. Apply documentation edits suggested by Peter Gulutzan. Fix 'relink' target to correctlly build target.db. --- doc/sql.txt | 6 +- doc/user/CMakeLists.txt | 5 +- doc/user/language-reference.xml | 22 +++---- ...red-programs.xml => stored-procedures.xml} | 57 ++++++++++--------- doc/user/target.db | 2 +- 5 files changed, 49 insertions(+), 43 deletions(-) rename doc/user/{stored-programs.xml => stored-procedures.xml} (95%) diff --git a/doc/sql.txt b/doc/sql.txt index ccf121755c..c277f1f8b7 100644 --- a/doc/sql.txt +++ b/doc/sql.txt @@ -1,19 +1,19 @@ ; ; Tarantool SQL parser is implemented entirely on the client side. ; This BNF provides a reference of the supported subset of -; the standard SQL, to which all clients are strongly encouraged +; SQL, to which all clients are strongly encouraged ; to stick. ; ; Convention: UPPERCASE letters are used for terminals and literals. ; Lowercase letters are used for <non-terminals>. SQL is -; case-insensitive, so this convention is present only to imporve +; case-insensitive, so this convention is present only to improve ; legibility of the BNF. <sql> ::= <insert> | <replace> | <update> | <delete> | <select> <insert> ::= INSERT [INTO] <ident> VALUES <value_list> -<insert> ::= REPLACE [INTO] <ident> VALUES <value_list> +<replace> ::= REPLACE [INTO] <ident> VALUES <value_list> <update> ::= UPDATE <ident> SET <update_list> <simple_where> diff --git a/doc/user/CMakeLists.txt b/doc/user/CMakeLists.txt index ee097af2a6..34d1a421ad 100644 --- a/doc/user/CMakeLists.txt +++ b/doc/user/CMakeLists.txt @@ -63,11 +63,10 @@ add_custom_target(pdf COMMAND fop tarantool_user_guide.fo tarantool_user_guide.pdf) add_custom_target(relink + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${XSLTPROC} --nonet --stringparam collect.xref.targets "only" - --xinclude -o ${PATH_USERGUIDE_HTML} - ${CMAKE_SOURCE_DIR}/doc/user/tnt-html.xsl - ${CMAKE_SOURCE_DIR}/doc/user/user.xml) + --xinclude tnt-html.xsl user.xml) # # Java saxon-based documentation generation (misc) diff --git a/doc/user/language-reference.xml b/doc/user/language-reference.xml index 15f719f038..a0c4e1502b 100644 --- a/doc/user/language-reference.xml +++ b/doc/user/language-reference.xml @@ -74,7 +74,7 @@ header, allows simplifying client or proxy I/O. The server response to a request always carries in its header the same request type and id. - The id makes it possible to always match request to a + The id makes it possible to always match a request to a response, even if the latter arrived out of order. </para> <para>Request type defines the format of the payload. @@ -85,11 +85,11 @@ exception, all commands operate on whole tuple(s). </para> <para>Unless implementing a client driver, one needn't - concern him or her self with the complications of the binary + concern oneself with the complications of the binary protocol. <olink targetptr="connectors">Language-specific drivers</olink> provide a friendly way to store domain language data structures in Tarantool, and the command line - client supports a subset of the standard SQL. + client supports a subset of standard SQL. A complete description of both, the binary protocol and the supported SQL, is maintained in annotated Backus-Naur form in the source tree: please see @@ -132,7 +132,7 @@ understands all administrative statements and automatically directs them to the administrative port. The server response to an administrative command, even though - is always in plain text, can be quite complex. + it is always in plain text, can be quite complex. It is encoded using YAML markup to simplify automated parsing. </para> <para>To learn about all supported administrative commands, you @@ -151,8 +151,8 @@ <filename><olink targetptr="snap_dir"/>/<latest-lsn>.snap</filename>. To take a snapshot, Tarantool forks and quickly - <function>munmap(2)</function>s all memory except one that - stores tuples. Since all modern operating systems support + <function>munmap(2)</function>s all memory except memory + where tuples are stored. Since all modern operating systems support virtual memory copy-on-write, this effectively creates a consistent snapshot of all tuples in the child process, which is then written to disk tuple by tuple. Since a @@ -170,7 +170,7 @@ <programlisting>localhost> show info --- info: - version: "1.4.4" + version: "1.4.6" lsn: 843301 ... localhost> save snapshot @@ -258,6 +258,8 @@ info: <emphasis role="tntadmin">show stat</emphasis> </term> <listitem><para> + Show the average number of requests per second, and the total number of requests since startup, + broken down by request type: INSERT or SELECT or UPDATE or DELETE." <programlisting> localhost> show stat --- @@ -301,7 +303,7 @@ statistics: </term> <listitem><para> A pool allocator is used for temporary memory, when - serving client requests. Every fiber has an own + serving client requests. Every fiber has its own pool. Shows the current state of pools of all fibers. </para></listitem> </varlistentry> @@ -334,7 +336,7 @@ statistics: <listitem><para> Execute a chunk of Lua code. This can be used to define, invoke, debug and drop <olink - targetptr="stored-programs">stored programs</olink>, + targetptr="stored-procedures">stored procedures</olink>, inspect server environment, perform automated administrative tasks. </para></listitem> @@ -344,7 +346,7 @@ statistics: </section> -<xi:include href="stored-programs.xml" /> +<xi:include href="stored-procedures.xml" /> </chapter> diff --git a/doc/user/stored-programs.xml b/doc/user/stored-procedures.xml similarity index 95% rename from doc/user/stored-programs.xml rename to doc/user/stored-procedures.xml index fd580c25c1..8c9b32a41f 100644 --- a/doc/user/stored-programs.xml +++ b/doc/user/stored-procedures.xml @@ -5,7 +5,7 @@ <section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" - xml:id="stored-programs"> + xml:id="stored-procedures"> <title>Writing stored procedures in Lua</title> <blockquote> <para> @@ -33,7 +33,7 @@ Found 1 tuple: In the language of the administrative console <olink targetptr="lua-command" /> evaluates an arbitrary Lua chunk. CALL is the SQL standard statement used - to represent CALL command of the binary + to invoke the CALL command of the binary protocol. In the example above, a Lua procedure is first defined using the text protocol of the administrative port, @@ -95,7 +95,7 @@ expirationd.run_task("exprd space 0", 0, is_expired, nil, </para> <para> - There is a single global instance of Lua interpreter, which is + There is a single global instance of the Lua interpreter, which is shared across all connections. Anything prefixed with <code>lua </code> on the administrative console is sent directly to this interpreter. Any change of the interpreter @@ -103,7 +103,7 @@ expirationd.run_task("exprd space 0", 0, is_expired, nil, </para> <para> Each connection, however, is using its own Lua - <emphasis>coroutine</emphasis> — a mechanism, akin to + <emphasis>coroutine</emphasis> — a mechanism akin to Tarantool <emphasis>fibers</emphasis>. A coroutine has an own execution stack and a Lua <emphasis>closure</emphasis> — set of local variables and definitions. @@ -180,7 +180,7 @@ error: 1:15 expected '(' When a function in Lua terminates with an error, the error is sent to the client as <olink targetptr="ER_PROC_LUA" /> return code, with the original error message preserved. - Similarly, an error occurred inside Tarantool (observed on the + Similarly, an error which has occurred inside Tarantool (observed on the client as an error code), when happens during execution of a Lua procedure, produces a genuine Lua error: <programlisting><computeroutput>localhost> lua function f1() error("oops") end @@ -247,7 +247,7 @@ pack: function <para> Process a request passed in as a binary string. This is an entry point into the server request - processor. It allows to insert, update, + processor. It can be used to insert, update, select and delete tuples from within a Lua procedure. </para> <para> @@ -373,8 +373,8 @@ localhost> lua box.select(5, 1, 'firstname', 'lastname') single character of format describes either an operation which needs to take place or operation argument. A format specifier also works as a - placeholder for the number of field, which needs - to be updated, or argument value. + placeholder for the number of a field, which needs + to be updated, or for an argument value. For example: <simplelist> <member><code>+p=p</code> — add a value @@ -419,7 +419,7 @@ localhost> lua box.update(0, 2, '!p', 1, 'Bienvenue tout le monde!') --- - 2: {'Bienvenue tout le monde!', 'Hello world!'} ... -localhost> lua box.update(0, 2, '#p', 2, 'Biennvenue tout le monde!') +localhost> lua box.update(0, 2, '#p', 2, 'Bienvenue tout le monde!') --- - 2: {'Bienvenue tout le monde!'} ... @@ -467,7 +467,7 @@ Call ERROR, Illegal parameters, key is not u32 (ER_ILLEGAL_PARAMS) can change significantly if data is inserted or deleted between two calls to <code>box.select_range()</code>. If <code>key</code> is <code>nil</code> or unspecified, - the selection starts from start of the index. + the selection starts from the start of the index. <bridgehead renderas="sect4">Example</bridgehead> <programlisting>localhost> show configuration --- @@ -535,8 +535,8 @@ localhost> lua box.select_range(4, 1, 2, '1') string, low byte first, </member> <member><code>p</code> — stores the length - of the argument as a 4-byte int, low byte first, - followed by the argument itself: a 4-byte int, low + of the argument as a 4-byte integer, low byte first, + followed by the argument itself: a 4-byte integer, low byte first, for integers, or a binary blob for anything else, </member> @@ -732,8 +732,8 @@ localhost> lua t:slice(1, -1) </term> <listitem><simpara> A container for all defined indexes. An index is a Lua object - of type <code xlink:href="#box.index">box.index</code> which - allows to search tuples and iterate over them in predefined order. + of type <code xlink:href="#box.index">box.index</code> with + methods to search tuples and iterate over them in predefined order. </simpara></listitem> </varlistentry> <varlistentry> @@ -992,18 +992,21 @@ localhost> lua for k,v in i.next, i, nil do print(v) end <variablelist> <title>Package <code>box.fiber</code></title> - <para>Functions in this package allow to create, run and + <para>Functions in this package allow you to create, run and manage existing <emphasis>fibers</emphasis>. </para> <para> A fiber is an independent execution thread implemented using a mechanism of cooperative multitasking. -Each fiber can be running, suspended or dead. -A fiber is created (<code>box.fiber.create()</code>) suspended. -It can be started with <code>box.fiber.resume()</code>, yield -control back to the caller with <code>box.fiber.yield()</code> -end with <code>return</code> or just by reaching the end of -fiber function. + +A fiber has three possible states: running, suspended or dead. +When a fiber is created with <code>box.fiber.create()</code>, +it is suspended. +When a fiber is started with <code>box.fiber.resume()</code>, it is running. +When a fiber's control is yielded back to the caller with +<code>box.fiber.yield()</code>, it is suspended. +When a fiber ends (due to <code>return</code> or by reaching the +end of the fiber function), it is dead. </para> <para> A fiber can also be attached or detached. @@ -1048,15 +1051,17 @@ can be used to cancel runaway Lua procedures. </para> <para> The other potential problem comes from detached -fibers which never get scheduled, because are not subscribed -to any events, or no relevant events occur. Such morphing fibers +fibers which never get scheduled, because they are not subscribed +to any events, or because no relevant events occur. Such morphing fibers can be killed with <code>box.fiber.cancel()</code> at any time, since <code>box.fiber.cancel()</code> sends an asynchronous wakeup event to the fiber, and <code>box.fiber.testcancel()</code> is checked whenever such an event occurs. </para> <para>Like all Lua objects, dead fibers are - garbage collected.</para> + garbage collected: the garbage collector frees pool allocator + memory owned by the fiber, resets all fiber data, and returns + the fiber to the fiber pool.</para> <varlistentry> <term> <emphasis role="lua">box.fiber.id(fiber) </emphasis> @@ -1185,10 +1190,10 @@ logger = cat - >> tarantool.log </para> <section> -<title>Limitation of stored programs</title> +<title>Limitation of stored procedures</title> <para> - There are two limitations in stored program support one should + There are two limitations in stored procedures support one should be aware of: execution atomicity and lack of typing. </para> <bridgehead renderas="sect4">Cooperative multitasking environment</bridgehead> diff --git a/doc/user/target.db b/doc/user/target.db index 6b4e4b8600..dd34c3308b 100644 --- a/doc/user/target.db +++ b/doc/user/target.db @@ -1 +1 @@ -<div element="book" href="#tarantool-user-guide" number="" targetptr="tarantool-user-guide"><ttl>Tarantool/Box User Guide, version 1.4.5-192-g15fcc7c</ttl><xreftext>Tarantool/Box User Guide, version 1.4.5-192-g15fcc7c</xreftext><div element="chapter" href="#idp105552" number="1"><ttl>Preface</ttl><xreftext>Chapter 1, <i>Preface</i></xreftext><div element="section" href="#preface" number="" targetptr="preface"><ttl>Tarantool/Box: an overview</ttl><xreftext>the section called “Tarantool/Box: an overviewâ€</xreftext></div><div element="section" href="#idp200288" number=""><ttl>Conventions</ttl><xreftext>the section called “Conventionsâ€</xreftext></div><div element="section" href="#idp209184" number=""><ttl>Reporting bugs</ttl><xreftext>the section called “Reporting bugsâ€</xreftext></div></div><div element="chapter" href="#idp230640" number="2"><ttl>Getting started</ttl><xreftext>Chapter 2, <i>Getting started</i></xreftext></div><div element="chapter" href="#data-and-persistence" number="3" targetptr="data-and-persistence"><ttl>Data model and data persitence</ttl><xreftext>Chapter 3, <i>Data model and data persitence</i></xreftext><div element="section" href="#idp369840" number=""><ttl>Dynamic data model</ttl><xreftext>the section called “Dynamic data modelâ€</xreftext></div><div element="section" href="#idp403104" number=""><ttl>Data persistence</ttl><xreftext>the section called “Data persistenceâ€</xreftext></div></div><div element="chapter" href="#language-reference" number="4" targetptr="language-reference"><ttl>Language reference</ttl><xreftext>Chapter 4, <i>Language reference</i></xreftext><div element="section" href="#idp671056" number=""><ttl>Data manipulation</ttl><xreftext>the section called “Data manipulationâ€</xreftext><div element="section" href="#idp667120" number=""><ttl>Memcached protocol</ttl><xreftext>the section called “Memcached protocolâ€</xreftext></div></div><div element="section" href="#idp663840" number=""><ttl>Administrative console</ttl><xreftext>the section called “Administrative consoleâ€</xreftext><obj element="term" href="#save-snapshot" number="" targetptr="save-snapshot"><ttl>???TITLE???</ttl><xreftext>SAVE SNAPSHOT</xreftext></obj><obj element="term" href="#reload-configuration" number="" targetptr="reload-configuration"><ttl>???TITLE???</ttl><xreftext>RELOAD CONFIGURATION</xreftext></obj><obj element="term" href="#show-configuration" number="" targetptr="show-configuration"><ttl>???TITLE???</ttl><xreftext>SHOW CONFIGURATION</xreftext></obj><obj element="term" href="#show-info" number="" targetptr="show-info"><ttl>???TITLE???</ttl><xreftext>SHOW INFO</xreftext></obj><obj element="term" href="#show-stat" number="" targetptr="show-stat"><ttl>???TITLE???</ttl><xreftext>SHOW STAT</xreftext></obj><obj element="term" href="#show-slab" number="" targetptr="show-slab"><ttl>???TITLE???</ttl><xreftext>SHOW SLAB</xreftext></obj><obj element="term" href="#show-palloc" number="" targetptr="show-palloc"><ttl>???TITLE???</ttl><xreftext>SHOW PALLOC</xreftext></obj><obj element="term" href="#save-coredump" number="" targetptr="save-coredump"><ttl>???TITLE???</ttl><xreftext>SAVE COREDUMP</xreftext></obj><obj element="term" href="#show-fiber" number="" targetptr="show-fiber"><ttl>???TITLE???</ttl><xreftext>SHOW FIBER</xreftext></obj><obj element="term" href="#lua-command" number="" targetptr="lua-command"><ttl>???TITLE???</ttl><xreftext>LUA ...</xreftext></obj></div><div element="section" href="#stored-programs" number="" targetptr="stored-programs"><ttl>Writing stored procedures in Lua</ttl><xreftext>the section called “Writing stored procedures in Luaâ€</xreftext><obj element="code" href="#box" number="" targetptr="box"><ttl>???TITLE???</ttl><xreftext>box</xreftext></obj><obj element="code" href="#box.tuple" number="" targetptr="box.tuple"><ttl>???TITLE???</ttl><xreftext>box.tuple</xreftext></obj><obj element="code" href="#box.space" number="" targetptr="box.space"><ttl>???TITLE???</ttl><xreftext>box.space</xreftext></obj><obj element="code" href="#box.index" number="" targetptr="box.index"><ttl>???TITLE???</ttl><xreftext>box.index</xreftext></obj><div element="section" href="#idp880560" number=""><ttl>Limitation of stored programs</ttl><xreftext>the section called “Limitation of stored programsâ€</xreftext></div></div></div><div element="chapter" href="#replication" number="5" targetptr="replication"><ttl>Replication</ttl><xreftext>Chapter 5, <i>Replication</i></xreftext><div element="section" href="#idp43280" number=""><ttl>Replication architecture</ttl><xreftext>the section called “Replication architectureâ€</xreftext></div><div element="section" href="#idp28512" number=""><ttl>Setting up the master</ttl><xreftext>the section called “Setting up the masterâ€</xreftext></div><div element="section" href="#idp189504" number=""><ttl>Setting up a replica</ttl><xreftext>the section called “Setting up a replicaâ€</xreftext></div><div element="section" href="#idp297472" number=""><ttl>Recovering from a degraded state</ttl><xreftext>the section called “Recovering from a degraded stateâ€</xreftext></div></div><div element="chapter" href="#configuration-reference" number="6" targetptr="configuration-reference"><ttl>Configuration reference</ttl><xreftext>Chapter 6, <i>Configuration reference</i></xreftext><div element="section" href="#idp912960" number=""><ttl>Command line options</ttl><xreftext>the section called “Command line optionsâ€</xreftext><obj element="listitem" href="#help-option" number="" targetptr="help-option"><ttl>???TITLE???</ttl><xreftext/></obj><obj element="listitem" href="#version-option" number="" targetptr="version-option"><ttl>???TITLE???</ttl><xreftext/></obj><obj element="listitem" href="#config-option" number="" targetptr="config-option"><ttl>???TITLE???</ttl><xreftext/></obj><obj element="option" href="#init-storage-option" number="" targetptr="init-storage-option"><ttl>???TITLE???</ttl><xreftext>--init-storage</xreftext></obj><obj element="option" href="#cat-option" number="" targetptr="cat-option"><ttl>???TITLE???</ttl><xreftext>--cat</xreftext></obj></div><div element="section" href="#option-file" number="" targetptr="option-file"><ttl>The option file</ttl><xreftext>option file</xreftext><obj element="table" href="#idp925632" number="6.1"><ttl>Basic parameters</ttl><xreftext>Table 6.1, “Basic parametersâ€</xreftext></obj><obj element="entry" href="#work_dir" number="" targetptr="work_dir"><ttl>???TITLE???</ttl><xreftext>work_dir</xreftext></obj><obj element="entry" href="#wal_dir" number="" targetptr="wal_dir"><ttl>???TITLE???</ttl><xreftext>wal_dir</xreftext></obj><obj element="entry" href="#snap_dir" number="" targetptr="snap_dir"><ttl>???TITLE???</ttl><xreftext>snap_dir</xreftext></obj><obj element="entry" href="#primary_port" number="" targetptr="primary_port"><ttl>???TITLE???</ttl><xreftext>primary_port</xreftext></obj><obj element="entry" href="#secondary_port" number="" targetptr="secondary_port"><ttl>???TITLE???</ttl><xreftext>secondary_port</xreftext></obj><obj element="entry" href="#admin_port" number="" targetptr="admin_port"><ttl>???TITLE???</ttl><xreftext>admin_port</xreftext></obj><obj element="entry" href="#custom_proc_title" number="" targetptr="custom_proc_title"><ttl>???TITLE???</ttl><xreftext>custom_proc_title</xreftext></obj><obj element="table" href="#idp974848" number="6.2"><ttl>Configuring the storage</ttl><xreftext>Table 6.2, “Configuring the storageâ€</xreftext></obj><obj element="anchor" href="#slab_alloc_arena" number="" targetptr="slab_alloc_arena"><ttl>???TITLE???</ttl><xreftext>slab_alloc_arena</xreftext></obj><obj element="para" href="#space" number="" targetptr="space"><ttl>???TITLE???</ttl><xreftext>the section called “The option fileâ€</xreftext></obj><obj element="table" href="#idp1010864" number="6.3"><ttl>Binary logging and snapshots</ttl><xreftext>Table 6.3, “Binary logging and snapshotsâ€</xreftext></obj><obj element="entry" href="#rows_per_wal" number="" targetptr="rows_per_wal"><ttl>???TITLE???</ttl><xreftext>rows_per_wal</xreftext></obj><obj element="entry" href="#wal_mode" number="" targetptr="wal_mode"><ttl>???TITLE???</ttl><xreftext>wal_mode</xreftext></obj><obj element="table" href="#idp1045840" number="6.4"><ttl>Replication</ttl><xreftext>Table 6.4, “Replicationâ€</xreftext></obj><obj element="entry" href="#replication_port" number="" targetptr="replication_port"><ttl>???TITLE???</ttl><xreftext>replication_port</xreftext></obj><obj element="entry" href="#replication_source" number="" targetptr="replication_source"><ttl>???TITLE???</ttl><xreftext>replication_source</xreftext></obj><obj element="table" href="#idp1064816" number="6.5"><ttl>Networking</ttl><xreftext>Table 6.5, “Networkingâ€</xreftext></obj><obj element="table" href="#idp1083584" number="6.6"><ttl>Logging</ttl><xreftext>Table 6.6, “Loggingâ€</xreftext></obj><obj element="table" href="#idp1108480" number="6.7"><ttl>Memcached protocol support</ttl><xreftext>Table 6.7, “Memcached protocol supportâ€</xreftext></obj><obj element="anchor" href="#memcached_port" number="" targetptr="memcached_port"><ttl>???TITLE???</ttl><xreftext>memcached_port</xreftext></obj><obj element="anchor" href="#memcached_space" number="" targetptr="memcached_space"><ttl>???TITLE???</ttl><xreftext>memcached_space</xreftext></obj><obj element="anchor" href="#memcached_expire" number="" targetptr="memcached_expire"><ttl>???TITLE???</ttl><xreftext>memcached_expire</xreftext></obj></div></div><div element="chapter" href="#connectors" number="7" targetptr="connectors"><ttl>Connectors</ttl><xreftext>Chapter 7, <i>Connectors</i></xreftext><div element="section" href="#idp890176" number=""><ttl>C</ttl><xreftext>the section called “Câ€</xreftext></div><div element="section" href="#idp164496" number=""><ttl>Perl</ttl><xreftext>the section called “Perlâ€</xreftext></div><div element="section" href="#idp248192" number=""><ttl>PHP</ttl><xreftext>the section called “PHPâ€</xreftext></div><div element="section" href="#idp240128" number=""><ttl>Python</ttl><xreftext>the section called “Pythonâ€</xreftext></div><div element="section" href="#idp223696" number=""><ttl>Ruby</ttl><xreftext>the section called “Rubyâ€</xreftext></div></div><div element="appendix" href="#proctitle" number="A" targetptr="proctitle"><ttl>Server process titles</ttl><xreftext>Appendix A, <i>Server process titles</i></xreftext></div><div element="appendix" href="#errcode" number="B" targetptr="errcode"><ttl>List of error codes</ttl><xreftext>Appendix B, <i>List of error codes</i></xreftext><obj element="term" href="#ER_NONMASTER" number="" targetptr="ER_NONMASTER"><ttl>???TITLE???</ttl><xreftext>ER_NONMASTER</xreftext></obj><obj element="term" href="#ER_ILLEGAL_PARAMS" number="" targetptr="ER_ILLEGAL_PARAMS"><ttl>???TITLE???</ttl><xreftext>ER_ILLEGAL_PARAMS</xreftext></obj><obj element="term" href="#ER_TUPLE_IS_RO" number="" targetptr="ER_TUPLE_IS_RO"><ttl>???TITLE???</ttl><xreftext>ER_TUPLE_IS_RO</xreftext></obj><obj element="term" href="#ER_MEMORY_ISSUE" number="" targetptr="ER_MEMORY_ISSUE"><ttl>???TITLE???</ttl><xreftext>ER_MEMORY_ISSUE</xreftext></obj><obj element="term" href="#ER_WAL_IO" number="" targetptr="ER_WAL_IO"><ttl>???TITLE???</ttl><xreftext>ER_WAL_IO</xreftext></obj><obj element="term" href="#ER_INDEX_VIOLATION" number="" targetptr="ER_INDEX_VIOLATION"><ttl>???TITLE???</ttl><xreftext>ER_INDEX_VIOLATION</xreftext></obj><obj element="term" href="#ER_KEY_CARDINALITY" number="" targetptr="ER_KEY_CARDINALITY"><ttl>???TITLE???</ttl><xreftext>ER_KEY_CARDINALITY</xreftext></obj><obj element="term" href="#ER_NO_SUCH_SPACE" number="" targetptr="ER_NO_SUCH_SPACE"><ttl>???TITLE???</ttl><xreftext>ER_NO_SUCH_SPACE</xreftext></obj><obj element="term" href="#ER_NO_SUCH_INDEX" number="" targetptr="ER_NO_SUCH_INDEX"><ttl>???TITLE???</ttl><xreftext>ER_NO_SUCH_INDEX</xreftext></obj><obj element="term" href="#ER_PROC_LUA" number="" targetptr="ER_PROC_LUA"><ttl>???TITLE???</ttl><xreftext>ER_PROC_LUA</xreftext></obj></div></div> +<div element="book" href="#tarantool-user-guide" number="" targetptr="tarantool-user-guide"><ttl>Tarantool/Box User Guide, version 1.4.5-219-g8cd1466</ttl><xreftext>Tarantool/Box User Guide, version 1.4.5-219-g8cd1466</xreftext><div element="chapter" href="#idp42304" number="1"><ttl>Preface</ttl><xreftext>Chapter 1, <i>Preface</i></xreftext><div element="section" href="#preface" number="" targetptr="preface"><ttl>Tarantool/Box: an overview</ttl><xreftext>the section called “Tarantool/Box: an overviewâ€</xreftext></div><div element="section" href="#idp199536" number=""><ttl>Conventions</ttl><xreftext>the section called “Conventionsâ€</xreftext></div><div element="section" href="#idp208432" number=""><ttl>Reporting bugs</ttl><xreftext>the section called “Reporting bugsâ€</xreftext></div></div><div element="chapter" href="#idm37968" number="2"><ttl>Getting started</ttl><xreftext>Chapter 2, <i>Getting started</i></xreftext></div><div element="chapter" href="#data-and-persistence" number="3" targetptr="data-and-persistence"><ttl>Data model and data persitence</ttl><xreftext>Chapter 3, <i>Data model and data persitence</i></xreftext><div element="section" href="#idp26544" number=""><ttl>Dynamic data model</ttl><xreftext>the section called “Dynamic data modelâ€</xreftext></div><div element="section" href="#idp394448" number=""><ttl>Data persistence</ttl><xreftext>the section called “Data persistenceâ€</xreftext></div></div><div element="chapter" href="#language-reference" number="4" targetptr="language-reference"><ttl>Language reference</ttl><xreftext>Chapter 4, <i>Language reference</i></xreftext><div element="section" href="#idp671792" number=""><ttl>Data manipulation</ttl><xreftext>the section called “Data manipulationâ€</xreftext><div element="section" href="#idp667040" number=""><ttl>Memcached protocol</ttl><xreftext>the section called “Memcached protocolâ€</xreftext></div></div><div element="section" href="#idp664144" number=""><ttl>Administrative console</ttl><xreftext>the section called “Administrative consoleâ€</xreftext><obj element="term" href="#save-snapshot" number="" targetptr="save-snapshot"><ttl>???TITLE???</ttl><xreftext>SAVE SNAPSHOT</xreftext></obj><obj element="term" href="#reload-configuration" number="" targetptr="reload-configuration"><ttl>???TITLE???</ttl><xreftext>RELOAD CONFIGURATION</xreftext></obj><obj element="term" href="#show-configuration" number="" targetptr="show-configuration"><ttl>???TITLE???</ttl><xreftext>SHOW CONFIGURATION</xreftext></obj><obj element="term" href="#show-info" number="" targetptr="show-info"><ttl>???TITLE???</ttl><xreftext>SHOW INFO</xreftext></obj><obj element="term" href="#show-stat" number="" targetptr="show-stat"><ttl>???TITLE???</ttl><xreftext>SHOW STAT</xreftext></obj><obj element="term" href="#show-slab" number="" targetptr="show-slab"><ttl>???TITLE???</ttl><xreftext>SHOW SLAB</xreftext></obj><obj element="term" href="#show-palloc" number="" targetptr="show-palloc"><ttl>???TITLE???</ttl><xreftext>SHOW PALLOC</xreftext></obj><obj element="term" href="#save-coredump" number="" targetptr="save-coredump"><ttl>???TITLE???</ttl><xreftext>SAVE COREDUMP</xreftext></obj><obj element="term" href="#show-fiber" number="" targetptr="show-fiber"><ttl>???TITLE???</ttl><xreftext>SHOW FIBER</xreftext></obj><obj element="term" href="#lua-command" number="" targetptr="lua-command"><ttl>???TITLE???</ttl><xreftext>LUA ...</xreftext></obj></div><div element="section" href="#stored-procedures" number="" targetptr="stored-procedures"><ttl>Writing stored procedures in Lua</ttl><xreftext>the section called “Writing stored procedures in Luaâ€</xreftext><obj element="code" href="#box" number="" targetptr="box"><ttl>???TITLE???</ttl><xreftext>box</xreftext></obj><obj element="code" href="#box.tuple" number="" targetptr="box.tuple"><ttl>???TITLE???</ttl><xreftext>box.tuple</xreftext></obj><obj element="code" href="#box.space" number="" targetptr="box.space"><ttl>???TITLE???</ttl><xreftext>box.space</xreftext></obj><obj element="code" href="#box.index" number="" targetptr="box.index"><ttl>???TITLE???</ttl><xreftext>box.index</xreftext></obj><div element="section" href="#idp880464" number=""><ttl>Limitation of stored procedures</ttl><xreftext>the section called “Limitation of stored proceduresâ€</xreftext></div></div></div><div element="chapter" href="#replication" number="5" targetptr="replication"><ttl>Replication</ttl><xreftext>Chapter 5, <i>Replication</i></xreftext><div element="section" href="#idp275200" number=""><ttl>Replication architecture</ttl><xreftext>the section called “Replication architectureâ€</xreftext></div><div element="section" href="#idp41184" number=""><ttl>Setting up the master</ttl><xreftext>the section called “Setting up the masterâ€</xreftext></div><div element="section" href="#idm31856" number=""><ttl>Setting up a replica</ttl><xreftext>the section called “Setting up a replicaâ€</xreftext></div><div element="section" href="#idp288992" number=""><ttl>Recovering from a degraded state</ttl><xreftext>the section called “Recovering from a degraded stateâ€</xreftext></div></div><div element="chapter" href="#configuration-reference" number="6" targetptr="configuration-reference"><ttl>Configuration reference</ttl><xreftext>Chapter 6, <i>Configuration reference</i></xreftext><div element="section" href="#idp912960" number=""><ttl>Command line options</ttl><xreftext>the section called “Command line optionsâ€</xreftext><obj element="listitem" href="#help-option" number="" targetptr="help-option"><ttl>???TITLE???</ttl><xreftext/></obj><obj element="listitem" href="#version-option" number="" targetptr="version-option"><ttl>???TITLE???</ttl><xreftext/></obj><obj element="listitem" href="#config-option" number="" targetptr="config-option"><ttl>???TITLE???</ttl><xreftext/></obj><obj element="option" href="#init-storage-option" number="" targetptr="init-storage-option"><ttl>???TITLE???</ttl><xreftext>--init-storage</xreftext></obj><obj element="option" href="#cat-option" number="" targetptr="cat-option"><ttl>???TITLE???</ttl><xreftext>--cat</xreftext></obj></div><div element="section" href="#option-file" number="" targetptr="option-file"><ttl>The option file</ttl><xreftext>option file</xreftext><obj element="table" href="#idp925584" number="6.1"><ttl>Basic parameters</ttl><xreftext>Table 6.1, “Basic parametersâ€</xreftext></obj><obj element="entry" href="#work_dir" number="" targetptr="work_dir"><ttl>???TITLE???</ttl><xreftext>work_dir</xreftext></obj><obj element="entry" href="#wal_dir" number="" targetptr="wal_dir"><ttl>???TITLE???</ttl><xreftext>wal_dir</xreftext></obj><obj element="entry" href="#snap_dir" number="" targetptr="snap_dir"><ttl>???TITLE???</ttl><xreftext>snap_dir</xreftext></obj><obj element="entry" href="#primary_port" number="" targetptr="primary_port"><ttl>???TITLE???</ttl><xreftext>primary_port</xreftext></obj><obj element="entry" href="#secondary_port" number="" targetptr="secondary_port"><ttl>???TITLE???</ttl><xreftext>secondary_port</xreftext></obj><obj element="entry" href="#admin_port" number="" targetptr="admin_port"><ttl>???TITLE???</ttl><xreftext>admin_port</xreftext></obj><obj element="entry" href="#custom_proc_title" number="" targetptr="custom_proc_title"><ttl>???TITLE???</ttl><xreftext>custom_proc_title</xreftext></obj><obj element="table" href="#idp974864" number="6.2"><ttl>Configuring the storage</ttl><xreftext>Table 6.2, “Configuring the storageâ€</xreftext></obj><obj element="anchor" href="#slab_alloc_arena" number="" targetptr="slab_alloc_arena"><ttl>???TITLE???</ttl><xreftext>slab_alloc_arena</xreftext></obj><obj element="para" href="#space" number="" targetptr="space"><ttl>???TITLE???</ttl><xreftext>the section called “The option fileâ€</xreftext></obj><obj element="table" href="#idp1010880" number="6.3"><ttl>Binary logging and snapshots</ttl><xreftext>Table 6.3, “Binary logging and snapshotsâ€</xreftext></obj><obj element="entry" href="#rows_per_wal" number="" targetptr="rows_per_wal"><ttl>???TITLE???</ttl><xreftext>rows_per_wal</xreftext></obj><obj element="entry" href="#wal_mode" number="" targetptr="wal_mode"><ttl>???TITLE???</ttl><xreftext>wal_mode</xreftext></obj><obj element="table" href="#idp1045856" number="6.4"><ttl>Replication</ttl><xreftext>Table 6.4, “Replicationâ€</xreftext></obj><obj element="entry" href="#replication_port" number="" targetptr="replication_port"><ttl>???TITLE???</ttl><xreftext>replication_port</xreftext></obj><obj element="entry" href="#replication_source" number="" targetptr="replication_source"><ttl>???TITLE???</ttl><xreftext>replication_source</xreftext></obj><obj element="table" href="#idp1064832" number="6.5"><ttl>Networking</ttl><xreftext>Table 6.5, “Networkingâ€</xreftext></obj><obj element="table" href="#idp1083600" number="6.6"><ttl>Logging</ttl><xreftext>Table 6.6, “Loggingâ€</xreftext></obj><obj element="table" href="#idp1108496" number="6.7"><ttl>Memcached protocol support</ttl><xreftext>Table 6.7, “Memcached protocol supportâ€</xreftext></obj><obj element="anchor" href="#memcached_port" number="" targetptr="memcached_port"><ttl>???TITLE???</ttl><xreftext>memcached_port</xreftext></obj><obj element="anchor" href="#memcached_space" number="" targetptr="memcached_space"><ttl>???TITLE???</ttl><xreftext>memcached_space</xreftext></obj><obj element="anchor" href="#memcached_expire" number="" targetptr="memcached_expire"><ttl>???TITLE???</ttl><xreftext>memcached_expire</xreftext></obj></div></div><div element="chapter" href="#connectors" number="7" targetptr="connectors"><ttl>Connectors</ttl><xreftext>Chapter 7, <i>Connectors</i></xreftext><div element="section" href="#idm11744" number=""><ttl>C</ttl><xreftext>the section called “Câ€</xreftext></div><div element="section" href="#idp187680" number=""><ttl>Perl</ttl><xreftext>the section called “Perlâ€</xreftext></div><div element="section" href="#idp223696" number=""><ttl>PHP</ttl><xreftext>the section called “PHPâ€</xreftext></div><div element="section" href="#idp697056" number=""><ttl>Python</ttl><xreftext>the section called “Pythonâ€</xreftext></div><div element="section" href="#idp861616" number=""><ttl>Ruby</ttl><xreftext>the section called “Rubyâ€</xreftext></div></div><div element="appendix" href="#proctitle" number="A" targetptr="proctitle"><ttl>Server process titles</ttl><xreftext>Appendix A, <i>Server process titles</i></xreftext></div><div element="appendix" href="#errcode" number="B" targetptr="errcode"><ttl>List of error codes</ttl><xreftext>Appendix B, <i>List of error codes</i></xreftext><obj element="term" href="#ER_NONMASTER" number="" targetptr="ER_NONMASTER"><ttl>???TITLE???</ttl><xreftext>ER_NONMASTER</xreftext></obj><obj element="term" href="#ER_ILLEGAL_PARAMS" number="" targetptr="ER_ILLEGAL_PARAMS"><ttl>???TITLE???</ttl><xreftext>ER_ILLEGAL_PARAMS</xreftext></obj><obj element="term" href="#ER_TUPLE_IS_RO" number="" targetptr="ER_TUPLE_IS_RO"><ttl>???TITLE???</ttl><xreftext>ER_TUPLE_IS_RO</xreftext></obj><obj element="term" href="#ER_MEMORY_ISSUE" number="" targetptr="ER_MEMORY_ISSUE"><ttl>???TITLE???</ttl><xreftext>ER_MEMORY_ISSUE</xreftext></obj><obj element="term" href="#ER_WAL_IO" number="" targetptr="ER_WAL_IO"><ttl>???TITLE???</ttl><xreftext>ER_WAL_IO</xreftext></obj><obj element="term" href="#ER_INDEX_VIOLATION" number="" targetptr="ER_INDEX_VIOLATION"><ttl>???TITLE???</ttl><xreftext>ER_INDEX_VIOLATION</xreftext></obj><obj element="term" href="#ER_KEY_CARDINALITY" number="" targetptr="ER_KEY_CARDINALITY"><ttl>???TITLE???</ttl><xreftext>ER_KEY_CARDINALITY</xreftext></obj><obj element="term" href="#ER_NO_SUCH_SPACE" number="" targetptr="ER_NO_SUCH_SPACE"><ttl>???TITLE???</ttl><xreftext>ER_NO_SUCH_SPACE</xreftext></obj><obj element="term" href="#ER_NO_SUCH_INDEX" number="" targetptr="ER_NO_SUCH_INDEX"><ttl>???TITLE???</ttl><xreftext>ER_NO_SUCH_INDEX</xreftext></obj><obj element="term" href="#ER_PROC_LUA" number="" targetptr="ER_PROC_LUA"><ttl>???TITLE???</ttl><xreftext>ER_PROC_LUA</xreftext></obj></div></div> -- GitLab