From 64d90c35c26e742e3657a1b31420966de32878e9 Mon Sep 17 00:00:00 2001
From: Konstantin Osipov <kostja@tarantool.org>
Date: Mon, 16 Sep 2013 22:02:58 +0400
Subject: [PATCH] Document lua-console and begin adding docs for dynamic
 add/drop space.

---
 doc/user/configuration-reference.xml  |  25 ++-
 doc/user/language-reference.xml       |  75 ++++----
 doc/user/persistence-architecture.xml |   2 +-
 doc/user/replication.xml              |   4 +-
 doc/user/stored-procedures.xml        | 240 +++++++++++++-------------
 doc/user/target.db                    |   6 +-
 6 files changed, 168 insertions(+), 184 deletions(-)

diff --git a/doc/user/configuration-reference.xml b/doc/user/configuration-reference.xml
index 06a3533e50..0e341bb563 100644
--- a/doc/user/configuration-reference.xml
+++ b/doc/user/configuration-reference.xml
@@ -102,7 +102,7 @@ Tarantool 1.4.0-69-g45551dd
       <para><option>--check-config</option></para>
       <para>Check the configuration file for errors. This option is
         normally used on the command line
-        before <quote>reload configuration</quote>
+        before <quote>box.cfg.reload()</quote>
         is issued on the administrative port, to ensure that the new
         configuration is valid. When configuration is
         indeed correct, the program produces no output and returns <literal>0</literal>.
@@ -130,16 +130,11 @@ Tarantool 1.4.0-69-g45551dd
       </option></para>
       <para>Initialize the directory, specified in <emphasis>vardir</emphasis>
       configuration option by creating an empty snapshot file in
-      it. If <filename>vardir</filename> doesn't contain at
-      least one snapshot, the server does not start. There is no
-      <quote>magic</quote> with automatic initialization of
-      <filename>vardir</filename> on boot to make
-      potential system errors more noticeable. For example, if the
-      operating system reboots and fails to mount the partition on
-      which <filename>vardir</filename> is expected to reside, the
-      <filename>rc.d</filename> or <command>service</command> script
-      responsible for server restart will also fail, thanks to this
-      option.
+      it. Prior to Tarantool 1.6, if <filename>vardir</filename>
+      didn't contain at least one snapshot, the server did not
+      start. Starting from 1.6, the initial storage file is
+      created automatically when starting in a clean data
+      directory.
       </para>
     </listitem>
   </itemizedlist>
@@ -185,7 +180,7 @@ Tarantool 1.4.0-69-g45551dd
   <para>
     To facilitate centralized and automated configuration
     management, runtime configuration modifications are supported
-    solely through <olink targetptr="reload-configuration"/>
+    solely through <olink targetptr="box.cfg.reload"/>
     administrative statement. Thus, the
     procedure to change Tarantool configuration at runtime is to
     edit the configuration file.  This ensures that, should the
@@ -197,7 +192,7 @@ Tarantool 1.4.0-69-g45551dd
     such settings will be highlighted in this reference.
     If the same setting is given more than once, the latest occurrence
     takes effect.
-    You can always invoke <olink targetptr="show-configuration"/>
+    You can always invoke <olink targetptr="box.cfg.show"/>
     from the administrative console to show the current
     configuration.
   </para>
@@ -532,7 +527,7 @@ tarantool_box: primary@sessions pri:33013 sec:33014 adm:33015</programlisting>
           <entry>no</entry>
           <entry>yes</entry>
           <entry>Reduce the throttling effect of <olink
-          targetptr="save-snapshot"/> on the INSERT/UPDATE/DELETE
+          targetptr="box.snapshot"/> on the INSERT/UPDATE/DELETE
           performance by setting a limit on
           how many megabytes per second it can write to disk.
           The same can be achieved by splitting <olink
@@ -622,7 +617,7 @@ tarantool_box: primary@sessions pri:33013 sec:33014 adm:33015</programlisting>
           on <olink targetptr="primary_port"/>. This parameter is
           dynamic, that is, to enter master mode, simply set the
           value to an empty string and issue <olink
-          targetptr="reload-configuration"/>.</entry>
+          targetptr="box.cfg.reload"/>.</entry>
         </row>
 
       </tbody>
diff --git a/doc/user/language-reference.xml b/doc/user/language-reference.xml
index 02782b180f..cb19537570 100644
--- a/doc/user/language-reference.xml
+++ b/doc/user/language-reference.xml
@@ -54,7 +54,7 @@
   client automatically selects the correct port for you
   with help of a simple regular expression. SELECTs, UPDATEs,
   INSERTs, DELETEs and CALLs are sent to the primary port.
-  SHOW, RELOAD, SAVE and other statements are sent to the administrative port.
+  Lua commands are sent to the administrative port.
 </para>
 
 <section xml:id="data-manipulation">
@@ -123,15 +123,13 @@
 <section xml:id="administrative-console">
   <title>Administrative console</title>
   <para>
-    The administrative console uses a simple text protocol.
-    All commands are case-insensitive.
-    You can connect to the administrative port using any
-    <command>telnet</command> client, or a tool like
+    The administrative console is simply an outlet of the Tarantool
+    Lua interpreter.  You can connect to the administrative port
+    using any <command>telnet</command> client, or a tool like
     <command>rlwrap</command>, if access to readline features is
     desired. Additionally, <command>tarantool</command>, the
-    SQL-capable command line client,
-    understands all administrative statements
-    and automatically directs them to the administrative port.
+    SQL-capable command line client, automatically distinguishes
+    SQL and Lua statements and directs them to the appropriate port.
     The server response to an administrative command, even though
     it is always in plain text, can be quite complex.
     It is encoded using YAML markup to simplify automated parsing.
@@ -144,8 +142,8 @@
   <variablelist>
 
     <varlistentry>
-      <term xml:id="save-snapshot" xreflabel="SAVE SNAPSHOT">
-        <emphasis role="tntadmin">save snapshot</emphasis>
+      <term xml:id="box.snapshot" xreflabel="box.snapshot()">
+        <emphasis role="tntadmin">box.snapshot()</emphasis>
       </term>
       <listitem><para>
         Take a snapshot of all data and store it in
@@ -168,17 +166,17 @@
         is, on average, sufficient. This statement waits until a
         snapshot is taken and returns operation result. For
         example:
-<programlisting>localhost> show info
+<programlisting>localhost> box.info()
 ---
 info:
   version: "1.4.6"
   lsn: 843301
 ...
-localhost> save snapshot
+localhost> box.snapshot()
 ---
 ok
 ...
-localhost> save snapshot
+localhost> box.snapshot()
 ---
 fail: can't save snapshot, errno 17 (File exists)
 ...
@@ -189,7 +187,7 @@ fail: can't save snapshot, errno 17 (File exists)
         write ahead log. Once a snapshot is taken, old WALs can be
         deleted as long as all replicas are up to date. But the
         WAL which was current at the time <emphasis
-        role="tntadmin">save snapshot</emphasis> started must be
+        role="tntadmin">box.snapshot()</emphasis> started must be
         kept for recovery, since it still contains log records
         written after the start of <emphasis role="tntadmin">save
         snapshot</emphasis>.
@@ -206,8 +204,8 @@ fail: can't save snapshot, errno 17 (File exists)
 
 
     <varlistentry>
-      <term xml:id="reload-configuration" xreflabel="RELOAD CONFIGURATION">
-        <emphasis role="tntadmin">reload configuration</emphasis>
+      <term xml:id="box.cfg.reload" xreflabel="box.cfg.reload()">
+        <emphasis role="tntadmin">box.cfg.reload()</emphasis>
       </term>
       <listitem><para>
         Re-read the configuration file. If the file contains
@@ -219,8 +217,8 @@ fail: can't save snapshot, errno 17 (File exists)
     </varlistentry>
 
     <varlistentry>
-      <term xml:id="show-configuration" xreflabel="SHOW CONFIGURATION">
-        <emphasis role="tntadmin">show configuration</emphasis>
+      <term xml:id="box.cfg.show" xreflabel="box.cfg()">
+        <emphasis role="tntadmin">box.cfg()</emphasis>
       </term>
       <listitem><para>
         Show the current settings. Displays all settings,
@@ -230,12 +228,12 @@ fail: can't save snapshot, errno 17 (File exists)
     </varlistentry>
 
     <varlistentry>
-      <term xml:id="show-info" xreflabel="SHOW INFO">
-        <emphasis role="tntadmin">show info</emphasis>
+      <term xml:id="box.info" xreflabel="box.info()">
+        <emphasis role="tntadmin">box.info()</emphasis>
       </term>
       <listitem><para>
 <programlisting>
-localhost> show info
+localhost> box.info()
 ---
 info:
   version: "1.4.5-128-ga91962c"
@@ -272,15 +270,15 @@ info:
     </varlistentry>
 
     <varlistentry>
-      <term xml:id="show-stat" xreflabel="SHOW STAT">
-        <emphasis role="tntadmin">show stat</emphasis>
+      <term xml:id="box.stat.show" xreflabel="box.stat()">
+        <emphasis role="tntadmin">box.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
+localhost> box.stat()
 ---
 statistics:
   INSERT:        { rps:  139  , total:  48207694    }
@@ -293,8 +291,8 @@ statistics:
     </varlistentry>
 
     <varlistentry>
