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 2021/10/21 16:44:05 UTC

[ignite-3] branch ignite-3.0.0-alpha3 updated: IGNITE-15775 Provide documentation for Alpha 3 release (#404)

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

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


The following commit(s) were added to refs/heads/ignite-3.0.0-alpha3 by this push:
     new 887c907  IGNITE-15775 Provide documentation for Alpha 3 release (#404)
887c907 is described below

commit 887c90742aa5d481327ab7a6887e3d4070f5b868
Author: Nikita Safonov <73...@users.noreply.github.com>
AuthorDate: Thu Oct 21 19:38:40 2021 +0300

    IGNITE-15775 Provide documentation for Alpha 3 release (#404)
---
 docs/_data/toc.yaml                                |  10 +
 docs/_docs/binary-protocol.adoc                    |  26 +++
 docs/_docs/ignite-cli-tool.adoc                    |   5 +-
 .../includes/ignite-cli-download-windows.adoc      |   2 +-
 docs/_docs/index.adoc                              |  24 +--
 docs/_docs/installation/installing-using-exe.adoc  |   5 +
 ...-cli-download-windows.adoc => persistence.adoc} |  13 +-
 docs/_docs/quick-start/getting-started-guide.adoc  |  48 +++--
 docs/_docs/rebalance.adoc                          |  30 +++
 docs/_docs/sql/calcite-based-sql-engine.adoc       | 237 +++++++++++++++++++++
 docs/_docs/sql/jdbc-driver.adoc                    |  78 +++++++
 11 files changed, 439 insertions(+), 39 deletions(-)

diff --git a/docs/_data/toc.yaml b/docs/_data/toc.yaml
index ed73329..28616ff 100644
--- a/docs/_data/toc.yaml
+++ b/docs/_data/toc.yaml
@@ -18,5 +18,15 @@
   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: Binary Client Protocol
+  url: binary-protocol
+- title: Native Persistence
+  url: persistence
+- title: Data Rebalancing
+  url: rebalance
 
 
diff --git a/docs/_docs/binary-protocol.adoc b/docs/_docs/binary-protocol.adoc
new file mode 100644
index 0000000..d7d5c13
--- /dev/null
+++ b/docs/_docs/binary-protocol.adoc
@@ -0,0 +1,26 @@
+// 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.
+= Binary Client Protocol
+
+Ignite binary client protocol enables user applications to communicate with an existing Ignite cluster without starting a full-fledged Ignite node.
+An application can connect to the cluster through a raw TCP socket. Once the connection is established, the application can communicate with the Ignite cluster and perform cache operations using the established format.
+
+This Alpha release implementation of binary client protocol comes with the following improvements:
+
+* Implemented link:https://cwiki.apache.org/confluence/display/IGNITE/IEP-75+Thin+Client+MsgPack+Serialization[MsgPack,window=_blank] as an underlying binary format;
+* Added new set of data types;
+* Added more flexible and extensible handshake with the magic header string.
+
+For more information on binary client protocol, please click link:https://cwiki.apache.org/confluence/display/IGNITE/IEP-76+Thin+Client+Protocol+for+Ignite+3.0[here,window=_blank].
\ No newline at end of file
diff --git a/docs/_docs/ignite-cli-tool.adoc b/docs/_docs/ignite-cli-tool.adoc
index 9ac4a5b..8b155a4 100644
--- a/docs/_docs/ignite-cli-tool.adoc
+++ b/docs/_docs/ignite-cli-tool.adoc
@@ -23,6 +23,9 @@ Below is a list of Ignite CLI tool commands with short descriptions:
 [cols="1,3",opts="header", stripes=none]
 |===
 | Command | Description
+| `config` | Inspects and updates Ignite cluster configuration.
+| `config get` | Gets current Ignite cluster configuration values.
+| `config set` | Updates Ignite cluster configuration values.
 | `init` | Installs Ignite core modules locally.
 | `module` | Manages optional Ignite modules and external artifacts.
 | `module list` | Shows the list of available optional Ignite modules.
@@ -34,5 +37,3 @@ Below is a list of Ignite CLI tool commands with short descriptions:
 | `node classpath` | Shows the current classpath used by the Ignite nodes.
 | `node list` | Shows the list of currently running local Ignite nodes.
 |===
-
-NOTE: While `config`, `config get`, `config set` commands are listed in command output, they do not work in alpha 2.
\ No newline at end of file
diff --git a/docs/_docs/includes/ignite-cli-download-windows.adoc b/docs/_docs/includes/ignite-cli-download-windows.adoc
index ebab194..4b65663 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-alpha2/apache-ignite-3.0.0-alpha2.zip" -o apache-ignite-3.0.0-alpha2.zip
+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
 // end::command[]
diff --git a/docs/_docs/index.adoc b/docs/_docs/index.adoc
index c38d7ba..f9a0d09 100644
--- a/docs/_docs/index.adoc
+++ b/docs/_docs/index.adoc
@@ -25,32 +25,22 @@ it introduces several new features, which are to be accompanied with other impro
 This alpha version of Apache Ignite, incorporating all the best solutions over the past years,
 possesses the highest level of usability thanks to the following improvements:
 
-* Schema-first approach: This feature introduces one-to-one mapping between data schemas and caches/tables,
-which means that the schema is defined for a cache/table before its creation.
-
+* Schema-first approach: This feature introduces one-to-one mapping between data schemas and caches/tables, which means that the schema is defined for a cache/table before its creation.
 * Unified Configuration: This feature is presented by a set of the following improvements:
-
 - Platform-agnostic configuration representation
 - Clear separation between configuration and any third-party code
 - Predictable configuration lifecycle
 - Consistent runtime configuration change support
-
 * Ignite CLI tool: This tool functions as a single sign-on for any operational, management, and development needs.
-
 * See a link:https://cwiki.apache.org/confluence/display/IGNITE/Proposals+for+Ignite+3.0[full list of improvements,window=_blank].
 
 
-== New in Alpha 2
-
-Apache Ignite Alpha 2 comes with the following new features:
-
-- Added replication infrastructure based on Raft.
-- New in-memory atomic storage with the basic insert-read functionality.
-- New schema management engine and API.
-
-== Known Issues
+== New in Alpha 3
 
-Due to changes between alpha 1 and alpha 2, Ignite cluster configuration commands no longer work. This will be fixed in alpha 3.
+Apache Ignite Alpha 3 comes with the following new features:
 
-Affected commands: `config`, `config get`, `config set`.
+* 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.
 
diff --git a/docs/_docs/installation/installing-using-exe.adoc b/docs/_docs/installation/installing-using-exe.adoc
index dd8f2b7..e4368df 100644
--- a/docs/_docs/installation/installing-using-exe.adoc
+++ b/docs/_docs/installation/installing-using-exe.adoc
@@ -23,6 +23,11 @@ include::../includes/prereqs.adoc[]
 
 == Installing Using Distributive
 
+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 install Apache Ignite, perform the following steps:
 
 . Navigate to link:https://ignite.apache.org/download.cgi[Apache Ignite Downloads,window=_blank] page to download the distributive.
diff --git a/docs/_docs/includes/ignite-cli-download-windows.adoc b/docs/_docs/persistence.adoc
similarity index 51%
copy from docs/_docs/includes/ignite-cli-download-windows.adoc
copy to docs/_docs/persistence.adoc
index ebab194..471a073 100644
--- a/docs/_docs/includes/ignite-cli-download-windows.adoc
+++ b/docs/_docs/persistence.adoc
@@ -12,7 +12,14 @@
 // 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.
+= Ignite Persistence
 
-// tag::command[]
-curl "https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=ignite/3.0.0-alpha2/apache-ignite-3.0.0-alpha2.zip" -o apache-ignite-3.0.0-alpha2.zip
-// end::command[]
+Ignite Persistence, or Native Persistence, is a set of features designed to provide persistent storage.
+When it is enabled, Ignite always stores all the data on disk, and loads as much data as it can into RAM for processing.
+For example, if there are 100 entries and RAM has the capacity to store only 20, then all 100 are stored on disk and only 20 are cached in RAM for better performance.
+
+When Native persistence is turned off and no external storage is used, Ignite behaves as a pure in-memory store.
+
+NOTE: In this Apache Ignite Alpha release, persistence is enabled by default.
+
+The current Alpha release persistence functionality is based on link:https://github.com/facebook/rocksdb/wiki/RocksDB-Overview[RocksDB,window=_blank].
diff --git a/docs/_docs/quick-start/getting-started-guide.adoc b/docs/_docs/quick-start/getting-started-guide.adoc
index 3b5d084..a920626 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 2 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 3 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,7 +24,7 @@ This guide provides essential details on how to start working with Ignite 3.0 al
 == Prerequisites
 
 
-Ignite 3.0 alpha 2 was officially tested on:
+Ignite 3.0 alpha 3 was officially tested on:
 
 include::../includes/prereqs.adoc[]
 
@@ -41,7 +41,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-alpha2/apache-ignite-3.0.0-alpha2.zip" -o apache-ignite-3.0.0-alpha2.zip
+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
 ----
 
 tab:Windows (PowerShell)[]
@@ -64,19 +64,19 @@ include::../includes/ignite-cli-download-windows.adoc[tag=command,indent=0]
 tab:Unix[]
 [source,shell]
 ----
-unzip apache-ignite-3.0.0-alpha2.zip && cd apache-ignite-3.0.0-alpha2
+unzip apache-ignite-3.0.0-alpha3.zip && cd apache-ignite-3.0.0-alpha3
 ----
 
 tab:Windows (PowerShell)[]
 [source,shell]
 ----
-Expand-Archive apache-ignite-3.0.0-alpha2.zip -DestinationPath . ; cd apache-ignite-3.0.0-alpha2
+Expand-Archive apache-ignite-3.0.0-alpha3.zip -DestinationPath . ; cd apache-ignite-3.0.0-alpha3
 ----
 
 tab:Windows (CMD)[]
 [source,shell]
 ----
-tar -xf apache-ignite-3.0.0-alpha2.zip & cd apache-ignite-3.0.0-alpha2
+tar -xf apache-ignite-3.0.0-alpha3.zip & cd apache-ignite-3.0.0-alpha3
 ----
 --
 
@@ -103,7 +103,7 @@ set PATH=%cd%;%PATH%
 ----
 --
 
-NOTE: On Windows, this latter change is not permanent and will only affect the current terminal session. If you want the
+NOTE: On Windows, this latter change is not permanent and only affects the current terminal session. If you want the
 `ignite` command to be available after terminal or system restart, use the `System Properties` dialog to
 permanently update the `PATH` environment variable by adding a full path to the Ignite installation directory.
 
@@ -136,7 +136,12 @@ ignite init --help
 
 Ignite CLI allows to install Ignite modules and 3rd party Maven dependencies.
 
-. To start an Ignite 3.0 alpha 2 cluster, you need to install Ignite core artifacts first:
+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:
 +
 [source, shell]
 ----
@@ -161,11 +166,11 @@ ignite module list
 
 This section explains how to start a node, how to stop, and perform other basic operations with it.
 
-. Start a cluster node setting `node-1` as a node unique identifier:
+. Start a cluster node setting `my-first-node` as a node unique identifier:
 +
 [source, shell]
 ----
-ignite node start --config=examples/config/ignite-config.json node-1
+ignite node start --config=examples/config/ignite-config.json my-first-node
 ----
 
 . Confirm the node is started and running:
@@ -182,26 +187,37 @@ For example, use the `cat` command on a Unix operating system.
 
 == Built-in Examples
 
-Ignite 3.0 alpha 2 comes with examples that are configured as a separate Maven project located in the `examples` folder.
+Ignite 3.0 alpha 3 comes with examples that are configured as a separate Maven project located in the `examples` folder.
 
 The project includes the following examples:
 
 * `RecordViewExample` demonstrates the usage of the `org.apache.ignite.table.RecordView` API to create a table. It also shows how to get data from a table, or insert a line into a table.
 * `KeyValueViewExample` - demonstrates the usage of the `org.apache.ignite.table.KeyValueView` API to insert a line into a table.
+* `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 an example:
+To run any other example, perform the following steps:
 
-1. Import the `examples` folder into your IDE as a Maven project.
+. Import the examples project into you IDE.
+
+. Start a server node using the CLI tool:
++
+[source, shell script]
+----
+ignite node start --config=$IGNITE_HOME/examples/config/ignite-config.json my-first-node
+----
 
-2. Follow the steps in the specific example to start it.
+. Run the preferred example in the IDE.
 
 
 == Stopping the Cluster
 
-To stop the node, use the command below passing `myFirstNode` as a node unique identifier:
+To stop the node, use the command below passing `my-first-node` as a node unique identifier:
 [source, shell]
 ----
-ignite node stop myFirstNode
+ignite node stop my-first-node
 ----
 
 
diff --git a/docs/_docs/rebalance.adoc b/docs/_docs/rebalance.adoc
new file mode 100644
index 0000000..63b6c4a
--- /dev/null
+++ b/docs/_docs/rebalance.adoc
@@ -0,0 +1,30 @@
+// 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 Rebalancing
+
+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.
+----
+
+== Running an Example
+
+Examples are shipped as a separate Maven project, which is located in the `examples` folder. `RebalanceExample` demonstrates the data rebalancing process.
+
+To start running `RebalanceExample`, please 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.
+
diff --git a/docs/_docs/sql/calcite-based-sql-engine.adoc b/docs/_docs/sql/calcite-based-sql-engine.adoc
new file mode 100644
index 0000000..0c3a60f
--- /dev/null
+++ b/docs/_docs/sql/calcite-based-sql-engine.adoc
@@ -0,0 +1,237 @@
+// 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.
+= Calcite-Based SQL Engine
+
+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 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 | UPSERT } 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
diff --git a/docs/_docs/sql/jdbc-driver.adoc b/docs/_docs/sql/jdbc-driver.adoc
new file mode 100644
index 0000000..5fc1e7d
--- /dev/null
+++ b/docs/_docs/sql/jdbc-driver.adoc
@@ -0,0 +1,78 @@
+// 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.
+= JDBC Driver
+
+Apache Ignite is shipped with JDBC driver that allows processing of distributed data using standard SQL statements like `SELECT`, `INSERT`, `UPDATE`, or `DELETE` directly from the JDBC side.
+
+WARNING:
+----
+This Alpha release implementation of JDBC driver does not support the following functionality:
+
+* SSL/TLS connection;
+* Multiple Endpoints;
+* Partition Awareness;
+* `CREATE TABLE`, `ALTER TABLE`, `WITH`, and `MERGE` commands.
+----
+
+== Setting Up
+
+The name of the driver’s class is `org.apache.ignite.IgniteJdbcThinDriver`. For instance, this is how you can open a JDBC connection to the cluster node listening on IP address `192.168.0.50`:
+
+[source, java]
+----
+// Load JDBC drivers.
+ServiceLoader.load(java.sql.Driver.class);
+
+// Open the JDBC connection.
+Connection conn = DriverManager.getConnection("jdbc:ignite:thin://127.0.1.1:10800");
+----
+
+The driver connects to one of the cluster nodes and forwards all the queries to it for final execution. The node handles the query distribution and the result’s aggregations. Then the result is sent back to the client application.
+
+The JDBC connection string may be formatted with one of two patterns: `URL query` or `semicolon`:
+
+[source, java]
+----
+// URL query pattern
+jdbc:ignite:thin://<hostAndPortRange0>[,<hostAndPortRange1>]...[,<hostAndPortRangeN>][/schema][?<params>]
+
+hostAndPortRange := host[:port_from[..port_to]]
+
+params := param1=value1[&param2=value2]...[&paramN=valueN]
+
+// Semicolon pattern
+jdbc:ignite:thin://<hostAndPortRange0>[,<hostAndPortRange1>]...[,<hostAndPortRangeN>][;schema=<schema_name>][;param1=value1]...[;paramN=valueN]
+----
+
+* `host` is required and defines the host of the cluster node to connect to.
+* `port_from` is the beginning of the port range to use to open the connection. 10800 is used by default if this parameter is omitted.
+* `port_to` is optional. It is set to the `port_from` value by default if this parameter is omitted.
+* `schema` is the schema name to access. PUBLIC is used by default. This name should correspond to the SQL ANSI-99 standard. Non-quoted identifiers are not case sensitive. Quoted identifiers are case sensitive. When semicolon format is used, the schema may be defined as a parameter with name schema.
+* `<params>` are optional.
+
+== Running an Example
+
+Examples are shipped as a separate Maven project, which is located in the `examples` folder. `SqlJdbcExample` demonstrates the usage of the Apache Ignite JDBC driver.
+
+To run `SqlJdbcExample`, perform the following steps:
+
+. Import the examples project into you IDE;
+. Start a server node using the CLI tool:
++
+[source, shell]
+----
+ignite node start --config=$IGNITE_HOME/examples/config/ignite-config.json my-first-node
+----
+. Run `SqlJdbcExample` in the IDE.