You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vk...@apache.org on 2022/01/20 22:36:07 UTC

[ignite-3] branch ignite-3.0.0-alpha4 updated: IGNITE-16326 Prepare Documentation for the AI Alpha 4 Release (#570)

This is an automated email from the ASF dual-hosted git repository.

vkulichenko pushed a commit to branch ignite-3.0.0-alpha4
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/ignite-3.0.0-alpha4 by this push:
     new f3afdc1  IGNITE-16326 Prepare Documentation for the AI Alpha 4 Release (#570)
f3afdc1 is described below

commit f3afdc149743b66e4144b82c8a49b49885d62fee
Author: Nikita Safonov <73...@users.noreply.github.com>
AuthorDate: Fri Jan 21 01:32:34 2022 +0300

    IGNITE-16326 Prepare Documentation for the AI Alpha 4 Release (#570)
---
 docs/_data/toc.yaml                                |  22 +-
 .../images/svg/alter_table_column_no_bnf1.svg      | 124 +++++++++
 .../images/svg/alter_table_column_no_bnf2.svg      | 143 +++++++++++
 .../images/svg/alter_table_column_yes_bnf1.svg     | 124 +++++++++
 .../images/svg/alter_table_column_yes_bnf2.svg     | 143 +++++++++++
 docs/_docs/images/svg/alter_table_logging_bnf.svg  | 137 ++++++++++
 .../images/svg/alter_table_no_logging_bnf.svg      | 137 ++++++++++
 .../images/svg/column_definition_or_list_bnf.svg   | 156 +++++++++++
 docs/_docs/images/svg/column_list_bnf.svg          | 144 +++++++++++
 docs/_docs/images/svg/columns_definition_bnf.svg   | 188 ++++++++++++++
 docs/_docs/images/svg/create_table_bnf1.svg        | 120 +++++++++
 docs/_docs/images/svg/create_table_bnf2.svg        | 196 ++++++++++++++
 docs/_docs/images/svg/drop_table_bnf.svg           | 129 ++++++++++
 docs/_docs/images/svg/pk_constraint_bnf.svg        | 162 ++++++++++++
 docs/_docs/images/svg/qualified_table_name_bnf.svg | 124 +++++++++
 .../includes/ignite-cli-download-windows.adoc      |   2 +-
 docs/_docs/index.adoc                              |  11 +-
 docs/_docs/quick-start/getting-started-guide.adoc  |  19 +-
 docs/_docs/rebalance.adoc                          |   5 +-
 docs/_docs/sql-reference/ddl.adoc                  | 285 +++++++++++++++++++++
 docs/_docs/sql-reference/dml.adoc                  |  65 +++++
 .../operators-and-functions.adoc}                  |  93 +------
 docs/_docs/sql/calcite-based-sql-engine.adoc       | 217 +---------------
 docs/_docs/table-views.adoc                        |  45 ++++
 .../transactions/performing-transactions.adoc      |  59 +++++
 25 files changed, 2532 insertions(+), 318 deletions(-)

diff --git a/docs/_data/toc.yaml b/docs/_data/toc.yaml
index 28616ff..89f12ab 100644
--- a/docs/_data/toc.yaml
+++ b/docs/_data/toc.yaml
@@ -18,15 +18,29 @@
   url: quick-start/getting-started-guide
 - title: Ignite CLI Tool
   url: ignite-cli-tool
-- title: Calcite-Based SQL Engine
-  url: sql/calcite-based-sql-engine
-- title: JDBC Driver
-  url: sql/jdbc-driver
+- title: Working with SQL
+  items:
+    - title: Introduction
+      url: sql/calcite-based-sql-engine
+    - title: JDBC Driver
+      url: sql/jdbc-driver
+- title: SQL Reference
+  items:
+    - title: Data Definition Language (DDL)
+      url: sql-reference/ddl
+    - title: Data Manipulation Language (DML)
+      url: sql-reference/dml
+    - title: Supported Operators and Functions
+      url: sql-reference/operators-and-functions
 - title: Binary Client Protocol
   url: binary-protocol
 - title: Native Persistence
   url: persistence
 - title: Data Rebalancing
   url: rebalance
+- title: Performing Transactions
+  url: transactions/performing-transactions
+- title: Table Views
+  url: table-views
 
 
diff --git a/docs/_docs/images/svg/alter_table_column_no_bnf1.svg b/docs/_docs/images/svg/alter_table_column_no_bnf1.svg
new file mode 100644
index 0000000..cca6ebe
--- /dev/null
+++ b/docs/_docs/images/svg/alter_table_column_no_bnf1.svg
@@ -0,0 +1,124 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="625.5" height="82" viewBox="0 0 625.5 82" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g>
+            <path d="M20 21v20m10 -20v20m-10 -10h20"></path>
+        </g>
+        <path d="M40 31h10"></path>
+        <g>
+            <path d="M50 31h0"></path>
+            <path d="M575.5 31h0"></path>
+            <g class="terminal ">
+                <path d="M50 31h0"></path>
+                <path d="M163.5 31h0"></path>
+                <rect x="50" y="20" width="113.5" height="22" rx="10" ry="10"></rect>
+                <text x="106.75" y="35">ALTER TABLE</text>
+            </g>
+            <path d="M163.5 31h10"></path>
+            <g>
+                <path d="M173.5 31h0"></path>
+                <path d="M310 31h0"></path>
+                <path d="M173.5 31h20"></path>
+                <g>
+                    <path d="M193.5 31h96.5"></path>
+                </g>
+                <path d="M290 31h20"></path>
+                <path d="M173.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <g class="terminal ">
+                    <path d="M193.5 51h0"></path>
+                    <path d="M290 51h0"></path>
+                    <rect x="193.5" y="40" width="96.5" height="22" rx="10" ry="10"></rect>
+                    <text x="241.75" y="55">IF EXISTS</text>
+                </g>
+                <path d="M290 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+            </g>
+            <path d="M310 31h10"></path>
+            <a xlink:href="https://ignite.apache.org/docs/3.0.0-alpha/sql-reference/ddl#qualified_table_name">
+                <g class="non-terminal ">
+                    <path d="M320 40h0"></path>
+                    <path d="M510 40h0"></path>
+                    <rect x="320" y="29" width="190" height="22"></rect>
+                    <text x="415" y="44" fill="blue">qualified&#95;table&#95;name</text>
+                </g>
+            </a>
+            <path d="M510 31h10"></path>
+            <path d="M520 31h10"></path>
+            <g>
+                <path d="M530 31h0"></path>
+                <path d="M575.5 31h0"></path>
+                <g class="terminal ">
+                    <path d="M530 31h0"></path>
+                    <path d="M575.5 31h0"></path>
+                    <rect x="530" y="20" width="45.5" height="22" rx="10" ry="10"></rect>
+                    <text x="552.75" y="35">ADD</text>
+                </g>
+            </g>
+        </g>
+        <g fill="none" stroke="black" stroke-width="2">
+            <path stroke-dasharray="5,5" d="M581 32 l30 0" />
+        </g>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
\ No newline at end of file
diff --git a/docs/_docs/images/svg/alter_table_column_no_bnf2.svg b/docs/_docs/images/svg/alter_table_column_no_bnf2.svg
new file mode 100644
index 0000000..9f03132
--- /dev/null
+++ b/docs/_docs/images/svg/alter_table_column_no_bnf2.svg
@@ -0,0 +1,143 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="702.5" height="91" viewBox="0 0 702.5 91" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g fill="none" stroke="black" stroke-width="2">
+            <path stroke-dasharray="5,5" d="M11 40 l30 0" />
+        </g>
+        <path d="M40 40h10"></path>
+        <g>
+            <path d="M50 40h0"></path>
+            <path d="M652.5 40h0"></path>
+            <g>
+                <path d="M50 40h0"></path>
+                <path d="M574 40h0"></path>
+                <g>
+                    <path d="M50 40h0"></path>
+                    <path d="M161 40h0"></path>
+                    <path d="M50 40a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                    <g>
+                        <path d="M70 20h71"></path>
+                    </g>
+                    <path d="M141 20a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <path d="M50 40h20"></path>
+                    <g class="terminal ">
+                        <path d="M70 40h0"></path>
+                        <path d="M141 40h0"></path>
+                        <rect x="70" y="29" width="71" height="22" rx="10" ry="10"></rect>
+                        <text x="105.5" y="44">COLUMN</text>
+                    </g>
+                    <path d="M141 40h20"></path>
+                </g>
+                <g>
+                    <path d="M161 40h0"></path>
+                    <path d="M331.5 40h0"></path>
+                    <path d="M161 40h20"></path>
+                    <g>
+                        <path d="M181 40h130.5"></path>
+                    </g>
+                    <path d="M311.5 40h20"></path>
+                    <path d="M161 40a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <g class="terminal ">
+                        <path d="M181 60h0"></path>
+                        <path d="M311.5 60h0"></path>
+                        <rect x="181" y="49" width="130.5" height="22" rx="10" ry="10"></rect>
+                        <text x="246.25" y="64">IF NOT EXISTS</text>
+                    </g>
+                    <path d="M311.5 60a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                </g>
+                <path d="M331.5 40h10"></path>
+                <a xlink:href="https://ignite.apache.org/docs/3.0.0-alpha/sql-reference/ddl#column_definition_or_list">
+                    <g class="non-terminal ">
+                        <path d="M341.5 40h0"></path>
+                        <path d="M574 40h0"></path>
+                        <rect x="341.5" y="29" width="232.5" height="22"></rect>
+                        <text x="457.75" y="44" fill="blue">column&#95;definition&#95;or&#95;list</text>
+                    </g>
+                </a>
+            </g>
+            <path d="M574 40h10"></path>
+            <g>
+                <path d="M584 40h0"></path>
+                <path d="M652.5 40h0"></path>
+                <path d="M584 40a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                <g>
+                    <path d="M604 20h28.5"></path>
+                </g>
+                <path d="M632.5 20a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <path d="M584 40h20"></path>
+                <g class="terminal ">
+                    <path d="M604 40h0"></path>
+                    <path d="M632.5 40h0"></path>
+                    <rect x="604" y="29" width="28.5" height="22" rx="10" ry="10"></rect>
+                    <text x="618.25" y="44">;</text>
+                </g>
+                <path d="M632.5 40h20"></path>
+            </g>
+        </g>
+        <path d="M652.5 40h10"></path>
+        <path d="M 662.5 40 h 20 m -10 -10 v 20 m 10 -20 v 20"></path>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: ;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
diff --git a/docs/_docs/images/svg/alter_table_column_yes_bnf1.svg b/docs/_docs/images/svg/alter_table_column_yes_bnf1.svg
new file mode 100644
index 0000000..17d477b
--- /dev/null
+++ b/docs/_docs/images/svg/alter_table_column_yes_bnf1.svg
@@ -0,0 +1,124 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="634" height="82" viewBox="0 0 634 82" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g>
+            <path d="M20 21v20m10 -20v20m-10 -10h20"></path>
+        </g>
+        <path d="M40 31h10"></path>
+        <g>
+            <path d="M50 31h0"></path>
+            <path d="M584 31h0"></path>
+            <g class="terminal ">
+                <path d="M50 31h0"></path>
+                <path d="M163.5 31h0"></path>
+                <rect x="50" y="20" width="113.5" height="22" rx="10" ry="10"></rect>
+                <text x="106.75" y="35">ALTER TABLE</text>
+            </g>
+            <path d="M163.5 31h10"></path>
+            <g>
+                <path d="M173.5 31h0"></path>
+                <path d="M310 31h0"></path>
+                <path d="M173.5 31h20"></path>
+                <g>
+                    <path d="M193.5 31h96.5"></path>
+                </g>
+                <path d="M290 31h20"></path>
+                <path d="M173.5 31a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <g class="terminal ">
+                    <path d="M193.5 51h0"></path>
+                    <path d="M290 51h0"></path>
+                    <rect x="193.5" y="40" width="96.5" height="22" rx="10" ry="10"></rect>
+                    <text x="241.75" y="55">IF EXISTS</text>
+                </g>
+                <path d="M290 51a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+            </g>
+            <path d="M310 31h10"></path>
+            <a xlink:href="https://ignite.apache.org/docs/3.0.0-alpha/sql-reference/ddl#qualified_table_name">
+                <g class="non-terminal ">
+                    <path d="M320 40h0"></path>
+                    <path d="M510 40h0"></path>
+                    <rect x="320" y="29" width="190" height="22"></rect>
+                    <text x="415" y="44" fill="blue">qualified&#95;table&#95;name</text>
+                </g>
+            </a>
+            <path d="M510 31h10"></path>
+            <path d="M520 31h10"></path>
+            <g>
+                <path d="M530 31h0"></path>
+                <path d="M584 31h0"></path>
+                <g class="terminal ">
+                    <path d="M530 31h0"></path>
+                    <path d="M584 31h0"></path>
+                    <rect x="530" y="20" width="54" height="22" rx="10" ry="10"></rect>
+                    <text x="557" y="35">DROP</text>
+                </g>
+            </g>
+        </g>
+        <g fill="none" stroke="black" stroke-width="2">
+            <path stroke-dasharray="5,5" d="M588 32 l30 0" />
+        </g>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
diff --git a/docs/_docs/images/svg/alter_table_column_yes_bnf2.svg b/docs/_docs/images/svg/alter_table_column_yes_bnf2.svg
new file mode 100644
index 0000000..ac4641a
--- /dev/null
+++ b/docs/_docs/images/svg/alter_table_column_yes_bnf2.svg
@@ -0,0 +1,143 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="549.5" height="91" viewBox="0 0 549.5 91" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g fill="none" stroke="black" stroke-width="2">
+            <path stroke-dasharray="5,5" d="M10 40 l30 0" />
+        </g>
+        <path d="M40 40h10"></path>
+        <g>
+            <path d="M50 40h0"></path>
+            <path d="M499.5 40h0"></path>
+            <g>
+                <path d="M50 40h0"></path>
+                <path d="M421 40h0"></path>
+                <g>
+                    <path d="M50 40h0"></path>
+                    <path d="M161 40h0"></path>
+                    <path d="M50 40a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                    <g>
+                        <path d="M70 20h71"></path>
+                    </g>
+                    <path d="M141 20a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <path d="M50 40h20"></path>
+                    <g class="terminal ">
+                        <path d="M70 40h0"></path>
+                        <path d="M141 40h0"></path>
+                        <rect x="70" y="29" width="71" height="22" rx="10" ry="10"></rect>
+                        <text x="105.5" y="44">COLUMN</text>
+                    </g>
+                    <path d="M141 40h20"></path>
+                </g>
+                <g>
+                    <path d="M161 40h0"></path>
+                    <path d="M297.5 40h0"></path>
+                    <path d="M161 40h20"></path>
+                    <g>
+                        <path d="M181 40h96.5"></path>
+                    </g>
+                    <path d="M277.5 40h20"></path>
+                    <path d="M161 40a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <g class="terminal ">
+                        <path d="M181 60h0"></path>
+                        <path d="M277.5 60h0"></path>
+                        <rect x="181" y="49" width="96.5" height="22" rx="10" ry="10"></rect>
+                        <text x="229.25" y="64">IF EXISTS</text>
+                    </g>
+                    <path d="M277.5 60a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                </g>
+                <path d="M297.5 40h10"></path>
+                <a xlink:href="https://ignite.apache.org/docs/3.0.0-alpha/sql-reference/ddl#column_list">
+                    <g class="non-terminal ">
+                        <path d="M307.5 40h0"></path>
+                        <path d="M421 40h0"></path>
+                        <rect x="307.5" y="29" width="113.5" height="22"></rect>
+                        <text x="364.25" y="44" fill="blue">column&#95;list</text>
+                    </g>
+                </a>
+            </g>
+            <path d="M421 40h10"></path>
+            <g>
+                <path d="M431 40h0"></path>
+                <path d="M499.5 40h0"></path>
+                <path d="M431 40a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                <g>
+                    <path d="M451 20h28.5"></path>
+                </g>
+                <path d="M479.5 20a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <path d="M431 40h20"></path>
+                <g class="terminal ">
+                    <path d="M451 40h0"></path>
+                    <path d="M479.5 40h0"></path>
+                    <rect x="451" y="29" width="28.5" height="22" rx="10" ry="10"></rect>
+                    <text x="465.25" y="44">;</text>
+                </g>
+                <path d="M479.5 40h20"></path>
+            </g>
+        </g>
+        <path d="M499.5 40h10"></path>
+        <path d="M 509.5 40 h 20 m -10 -10 v 20 m 10 -20 v 20"></path>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
diff --git a/docs/_docs/images/svg/alter_table_logging_bnf.svg b/docs/_docs/images/svg/alter_table_logging_bnf.svg
new file mode 100644
index 0000000..8907bc2
--- /dev/null
+++ b/docs/_docs/images/svg/alter_table_logging_bnf.svg
@@ -0,0 +1,137 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="738" height="91" viewBox="0 0 738 91" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g>
+            <path d="M20 30v20m10 -20v20m-10 -10h20"></path>
+        </g>
+        <path d="M40 40h10"></path>
+        <g>
+            <path d="M50 40h0"></path>
+            <path d="M688 40h0"></path>
+            <g class="terminal ">
+                <path d="M50 40h0"></path>
+                <path d="M163.5 40h0"></path>
+                <rect x="50" y="29" width="113.5" height="22" rx="10" ry="10"></rect>
+                <text x="106.75" y="44">ALTER TABLE</text>
+            </g>
+            <path d="M163.5 40h10"></path>
+            <g>
+                <path d="M173.5 40h0"></path>
+                <path d="M310 40h0"></path>
+                <path d="M173.5 40h20"></path>
+                <g>
+                    <path d="M193.5 40h96.5"></path>
+                </g>
+                <path d="M290 40h20"></path>
+                <path d="M173.5 40a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <g class="terminal ">
+                    <path d="M193.5 60h0"></path>
+                    <path d="M290 60h0"></path>
+                    <rect x="193.5" y="49" width="96.5" height="22" rx="10" ry="10"></rect>
+                    <text x="241.75" y="64">IF EXISTS</text>
+                </g>
+                <path d="M290 60a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+            </g>
+            <path d="M310 40h10"></path>
+            <a xlink:href="https://ignite.apache.org/docs/3.0.0-alpha/sql-reference/ddl#qualified_table_name">
+                <g class="non-terminal ">
+                    <path d="M320 40h0"></path>
+                    <path d="M510 40h0"></path>
+                    <rect x="320" y="29" width="190" height="22"></rect>
+                    <text x="415" y="44" fill="blue">qualified&#95;table&#95;name</text>
+                </g>
+            </a>
+            <path d="M510 40h10"></path>
+            <path d="M520 40h10"></path>
+            <g class="terminal ">
+                <path d="M530 40h0"></path>
+                <path d="M609.5 40h0"></path>
+                <rect x="530" y="29" width="79.5" height="22" rx="10" ry="10"></rect>
+                <text x="569.75" y="44">LOGGING</text>
+            </g>
+            <path d="M609.5 40h10"></path>
+            <g>
+                <path d="M619.5 40h0"></path>
+                <path d="M688 40h0"></path>
+                <path d="M619.5 40a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                <g>
+                    <path d="M639.5 20h28.5"></path>
+                </g>
+                <path d="M668 20a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <path d="M619.5 40h20"></path>
+                <g class="terminal ">
+                    <path d="M639.5 40h0"></path>
+                    <path d="M668 40h0"></path>
+                    <rect x="639.5" y="29" width="28.5" height="22" rx="10" ry="10"></rect>
+                    <text x="653.75" y="44">;</text>
+                </g>
+                <path d="M668 40h20"></path>
+            </g>
+        </g>
+        <path d="M688 40h10"></path>
+        <path d="M 698 40 h 20 m -10 -10 v 20 m 10 -20 v 20"></path>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
\ No newline at end of file
diff --git a/docs/_docs/images/svg/alter_table_no_logging_bnf.svg b/docs/_docs/images/svg/alter_table_no_logging_bnf.svg
new file mode 100644
index 0000000..a53a2d5
--- /dev/null
+++ b/docs/_docs/images/svg/alter_table_no_logging_bnf.svg
@@ -0,0 +1,137 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="755" height="91" viewBox="0 0 755 91" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g>
+            <path d="M20 30v20m10 -20v20m-10 -10h20"></path>
+        </g>
+        <path d="M40 40h10"></path>
+        <g>
+            <path d="M50 40h0"></path>
+            <path d="M705 40h0"></path>
+            <g class="terminal ">
+                <path d="M50 40h0"></path>
+                <path d="M163.5 40h0"></path>
+                <rect x="50" y="29" width="113.5" height="22" rx="10" ry="10"></rect>
+                <text x="106.75" y="44">ALTER TABLE</text>
+            </g>
+            <path d="M163.5 40h10"></path>
+            <g>
+                <path d="M173.5 40h0"></path>
+                <path d="M310 40h0"></path>
+                <path d="M173.5 40h20"></path>
+                <g>
+                    <path d="M193.5 40h96.5"></path>
+                </g>
+                <path d="M290 40h20"></path>
+                <path d="M173.5 40a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <g class="terminal ">
+                    <path d="M193.5 60h0"></path>
+                    <path d="M290 60h0"></path>
+                    <rect x="193.5" y="49" width="96.5" height="22" rx="10" ry="10"></rect>
+                    <text x="241.75" y="64">IF EXISTS</text>
+                </g>
+                <path d="M290 60a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+            </g>
+            <path d="M310 40h10"></path>
+            <a xlink:href="https://ignite.apache.org/docs/3.0.0-alpha/sql-reference/ddl#qualified_table_name">
+                <g class="non-terminal ">
+                    <path d="M320 40h0"></path>
+                    <path d="M510 40h0"></path>
+                    <rect x="320" y="29" width="190" height="22"></rect>
+                    <text x="415" y="44" fill="blue">qualified&#95;table&#95;name</text>
+                </g>
+            </a>
+            <path d="M510 40h10"></path>
+            <path d="M520 40h10"></path>
+            <g class="terminal ">
+                <path d="M530 40h0"></path>
+                <path d="M626.5 40h0"></path>
+                <rect x="530" y="29" width="96.5" height="22" rx="10" ry="10"></rect>
+                <text x="578.25" y="44">NOLOGGING</text>
+            </g>
+            <path d="M626.5 40h10"></path>
+            <g>
+                <path d="M636.5 40h0"></path>
+                <path d="M705 40h0"></path>
+                <path d="M636.5 40a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                <g>
+                    <path d="M656.5 20h28.5"></path>
+                </g>
+                <path d="M685 20a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <path d="M636.5 40h20"></path>
+                <g class="terminal ">
+                    <path d="M656.5 40h0"></path>
+                    <path d="M685 40h0"></path>
+                    <rect x="656.5" y="29" width="28.5" height="22" rx="10" ry="10"></rect>
+                    <text x="670.75" y="44">;</text>
+                </g>
+                <path d="M685 40h20"></path>
+            </g>
+        </g>
+        <path d="M705 40h10"></path>
+        <path d="M 715 40 h 20 m -10 -10 v 20 m 10 -20 v 20"></path>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
diff --git a/docs/_docs/images/svg/column_definition_or_list_bnf.svg b/docs/_docs/images/svg/column_definition_or_list_bnf.svg
new file mode 100644
index 0000000..3654ada
--- /dev/null
+++ b/docs/_docs/images/svg/column_definition_or_list_bnf.svg
@@ -0,0 +1,156 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="527" height="133" viewBox="0 0 527 133" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g>
+            <path d="M20 54v20m0 -10h20"></path>
+        </g>
+        <path d="M40 64h10"></path>
+        <g>
+            <path d="M50 64h0"></path>
+            <path d="M477 64h0"></path>
+            <rect x="50" y="36" width="427" height="77" rx="10" ry="10" class="group-box"></rect>
+            <g>
+                <path d="M50 64h10"></path>
+                <path d="M467 64h10"></path>
+                <g>
+                    <path d="M60 64h0"></path>
+                    <path d="M128.5 64h0"></path>
+                    <path d="M60 64a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                    <g>
+                        <path d="M80 44h28.5"></path>
+                    </g>
+                    <path d="M108.5 44a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <path d="M60 64h20"></path>
+                    <g class="terminal ">
+                        <path d="M80 64h0"></path>
+                        <path d="M108.5 64h0"></path>
+                        <rect x="80" y="53" width="28.5" height="22" rx="10" ry="10"></rect>
+                        <text x="94.25" y="68">(</text>
+                    </g>
+                    <path d="M108.5 64h20"></path>
+                </g>
+                <path d="M128.5 64h10"></path>
+                <g>
+                    <path d="M138.5 64h0"></path>
+                    <path d="M388.5 64h0"></path>
+                    <path d="M138.5 64h10"></path>
+                    <g>
+                        <path d="M148.5 64h0"></path>
+                        <path d="M378.5 64h0"></path>
+                        <g class="non-terminal ">
+                            <path d="M148.5 64h0"></path>
+                            <path d="M262 64h0"></path>
+                            <rect x="148.5" y="53" width="113.5" height="22"></rect>
+                            <text x="205.25" y="68">column&#95;name</text>
+                        </g>
+                        <path d="M262 64h10"></path>
+                        <path d="M272 64h10"></path>
+                        <g class="non-terminal ">
+                            <path d="M282 64h0"></path>
+                            <path d="M378.5 64h0"></path>
+                            <rect x="282" y="53" width="96.5" height="22"></rect>
+                            <text x="330.25" y="68">data&#95;type</text>
+                        </g>
+                    </g>
+                    <path d="M378.5 64h10"></path>
+                    <path d="M148.5 64a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path>
+                    <g class="terminal ">
+                        <path d="M148.5 94h100.75"></path>
+                        <path d="M277.75 94h100.75"></path>
+                        <rect x="249.25" y="83" width="28.5" height="22" rx="10" ry="10"></rect>
+                        <text x="263.5" y="98">,</text>
+                    </g>
+                    <path d="M378.5 94a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path>
+                </g>
+                <path d="M388.5 64h10"></path>
+                <g>
+                    <path d="M398.5 64h0"></path>
+                    <path d="M467 64h0"></path>
+                    <path d="M398.5 64a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                    <g>
+                        <path d="M418.5 44h28.5"></path>
+                    </g>
+                    <path d="M447 44a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <path d="M398.5 64h20"></path>
+                    <g class="terminal ">
+                        <path d="M418.5 64h0"></path>
+                        <path d="M447 64h0"></path>
+                        <rect x="418.5" y="53" width="28.5" height="22" rx="10" ry="10"></rect>
+                        <text x="432.75" y="68">)</text>
+                    </g>
+                    <path d="M447 64h20"></path>
+                </g>
+            </g>
+            <g class="comment ">
+                <path d="M50 28h0"></path>
+                <path d="M235 28h0"></path>
+                <text x="142.5" y="25" class="comment">column&#95;definition&#95;or&#95;list</text>
+            </g>
+        </g>
+        <path d="M477 64h10"></path>
+        <path d="M 487 64 h 20 m 0 -10 v 20"></path>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
\ No newline at end of file
diff --git a/docs/_docs/images/svg/column_list_bnf.svg b/docs/_docs/images/svg/column_list_bnf.svg
new file mode 100644
index 0000000..47460f2
--- /dev/null
+++ b/docs/_docs/images/svg/column_list_bnf.svg
@@ -0,0 +1,144 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="410.5" height="133" viewBox="0 0 410.5 133" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g>
+            <path d="M20 54v20m0 -10h20"></path>
+        </g>
+        <path d="M40 64h10"></path>
+        <g>
+            <path d="M50 64h0"></path>
+            <path d="M360.5 64h0"></path>
+            <rect x="50" y="36" width="310.5" height="77" rx="10" ry="10" class="group-box"></rect>
+            <g>
+                <path d="M50 64h10"></path>
+                <path d="M350.5 64h10"></path>
+                <g>
+                    <path d="M60 64h0"></path>
+                    <path d="M128.5 64h0"></path>
+                    <path d="M60 64a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                    <g>
+                        <path d="M80 44h28.5"></path>
+                    </g>
+                    <path d="M108.5 44a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <path d="M60 64h20"></path>
+                    <g class="terminal ">
+                        <path d="M80 64h0"></path>
+                        <path d="M108.5 64h0"></path>
+                        <rect x="80" y="53" width="28.5" height="22" rx="10" ry="10"></rect>
+                        <text x="94.25" y="68">(</text>
+                    </g>
+                    <path d="M108.5 64h20"></path>
+                </g>
+                <path d="M128.5 64h10"></path>
+                <g>
+                    <path d="M138.5 64h0"></path>
+                    <path d="M272 64h0"></path>
+                    <path d="M138.5 64h10"></path>
+                    <g class="non-terminal ">
+                        <path d="M148.5 64h0"></path>
+                        <path d="M262 64h0"></path>
+                        <rect x="148.5" y="53" width="113.5" height="22"></rect>
+                        <text x="205.25" y="68">column&#95;name</text>
+                    </g>
+                    <path d="M262 64h10"></path>
+                    <path d="M148.5 64a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path>
+                    <g class="terminal ">
+                        <path d="M148.5 94h42.5"></path>
+                        <path d="M219.5 94h42.5"></path>
+                        <rect x="191" y="83" width="28.5" height="22" rx="10" ry="10"></rect>
+                        <text x="205.25" y="98">,</text>
+                    </g>
+                    <path d="M262 94a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path>
+                </g>
+                <path d="M272 64h10"></path>
+                <g>
+                    <path d="M282 64h0"></path>
+                    <path d="M350.5 64h0"></path>
+                    <path d="M282 64a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                    <g>
+                        <path d="M302 44h28.5"></path>
+                    </g>
+                    <path d="M330.5 44a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <path d="M282 64h20"></path>
+                    <g class="terminal ">
+                        <path d="M302 64h0"></path>
+                        <path d="M330.5 64h0"></path>
+                        <rect x="302" y="53" width="28.5" height="22" rx="10" ry="10"></rect>
+                        <text x="316.25" y="68">)</text>
+                    </g>
+                    <path d="M330.5 64h20"></path>
+                </g>
+            </g>
+            <g class="comment ">
+                <path d="M50 28h0"></path>
+                <path d="M137 28h0"></path>
+                <text x="93.5" y="25" class="comment">column&#95;list</text>
+            </g>
+        </g>
+        <path d="M360.5 64h10"></path>
+        <path d="M 370.5 64 h 20 m 0 -10 v 20"></path>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
diff --git a/docs/_docs/images/svg/columns_definition_bnf.svg b/docs/_docs/images/svg/columns_definition_bnf.svg
new file mode 100644
index 0000000..13d5e69
--- /dev/null
+++ b/docs/_docs/images/svg/columns_definition_bnf.svg
@@ -0,0 +1,188 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="912" height="111" viewBox="0 0 912 111" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g>
+            <path d="M20 62v20m0 -10h20"></path>
+        </g>
+        <path d="M40 72h10"></path>
+        <g>
+            <path d="M50 72h0"></path>
+            <path d="M862 72h0"></path>
+            <rect x="50" y="36" width="812" height="55" rx="10" ry="10" class="group-box"></rect>
+            <g>
+                <path d="M50 72h10"></path>
+                <path d="M852 72h10"></path>
+                <g class="non-terminal ">
+                    <path d="M60 72h0"></path>
+                    <path d="M168 72h0"></path>
+                    <rect x="60" y="61" width="108" height="22"></rect>
+                    <text x="114" y="76">column&#95;name</text>
+                </g>
+                <path d="M168 72h10"></path>
+                <path d="M178 72h10"></path>
+                <g class="terminal ">
+                    <path d="M188 72h0"></path>
+                    <path d="M280 72h0"></path>
+                    <rect x="188" y="61" width="92" height="22" rx="10" ry="10"></rect>
+                    <text x="234" y="76">DATA TYPE</text>
+                </g>
+                <path d="M280 72h10"></path>
+                <g>
+                    <path d="M290 72h0"></path>
+                    <path d="M476 72h0"></path>
+                    <path d="M290 72a10 10 0 0 0 10 -10v-8a10 10 0 0 1 10 -10"></path>
+                    <g>
+                        <path d="M310 44h146"></path>
+                    </g>
+                    <path d="M456 44a10 10 0 0 1 10 10v8a10 10 0 0 0 10 10"></path>
+                    <path d="M290 72h20"></path>
+                    <g>
+                        <path d="M310 72h0"></path>
+                        <path d="M456 72h0"></path>
+                        <g>
+                            <path d="M310 72h0"></path>
+                            <path d="M394 72h0"></path>
+                            <path d="M310 72a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                            <g>
+                                <path d="M330 52h44"></path>
+                            </g>
+                            <path d="M374 52a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                            <path d="M310 72h20"></path>
+                            <g class="terminal ">
+                                <path d="M330 72h0"></path>
+                                <path d="M374 72h0"></path>
+                                <rect x="330" y="61" width="44" height="22" rx="10" ry="10"></rect>
+                                <text x="352" y="76">NOT</text>
+                            </g>
+                            <path d="M374 72h20"></path>
+                        </g>
+                        <path d="M394 72h10"></path>
+                        <g class="terminal ">
+                            <path d="M404 72h0"></path>
+                            <path d="M456 72h0"></path>
+                            <rect x="404" y="61" width="52" height="22" rx="10" ry="10"></rect>
+                            <text x="430" y="76">NULL</text>
+                        </g>
+                    </g>
+                    <path d="M456 72h20"></path>
+                </g>
+                <g>
+                    <path d="M476 72h0"></path>
+                    <path d="M736 72h0"></path>
+                    <path d="M476 72a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                    <g>
+                        <path d="M496 52h220"></path>
+                    </g>
+                    <path d="M716 52a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <path d="M476 72h20"></path>
+                    <g>
+                        <path d="M496 72h0"></path>
+                        <path d="M716 72h0"></path>
+                        <g class="terminal ">
+                            <path d="M496 72h0"></path>
+                            <path d="M572 72h0"></path>
+                            <rect x="496" y="61" width="76" height="22" rx="10" ry="10"></rect>
+                            <text x="534" y="76">DEFAULT</text>
+                        </g>
+                        <path d="M572 72h10"></path>
+                        <path d="M582 72h10"></path>
+                        <g class="non-terminal ">
+                            <path d="M592 72h0"></path>
+                            <path d="M716 72h0"></path>
+                            <rect x="592" y="61" width="124" height="22"></rect>
+                            <text x="654" y="76">literal&#95;value</text>
+                        </g>
+                    </g>
+                    <path d="M716 72h20"></path>
+                </g>
+                <g>
+                    <path d="M736 72h0"></path>
+                    <path d="M852 72h0"></path>
+                    <path d="M736 72a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                    <g>
+                        <path d="M756 52h76"></path>
+                    </g>
+                    <path d="M832 52a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <path d="M736 72h20"></path>
+                    <g class="terminal ">
+                        <path d="M756 72h0"></path>
+                        <path d="M832 72h0"></path>
+                        <rect x="756" y="61" width="76" height="22" rx="10" ry="10"></rect>
+                        <text x="794" y="76">PRIMARY</text>
+                    </g>
+                    <path d="M832 72h20"></path>
+                </g>
+            </g>
+            <g class="comment ">
+                <path d="M50 28h0"></path>
+                <path d="M179 28h0"></path>
+                <text x="114.5" y="25" class="comment">column&#95;definition</text>
+            </g>
+        </g>
+        <path d="M862 72h10"></path>
+        <path d="M 872 72 h 20 m 0 -10 v 20"></path>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
diff --git a/docs/_docs/images/svg/create_table_bnf1.svg b/docs/_docs/images/svg/create_table_bnf1.svg
new file mode 100644
index 0000000..ae217f2
--- /dev/null
+++ b/docs/_docs/images/svg/create_table_bnf1.svg
@@ -0,0 +1,120 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="549" height="71" viewBox="0 0 549 71" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g>
+            <path d="M20 30v20m10 -20v20m-10 -10h20"></path>
+        </g>
+        <path d="M40 40h10"></path>
+        <g>
+            <path d="M50 40h0"></path>
+            <path d="M499 40h0"></path>
+            <g class="terminal ">
+                <path d="M50 40h0"></path>
+                <path d="M121 40h0"></path>
+                <rect x="50" y="29" width="71" height="22" rx="10" ry="10"></rect>
+                <text x="85.5" y="44">CREATE</text>
+            </g>
+            <path d="M121 40h10"></path>
+            <path d="M131 40h10"></path>
+            <g class="terminal ">
+                <path d="M141 40h0"></path>
+                <path d="M203.5 40h0"></path>
+                <rect x="141" y="29" width="62.5" height="22" rx="10" ry="10"></rect>
+                <text x="172.25" y="44">TABLE</text>
+            </g>
+            <path d="M203.5 40h10"></path>
+            <g>
+                <path d="M213.5 40h0"></path>
+                <path d="M384 40h0"></path>
+                <path d="M213.5 40a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                <g>
+                    <path d="M233.5 20h130.5"></path>
+                </g>
+                <path d="M364 20a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <path d="M213.5 40h20"></path>
+                <g class="terminal ">
+                    <path d="M233.5 40h0"></path>
+                    <path d="M364 40h0"></path>
+                    <rect x="233.5" y="29" width="130.5" height="22" rx="10" ry="10"></rect>
+                    <text x="298.75" y="44">IF NOT EXISTS</text>
+                </g>
+                <path d="M364 40h20"></path>
+            </g>
+            <path d="M384 40h10"></path>
+            <a xlink:href="https://ignite.apache.org/docs/3.0.0-alpha/sql-reference/ddl#qualified_table_name">
+                <g class="non-terminal ">
+                    <path d="M394 40h0"></path>
+                    <path d="M499 40h0"></path>
+                    <rect x="394" y="29" width="105" height="22"></rect>
+                    <text x="446.5" y="44" fill="blue">table&#95;name</text>
+                </g>
+            </a>
+        </g>
+        <g fill="none" stroke="black" stroke-width="2">
+            <path stroke-dasharray="5,5" d="M505 40 l30 0" />
+        </g>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
diff --git a/docs/_docs/images/svg/create_table_bnf2.svg b/docs/_docs/images/svg/create_table_bnf2.svg
new file mode 100644
index 0000000..1766835
--- /dev/null
+++ b/docs/_docs/images/svg/create_table_bnf2.svg
@@ -0,0 +1,196 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="861" height="122" viewBox="0 0 861 122" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g fill="none" stroke="black" stroke-width="2">
+            <path stroke-dasharray="5,5" d="M10 61 l30 0" />
+        </g>
+        <path d="M40 61h10"></path>
+        <g>
+            <path d="M50 61h0"></path>
+            <path d="M811 61h0"></path>
+            <g class="terminal ">
+                <path d="M50 61h0"></path>
+                <path d="M78.5 61h0"></path>
+                <rect x="50" y="50" width="28.5" height="22" rx="10" ry="10"></rect>
+                <text x="64.25" y="65">(</text>
+            </g>
+            <path d="M78.5 61h10"></path>
+            <path d="M88.5 61h10"></path>
+            <g>
+                <path d="M98.5 61h0"></path>
+                <path d="M331.5 61h0"></path>
+                <path d="M98.5 61h10"></path>
+                <g>
+                    <path d="M108.5 61h0"></path>
+                    <path d="M321.5 61h0"></path>
+                    <path d="M108.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path>
+                    <a xlink:href="https://ignite.apache.org/docs/3.0.0-alpha/sql-reference/ddl#constraint">
+                        <g class="non-terminal ">
+                            <path d="M128.5 31h21.25"></path>
+                            <path d="M280.25 31h21.25"></path>
+                            <rect x="149.75" y="20" width="130.5" height="22"></rect>
+                            <text x="215" y="35" fill="blue">constraint</text>
+                        </g>
+                    </a>
+                    <path d="M301.5 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path>
+                    <path d="M108.5 61h20"></path>
+                    <a xlink:href="https://ignite.apache.org/docs/3.0.0-alpha/sql-reference/ddl#column_definition">
+                        <g class="non-terminal ">
+                            <path d="M128.5 61h0"></path>
+                            <path d="M301.5 61h0"></path>
+                            <rect x="128.5" y="50" width="173" height="22"></rect>
+                            <text x="215" y="65" fill="blue">column&#95;definition</text>
+                        </g>
+                    </a>
+                    <path d="M301.5 61h20"></path>
+                </g>
+                <path d="M321.5 61h10"></path>
+                <path d="M108.5 61a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path>
+                <g class="terminal ">
+                    <path d="M108.5 91h92.25"></path>
+                    <path d="M229.25 91h92.25"></path>
+                    <rect x="200.75" y="80" width="28.5" height="22" rx="10" ry="10"></rect>
+                    <text x="215" y="95">,</text>
+                </g>
+                <path d="M321.5 91a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path>
+            </g>
+            <path d="M331.5 61h10"></path>
+            <path d="M341.5 61h10"></path>
+            <g class="terminal ">
+                <path d="M351.5 61h0"></path>
+                <path d="M380 61h0"></path>
+                <rect x="351.5" y="50" width="28.5" height="22" rx="10" ry="10"></rect>
+                <text x="365.75" y="65">)</text>
+            </g>
+            <path d="M380 61h10"></path>
+            <g>
+                <path d="M390 61h0"></path>
+                <path d="M811 61h0"></path>
+                <path d="M390 61a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                <g>
+                    <path d="M410 41h381"></path>
+                </g>
+                <path d="M791 41a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <path d="M390 61h20"></path>
+                <g>
+                    <path d="M410 61h0"></path>
+                    <path d="M791 61h0"></path>
+                    <g class="terminal ">
+                        <path d="M410 61h0"></path>
+                        <path d="M464 61h0"></path>
+                        <rect x="410" y="50" width="54" height="22" rx="10" ry="10"></rect>
+                        <text x="437" y="65">WITH</text>
+                    </g>
+                    <path d="M464 61h10"></path>
+                    <path d="M474 61h10"></path>
+                    <g>
+                        <path d="M484 61h0"></path>
+                        <path d="M791 61h0"></path>
+                        <path d="M484 61h10"></path>
+                        <g>
+                            <path d="M494 61h0"></path>
+                            <path d="M781 61h0"></path>
+                            <g class="non-terminal ">
+                                <path d="M494 61h0"></path>
+                                <path d="M599 61h0"></path>
+                                <rect x="494" y="50" width="105" height="22"></rect>
+                                <text x="546.5" y="65">param&#95;name</text>
+                            </g>
+                            <path d="M599 61h10"></path>
+                            <path d="M609 61h10"></path>
+                            <g class="terminal ">
+                                <path d="M619 61h0"></path>
+                                <path d="M647.5 61h0"></path>
+                                <rect x="619" y="50" width="28.5" height="22" rx="10" ry="10"></rect>
+                                <text x="633.25" y="65">=</text>
+                            </g>
+                            <path d="M647.5 61h10"></path>
+                            <path d="M657.5 61h10"></path>
+                            <g class="non-terminal ">
+                                <path d="M667.5 61h0"></path>
+                                <path d="M781 61h0"></path>
+                                <rect x="667.5" y="50" width="113.5" height="22"></rect>
+                                <text x="724.25" y="65">param&#95;value</text>
+                            </g>
+                        </g>
+                        <path d="M781 61h10"></path>
+                        <path d="M494 61a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path>
+                        <g class="terminal ">
+                            <path d="M494 91h129.25"></path>
+                            <path d="M651.75 91h129.25"></path>
+                            <rect x="623.25" y="80" width="28.5" height="22" rx="10" ry="10"></rect>
+                            <text x="637.5" y="95">,</text>
+                        </g>
+                        <path d="M781 91a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path>
+                    </g>
+                </g>
+                <path d="M791 61h20"></path>
+            </g>
+        </g>
+        <path d="M811 61h10"></path>
+        <path d="M 821 61 h 20 m -10 -10 v 20 m 10 -20 v 20"></path>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
diff --git a/docs/_docs/images/svg/drop_table_bnf.svg b/docs/_docs/images/svg/drop_table_bnf.svg
new file mode 100644
index 0000000..de5ec60
--- /dev/null
+++ b/docs/_docs/images/svg/drop_table_bnf.svg
@@ -0,0 +1,129 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="630" height="91" viewBox="0 0 630 91" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g>
+            <path d="M20 30v20m10 -20v20m-10 -10h20"></path>
+        </g>
+        <path d="M40 40h10"></path>
+        <g>
+            <path d="M50 40h0"></path>
+            <path d="M580 40h0"></path>
+            <g class="terminal ">
+                <path d="M50 40h0"></path>
+                <path d="M155 40h0"></path>
+                <rect x="50" y="29" width="105" height="22" rx="10" ry="10"></rect>
+                <text x="102.5" y="44">DROP TABLE</text>
+            </g>
+            <path d="M155 40h10"></path>
+            <g>
+                <path d="M165 40h0"></path>
+                <path d="M301.5 40h0"></path>
+                <path d="M165 40h20"></path>
+                <g>
+                    <path d="M185 40h96.5"></path>
+                </g>
+                <path d="M281.5 40h20"></path>
+                <path d="M165 40a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <g class="terminal ">
+                    <path d="M185 60h0"></path>
+                    <path d="M281.5 60h0"></path>
+                    <rect x="185" y="49" width="96.5" height="22" rx="10" ry="10"></rect>
+                    <text x="233.25" y="64">IF EXISTS</text>
+                </g>
+                <path d="M281.5 60a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+            </g>
+            <path d="M301.5 40h10"></path>
+            <a xlink:href="https://ignite.apache.org/docs/3.0.0-alpha/sql-reference/ddl#qualified_table_name">
+                <g class="non-terminal ">
+                    <path d="M311.5 40h0"></path>
+                    <path d="M501.5 40h0"></path>
+                    <rect x="311.5" y="29" width="190" height="22"></rect>
+                    <text x="406.5" y="44" fill="blue">qualified&#95;table&#95;name</text>
+                </g>
+            </a>
+            <path d="M501.5 40h10"></path>
+            <g>
+                <path d="M511.5 40h0"></path>
+                <path d="M580 40h0"></path>
+                <path d="M511.5 40a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                <g>
+                    <path d="M531.5 20h28.5"></path>
+                </g>
+                <path d="M560 20a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                <path d="M511.5 40h20"></path>
+                <g class="terminal ">
+                    <path d="M531.5 40h0"></path>
+                    <path d="M560 40h0"></path>
+                    <rect x="531.5" y="29" width="28.5" height="22" rx="10" ry="10"></rect>
+                    <text x="545.75" y="44">;</text>
+                </g>
+                <path d="M560 40h20"></path>
+            </g>
+        </g>
+        <path d="M580 40h10"></path>
+        <path d="M 590 40 h 20 m -10 -10 v 20 m 10 -20 v 20"></path>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
diff --git a/docs/_docs/images/svg/pk_constraint_bnf.svg b/docs/_docs/images/svg/pk_constraint_bnf.svg
new file mode 100644
index 0000000..cb13482
--- /dev/null
+++ b/docs/_docs/images/svg/pk_constraint_bnf.svg
@@ -0,0 +1,162 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="782" height="133" viewBox="0 0 782 133" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g>
+            <path d="M20 54v20m0 -10h20"></path>
+        </g>
+        <path d="M40 64h10"></path>
+        <g>
+            <path d="M50 64h0"></path>
+            <path d="M732 64h0"></path>
+            <rect x="50" y="36" width="682" height="77" rx="10" ry="10" class="group-box"></rect>
+            <g>
+                <path d="M50 64h10"></path>
+                <path d="M722 64h10"></path>
+                <g>
+                    <path d="M60 64h0"></path>
+                    <path d="M360 64h0"></path>
+                    <path d="M60 64a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                    <g>
+                        <path d="M80 44h260"></path>
+                    </g>
+                    <path d="M340 44a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <path d="M60 64h20"></path>
+                    <g>
+                        <path d="M80 64h0"></path>
+                        <path d="M340 64h0"></path>
+                        <g class="terminal ">
+                            <path d="M80 64h0"></path>
+                            <path d="M180 64h0"></path>
+                            <rect x="80" y="53" width="100" height="22" rx="10" ry="10"></rect>
+                            <text x="130" y="68">CONSTRAINT</text>
+                        </g>
+                        <path d="M180 64h10"></path>
+                        <path d="M190 64h10"></path>
+                        <g class="non-terminal ">
+                            <path d="M200 64h0"></path>
+                            <path d="M340 64h0"></path>
+                            <rect x="200" y="53" width="140" height="22"></rect>
+                            <text x="270" y="68">constraint&#95;name</text>
+                        </g>
+                    </g>
+                    <path d="M340 64h20"></path>
+                </g>
+                <path d="M360 64h10"></path>
+                <g class="terminal ">
+                    <path d="M370 64h0"></path>
+                    <path d="M478 64h0"></path>
+                    <rect x="370" y="53" width="108" height="22" rx="10" ry="10"></rect>
+                    <text x="424" y="68">PRIMARY KEY</text>
+                </g>
+                <path d="M478 64h10"></path>
+                <path d="M488 64h10"></path>
+                <g class="terminal ">
+                    <path d="M498 64h0"></path>
+                    <path d="M526 64h0"></path>
+                    <rect x="498" y="53" width="28" height="22" rx="10" ry="10"></rect>
+                    <text x="512" y="68">(</text>
+                </g>
+                <path d="M526 64h10"></path>
+                <path d="M536 64h10"></path>
+                <g>
+                    <path d="M546 64h0"></path>
+                    <path d="M674 64h0"></path>
+                    <path d="M546 64h10"></path>
+                    <g class="non-terminal ">
+                        <path d="M556 64h0"></path>
+                        <path d="M664 64h0"></path>
+                        <rect x="556" y="53" width="108" height="22"></rect>
+                        <text x="610" y="68">column&#95;name</text>
+                    </g>
+                    <path d="M664 64h10"></path>
+                    <path d="M556 64a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path>
+                    <g class="terminal ">
+                        <path d="M556 94h40"></path>
+                        <path d="M624 94h40"></path>
+                        <rect x="596" y="83" width="28" height="22" rx="10" ry="10"></rect>
+                        <text x="610" y="98">,</text>
+                    </g>
+                    <path d="M664 94a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path>
+                </g>
+                <path d="M674 64h10"></path>
+                <path d="M684 64h10"></path>
+                <g class="terminal ">
+                    <path d="M694 64h0"></path>
+                    <path d="M722 64h0"></path>
+                    <rect x="694" y="53" width="28" height="22" rx="10" ry="10"></rect>
+                    <text x="708" y="68">)</text>
+                </g>
+            </g>
+            <g class="comment ">
+                <path d="M50 28h0"></path>
+                <path d="M130 28h0"></path>
+                <text x="90" y="25" class="comment">constraint</text>
+            </g>
+        </g>
+        <path d="M732 64h10"></path>
+        <path d="M 742 64 h 20 m 0 -10 v 20"></path>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #eee;
+        }</style>
+</svg>
diff --git a/docs/_docs/images/svg/qualified_table_name_bnf.svg b/docs/_docs/images/svg/qualified_table_name_bnf.svg
new file mode 100644
index 0000000..1595b4e
--- /dev/null
+++ b/docs/_docs/images/svg/qualified_table_name_bnf.svg
@@ -0,0 +1,124 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<svg class="railroad-diagram" width="394.5" height="114" viewBox="0 0 394.5 114" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g transform="translate(.5 .5)">
+        <g>
+            <path d="M20 45v20m0 -10h20"></path>
+        </g>
+        <path d="M40 55h10"></path>
+        <g>
+            <path d="M50 55h0"></path>
+            <path d="M344.5 55h0"></path>
+            <rect x="50" y="36" width="294.5" height="58" rx="10" ry="10" class="group-box"></rect>
+            <g>
+                <path d="M50 55h10"></path>
+                <path d="M334.5 55h10"></path>
+                <g>
+                    <path d="M60 55h0"></path>
+                    <path d="M219.5 55h0"></path>
+                    <path d="M60 55h20"></path>
+                    <g>
+                        <path d="M80 55h119.5"></path>
+                    </g>
+                    <path d="M199.5 55h20"></path>
+                    <path d="M60 55a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
+                    <g>
+                        <path d="M80 75h0"></path>
+                        <path d="M199.5 75h0"></path>
+                        <g class="non-terminal ">
+                            <path d="M80 75h0"></path>
+                            <path d="M151 75h0"></path>
+                            <rect x="80" y="64" width="71" height="22"></rect>
+                            <text x="115.5" y="79">schema</text>
+                        </g>
+                        <path d="M151 75h10"></path>
+                        <path d="M161 75h10"></path>
+                        <g class="terminal ">
+                            <path d="M171 75h0"></path>
+                            <path d="M199.5 75h0"></path>
+                            <rect x="171" y="64" width="28.5" height="22" rx="10" ry="10"></rect>
+                            <text x="185.25" y="79">.</text>
+                        </g>
+                    </g>
+                    <path d="M199.5 75a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
+                </g>
+                <path d="M219.5 55h10"></path>
+                <g class="non-terminal ">
+                    <path d="M229.5 55h0"></path>
+                    <path d="M334.5 55h0"></path>
+                    <rect x="229.5" y="44" width="105" height="22"></rect>
+                    <text x="282" y="59">table&#95;name</text>
+                </g>
+            </g>
+            <g class="comment ">
+                <path d="M50 28h0"></path>
+                <path d="M200 28h0"></path>
+                <text x="125" y="25" class="comment">qualified&#95;table&#95;name</text>
+            </g>
+        </g>
+        <path d="M344.5 55h10"></path>
+        <path d="M 354.5 55 h 20 m 0 -10 v 20"></path>
+    </g>
+    <style>
+        svg {
+        background-color: hsl(0,0%,100%);
+        }
+        path {
+        stroke-width: 2;
+        stroke: black;
+        fill: rgba(0,0,0,0);
+        }
+        text {
+        font: bold 14px monospace;
+        text-anchor: middle;
+        white-space: pre;
+        }
+        text.diagram-text {
+        font-size: 12px;
+        }
+        text.diagram-arrow {
+        font-size: 16px;
+        }
+        text.label {
+        text-anchor: start;
+        }
+        text.comment {
+        font: italic 12px monospace;
+        }
+        g.non-terminal text {
+        /&#42;font-style: italic;&#42;/
+        }
+        rect {
+        stroke-width: 2;
+        stroke: black;
+        fill: hsl(0,0%,100%);
+        }
+        rect.group-box {
+        stroke: gray;
+        stroke-dasharray: 10 5;
+        fill: none;
+        }
+        path.diagram-text {
+        stroke-width: 2;
+        stroke: black;
+        fill: white;
+        cursor: help;
+        }
+        g.diagram-text:hover path.diagram-text {
+        fill: #ffa500;
+        }</style>
+</svg>
diff --git a/docs/_docs/includes/ignite-cli-download-windows.adoc b/docs/_docs/includes/ignite-cli-download-windows.adoc
index 4b65663..a13ce48 100644
--- a/docs/_docs/includes/ignite-cli-download-windows.adoc
+++ b/docs/_docs/includes/ignite-cli-download-windows.adoc
@@ -14,5 +14,5 @@
 // limitations under the License.
 
 // tag::command[]
-curl "https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=ignite/3.0.0-alpha3/apache-ignite-3.0.0-alpha3.zip" -o apache-ignite-3.0.0-alpha3.zip
+curl "https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=ignite/3.0.0-alpha4/apache-ignite-3.0.0-alpha4.zip" -o apache-ignite-3.0.0-alpha4.zip
 // end::command[]
diff --git a/docs/_docs/index.adoc b/docs/_docs/index.adoc
index f9a0d09..624258e 100644
--- a/docs/_docs/index.adoc
+++ b/docs/_docs/index.adoc
@@ -35,12 +35,11 @@ possesses the highest level of usability thanks to the following improvements:
 * See a link:https://cwiki.apache.org/confluence/display/IGNITE/Proposals+for+Ignite+3.0[full list of improvements,window=_blank].
 
 
-== New in Alpha 3
+== New in Alpha 4
 
-Apache Ignite Alpha 3 comes with the following new features:
+Apache Ignite Alpha 4 comes with the following new features:
 
-* New SQL engine based on Apache Calcite with implemented JDBC driver;
-* Persistence implementation based on RocksDB;
-* New binary client protocol with an implementation in Java;
-* Data rebalancing.
+* Transactions functionality;
+* Data Definition Language (DDL) commands;
+* Table views.
 
diff --git a/docs/_docs/quick-start/getting-started-guide.adoc b/docs/_docs/quick-start/getting-started-guide.adoc
index a920626..d529bad 100644
--- a/docs/_docs/quick-start/getting-started-guide.adoc
+++ b/docs/_docs/quick-start/getting-started-guide.adoc
@@ -14,7 +14,7 @@
 // limitations under the License.
 = Getting Started Guide
 
-This guide provides essential details on how to start working with Ignite 3.0 alpha 3 by using the Ignite CLI tool, including the following information:
+This guide provides essential details on how to start working with Ignite 3.0 Alpha 4 by using the Ignite CLI tool, including the following information:
 
 * How to download and install the tool.
 * How to use the Ignite CLI tool to manage nodes.
@@ -24,14 +24,13 @@ This guide provides essential details on how to start working with Ignite 3.0 al
 == Prerequisites
 
 
-Ignite 3.0 alpha 3 was officially tested on:
+Ignite 3.0 Alpha 4 was officially tested on:
 
 include::../includes/prereqs.adoc[]
 
 
 == Installing Ignite CLI Tool
 
-
 To download and install the Ignite CLI Tool, follow the steps below:
 
 . Download the archive with the Ignite CLI tool:
@@ -41,7 +40,7 @@ To download and install the Ignite CLI Tool, follow the steps below:
 tab:Unix[]
 [source,shell]
 ----
-curl -L "https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=ignite/3.0.0-alpha3/apache-ignite-3.0.0-alpha3.zip" -o apache-ignite-3.0.0-alpha3.zip
+curl -L "https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=ignite/3.0.0-alpha4/apache-ignite-3.0.0-alpha4.zip" -o apache-ignite-3.0.0-alpha4.zip
 ----
 
 tab:Windows (PowerShell)[]
@@ -64,19 +63,19 @@ include::../includes/ignite-cli-download-windows.adoc[tag=command,indent=0]
 tab:Unix[]
 [source,shell]
 ----
-unzip apache-ignite-3.0.0-alpha3.zip && cd apache-ignite-3.0.0-alpha3
+unzip apache-ignite-3.0.0-alpha4.zip && cd apache-ignite-3.0.0-alpha4
 ----
 
 tab:Windows (PowerShell)[]
 [source,shell]
 ----
-Expand-Archive apache-ignite-3.0.0-alpha3.zip -DestinationPath . ; cd apache-ignite-3.0.0-alpha3
+Expand-Archive apache-ignite-3.0.0-alpha4.zip -DestinationPath . ; cd apache-ignite-3.0.0-alpha4
 ----
 
 tab:Windows (CMD)[]
 [source,shell]
 ----
-tar -xf apache-ignite-3.0.0-alpha3.zip & cd apache-ignite-3.0.0-alpha3
+tar -xf apache-ignite-3.0.0-alpha4.zip & cd apache-ignite-3.0.0-alpha4
 ----
 --
 
@@ -141,7 +140,7 @@ WARNING:
 If you have installed one of the Ignite 3 Alpha releases before, please remove the `~/.ignitecfg` file before proceeding. This is a temporary step, the procedure will be improved in the future releases.
 ----
 
-. To start an Ignite 3.0 alpha 3 cluster, you need to install Ignite core artifacts first:
+. To start an Ignite 3.0 Alpha 4 cluster, you need to install Ignite core artifacts first:
 +
 [source, shell]
 ----
@@ -187,7 +186,7 @@ For example, use the `cat` command on a Unix operating system.
 
 == Built-in Examples
 
-Ignite 3.0 alpha 3 comes with examples that are configured as a separate Maven project located in the `examples` folder.
+Ignite 3.0 Alpha 4 comes with examples that are configured as a separate Maven project located in the `examples` folder.
 
 The project includes the following examples:
 
@@ -196,7 +195,7 @@ The project includes the following examples:
 * `SqlJdbcExample` - demonstrates the usage of the Apache Ignite JDBC driver.
 * `RebalanceExample` - demonstrates the data rebalancing process.
 
-To run the `RebalanceExample`, refer to its link:https://github.com/apache/ignite-3/blob/3.0.0-alpha3/examples/src/main/java/org/apache/ignite/example/rebalance/RebalanceExample.java[JavaDoc,window=_blank] for instructions.
+To run the `RebalanceExample`, refer to its link:https://github.com/apache/ignite-3/blob/3.0.0-alpha4/examples/src/main/java/org/apache/ignite/example/rebalance/RebalanceExample.java[JavaDoc,window=_blank] for instructions.
 
 To run any other example, perform the following steps:
 
diff --git a/docs/_docs/rebalance.adoc b/docs/_docs/rebalance.adoc
index 63b6c4a..54fe40c 100644
--- a/docs/_docs/rebalance.adoc
+++ b/docs/_docs/rebalance.adoc
@@ -17,10 +17,7 @@
 When a new node joins the cluster, some of the partitions are relocated to the new node so that the data remains distributed equally in the cluster. This process is called data rebalancing.
 If an existing node permanently leaves the cluster and backups are not configured, you lose the partitions stored on this node. When backups are configured, one of the backup copies of the lost partitions becomes a primary partition and the rebalancing process is initiated.
 
-WARNING:
-----
-Data rebalancing is triggered by changes in the Baseline Topology. In pure in-memory clusters, the default behavior is to start rebalancing immediately when a node leaves or joins the cluster (the baseline topology changes automatically). In clusters with persistence, the baseline topology has to be changed manually (default behavior), or can be changed automatically when automatic baseline adjustment is enabled.
-----
+WARNING: Data rebalancing is triggered by changes in the Baseline Topology. In pure in-memory clusters, the default behavior is to start rebalancing immediately when a node leaves or joins the cluster (the baseline topology changes automatically). In clusters with persistence, the baseline topology has to be changed manually (default behavior), or can be changed automatically when automatic baseline adjustment is enabled.
 
 == Running an Example
 
diff --git a/docs/_docs/sql-reference/ddl.adoc b/docs/_docs/sql-reference/ddl.adoc
new file mode 100644
index 0000000..778826f
--- /dev/null
+++ b/docs/_docs/sql-reference/ddl.adoc
@@ -0,0 +1,285 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+= Data Definition Language (DDL)
+
+This section walks you through all data definition language (DDL) commands supported by Apache Ignite 3.0 Alpha 4.
+
+== CREATE TABLE
+
+Creates a new table.
+
+[source,sql]
+----
+CREATE TABLE [IF NOT EXISTS] [simpleName | schemaName.simpleName] (tableColumn [, tableColumn]...)
+[WITH paramName=paramValue [,paramName=paramValue]...]
+tableColumn = columnName columnType [[NOT] NULL] [DEFAULT defaultValue] [PRIMARY KEY]
+----
+
+Parameters:
+
+* `tableName` - name of the table.
+* `tableColumn` - name and type of a column to be created in the new table.
+* `DEFAULT` - specifies a default value for the column. Only constant values are accepted.
+* `IF NOT EXISTS` - create the table only if a table with the same name does not exist.
+* `WITH` - accepts additional parameters not defined by ANSI-99 SQL:
+
+** `Replicas` - sets the number of partition copies, including the master copy.
+** `Partitions` - sets the number of table partitions.
+
+image::images/svg/create_table_bnf1.svg[Embedded,opts=inline]
+image::images/svg/create_table_bnf2.svg[Embedded,opts=inline]
+
+Examples:
+
+Create Person table:
+
+[source,sql]
+----
+CREATE TABLE IF NOT EXISTS Person (
+  id int primary key,
+  city_id int,
+  name varchar,
+  age int,
+  company varchar,
+)
+----
+
+== ALTER TABLE
+
+Modifies the structure of an existing table.
+
+[NOTE]
+====
+[discrete]
+=== Scope of ALTER TABLE
+Presently, Apache Ignite only supports addition and removal of columns.
+====
+
+* *ALTER TABLE IF EXISTS table LOGGING*
+
+[source,sql]
+----
+ALTER TABLE [IF EXISTS] tableName {LOGGING}
+----
+
+Parameters:
+
+- `IF EXISTS` - if applied to `TABLE`, do not throw an error if a table with the specified table name does not exist. If applied to `COLUMN`, do not throw an error if a column with the specified name does not exist.
+- `qualified_table_name` - the name of the table.
+- `LOGGING` - enables write-ahead logging for the table. The command is relevant only if Ignite link:https://ignite.apache.org/docs/3.0.0-alpha/persistence[persistence,window=_blank] is used.
+
+image::images/svg/alter_table_logging_bnf.svg[Embedded,opts=inline]
+
+* *ALTER TABLE IF EXISTS table NOLOGGING*
+
+[source,sql]
+----
+ALTER TABLE [IF EXISTS] tableName {NOLOGGING}
+----
+
+Parameters:
+
+- `IF EXISTS` - if applied to `TABLE`, do not throw an error if a table with the specified table name does not exist. If applied to `COLUMN`, do not throw an error if a column with the specified name does not exist.
+- `qualified_table_name` - the name of the table.
+- `NOLOGGING` - disables write-ahead logging for the table. The command is relevant only if Ignite link:https://ignite.apache.org/docs/3.0.0-alpha/persistence[persistence,window=_blank] is used.
+
+image::images/svg/alter_table_no_logging_bnf.svg[Embedded,opts=inline]
+
+* *ALTER TABLE IF EXISTS table ADD COLUMN IF NOT EXISTS (column1 int, column2 int)*
+
+[source,sql]
+----
+ALTER TABLE [IF EXISTS] tableName {ADD [COLUMN] {[IF NOT EXISTS] (tableColumn [column1 int, column2 int])}
+----
+
+Parameters:
+
+- `IF EXISTS` - if applied to `TABLE`, do not throw an error if a table with the specified table name does not exist. If applied to `COLUMN`, do not throw an error if a column with the specified name does not exist.
+- `qualified_table_name` - the name of the table.
+- `ADD` - adds a new column or several columns to a previously created table. Once a column is added, it can be accessed using link:sql-reference/dml[DML commands,window=_blank] and indexed with the CREATE INDEX statement (currently not supported).
+- `COLUMN` - name of the defined column.
+- `IF NOT EXISTS` - do not throw an error if a column with the same name already exists.
+- `column_definition_or_list` - the name of the column or the list of columns to be added.
+
+image::images/svg/alter_table_column_no_bnf1.svg[Embedded,opts=inline]
+image::images/svg/alter_table_column_no_bnf2.svg[Embedded,opts=inline]
+
+* *ALTER TABLE IF EXISTS table ADD COLUMN IF EXISTS (column1, column2 int)*
+
+[source,sql]
+----
+ALTER TABLE [IF EXISTS] tableName DROP [COLUMN] {[IF EXISTS] (columnName [column1, column2 int])}
+----
+
+Parameters:
+
+- `IF EXISTS` - if applied to `TABLE`, do not throw an error if a table with the specified table name does not exist. If applied to `COLUMN`, do not throw an error if a column with the specified name does not exist.
+- `qualified_table_name` - the name of the table.
+- `DROP` - removes an existing column or multiple columns from a table. Once a column is removed, it cannot be accessed within queries. Consider the following notes and limitations:
+- `COLUMN` - name of the defined column.
+- `column_list` - the name of the list of columns to be removed.
+
+image::images/svg/alter_table_column_yes_bnf1.svg[Embedded,opts=inline]
+image::images/svg/alter_table_column_yes_bnf2.svg[Embedded,opts=inline]
+
+- The command does not remove actual data from the cluster which means that if the column 'name' is dropped, the value of the 'name' is still stored in the cluster. This limitation is to be addressed in the next releases.
+- If the column was indexed, the index has to be dropped manually using the 'DROP INDEX' command.
+- It is not possible to remove a column that is a primary key or a part of such a key.
+- It is not possible to remove a column if it represents the whole value stored in the cluster. The limitation is relevant for primitive values.
+Ignite stores data in the form of key-value pairs and all the new columns will belong to the value. It's not possible to change a set of columns of the key (`PRIMARY KEY`).
+
+Both DDL and DML commands targeting the same table are blocked for a short time until `ALTER TABLE` is in progress.
+
+Schema changes applied by this command are persisted on disk if link:https://ignite.apache.org/docs/3.0.0-alpha/persistence[persistence,window=_blank] is enabled. Thus, the changes can survive full cluster restarts.
+
+Examples:
+
+Add a column to the table:
+
+[source,sql]
+----
+ALTER TABLE Person ADD COLUMN city varchar;
+----
+
+Add a new column to the table only if a column with the same name does not exist:
+
+[source,sql]
+----
+ALTER TABLE City ADD COLUMN IF NOT EXISTS population int;
+----
+
+Add a column​ only if the table exists:
+
+[source,sql]
+----
+ALTER TABLE IF EXISTS Missing ADD number long;
+----
+
+Add several columns to the table at once:
+
+[source,sql]
+----
+ALTER TABLE Region ADD COLUMN (code varchar, gdp double);
+----
+
+Drop a column from the table:
+
+[source,sql]
+----
+ALTER TABLE Person DROP COLUMN city;
+----
+
+Drop a column from the table only if a column with the same name does exist:
+
+[source,sql]
+----
+ALTER TABLE Person DROP COLUMN IF EXISTS population;
+----
+
+Drop a column only if the table exists:
+
+[source,sql]
+----
+ALTER TABLE IF EXISTS Person DROP COLUMN number;
+----
+
+Drop several columns from the table at once:
+
+[source,sql]
+----
+ALTER TABLE Person DROP COLUMN (code, gdp);
+----
+
+Disable write-ahead logging:
+
+[source,sql]
+----
+ALTER TABLE Person NOLOGGING
+----
+
+== DROP TABLE
+
+The `DROP TABLE` command drops an existing table.
+The underlying cache with all the data in it is destroyed, too.
+
+[source,sql]
+----
+DROP TABLE [IF EXISTS] tableName
+----
+
+Parameters:
+
+- `tableName` - the name of the table.
+- `IF NOT EXISTS` - do not throw an error if a table with the same name does not exist.
+
+image::images/svg/drop_table_bnf.svg[Embedded,opts=inline]
+
+Both DDL and DML commands targeting the same table are blocked while the `DROP TABLE` is in progress.
+Once the table is dropped, all pending commands will fail with appropriate errors.
+
+Schema changes applied by this command are persisted on disk if link:https://ignite.apache.org/docs/3.0.0-alpha/persistence[persistence,window=_blank] is enabled. Thus, the changes can survive full cluster restarts.
+
+Examples:
+
+Drop Person table if the one exists:
+
+[source,sql]
+----
+DROP TABLE IF EXISTS "Person";
+----
+
+= Grammar Reference
+
+== column_definition_or_list
+
+image::images/svg/column_definition_or_list_bnf.svg[Embedded,opts=inline]
+
+Referenced by:
+
+* link:sql-reference/ddl#alter-table[ALTER TABLE]
+
+== column_definition
+
+image::images/svg/columns_definition_bnf.svg[Embedded,opts=inline]
+
+Referenced by:
+
+* link:sql-reference/ddl#create-table[CREATE TABLE]
+
+== column_list
+
+image::images/svg/column_list_bnf.svg[Embedded,opts=inline]
+
+Referenced by:
+
+* link:sql-reference/ddl#alter-table[ALTER TABLE]
+
+== constraint
+
+image::images/svg/pk_constraint_bnf.svg[Embedded,opts=inline]
+
+Referenced by:
+
+* link:sql-reference/ddl#create-table[CREATE TABLE]
+
+== qualified_table_name
+
+image::images/svg/qualified_table_name_bnf.svg[Embedded,opts=inline]
+
+Referenced by:
+
+* link:sql-reference/ddl#сreate-table[CREATE TABLE]
+* link:sql-reference/ddl#alter-table[ALTER TABLE]
+* link:sql-reference/ddl#drop-table[DROP TABLE]
\ No newline at end of file
diff --git a/docs/_docs/sql-reference/dml.adoc b/docs/_docs/sql-reference/dml.adoc
new file mode 100644
index 0000000..c215443
--- /dev/null
+++ b/docs/_docs/sql-reference/dml.adoc
@@ -0,0 +1,65 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+= Data Manipulation Language (DML)
+
+This section walks you through all data manipulation language (DML) commands supported by Apache Ignite 3.0 Alpha 4.
+
+WARNING: Currently, `WITH` and `MERGE` commands are not supported.
+
+== SELECT
+
+Retrieves data from a table or multiple tables.
+
+[source,sql]
+----
+SELECT [ hintComment ] [ STREAM ] [ ALL | DISTINCT ]
+    { * | projectItem [, projectItem ]* }
+FROM tableExpression
+[ WHERE booleanExpression ]
+[ GROUP BY { groupItem [, groupItem ]* } ]
+[ HAVING booleanExpression ]
+----
+
+== INSERT
+
+Inserts data into a table.
+
+[source,sql]
+----
+{ INSERT } INTO tablePrimary
+[ '(' column [, column ]* ')' ]
+query
+----
+
+== UPDATE
+
+Updates data in a table.
+
+[source,sql]
+----
+UPDATE tablePrimary
+SET assign [, assign ]*
+[ WHERE booleanExpression ]
+----
+
+== DELETE
+
+Deletes data from a table.
+
+[source,sql]
+----
+DELETE FROM tablePrimary [ [ AS ] alias ]
+[ WHERE booleanExpression ]
+----
\ No newline at end of file
diff --git a/docs/_docs/sql/calcite-based-sql-engine.adoc b/docs/_docs/sql-reference/operators-and-functions.adoc
similarity index 58%
copy from docs/_docs/sql/calcite-based-sql-engine.adoc
copy to docs/_docs/sql-reference/operators-and-functions.adoc
index d69730e..df54f21 100644
--- a/docs/_docs/sql/calcite-based-sql-engine.adoc
+++ b/docs/_docs/sql-reference/operators-and-functions.adoc
@@ -12,76 +12,11 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-= Calcite-Based SQL Engine
+= Supported Operators and Functions
 
-This Alpha release introduces new SQL engine based on the Apache Calcite framework to parse and optimize queries and generate execution plans. Previously, it was based on H2 Database.
+== Aggregate Functions
 
-Apache Calcite is a dynamic data management framework, which mainly serves for mediating between applications and one or more data storage locations and data processing engines.
-For more information on Apache Calcite, please see the link:https://calcite.apache.org/docs/[product documentation,window=_blank].
-
-Replacing H2 SQL engine with Apache Calcite incorporates the following general improvements:
-
-* *Wider SQL support*: Apache Calcite, unlike H2, is specifically designed for SQL enablement on top of an arbitrary external data storage;
-* *Better optimization algorithms*: Apache Calcite optimizes queries by repeatedly applying planner rules to a relational expression;
-* *Higher overall performance*: Calcite offers much higher levels of execution flexibility, as well as higher efficiency in terms of both memory and CPU consumption.
-
-== Data Manipulation Language (DML)
-
-This section walks you through all data manipulation language (DML) commands supported by Apache Ignite Alpha 3.
-
-WARNING: Currently, `WITH` and `MERGE` commands are not supported.
-
-=== SELECT
-
-Retrieves data from a table or multiple tables.
-
-[source,sql]
-----
-SELECT [ hintComment ] [ STREAM ] [ ALL | DISTINCT ]
-    { * | projectItem [, projectItem ]* }
-FROM tableExpression
-[ WHERE booleanExpression ]
-[ GROUP BY { groupItem [, groupItem ]* } ]
-[ HAVING booleanExpression ]
-----
-
-=== INSERT
-
-Inserts data into a table.
-
-[source,sql]
-----
-{ INSERT } INTO tablePrimary
-[ '(' column [, column ]* ')' ]
-query
-----
-
-=== UPDATE
-
-Updates data in a table.
-
-[source,sql]
-----
-UPDATE tablePrimary
-SET assign [, assign ]*
-[ WHERE booleanExpression ]
-----
-
-=== DELETE
-
-Deletes data from a table.
-
-[source,sql]
-----
-DELETE FROM tablePrimary [ [ AS ] alias ]
-[ WHERE booleanExpression ]
-----
-
-== Supported Operators and Functions
-
-=== Aggregate Functions
-
-==== COUNT
+=== COUNT
 
 [source,sql]
 ----
@@ -90,7 +25,7 @@ COUNT( [ ALL | DISTINCT ] value [, value ]*)
 
 Returns the number of input rows for which value is not null (wholly not null if value is composite).
 
-==== AVG
+=== AVG
 
 [source,sql]
 ----
@@ -99,7 +34,7 @@ AVG( [ ALL | DISTINCT ] numeric)
 
 Returns the average (arithmetic mean) of numeric across all input values.
 
-==== SUM
+=== SUM
 
 [source,sql]
 ----
@@ -108,7 +43,7 @@ SUM( [ ALL | DISTINCT ] numeric)
 
 Returns the sum of numeric across all input values.
 
-==== MIN
+=== MIN
 
 [source,sql]
 ----
@@ -117,7 +52,7 @@ MIN( [ ALL | DISTINCT ] value)
 
 Returns the minimum value of value across all input values.
 
-==== MAX
+=== MAX
 
 [source,sql]
 ----
@@ -126,7 +61,7 @@ MAX( [ ALL | DISTINCT ] value)
 
 Returns the maximum value of value across all input values.
 
-==== STRING_AGG
+=== STRING_AGG
 
 [source,sql]
 ----
@@ -135,7 +70,7 @@ STRING_AGG( value [, separator ] [ ORDER BY ...])
 
 Concatenates the values of string expressions and places separator values between them.
 
-==== STRING_CONCAT
+=== STRING_CONCAT
 
 [source,sql]
 ----
@@ -145,10 +80,10 @@ STRING_CONCAT(string1, string2, ... stringN)
 Concatenates the text values in the specified data ranges.
 
 
-=== Functions
+== Functions
 
 
-==== JSON
+=== JSON
 
 * JSON_EXISTS
 * JSON_VALUE
@@ -185,7 +120,7 @@ Concatenates the text values in the specified data ranges.
 * SOUNDEX
 * For more information on functions supported by Apache Calcite, see the link:https://calcite.apache.org/docs/reference.html#operators-and-functions[product documentation,window=_blank].
 
-==== NUMERIC
+=== NUMERIC
 
 * POWER
 * ABS
@@ -218,7 +153,7 @@ Concatenates the text values in the specified data ranges.
 * TANH
 * For more information on functions supported by Apache Calcite, see the link:https://calcite.apache.org/docs/reference.html#operators-and-functions[product documentation,window=_blank].
 
-==== GENERAL
+=== GENERAL
 
 * NULLIF
 * COALESCE
@@ -228,7 +163,7 @@ Concatenates the text values in the specified data ranges.
 * For more information on functions supported by Apache Calcite, see the link:https://calcite.apache.org/docs/reference.html#operators-and-functions[product documentation,window=_blank].
 
 
-==== TIMESTAMP
+=== TIMESTAMP
 
 * TIMESTAMP_ADD
 * TIMESTAMP_DIFF
diff --git a/docs/_docs/sql/calcite-based-sql-engine.adoc b/docs/_docs/sql/calcite-based-sql-engine.adoc
index d69730e..b1dc3b3 100644
--- a/docs/_docs/sql/calcite-based-sql-engine.adoc
+++ b/docs/_docs/sql/calcite-based-sql-engine.adoc
@@ -12,9 +12,9 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-= Calcite-Based SQL Engine
+= Introduction
 
-This Alpha release introduces new SQL engine based on the Apache Calcite framework to parse and optimize queries and generate execution plans. Previously, it was based on H2 Database.
+Apache Ignite 3.0 Alpha introduces new SQL engine based on the Apache Calcite framework to parse and optimize queries and generate execution plans. Previously, it was based on H2 Database.
 
 Apache Calcite is a dynamic data management framework, which mainly serves for mediating between applications and one or more data storage locations and data processing engines.
 For more information on Apache Calcite, please see the link:https://calcite.apache.org/docs/[product documentation,window=_blank].
@@ -23,215 +23,4 @@ Replacing H2 SQL engine with Apache Calcite incorporates the following general i
 
 * *Wider SQL support*: Apache Calcite, unlike H2, is specifically designed for SQL enablement on top of an arbitrary external data storage;
 * *Better optimization algorithms*: Apache Calcite optimizes queries by repeatedly applying planner rules to a relational expression;
-* *Higher overall performance*: Calcite offers much higher levels of execution flexibility, as well as higher efficiency in terms of both memory and CPU consumption.
-
-== Data Manipulation Language (DML)
-
-This section walks you through all data manipulation language (DML) commands supported by Apache Ignite Alpha 3.
-
-WARNING: Currently, `WITH` and `MERGE` commands are not supported.
-
-=== SELECT
-
-Retrieves data from a table or multiple tables.
-
-[source,sql]
-----
-SELECT [ hintComment ] [ STREAM ] [ ALL | DISTINCT ]
-    { * | projectItem [, projectItem ]* }
-FROM tableExpression
-[ WHERE booleanExpression ]
-[ GROUP BY { groupItem [, groupItem ]* } ]
-[ HAVING booleanExpression ]
-----
-
-=== INSERT
-
-Inserts data into a table.
-
-[source,sql]
-----
-{ INSERT } INTO tablePrimary
-[ '(' column [, column ]* ')' ]
-query
-----
-
-=== UPDATE
-
-Updates data in a table.
-
-[source,sql]
-----
-UPDATE tablePrimary
-SET assign [, assign ]*
-[ WHERE booleanExpression ]
-----
-
-=== DELETE
-
-Deletes data from a table.
-
-[source,sql]
-----
-DELETE FROM tablePrimary [ [ AS ] alias ]
-[ WHERE booleanExpression ]
-----
-
-== Supported Operators and Functions
-
-=== Aggregate Functions
-
-==== COUNT
-
-[source,sql]
-----
-COUNT( [ ALL | DISTINCT ] value [, value ]*)
-----
-
-Returns the number of input rows for which value is not null (wholly not null if value is composite).
-
-==== AVG
-
-[source,sql]
-----
-AVG( [ ALL | DISTINCT ] numeric)
-----
-
-Returns the average (arithmetic mean) of numeric across all input values.
-
-==== SUM
-
-[source,sql]
-----
-SUM( [ ALL | DISTINCT ] numeric)
-----
-
-Returns the sum of numeric across all input values.
-
-==== MIN
-
-[source,sql]
-----
-MIN( [ ALL | DISTINCT ] value)
-----
-
-Returns the minimum value of value across all input values.
-
-==== MAX
-
-[source,sql]
-----
-MAX( [ ALL | DISTINCT ] value)
-----
-
-Returns the maximum value of value across all input values.
-
-==== STRING_AGG
-
-[source,sql]
-----
-STRING_AGG( value [, separator ] [ ORDER BY ...])
-----
-
-Concatenates the values of string expressions and places separator values between them.
-
-==== STRING_CONCAT
-
-[source,sql]
-----
-STRING_CONCAT(string1, string2, ... stringN)
-----
-
-Concatenates the text values in the specified data ranges.
-
-
-=== Functions
-
-
-==== JSON
-
-* JSON_EXISTS
-* JSON_VALUE
-* JSON_QUERY
-* JSON_OBJECT
-* JSON_ARRAY
-* JSON_PRETTY
-* STRING
-* CHAR_LENGTH
-* CHARACTER_LENGTH
-* UPPER
-* LOWER
-* POSITION
-* TRIM
-* OVERLAY
-* SUBSTRING
-* INITCAP
-* SPACE
-* STRCMP
-* REVERSE
-* REGEXP_REPLACE
-* SHA1
-* MD5
-* LTRIM
-* TO_BASE64
-* FROM_BASE64
-* COMPRESS
-* CONCAT
-* TRANSLATE
-* ASCII
-* LEFT
-* RIGHT
-* REPEAT
-* SOUNDEX
-* For more information on functions supported by Apache Calcite, see the link:https://calcite.apache.org/docs/reference.html#operators-and-functions[product documentation,window=_blank].
-
-==== NUMERIC
-
-* POWER
-* ABS
-* MOD
-* SQRT
-* LN
-* LOG10
-* EXP
-* CEIL
-* FLOOR
-* RAND
-* ACOS
-* ASIN
-* ATAN
-* ATAN2
-* CBRT
-* COS
-* COT
-* DEGREES
-* PI()
-* RADIANS
-* ROUND
-* SIGN
-* SIN
-* TAN
-* TRUNCATE
-* CHR
-* COSH
-* SINH
-* TANH
-* For more information on functions supported by Apache Calcite, see the link:https://calcite.apache.org/docs/reference.html#operators-and-functions[product documentation,window=_blank].
-
-==== GENERAL
-
-* NULLIF
-* COALESCE
-* CAST
-* NVL
-* GREATEST
-* For more information on functions supported by Apache Calcite, see the link:https://calcite.apache.org/docs/reference.html#operators-and-functions[product documentation,window=_blank].
-
-
-==== TIMESTAMP
-
-* TIMESTAMP_ADD
-* TIMESTAMP_DIFF
-* EXTRACT
-* LAST_DAY
-* For more information on functions supported by Apache Calcite, see the link:https://calcite.apache.org/docs/reference.html#operators-and-functions[product documentation,window=_blank].
\ No newline at end of file
+* *Higher overall performance*: Calcite offers much higher levels of execution flexibility, as well as higher efficiency in terms of both memory and CPU consumption.
\ No newline at end of file
diff --git a/docs/_docs/table-views.adoc b/docs/_docs/table-views.adoc
new file mode 100644
index 0000000..75ee651
--- /dev/null
+++ b/docs/_docs/table-views.adoc
@@ -0,0 +1,45 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+= Table Views
+
+Apache Ignite 3.0 Alpha introduces the key-value API to access cached data via built-in table views.
+
+== Key-Value View
+
+This table view maps key objects to value objects. The view cannot contain duplicate key objects; each key object can map to at most one value object.
+
+=== Running an Example
+
+Examples are shipped as a separate Maven project, which is located in the `examples` folder. `KeyValueViewExample` demonstrates the usage of the key-value view.
+
+To start running `KeyValueViewExample`, please refer to its link:https://github.com/apache/ignite-3/blob/main/examples/src/main/java/org/apache/ignite/example/table/KeyValueViewExample.java[JavaDoc,window=_blank] for instructions.
+
+== Record View
+
+This table view provides methods to access table records.
+
+=== Running an Example
+
+Examples are shipped as a separate Maven project, which is located in the `examples` folder. `RecordViewExample` demonstrates the usage of the record view.
+
+To start running `RecordViewExample`, please refer to its link:https://github.com/apache/ignite-3/blob/main/examples/src/main/java/org/apache/ignite/example/table/RecordViewExample.java[JavaDoc,window=_blank] for instructions.
+
+== Record Binary View
+
+NOTE: This is a table view implementation for binary objects.
+
+You can use binary objects to access the cached data. The benefit of using binary objects is that you avoid deserialization, which is important if you access objects from a server node that does not have the object’s class representation.
+
+For more information on record binary view, please see the following link:https://github.com/apache/ignite-3/blob/main/modules/table/src/main/java/org/apache/ignite/internal/table/RecordBinaryViewImpl.java[implementation example,window=_blank].
\ No newline at end of file
diff --git a/docs/_docs/transactions/performing-transactions.adoc b/docs/_docs/transactions/performing-transactions.adoc
new file mode 100644
index 0000000..2d026be
--- /dev/null
+++ b/docs/_docs/transactions/performing-transactions.adoc
@@ -0,0 +1,59 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+= Performing Transactions
+
+This Alpha release introduces the key-value API that provides an interface for starting and completing transactions.
+
+== Executing Transactions
+
+Use the `igniteTransactions` class to create a transaction object and the `commit` method to send it.
+
+[tabs]
+--
+tab:Java[]
+[source,java]
+----
+Transaction tx = igniteTransactions.begin();
+tx.commit()
+----
+--
+
+== Asynchronous Transactions
+
+You can also perform transactions asynchronously.
+
+[tabs]
+--
+tab:Java[]
+[source,java]
+----
+protected Table accounts;
+protected Table customers;
+accounts.recordView().upsert(null, makeValue(1, BALANCE_1));
+accounts.recordView().upsert(null, makeValue(2, BALANCE_2));
+igniteTransactions.beginAsync()
+.thenCompose(tx -> accounts.recordView().getAsync(tx, makeKey(1))
+.thenCombine(accounts.recordView().getAsync(tx, makeKey(2)), (v1, v2) -> new Pair<>(v1, v2))
+.thenCompose(pair -> allOf(
+accounts.recordView().upsertAsync(
+tx, makeValue(1, pair.getFirst().doubleValue("balance") - DELTA)),
+accounts.recordView().upsertAsync(
+tx, makeValue(2, pair.getSecond().doubleValue("balance") + DELTA))
+)
+.thenApply(ignored -> tx)
+)
+).thenCompose(Transaction::commitAsync).join();
+----
+--
\ No newline at end of file