-      <term xml:id="show-slab" xreflabel="SHOW SLAB">
-        <emphasis role="tntadmin">show slab</emphasis>
+      <term xml:id="box.slab.info" xreflabel="box.slab.info()">
+        <emphasis role="tntadmin">box.slab.info()</emphasis>
       </term>
       <listitem>
         <para>
@@ -319,19 +317,8 @@ statistics:
     </varlistentry>
 
     <varlistentry>
-      <term xml:id="show-palloc" xreflabel="SHOW PALLOC">
-        <emphasis role="tntadmin">show palloc</emphasis>
-      </term>
-      <listitem><para>
-        A pool allocator is used for temporary memory, when
-        serving client requests. Every fiber has its own
-        temporary pool. Shows the current state of pools of all fibers.
-      </para></listitem>
-    </varlistentry>
-
-    <varlistentry>
-      <term xml:id="save-coredump" xreflabel="SAVE COREDUMP">
-        <emphasis role="tntadmin">save coredump</emphasis>
+      <term xml:id="box.coredump" xreflabel="box.coredump()">
+        <emphasis role="tntadmin">box.coredump()</emphasis>
       </term>
       <listitem><para>
         Fork and dump a core. Since Tarantool stores all tuples
@@ -341,8 +328,8 @@ statistics:
     </varlistentry>
 
     <varlistentry>
-      <term xml:id="show-fiber" xreflabel="SHOW FIBER">
-        <emphasis role="tntadmin">show fiber</emphasis>
+      <term xml:id="box.fiber.info" xreflabel="box.fiber.info()">
+        <emphasis role="tntadmin">box.fiber.info()</emphasis>
       </term>
       <listitem><para>
         Show all running fibers, with their stack.
@@ -351,11 +338,11 @@ statistics:
     </varlistentry>
 
     <varlistentry>
-      <term xml:id="lua-command" xreflabel="LUA ...">
-        <emphasis role="tntadmin">lua ...</emphasis>
+      <term xml:id="lua-command">
+        <emphasis role="tntadmin">...</emphasis>
       </term>
       <listitem><para>
-        Execute a chunk of Lua code. This can be used to define,
+        Execute any chunk of Lua code. This can be used to define,
         invoke, debug and drop <olink
         targetptr="stored-procedures">stored procedures</olink>,
         inspect server environment, perform automated
diff --git a/doc/user/persistence-architecture.xml b/doc/user/persistence-architecture.xml
index 2c9cc0272d..c98e280fb3 100644
--- a/doc/user/persistence-architecture.xml
+++ b/doc/user/persistence-architecture.xml
@@ -91,7 +91,7 @@ possible to turn the write ahead log completely off, by setting
 <olink targetptr="wal_mode"/> to <emphasis>none</emphasis>.
 Even without the write ahead log it's still possible to take a
 persistent copy of the entire data set with
-<olink targetptr="save-snapshot"/>.
+<olink targetptr="box.snapshot"/>.
 </para>
 
 
diff --git a/doc/user/replication.xml b/doc/user/replication.xml
index 66ee093f08..7cb912f98d 100644
--- a/doc/user/replication.xml
+++ b/doc/user/replication.xml
@@ -101,7 +101,7 @@
   <note><simpara>
     Replication parameters are "dynamic", which allows the
     replica to become a master and vice versa with help of
-    <olink targetptr="reload-configuration"/> statement.
+    <olink targetptr="box.cfg.reload"/> statement.
   </simpara></note>
 
 </section>
@@ -152,7 +152,7 @@
       <listitem>
         <para>
           Record the replica's LSN, by issuing <olink
-          targetptr="show-info"/>. This LSN may prove useful if
+          targetptr="box.info"/>. This LSN may prove useful if
           there are updates on the master that never reached
           the replica.
         </para>
diff --git a/doc/user/stored-procedures.xml b/doc/user/stored-procedures.xml
index a756ca3f60..d13e140dcb 100644
--- a/doc/user/stored-procedures.xml
+++ b/doc/user/stored-procedures.xml
@@ -34,7 +34,7 @@
 <para>
     Procedures can be invoked from the administrative
     console and using the binary protocol, for example:
-<programlisting><computeroutput>localhost> lua function f1() return 'hello' end
+<programlisting><computeroutput>localhost> function f1() return 'hello' end
 ---
 ...
 localhost> call f1()
@@ -57,15 +57,15 @@ Found 1 tuple:
     administrative console, the newly created <code
     language="Pascal">function f1()</code>
     can be called there too:
-<programlisting><computeroutput>localhost> lua f1()
+<programlisting><computeroutput>localhost> f1()
 ---
  - hello
 ...
-localhost> lua 1+2
+localhost> 1+2
 ---
  - 3
 ...
-localhost> lua "hello".." world"
+localhost> "hello".." world"
 ---
  - hello world
 ...
@@ -127,11 +127,11 @@ expirationd.run_task("exprd space 0", 0, is_expired, purge,
    within the system.
  </para>
   <para>
-    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
-    state is immediately available to all client connections.
+    There is a single global instance of the Lua interpreter,
+    which is shared across all connections. Any command typed
+    entered on the on the administrative console is sent directly
+    to this interpreter. Any change of the interpreter state is
+    immediately available to all client connections.
   </para>
   <para>
     Each connection, however, is using its own Lua
@@ -169,10 +169,10 @@ function f1(a)
     return type(a), s
 end
 kostja@atlas:~$ tarantool
-localhost> lua dofile('arg.lua')
+localhost> dofile('arg.lua')
 ---
 ...
-localhost> lua f1('1234')
+localhost> f1('1234')
 ---
  - string
  - 0x31 0x32 0x33 0x34
@@ -181,7 +181,7 @@ localhost> call f1('1234')
 Call OK, 2 rows affected
 ['string']
 ['0x31 0x32 0x33 0x34 ']
-localhost> lua f1(1234)
+localhost> f1(1234)
 ---
  - number
  - 1234
@@ -199,7 +199,7 @@ Call OK, 2 rows affected
     <para>In addition to conventional method invocation,
     Lua provides object-oriented syntax. Access to the latter is
     available on the administrative console only:
-<programlisting><computeroutput>localhost> lua box.space[0]:truncate()
+<programlisting><computeroutput>localhost> box.space[0]:truncate()
 ---
 ...
 localhost> call box.space[0]:truncate()
@@ -225,14 +225,14 @@ error: 1:15 expected '('
     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
+<programlisting><computeroutput>localhost> function f1() error("oops") end
 ---
 ...
 localhost> call f1()
 Call ERROR, Lua error: [string "function f1() error("oops") end"]:1: oops (ER_PROC_LUA)
 localhost> call box.insert('99', 1, 'test')
 Call ERROR, Space 99 is disabled (ER_SPACE_DISABLED)
-localhost> lua pcall(box.insert, 99, 1, 'test')
+localhost> pcall(box.insert, 99, 1, 'test')
 ---
  - false
  - Space 99 is disabled
@@ -245,7 +245,7 @@ localhost> lua pcall(box.insert, 99, 1, 'test')
     <code>box</code>
     Lua library. The contents of the library can be
     inspected at runtime:
-<programlisting><computeroutput>localhost> lua for k, v in pairs(box) do print(k, ": ", type(v)) end
+<programlisting><computeroutput>localhost> for k, v in pairs(box) do print(k, ": ", type(v)) end
 ---
 fiber: table
 space: table
@@ -291,15 +291,15 @@ pack: function
             arithmetics as in the built-in number type.
                 <bridgehead renderas="sect4">Example</bridgehead>
 <programlisting>
-localhost> lua tonumber64('123456789'), tonumber64(123456789)
+localhost> tonumber64('123456789'), tonumber64(123456789)
 ---
  - 123456789
  - 123456789
 ...
-localhost> lua i=tonumber64(1)
+localhost> i=tonumber64(1)
 ---
 ...
-localhost> lua type(i), type(i*2),  type(i/2), i, i*2, i/2
+localhost> type(i), type(i*2),  type(i/2), i, i*2, i/2
 ---
  - cdata
  - cdata
@@ -407,11 +407,11 @@ Call OK, 1 rows affected
 localhost> call box.select(0, 0, 'test')
 Call OK, 1 rows affected
 ['test', 'my first tuple']
-localhost> lua box.insert(5, 'testtest', 'firstname', 'lastname')
+localhost> box.insert(5, 'testtest', 'firstname', 'lastname')
 ---
  - 'testtest': {'firstname', 'lastname'}
 ...
-localhost> lua box.select(5, 1, 'firstname', 'lastname')
+localhost> box.select(5, 1, 'firstname', 'lastname')
 ---
  - 'testtest': {'firstname', 'lastname'}
 ...
@@ -509,31 +509,31 @@ localhost> lua box.select(5, 1, 'firstname', 'lastname')
                 Returns the updated tuple.
                 <bridgehead renderas="sect4">Example</bridgehead>
 <programlisting>
-localhost> lua box.insert(0, 0, 'hello world')
+localhost> box.insert(0, 0, 'hello world')
 ---
  - 0: {'hello world'}
 ...
-localhost> lua box.update(0, 0, '+p', 1, 1) -- add value 1 to field #1
+localhost> box.update(0, 0, '+p', 1, 1) -- add value 1 to field #1
 ---
 error: 'Field type does not match one required by operation: expected a 32-bit or 64-bit int'
 ...
-localhost> lua box.update(0, 0, '+p', 0, 2) -- add value 2 to field 0
+localhost> box.update(0, 0, '+p', 0, 2) -- add value 2 to field 0
 ---
  - 2: {'hello world'}
 ...
-localhost> lua box.update(0, 2, '!p', 1, 'Bienvenue tout le monde!')
+localhost> 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, 1)
+localhost> box.update(0, 2, '#p', 2, 1)
 ---
  - 2: {'Bienvenue tout le monde!'}
 ...
-localhost> lua box.insert(0, 3, 'crocodile', 'giraffe', 'baobab', 'bamblebee', 'hippopotamus', 'rhino')
+localhost> box.insert(0, 3, 'crocodile', 'giraffe', 'baobab', 'bamblebee', 'hippopotamus', 'rhino')
 ---
  - 3: {'crocodile', 'giraffe', 'baobab', 'bamblebee', 'hippopotamus', 'rhino'}
 ...
-localhost> lua box.update(0, 3, '#p', 3, 2)
+localhost> box.update(0, 3, '#p', 3, 2)
 ---
  - 3: {'crocodile', 'giraffe', 'hippopotamus', 'rhino'}
 ...
@@ -609,26 +609,26 @@ localhost> insert into t4 values ('2', '2')
 Insert OK, 1 rows affected
 localhost> insert into t4 values ('3', '3')
 Insert OK, 1 rows affected
-ocalhost> lua box.select_range(4, 0, 10)
+ocalhost> box.select_range(4, 0, 10)
 ---
  - '3': {'3'}
  - '0': {'0'}
  - '1': {'1'}
  - '2': {'2'}
 ...
-localhost> lua box.select_range(4, 1, 10)
+localhost> box.select_range(4, 1, 10)
 ---
  - '0': {'0'}
  - '1': {'1'}
  - '2': {'2'}
  - '3': {'3'}
 ...
-localhost> lua box.select_range(4, 1, 2)
+localhost> box.select_range(4, 1, 2)
 ---
  - '0': {'0'}
  - '1': {'1'}
 ...
-localhost> lua box.select_range(4, 1, 2, '1')
+localhost> box.select_range(4, 1, 2, '1')
 ---
  - '1': {'1'}
  - '2': {'2'}
@@ -679,23 +679,23 @@ localhost> insert into t4 values ('2', '2')
 Insert OK, 1 rows affected
 localhost> insert into t4 values ('3', '3')
 Insert OK, 1 rows affected
-localhost> lua box.select_reverse_range(4, 0, 10)
+localhost> box.select_reverse_range(4, 0, 10)
 ---
  error: 'Illegal parameters, hash iterator is forward only
 ...
-localhost> lua box.select_reverse_range(4, 1, 10)
+localhost> box.select_reverse_range(4, 1, 10)
 ---
  - '3': {'3'}
  - '2': {'2'}
  - '1': {'1'}
  - '0': {'0'}
 ...
-localhost> lua box.select_reverse_range(4, 1, 2)
+localhost> box.select_reverse_range(4, 1, 2)
 ---
  - '3': {'3'}
  - '2': {'2'}
 ...
-localhost> lua box.select_reverse_range(4, 1, 2, '1')
+localhost> box.select_reverse_range(4, 1, 2, '1')
 ---
  - '1': {'1'}
  - '0': {'0'}
@@ -782,27 +782,27 @@ localhost> lua box.select_reverse_range(4, 1, 2, '1')
         Unknown format specifier.
         <bridgehead renderas="sect4">Example</bridgehead>
 <programlisting>
-localhost> lua box.insert(0, 0, 'hello world')
+localhost> box.insert(0, 0, 'hello world')
 ---
  - 0: {'hello world'}
 ...
-localhost> lua box.update(0, 0, "=p", 1, 'bye world')
+localhost> box.update(0, 0, "=p", 1, 'bye world')
 ---
  - 0: {'bye world'}
 ...
-localhost> lua box.update(0, 0, ":p", 1, box.pack('ppp', 0, 3, 'hello'))
+localhost> box.update(0, 0, ":p", 1, box.pack('ppp', 0, 3, 'hello'))
 ---
  - 0: {'hello world'}
 ...
-localhost> lua box.update(0, 0, "=p", 1, 4)
+localhost> box.update(0, 0, "=p", 1, 4)
 ---
  - 0: {4}
 ...
-localhost> lua box.update(0, 0, "+p", 1, 4)
+localhost> box.update(0, 0, "+p", 1, 4)
 ---
  - 0: {8}
 ...
-localhost> lua box.update(0, 0, "^p", 1, 4)
+localhost> box.update(0, 0, "^p", 1, 4)
 ---
  - 0: {12}
 ...
@@ -815,40 +815,40 @@ localhost> lua box.update(0, 0, "^p", 1, 4)
         <listitem><para>
             Counterpart to <code>box.pack()</code>.
             <bridgehead renderas="sect4">Example</bridgehead>
-<programlisting>localhost> lua tuple=box.replace(2, 0)
+<programlisting>localhost> tuple=box.replace(2, 0)
 ---
 ...
-localhost> lua string.len(tuple[0])
+localhost> string.len(tuple[0])
 ---
  - 4
 ...
-localhost> lua box.unpack('i', tuple[0])
+localhost> box.unpack('i', tuple[0])
 ---
  - 0
 ...
-localhost> lua box.unpack('bsil', box.pack('bsil', 255, 65535, 4294967295, tonumber64('18446744073709551615')))
+localhost> box.unpack('bsil', box.pack('bsil', 255, 65535, 4294967295, tonumber64('18446744073709551615')))
 ---
  - 255
  - 65535
  - 4294967295
  - 18446744073709551615
 ...
-localhost> lua num, str, num64 = box.unpack('ppp', box.pack('ppp', 666, 'string', tonumber64('666666666666666')))
+localhost> num, str, num64 = box.unpack('ppp', box.pack('ppp', 666, 'string', tonumber64('666666666666666')))
 ---
 ...
-localhost> lua print(box.unpack('i', num));
+localhost> print(box.unpack('i', num));
 ---
 666
 ...
-localhost> lua print(str);
+localhost> print(str);
 ---
 string
 ...
-localhost> lua print(box.unpack('l', num64))
+localhost> print(box.unpack('l', num64))
 ---
 666666666666666
 ...
-localhost> lua box.unpack('=p', box.pack('=p', 1, '666'))
+localhost> box.unpack('=p', box.pack('=p', 1, '666'))
 ---
  - 1
  - 666
@@ -890,20 +890,20 @@ Note: the administrative console output must be YAML-compatible.
                 an arbitrary piece of Lua code, without having to
                 introduce changes to the global Lua environment.
             <bridgehead renderas="sect4">Example</bridgehead>
-<programlisting>lua box.dostring('abc')
+<programlisting>box.dostring('abc')
 ---
 error: '[string "abc"]:1: ''='' expected near ''&lt;eof&gt;'''
 ...
-lua box.dostring('return 1')
+box.dostring('return 1')
 ---
  - 1
 ...
-lua box.dostring('return ...', 'hello', 'world')
+box.dostring('return ...', 'hello', 'world')
 ---
  - hello
  - world
 ...
-lua box.dostring('local f = function(key) t=box.select(0, 0, key); if t ~= nil then return t[0] else return nil end end return f(...)', 0)
+box.dostring('local f = function(key) t=box.select(0, 0, key); if t ~= nil then return t[0] else return nil end end return f(...)', 0)
 ---
  - nil
 ...
@@ -964,7 +964,7 @@ lua box.dostring('local f = function(key) t=box.select(0, 0, key); if t ~= nil t
             </para>
             <bridgehead renderas="sect4">Example</bridgehead>
             <programlisting>
-                lua box.uuid_hex()
+                box.uuid_hex()
                 ---
                  - a4f29fa0eb6d11e19f7737696d7fa8ff
                 ...
@@ -994,7 +994,7 @@ lua box.dostring('local f = function(key) t=box.select(0, 0, key); if t ~= nil t
             </para>
             <bridgehead renderas="sect4">Example</bridgehead>
             <programlisting>
-                lua box.raise(box.error.ER_WAL_IO, 'Wal I/O error')
+                box.raise(box.error.ER_WAL_IO, 'Wal I/O error')
                 ---
                 error: 'Wal I/O error'
                 ...
@@ -1012,11 +1012,11 @@ lua box.dostring('local f = function(key) t=box.select(0, 0, key); if t ~= nil t
                 NUM or NUM64 primary key index of type TREE.
             </para>
             <bridgehead renderas="sect4">Example</bridgehead>
-            <programlisting>localhost> lua box.auto_increment(0, "I am a duplicate")
+            <programlisting>localhost> box.auto_increment(0, "I am a duplicate")
 ---
  - 1: {'I am a duplicate'}
 ...
-localhost> lua box.auto_increment(0, "I am a duplicate")
+localhost> box.auto_increment(0, "I am a duplicate")
 ---
  - 2: {'I am a duplicate'}
 ...
@@ -1037,11 +1037,11 @@ localhost> lua box.auto_increment(0, "I am a duplicate")
                 new counter value back.
             </para>
             <bridgehead renderas="sect4">Example</bridgehead>
-            <programlisting>localhost> lua box.counter.inc(0, 'top.mail.ru')
+            <programlisting>localhost> box.counter.inc(0, 'top.mail.ru')
 ---
  - 1
 ...
-localhost> lua box.counter.inc(0, 'top.mail.ru')
+localhost> box.counter.inc(0, 'top.mail.ru')
 ---
  - 2
 ...</programlisting>
@@ -1058,11 +1058,11 @@ localhost> lua box.counter.inc(0, 'top.mail.ru')
                 drops to 0, the tuple is deleted.
             </para>
             <bridgehead renderas="sect4">Example</bridgehead>
-            <programlisting>localhost> lua box.counter.dec(0, 'top.mail.ru')
+            <programlisting>localhost> box.counter.dec(0, 'top.mail.ru')
 ---
  - 1
 ...
-localhost> lua box.counter.dec(0, 'top.mail.ru')
+localhost> box.counter.dec(0, 'top.mail.ru')
 ---
  - 0
 ...</programlisting>
@@ -1086,23 +1086,23 @@ localhost> lua box.counter.dec(0, 'top.mail.ru')
         <listitem><para>
         <bridgehead renderas="sect4">Example</bridgehead>
 <programlisting>
-localhost> lua t=box.insert(0, 1, 'abc', 'cde', 'efg', 'ghq', 'qkl')
+localhost> t=box.insert(0, 1, 'abc', 'cde', 'efg', 'ghq', 'qkl')
 ---
 ...
-localhost> lua #t
+localhost> #t
 ---
  - 6
 ...
-localhost> lua t[1], t[5]
+localhost> t[1], t[5]
 ---
  - abc
  - qkl
 ...
-localhost> lua t[6]
+localhost> t[6]
 ---
 error: 'Lua error: [string "return t[6]"]:1: box.tuple: index 6 is out of bounds (0..5)'
 ...
-localhost> lua for k,v in t:pairs() do print(v) end
+localhost> for k,v in t:pairs() do print(v) end
 ---
 
 abc
@@ -1111,7 +1111,7 @@ efg
 ghq
 qkl
 ...
-localhost> lua t:unpack()
+localhost> t:unpack()
 ---
  -
  - abc
@@ -1120,58 +1120,58 @@ localhost> lua t:unpack()
  - ghq
  - qkl
 ...
-localhost> lua t:slice(1, 2)
+localhost> t:slice(1, 2)
 ---
  - abc
 ...
-localhost> lua t:slice(1, 3)
+localhost> t:slice(1, 3)
 ---
  - abc
  - cde
 ...
-localhost> lua t:slice(1, -1)
+localhost> t:slice(1, -1)
 ---
  - abc
  - cde
  - efg
  - ghq
 ...
-localhost> lua t:transform(1, 3)
+localhost> t:transform(1, 3)
 ---
  - 1: {'ghq', 'qkl'}
 ...
-localhost> lua t:transform(0, 1, 'zyx')
+localhost> t:transform(0, 1, 'zyx')
 ---
  - 'zyx': {'abc', 'cde', 'efg', 'ghq', 'qkl'}
 ...
-localhost> lua t:transform(-1, 1, 'zyx')
+localhost> t:transform(-1, 1, 'zyx')
 ---
  - 1: {'abc', 'cde', 'efg', 'ghq', 'zyx'}
 ...
-localhost> lua t=box.insert(0, 'abc', 'def', 'abc')
+localhost> t=box.insert(0, 'abc', 'def', 'abc')
 ---
 ...
-localhost> lua t:find('abc')
+localhost> t:find('abc')
 ---
  - 0
 ...
-localhost> lua t:findall('abc')
+localhost> t:findall('abc')
 ---
  - 0
  - 2
 ...
-localhost> lua t:find(1, 'abc')
+localhost> t:find(1, 'abc')
 ---
  - 2
 ...
-localhost> lua t = box.tuple.new('abc')
+localhost> t = box.tuple.new('abc')
 ---
 ...
-localhost> lua t
+localhost> t
 ---
  - 'abc': {}
 ...
-localhost> lua t:bsize()
+localhost> t:bsize()
 ---
  - 4
 ...
@@ -1186,7 +1186,7 @@ localhost> lua t:bsize()
         Construct a new tuple from a Lua table or a scalar.
         </para>
             <bridgehead renderas="sect4">Example</bridgehead>
-            <programlisting>localhost> lua box.tuple.new({tonumber64('18446744073709551615'), 'string', 1})
+            <programlisting>localhost> box.tuple.new({tonumber64('18446744073709551615'), 'string', 1})
 ---
  - 18446744073709551615: {'string', 1}
 ...
@@ -1222,35 +1222,35 @@ localhost> lua t:bsize()
 </variablelist>
     <bridgehead renderas="sect4">Example</bridgehead>
 <programlisting>
-lua box.cjson.encode(123)
+box.cjson.encode(123)
 ---
  - 123
 ...
-lua box.cjson.encode({123})
+box.cjson.encode({123})
 ---
  - [123]
 ...
-lua box.cjson.encode({123, 234, 345})
+box.cjson.encode({123, 234, 345})
 ---
  - [123,234,345]
 ...
-lua box.cjson.encode({abc = 234, cde = 345})
+box.cjson.encode({abc = 234, cde = 345})
 ---
  - {"cde":345,"abc":234}
 ...
-lua box.cjson.encode({hello = { 'world' } })
+box.cjson.encode({hello = { 'world' } })
 ---
  - {"hello":["world"]}
 ...
-lua box.cjson.decode('123')
+box.cjson.decode('123')
 ---
  - 123
 ...
-lua box.cjson.decode('[123, "hello"]')[2]
+box.cjson.decode('[123, "hello"]')[2]
 ---
  - hello
 ...
-lua box.cjson.decode('{"hello": "world"}').hello
+box.cjson.decode('{"hello": "world"}').hello
 ---
  - world
 ...
@@ -1418,7 +1418,7 @@ lua box.cjson.decode('{"hello": "world"}').hello
         </simpara>
                 <bridgehead renderas="sect4">Example</bridgehead>
 <programlisting>
-localhost> lua for k,v in box.space[0]:pairs() do print(v) end
+localhost> for k,v in box.space[0]:pairs() do print(v) end
 ---
 1: {'hello'}
 2: {'my     '}
@@ -1560,19 +1560,19 @@ localhost> INSERT INTO t0 VALUES (5, 2, 1)
 Insert OK, 1 rows affected
 localhost> INSERT INTO t0 VALUES (6, 2, 2)
 Insert OK, 1 rows affected
-localhost> lua it = box.space[0].index[1]:iterator(box.index.EQ, 1); print(it(), " ", it(), " ", it());
+localhost> it = box.space[0].index[1]:iterator(box.index.EQ, 1); print(it(), " ", it(), " ", it());
 ---
 1: {1, 0} 2: {1, 1} 3: {1, 2}
 ...
-localhost> lua it = box.space[0].index[1]:iterator(box.index.EQ, 1, 2); print(it(), " ", it(), " ", it());
+localhost> it = box.space[0].index[1]:iterator(box.index.EQ, 1, 2); print(it(), " ", it(), " ", it());
 ---
 3: {1, 2} nil nil
 ...
-localhost> lua i = box.space[0].index[1]:iterator(box.index.GE, 2, 1);  print(it(), " ", it(), " ", it());
+localhost> i = box.space[0].index[1]:iterator(box.index.GE, 2, 1);  print(it(), " ", it(), " ", it());
 ---
 5: {2, 1} 6: {2, 2} nil
 ...
-localhost> lua for v in box.space[0].index[1]:iterator(box.index.ALL) do print(v) end
+localhost> for v in box.space[0].index[1]:iterator(box.index.ALL) do print(v) end
 ---
 1: {1, 0}
 2: {1, 1}
@@ -1581,7 +1581,7 @@ localhost> lua for v in box.space[0].index[1]:iterator(box.index.ALL) do print(v
 5: {2, 1}
 6: {2, 2}
 ...
-localhost> lua i = box.space[0].index[0]:iterator(box.index.LT, 1);
+localhost> i = box.space[0].index[0]:iterator(box.index.LT, 1);
 ---
 error: 'Iterator type is not supported'
 </programlisting>
@@ -2587,7 +2587,7 @@ self:insert("1", "Hello", "World")
     <varlistentry>
         <term><emphasis role="lua">box.cfg</emphasis></term>
         <listitem><bridgehead renderas="sect4">Example</bridgehead><programlisting>
-localhost> lua for k, v in pairs(box.cfg) do print(k, " = ", v) end
+localhost> for k, v in pairs(box.cfg) do print(k, " = ", v) end
 ---
 io_collect_interval = 0
 pid_file = box.pid
@@ -2624,7 +2624,7 @@ logger = cat - >> tarantool.log
             </simpara>
 
        <bridgehead renderas="sect4">Example</bridgehead><programlisting>
-localhost> lua for k,v in pairs(box.info()) do print(k, ": ", v) end
+localhost> for k,v in pairs(box.info()) do print(k, ": ", v) end
 ---
 version: 1.4.7-92-g4ba95ca
 status: primary
@@ -2646,47 +2646,47 @@ config: /home/unera/work/tarantool/test/box/tarantool_good.cfg
         </term>
         <listitem>
        <bridgehead renderas="sect4">Example</bridgehead><programlisting>
-localhost> lua box.info.pid
+localhost> box.info.pid
 ---
  - 1747
 ...
-localhost> lua box.info.logger_pid
+localhost> box.info.logger_pid
 ---
  - 1748
 ...
-localhost> lua box.info.version
+localhost> box.info.version
 ---
  - 1.4.7-92-g4ba95ca
 ...
-localhost> lua box.info.config
+localhost> box.info.config
 ---
  - /home/unera/work/tarantool/test/box/tarantool_good.cfg
 ...
-localhost> lua box.info.uptime
+localhost> box.info.uptime
 ---
  - 3672
 ...
-localhost> lua box.info.lsn
+localhost> box.info.lsn
 ---
  - 1712
 ...
-localhost> lua box.info.status
+localhost> box.info.status
 ---
  - primary
 ...
-localhost> lua box.info.recovery_lag
+localhost> box.info.recovery_lag
 ---
  - 0.000
 ...
-localhost> lua box.info.recovery_last_update
+localhost> box.info.recovery_last_update
 ---
  - 1306964594.980
 ...
-localhost> lua box.info.snapshot_pid
+localhost> box.info.snapshot_pid
 ---
  - 0
 ...
-localhost> lua for k, v in pairs(box.info.build) do print(k .. ': ', v) end
+localhost> for k, v in pairs(box.info.build) do print(k .. ': ', v) end
 ---
 flags:  -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DCORO_ASM -fno-omit-frame-pointer -fno-stack-protector -fexceptions -funwind-tables -fgnu89-inline -pthread  -Wno-sign-compare -Wno-strict-aliasing -std=gnu99 -Wall -Wextra -Werror
 target: Linux-x86_64-Debug
@@ -2703,20 +2703,20 @@ options: cmake . -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_STATIC=OFF -DENABLE_
     <varlistentry>
         <term><emphasis role="lua">box.slab</emphasis></term>
         <listitem><bridgehead renderas="sect4">Example</bridgehead><programlisting>
-localhost> lua box.slab.arena_used
+localhost> box.slab.arena_used
 ---
  - 4194304
 ...
-localhost> lua box.slab.arena_size
+localhost> box.slab.arena_size
 ---
  - 104857600
 ...
-localhost> lua for k, v in pairs(box.slab.slabs) do print(k) end
+localhost> for k, v in pairs(box.slab.slabs) do print(k) end
 ---
 64
 128
 ...
-localhost> lua for k, v in pairs(box.slab.slabs[64]) do print(k, ':', v) end
+localhost> for k, v in pairs(box.slab.slabs[64]) do print(k, ':', v) end
 ---
 items:1
 bytes_used:160
@@ -2735,15 +2735,15 @@ bytes_free:4194144
     <varlistentry>
         <term><emphasis role="lua">box.stat</emphasis></term>
         <listitem><bridgehead renderas="sect4">Example</bridgehead><programlisting>
-localhost> lua box.stat -- a virtual table
+localhost> box.stat -- a virtual table
 ---
  - table: 0x41a07a08
 ...
-localhost> lua box.stat() -- a full table (the same)
+localhost> box.stat() -- a full table (the same)
 ---
  - table: 0x41a0ebb0
 ...
-localhost> lua for k, v in pairs(box.stat()) do print(k) end
+localhost> for k, v in pairs(box.stat()) do print(k) end
 ---
 DELETE
 SELECT
@@ -2752,17 +2752,17 @@ CALL
 UPDATE
 DELETE_1_3
 ...
-localhost> lua for k, v in pairs(box.stat().DELETE) do print(k, ': ', v) end
+localhost> for k, v in pairs(box.stat().DELETE) do print(k, ': ', v) end
 ---
 total: 23210
 rps: 22
 ...
-localhost> lua for k, v in pairs(box.stat.DELETE) do print(k, ': ', v) end -- the same
+localhost> for k, v in pairs(box.stat.DELETE) do print(k, ': ', v) end -- the same
 ---
 total: 23210
 rps: 22
 ...
-localhost> lua for k, v in pairs(box.stat.SELECT) do print(k, ': ', v) end
+localhost> for k, v in pairs(box.stat.SELECT) do print(k, ': ', v) end
 ---
 total: 34553330
 rps: 23
diff --git a/doc/user/target.db b/doc/user/target.db
index 20f40ca7c4..67cd80f801 100644
--- a/doc/user/target.db
+++ b/doc/user/target.db
@@ -1,5 +1,7 @@
-<div element="book" href="#tarantool-user-guide" number="" targetptr="tarantool-user-guide"><ttl>Tarantool User Guide, version 1.5.1-28-g4f96b1a</ttl><xreftext>Tarantool User Guide, version 1.5.1-28-g4f96b1a</xreftext><div element="chapter" href="#preface" number="1" targetptr="preface"><ttl>Preface</ttl><xreftext>Chapter 1, <i>Preface</i></xreftext><div element="section" href="#tarantool-overview" number="" targetptr="tarantool-overview"><ttl>Tarantool: an overview</ttl><xreftext>the section called “Tarantool: an overview”</xreftext></div><div element="section" href="#manual-conventions" number="" targetptr="manual-conventions"><ttl>Conventions</ttl><xreftext>the section called “Conventions”</xreftext></div><div element="section" href="#reporting-bugs" number="" targetptr="reporting-bugs"><ttl>Reporting bugs</ttl><xreftext>the section called “Reporting bugs”</xreftext></div></div><div element="chapter" href="#getting-started" number="2" targetptr="getting-started"><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 persistence</ttl><xreftext>Chapter 3, <i>Data model and data persistence</i></xreftext><div element="section" href="#dynamic-data-model" number="" targetptr="dynamic-data-model"><ttl>Dynamic data model</ttl><xreftext>the section called “Dynamic data model”</xreftext></div><div element="section" href="#data-persistence" number="" targetptr="data-persistence"><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="#data-manipulation" number="" targetptr="data-manipulation"><ttl>Data manipulation</ttl><xreftext>the section called “Data manipulation”</xreftext><div element="section" href="#memcached-protocol" number="" targetptr="memcached-protocol"><ttl>Memcached protocol</ttl><xreftext>the section called “Memcached protocol”</xreftext></div></div><div element="section" href="#administrative-console" number="" targetptr="administrative-console"><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="filename" href="#init.lua" number="" targetptr="init.lua"><ttl>???TITLE???</ttl><xreftext>init.lua</xreftext></obj><obj element="term" href="#tonumber64" number="" targetptr="tonumber64"><ttl>???TITLE???</ttl><xreftext>tonumber64</xreftext></obj><div element="section" href="#sp-box" number="" targetptr="sp-box"><ttl>Package <code class="code">box</code></ttl><xreftext>the section called “Package <code class="code">box</code>”</xreftext><obj element="variablelist" href="#box" number="" targetptr="box"><ttl>???TITLE???</ttl><xreftext>box</xreftext></obj><obj element="emphasis" href="#box.process" number="" targetptr="box.process"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.select" number="" targetptr="box.select"><ttl>???TITLE???</ttl><xreftext>box.select</xreftext></obj><obj element="emphasis" href="#box.insert" number="" targetptr="box.insert"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.select_limit" number="" targetptr="box.select_limit"><ttl>???TITLE???</ttl><xreftext>box.select_limit</xreftext></obj><obj element="emphasis" href="#box.replace" number="" targetptr="box.replace"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.update" number="" targetptr="box.update"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.delete" number="" targetptr="box.delete"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.select_range" number="" targetptr="box.select_range"><ttl>???TITLE???</ttl><xreftext>box.select_range</xreftext></obj><obj element="emphasis" href="#box.select_reverse_range" number="" targetptr="box.select_reverse_range"><ttl>???TITLE???</ttl><xreftext>box.select_reverse_range</xreftext></obj></div><div element="section" href="#sp-box-tuple" number="" targetptr="sp-box-tuple"><ttl>Package <code class="code">box.tuple</code></ttl><xreftext>the section called “Package <code class="code">box.tuple</code>”</xreftext><obj element="variablelist" href="#box.tuple" number="" targetptr="box.tuple"><ttl>???TITLE???</ttl><xreftext>box.tuple</xreftext></obj></div><div element="section" href="#sp-box-cjson" number="" targetptr="sp-box-cjson"><ttl>Package <code class="code">box.cjson</code></ttl><xreftext>the section called “Package <code class="code">box.cjson</code>”</xreftext><obj element="variablelist" href="#box.cjson" number="" targetptr="box.cjson"><ttl>???TITLE???</ttl><xreftext>box.cjson</xreftext></obj></div><div element="section" href="#sp-box-space" number="" targetptr="sp-box-space"><ttl>Package <code class="code">box.space</code></ttl><xreftext>the section called “Package <code class="code">box.space</code>”</xreftext><obj element="variablelist" href="#box.space" number="" targetptr="box.space"><ttl>???TITLE???</ttl><xreftext>box.space</xreftext></obj><obj element="emphasis" href="#box.space.select_range" number="" targetptr="box.space.select_range"><ttl>???TITLE???</ttl><xreftext>box.space[i].select_range()</xreftext></obj><obj element="emphasis" href="#box.space.select_reverse_range" number="" targetptr="box.space.select_reverse_range"><ttl>???TITLE???</ttl><xreftext>box.space.select_reverse_range</xreftext></obj></div><div element="section" href="#sp-box-index" number="" targetptr="sp-box-index"><ttl>Package <code class="code">box.index</code></ttl><xreftext>the section called “Package <code class="code">box.index</code>”</xreftext><obj element="variablelist" href="#box.index" number="" targetptr="box.index"><ttl>???TITLE???</ttl><xreftext>box.index</xreftext></obj><obj element="emphasis" href="#box.index.iterator" number="" targetptr="box.index.iterator"><ttl>???TITLE???</ttl><xreftext>box.index.iterator(type, ...)</xreftext></obj><obj element="para" href="#iterator-consistency" number="" targetptr="iterator-consistency"><ttl>???TITLE???</ttl><xreftext/></obj><obj element="para" href="#iterator-types" number="" targetptr="iterator-types"><ttl>???TITLE???</ttl><xreftext/></obj><obj element="table" href="#idp25487136" number="4.1"><ttl>Common iterator types</ttl><xreftext>Table 4.1, “Common iterator types”</xreftext></obj><obj element="table" href="#idp25263056" number="4.2"><ttl>TREE iterator types</ttl><xreftext>Table 4.2, “TREE iterator types”</xreftext></obj><obj element="table" href="#idp25506032" number="4.3"><ttl>BITSET iterator types</ttl><xreftext>Table 4.3, “BITSET iterator types”</xreftext></obj></div><div element="section" href="#sp-box-fiber" number="" targetptr="sp-box-fiber"><ttl>Package <code class="code">box.fiber</code></ttl><xreftext>the section called “Package <code class="code">box.fiber</code>”</xreftext><obj element="variablelist" href="#box.fiber" number="" targetptr="box.fiber"><ttl>???TITLE???</ttl><xreftext>???TITLE???</xreftext></obj><obj element="emphasis" href="#box.fiber.id" number="" targetptr="box.fiber.id"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.self" number="" targetptr="box.fiber.self"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.find" number="" targetptr="box.fiber.find"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.create" number="" targetptr="box.fiber.create"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.resume" number="" targetptr="box.fiber.resume"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.yield" number="" targetptr="box.fiber.yield"><ttl>???TITLE???</ttl><xreftext>box.fiber.yield(...)</xreftext></obj><obj element="emphasis" href="#box.fiber.detach" number="" targetptr="box.fiber.detach"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.wrap" number="" targetptr="box.fiber.wrap"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.sleep" number="" targetptr="box.fiber.sleep"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.status" number="" targetptr="box.fiber.status"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.cancel" number="" targetptr="box.fiber.cancel"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.testcancel" number="" targetptr="box.fiber.testcancel"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj></div><div element="section" href="#sp-box-session" number="" targetptr="sp-box-session"><ttl>Package <code class="code">box.session</code></ttl><xreftext>the section called “Package <code class="code">box.session</code>”</xreftext></div><div element="section" href="#sp-box-ipc" number="" targetptr="sp-box-ipc"><ttl>Package <code class="code">box.ipc</code> — inter procedure communication</ttl><xreftext>the section called “Package <code class="code">box.ipc</code> — inter procedure communication”</xreftext><obj element="variablelist" href="#box.ipc" number="" targetptr="box.ipc"><ttl>???TITLE???</ttl><xreftext>???TITLE???</xreftext></obj></div><div element="section" href="#sp-box-socket" number="" targetptr="sp-box-socket"><ttl>Package <code class="code">box.socket</code> — TCP and UDP sockets</ttl><xreftext>the section called “Package <code class="code">box.socket</code> — TCP and UDP sockets”</xreftext><obj element="variablelist" href="#box.socket" number="" targetptr="box.socket"><ttl>???TITLE???</ttl><xreftext>???TITLE???</xreftext></obj><obj element="table" href="#idp25417104" number="4.4"><ttl><code class="code">readline()</code> returns</ttl><xreftext>Table 4.4, “<code class="code">readline()</code> returns”</xreftext></obj></div><div element="section" href="#sp-box-net-box" number="" targetptr="sp-box-net-box"><ttl>Package <code class="code">box.net.box</code> — working with networked Tarantool peers</ttl><xreftext>the section called “Package <code class="code">box.net.box</code> — working with networked Tarantool peers”</xreftext><obj element="variablelist" href="#box.net.box" number="" targetptr="box.net.box"><ttl>???TITLE???</ttl><xreftext>???TITLE???</xreftext></obj><obj element="emphasis" href="#box.net.box.new" number="" targetptr="box.net.box.new"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.ping" number="" targetptr="box.net.box.ping"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.close" number="" targetptr="box.net.box.close"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.select" number="" targetptr="box.net.box.select"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.select_limit" number="" targetptr="box.net.box.select_limit"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.select_range" number="" targetptr="box.net.box.select_range"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.insert" number="" targetptr="box.net.box.insert"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.replace" number="" targetptr="box.net.box.replace"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.update" number="" targetptr="box.net.box.update"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.delete" number="" targetptr="box.net.box.delete"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.call" number="" targetptr="box.net.box.call"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.timeout" number="" targetptr="box.net.box.timeout"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj></div><div element="section" href="#sp-box-cfg" number="" targetptr="sp-box-cfg"><ttl>Packages <code class="code">box.cfg</code>,
+<div element="book" href="#tarantool-user-guide" number="" targetptr="tarantool-user-guide"><ttl>Tarantool User Guide, version 1.6.0-200-gcc37c54</ttl><xreftext>Tarantool User Guide, version 1.6.0-200-gcc37c54</xreftext><div element="chapter" href="#preface" number="1" targetptr="preface"><ttl>Preface</ttl><xreftext>Chapter 1, <i>Preface</i></xreftext><div element="section" href="#tarantool-overview" number="" targetptr="tarantool-overview"><ttl>Tarantool: an overview</ttl><xreftext>the section called “Tarantool: an overview”</xreftext></div><div element="section" href="#manual-conventions" number="" targetptr="manual-conventions"><ttl>Conventions</ttl><xreftext>the section called “Conventions”</xreftext></div><div element="section" href="#reporting-bugs" number="" targetptr="reporting-bugs"><ttl>Reporting bugs</ttl><xreftext>the section called “Reporting bugs”</xreftext></div></div><div element="chapter" href="#getting-started" number="2" targetptr="getting-started"><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 persistence</ttl><xreftext>Chapter 3, <i>Data model and data persistence</i></xreftext><div element="section" href="#dynamic-data-model" number="" targetptr="dynamic-data-model"><ttl>Dynamic data model</ttl><xreftext>the section called “Dynamic data model”</xreftext></div><div element="section" href="#data-persistence" number="" targetptr="data-persistence"><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="#data-manipulation" number="" targetptr="data-manipulation"><ttl>Data manipulation</ttl><xreftext>the section called “Data manipulation”</xreftext></div><div element="section" href="#administrative-console" number="" targetptr="administrative-console"><ttl>Administrative console</ttl><xreftext>the section called “Administrative console”</xreftext><obj element="term" href="#box.snapshot" number="" targetptr="box.snapshot"><ttl>???TITLE???</ttl><xreftext>box.snapshot()</xreftext></obj><obj element="term" href="#box.cfg.reload" number="" targetptr="box.cfg.reload"><ttl>???TITLE???</ttl><xreftext>box.cfg.reload()</xreftext></obj><obj element="term" href="#box.cfg.show" number="" targetptr="box.cfg.show"><ttl>???TITLE???</ttl><xreftext>box.cfg()</xreftext></obj><obj element="term" href="#box.info" number="" targetptr="box.info"><ttl>???TITLE???</ttl><xreftext>box.info()</xreftext></obj><obj element="term" href="#box.stat.show" number="" targetptr="box.stat.show"><ttl>???TITLE???</ttl><xreftext>box.stat()</xreftext></obj><obj element="term" href="#box.slab.info" number="" targetptr="box.slab.info"><ttl>???TITLE???</ttl><xreftext>box.slab.info()</xreftext></obj><obj element="term" href="#box.coredump" number="" targetptr="box.coredump"><ttl>???TITLE???</ttl><xreftext>box.coredump()</xreftext></obj><obj element="term" href="#box.fiber.info" number="" targetptr="box.fiber.info"><ttl>???TITLE???</ttl><xreftext>box.fiber.info()</xreftext></obj><obj element="term" href="#lua-command" number="" targetptr="lua-command"><ttl>???TITLE???</ttl><xreftext>
+        <span class="tntadmin">...</span>
+      </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="filename" href="#init.lua" number="" targetptr="init.lua"><ttl>???TITLE???</ttl><xreftext>init.lua</xreftext></obj><obj element="term" href="#tonumber64" number="" targetptr="tonumber64"><ttl>???TITLE???</ttl><xreftext>tonumber64</xreftext></obj><div element="section" href="#sp-box" number="" targetptr="sp-box"><ttl>Package <code class="code">box</code></ttl><xreftext>the section called “Package <code class="code">box</code>”</xreftext><obj element="variablelist" href="#box" number="" targetptr="box"><ttl>???TITLE???</ttl><xreftext>box</xreftext></obj><obj element="emphasis" href="#box.process" number="" targetptr="box.process"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.select" number="" targetptr="box.select"><ttl>???TITLE???</ttl><xreftext>box.select</xreftext></obj><obj element="emphasis" href="#box.insert" number="" targetptr="box.insert"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.select_limit" number="" targetptr="box.select_limit"><ttl>???TITLE???</ttl><xreftext>box.select_limit</xreftext></obj><obj element="emphasis" href="#box.replace" number="" targetptr="box.replace"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.update" number="" targetptr="box.update"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.delete" number="" targetptr="box.delete"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.select_range" number="" targetptr="box.select_range"><ttl>???TITLE???</ttl><xreftext>box.select_range</xreftext></obj><obj element="emphasis" href="#box.select_reverse_range" number="" targetptr="box.select_reverse_range"><ttl>???TITLE???</ttl><xreftext>box.select_reverse_range</xreftext></obj></div><div element="section" href="#sp-box-tuple" number="" targetptr="sp-box-tuple"><ttl>Package <code class="code">box.tuple</code></ttl><xreftext>the section called “Package <code class="code">box.tuple</code>”</xreftext><obj element="variablelist" href="#box.tuple" number="" targetptr="box.tuple"><ttl>???TITLE???</ttl><xreftext>box.tuple</xreftext></obj></div><div element="section" href="#sp-box-cjson" number="" targetptr="sp-box-cjson"><ttl>Package <code class="code">box.cjson</code></ttl><xreftext>the section called “Package <code class="code">box.cjson</code>”</xreftext><obj element="variablelist" href="#box.cjson" number="" targetptr="box.cjson"><ttl>???TITLE???</ttl><xreftext>box.cjson</xreftext></obj></div><div element="section" href="#sp-box-space" number="" targetptr="sp-box-space"><ttl>Package <code class="code">box.space</code></ttl><xreftext>the section called “Package <code class="code">box.space</code>”</xreftext><obj element="variablelist" href="#box.space" number="" targetptr="box.space"><ttl>???TITLE???</ttl><xreftext>box.space</xreftext></obj><obj element="emphasis" href="#box.space.select_range" number="" targetptr="box.space.select_range"><ttl>???TITLE???</ttl><xreftext>box.space[i].select_range()</xreftext></obj><obj element="emphasis" href="#box.space.select_reverse_range" number="" targetptr="box.space.select_reverse_range"><ttl>???TITLE???</ttl><xreftext>box.space.select_reverse_range</xreftext></obj></div><div element="section" href="#sp-box-index" number="" targetptr="sp-box-index"><ttl>Package <code class="code">box.index</code></ttl><xreftext>the section called “Package <code class="code">box.index</code>”</xreftext><obj element="variablelist" href="#box.index" number="" targetptr="box.index"><ttl>???TITLE???</ttl><xreftext>box.index</xreftext></obj><obj element="emphasis" href="#box.index.iterator" number="" targetptr="box.index.iterator"><ttl>???TITLE???</ttl><xreftext>box.index.iterator(type, ...)</xreftext></obj><obj element="para" href="#iterator-consistency" number="" targetptr="iterator-consistency"><ttl>???TITLE???</ttl><xreftext/></obj><obj element="para" href="#iterator-types" number="" targetptr="iterator-types"><ttl>???TITLE???</ttl><xreftext/></obj><obj element="table" href="#idp261792" number="4.1"><ttl>Common iterator types</ttl><xreftext>Table 4.1, “Common iterator types”</xreftext></obj><obj element="table" href="#idp435056" number="4.2"><ttl>TREE iterator types</ttl><xreftext>Table 4.2, “TREE iterator types”</xreftext></obj><obj element="table" href="#idp452512" number="4.3"><ttl>BITSET iterator types</ttl><xreftext>Table 4.3, “BITSET iterator types”</xreftext></obj></div><div element="section" href="#sp-box-fiber" number="" targetptr="sp-box-fiber"><ttl>Package <code class="code">box.fiber</code></ttl><xreftext>the section called “Package <code class="code">box.fiber</code>”</xreftext><obj element="variablelist" href="#box.fiber" number="" targetptr="box.fiber"><ttl>???TITLE???</ttl><xreftext>???TITLE???</xreftext></obj><obj element="emphasis" href="#box.fiber.id" number="" targetptr="box.fiber.id"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.self" number="" targetptr="box.fiber.self"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.find" number="" targetptr="box.fiber.find"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.create" number="" targetptr="box.fiber.create"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.resume" number="" targetptr="box.fiber.resume"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.yield" number="" targetptr="box.fiber.yield"><ttl>???TITLE???</ttl><xreftext>box.fiber.yield(...)</xreftext></obj><obj element="emphasis" href="#box.fiber.detach" number="" targetptr="box.fiber.detach"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.wrap" number="" targetptr="box.fiber.wrap"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.sleep" number="" targetptr="box.fiber.sleep"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.status" number="" targetptr="box.fiber.status"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.cancel" number="" targetptr="box.fiber.cancel"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.fiber.testcancel" number="" targetptr="box.fiber.testcancel"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj></div><div element="section" href="#sp-box-session" number="" targetptr="sp-box-session"><ttl>Package <code class="code">box.session</code></ttl><xreftext>the section called “Package <code class="code">box.session</code>”</xreftext></div><div element="section" href="#sp-box-ipc" number="" targetptr="sp-box-ipc"><ttl>Package <code class="code">box.ipc</code> — inter procedure communication</ttl><xreftext>the section called “Package <code class="code">box.ipc</code> — inter procedure communication”</xreftext><obj element="variablelist" href="#box.ipc" number="" targetptr="box.ipc"><ttl>???TITLE???</ttl><xreftext>???TITLE???</xreftext></obj></div><div element="section" href="#sp-box-socket" number="" targetptr="sp-box-socket"><ttl>Package <code class="code">box.socket</code> — TCP and UDP sockets</ttl><xreftext>the section called “Package <code class="code">box.socket</code> — TCP and UDP sockets”</xreftext><obj element="variablelist" href="#box.socket" number="" targetptr="box.socket"><ttl>???TITLE???</ttl><xreftext>???TITLE???</xreftext></obj><obj element="table" href="#idp737616" number="4.4"><ttl><code class="code">readline()</code> returns</ttl><xreftext>Table 4.4, “<code class="code">readline()</code> returns”</xreftext></obj></div><div element="section" href="#sp-box-net-box" number="" targetptr="sp-box-net-box"><ttl>Package <code class="code">box.net.box</code> — working with networked Tarantool peers</ttl><xreftext>the section called “Package <code class="code">box.net.box</code> — working with networked Tarantool peers”</xreftext><obj element="variablelist" href="#box.net.box" number="" targetptr="box.net.box"><ttl>???TITLE???</ttl><xreftext>???TITLE???</xreftext></obj><obj element="emphasis" href="#box.net.box.new" number="" targetptr="box.net.box.new"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.ping" number="" targetptr="box.net.box.ping"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.close" number="" targetptr="box.net.box.close"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.select" number="" targetptr="box.net.box.select"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.select_limit" number="" targetptr="box.net.box.select_limit"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.select_range" number="" targetptr="box.net.box.select_range"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.insert" number="" targetptr="box.net.box.insert"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.replace" number="" targetptr="box.net.box.replace"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.update" number="" targetptr="box.net.box.update"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.delete" number="" targetptr="box.net.box.delete"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.call" number="" targetptr="box.net.box.call"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="emphasis" href="#box.net.box.timeout" number="" targetptr="box.net.box.timeout"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj></div><div element="section" href="#sp-box-cfg" number="" targetptr="sp-box-cfg"><ttl>Packages <code class="code">box.cfg</code>,
     <code class="code">box.info</code>, <code class="code">box.slab</code> and
     <code class="code">box.stat</code>: server introspection</ttl><xreftext>the section called “Packages <code class="code">box.cfg</code>,
     <code class="code">box.info</code>, <code class="code">box.slab</code> and
-    <code class="code">box.stat</code>: server introspection”</xreftext><obj element="code" href="#box.cfg" number="" targetptr="box.cfg"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="code" href="#box.stat" number="" targetptr="box.stat"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj></div><div element="section" href="#sp-limitations" number="" targetptr="sp-limitations"><ttl>Limitation of stored procedures</ttl><xreftext>the section called “Limitation of stored procedures”</xreftext></div></div><div element="section" href="#triggers" number="" targetptr="triggers"><ttl>Defining triggers in Lua</ttl><xreftext>the section called “Defining triggers in Lua”</xreftext><div element="section" href="#sp-box-session-triggers" number="" targetptr="sp-box-session-triggers"><ttl>Triggers on connect and disconnect</ttl><xreftext>session triggers</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="#replication-architecture" number="" targetptr="replication-architecture"><ttl>Replication architecture</ttl><xreftext>the section called “Replication architecture”</xreftext></div><div element="section" href="#setting-up-the-master" number="" targetptr="setting-up-the-master"><ttl>Setting up the master</ttl><xreftext>the section called “Setting up the master”</xreftext></div><div element="section" href="#settin-up-a-replica" number="" targetptr="settin-up-a-replica"><ttl>Setting up a replica</ttl><xreftext>the section called “Setting up a replica”</xreftext></div><div element="section" href="#recovering-from-a-degraded-state" number="" targetptr="recovering-from-a-degraded-state"><ttl>Recovering from a degraded state</ttl><xreftext>the section called “Recovering from a degraded state”</xreftext></div></div><div element="chapter" href="#server-administration" number="6" targetptr="server-administration"><ttl>Server administration</ttl><xreftext>Chapter 6, <i>Server administration</i></xreftext><div element="section" href="#signal-handling" number="" targetptr="signal-handling"><ttl>Server signal handling</ttl><xreftext>the section called “Server signal handling”</xreftext></div><div element="section" href="#os-install-notes" number="" targetptr="os-install-notes"><ttl>System-specific administration notes</ttl><xreftext>the section called “System-specific administration notes”</xreftext><div element="section" href="#Debian" number="" targetptr="Debian"><ttl>Debian GNU/Linux and Ubuntu</ttl><xreftext>the section called “Debian GNU/Linux and Ubuntu”</xreftext></div><div element="section" href="#rpm-based-distros" number="" targetptr="rpm-based-distros"><ttl>Fedora, RHEL, CentOS</ttl><xreftext>the section called “Fedora, RHEL, CentOS”</xreftext></div><div element="section" href="#FreeBSD" number="" targetptr="FreeBSD"><ttl>FreeBSD</ttl><xreftext>the section called “FreeBSD”</xreftext></div><div element="section" href="#mac-os-x" number="" targetptr="mac-os-x"><ttl>Mac OS X</ttl><xreftext>the section called “Mac OS X”</xreftext></div></div></div><div element="chapter" href="#configuration-reference" number="7" targetptr="configuration-reference"><ttl>Configuration reference</ttl><xreftext>Chapter 7, <i>Configuration reference</i></xreftext><div element="section" href="#command-line-options" number="" targetptr="command-line-options"><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></div><div element="section" href="#option-file" number="" targetptr="option-file"><ttl>The option file</ttl><xreftext>option file</xreftext><obj element="table" href="#idp25900960" number="7.1"><ttl>Basic parameters</ttl><xreftext>Table 7.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="#script_dir" number="" targetptr="script_dir"><ttl>???TITLE???</ttl><xreftext>script_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="#bind_ipaddr" number="" targetptr="bind_ipaddr"><ttl>???TITLE???</ttl><xreftext>bind_ipaddr</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="#idp25959344" number="7.2"><ttl>Configuring the storage</ttl><xreftext>Table 7.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="#idp25995312" number="7.3"><ttl>Binary logging and snapshots</ttl><xreftext>Table 7.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="#idp26030640" number="7.4"><ttl>Replication</ttl><xreftext>Table 7.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="#idp26049680" number="7.5"><ttl>Networking</ttl><xreftext>Table 7.5, “Networking”</xreftext></obj><obj element="table" href="#idp26069008" number="7.6"><ttl>Logging</ttl><xreftext>Table 7.6, “Logging”</xreftext></obj><obj element="table" href="#idp26093904" number="7.7"><ttl>Memcached protocol support</ttl><xreftext>Table 7.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="8" targetptr="connectors"><ttl>Connectors</ttl><xreftext>Chapter 8, <i>Connectors</i></xreftext><div element="section" href="#connector-c" number="" targetptr="connector-c"><ttl>C</ttl><xreftext>the section called “C”</xreftext></div><div element="section" href="#connector-node.js" number="" targetptr="connector-node.js"><ttl>node.js</ttl><xreftext>the section called “node.js”</xreftext></div><div element="section" href="#connector-perl" number="" targetptr="connector-perl"><ttl>Perl</ttl><xreftext>the section called “Perl”</xreftext></div><div element="section" href="#connector-php" number="" targetptr="connector-php"><ttl>PHP</ttl><xreftext>the section called “PHP”</xreftext></div><div element="section" href="#connector-python" number="" targetptr="connector-python"><ttl>Python</ttl><xreftext>the section called “Python”</xreftext></div><div element="section" href="#connector-ruby" number="" targetptr="connector-ruby"><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_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_PART_COUNT" number="" targetptr="ER_KEY_PART_COUNT"><ttl>???TITLE???</ttl><xreftext>ER_KEY_PART_COUNT</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><obj element="term" href="#ER_FIBER_STACK" number="" targetptr="ER_FIBER_STACK"><ttl>???TITLE???</ttl><xreftext>ER_FIBER_STACK</xreftext></obj></div></div>
+    <code class="code">box.stat</code>: server introspection”</xreftext><obj element="code" href="#box.cfg" number="" targetptr="box.cfg"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj><obj element="code" href="#box.stat" number="" targetptr="box.stat"><ttl>???TITLE???</ttl><xreftext>???</xreftext></obj></div><div element="section" href="#sp-limitations" number="" targetptr="sp-limitations"><ttl>Limitation of stored procedures</ttl><xreftext>the section called “Limitation of stored procedures”</xreftext></div></div><div element="section" href="#triggers" number="" targetptr="triggers"><ttl>Defining triggers in Lua</ttl><xreftext>the section called “Defining triggers in Lua”</xreftext><div element="section" href="#sp-box-session-triggers" number="" targetptr="sp-box-session-triggers"><ttl>Triggers on connect and disconnect</ttl><xreftext>session triggers</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="#replication-architecture" number="" targetptr="replication-architecture"><ttl>Replication architecture</ttl><xreftext>the section called “Replication architecture”</xreftext></div><div element="section" href="#setting-up-the-master" number="" targetptr="setting-up-the-master"><ttl>Setting up the master</ttl><xreftext>the section called “Setting up the master”</xreftext></div><div element="section" href="#settin-up-a-replica" number="" targetptr="settin-up-a-replica"><ttl>Setting up a replica</ttl><xreftext>the section called “Setting up a replica”</xreftext></div><div element="section" href="#recovering-from-a-degraded-state" number="" targetptr="recovering-from-a-degraded-state"><ttl>Recovering from a degraded state</ttl><xreftext>the section called “Recovering from a degraded state”</xreftext></div></div><div element="chapter" href="#server-administration" number="6" targetptr="server-administration"><ttl>Server administration</ttl><xreftext>Chapter 6, <i>Server administration</i></xreftext><div element="section" href="#signal-handling" number="" targetptr="signal-handling"><ttl>Server signal handling</ttl><xreftext>the section called “Server signal handling”</xreftext></div><div element="section" href="#os-install-notes" number="" targetptr="os-install-notes"><ttl>System-specific administration notes</ttl><xreftext>the section called “System-specific administration notes”</xreftext><div element="section" href="#Debian" number="" targetptr="Debian"><ttl>Debian GNU/Linux and Ubuntu</ttl><xreftext>the section called “Debian GNU/Linux and Ubuntu”</xreftext></div><div element="section" href="#rpm-based-distros" number="" targetptr="rpm-based-distros"><ttl>Fedora, RHEL, CentOS</ttl><xreftext>the section called “Fedora, RHEL, CentOS”</xreftext></div><div element="section" href="#FreeBSD" number="" targetptr="FreeBSD"><ttl>FreeBSD</ttl><xreftext>the section called “FreeBSD”</xreftext></div><div element="section" href="#mac-os-x" number="" targetptr="mac-os-x"><ttl>Mac OS X</ttl><xreftext>the section called “Mac OS X”</xreftext></div></div></div><div element="chapter" href="#configuration-reference" number="7" targetptr="configuration-reference"><ttl>Configuration reference</ttl><xreftext>Chapter 7, <i>Configuration reference</i></xreftext><div element="section" href="#command-line-options" number="" targetptr="command-line-options"><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></div><div element="section" href="#option-file" number="" targetptr="option-file"><ttl>The option file</ttl><xreftext>option file</xreftext><obj element="table" href="#idp1267792" number="7.1"><ttl>Basic parameters</ttl><xreftext>Table 7.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="#script_dir" number="" targetptr="script_dir"><ttl>???TITLE???</ttl><xreftext>script_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="#bind_ipaddr" number="" targetptr="bind_ipaddr"><ttl>???TITLE???</ttl><xreftext>bind_ipaddr</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="#idp1325952" number="7.2"><ttl>Configuring the storage</ttl><xreftext>Table 7.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="#idp1361984" number="7.3"><ttl>Binary logging and snapshots</ttl><xreftext>Table 7.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="#idp1397376" number="7.4"><ttl>Replication</ttl><xreftext>Table 7.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="#idp1416416" number="7.5"><ttl>Networking</ttl><xreftext>Table 7.5, “Networking”</xreftext></obj><obj element="table" href="#idp1435744" number="7.6"><ttl>Logging</ttl><xreftext>Table 7.6, “Logging”</xreftext></obj></div></div><div element="chapter" href="#connectors" number="8" targetptr="connectors"><ttl>Connectors</ttl><xreftext>Chapter 8, <i>Connectors</i></xreftext><div element="section" href="#connector-c" number="" targetptr="connector-c"><ttl>C</ttl><xreftext>the section called “C”</xreftext></div><div element="section" href="#connector-node.js" number="" targetptr="connector-node.js"><ttl>node.js</ttl><xreftext>the section called “node.js”</xreftext></div><div element="section" href="#connector-perl" number="" targetptr="connector-perl"><ttl>Perl</ttl><xreftext>the section called “Perl”</xreftext></div><div element="section" href="#connector-php" number="" targetptr="connector-php"><ttl>PHP</ttl><xreftext>the section called “PHP”</xreftext></div><div element="section" href="#connector-python" number="" targetptr="connector-python"><ttl>Python</ttl><xreftext>the section called “Python”</xreftext></div><div element="section" href="#connector-ruby" number="" targetptr="connector-ruby"><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_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_PART_COUNT" number="" targetptr="ER_KEY_PART_COUNT"><ttl>???TITLE???</ttl><xreftext>ER_KEY_PART_COUNT</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><obj element="term" href="#ER_FIBER_STACK" number="" targetptr="ER_FIBER_STACK"><ttl>???TITLE???</ttl><xreftext>ER_FIBER_STACK</xreftext></obj><obj element="term" href="#ER_UPDATE_FIELD" number="" targetptr="ER_UPDATE_FIELD"><ttl>???TITLE???</ttl><xreftext>ER_UPDATE_FIELD</xreftext></obj></div></div>
-- 
GitLab