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

mpochatkin pushed a commit to branch IGNITE-22272
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit d03c54188110bc1e1b0c75248a9edd879b14f073
Author: Mikhail Pochatkin <[email protected]>
AuthorDate: Mon Jun 3 15:19:20 2024 +0300

    IGNITE-22272 Rework Catalog API
---
 .../src/main/java/org/apache/ignite/Ignite.java    |  14 +-
 .../org/apache/ignite/catalog/IgniteCatalog.java   |  22 ++-
 .../java/org/apache/ignite/catalog/Options.java    | 147 --------------------
 .../main/java/org/apache/ignite/catalog/Query.java |  11 +-
 modules/catalog-dsl/build.gradle                   |   1 +
 .../ignite/internal/catalog/ItCatalogDslTest.java  |  53 ++++----
 .../internal/catalog/sql/AbstractCatalogQuery.java |  22 +--
 .../catalog/sql/CreateFromAnnotationsImpl.java     |  23 +++-
 .../catalog/sql/CreateFromDefinitionImpl.java      |  33 +++--
 .../internal/catalog/sql/CreateIndexImpl.java      |  12 +-
 .../internal/catalog/sql/CreateTableImpl.java      |  14 +-
 .../internal/catalog/sql/CreateZoneImpl.java       |  12 +-
 .../ignite/internal/catalog/sql/DropTableImpl.java |  12 +-
 .../ignite/internal/catalog/sql/DropZoneImpl.java  |  12 +-
 .../internal/catalog/sql/IgniteCatalogSqlImpl.java |  45 ++++---
 .../apache/ignite/internal/catalog/sql/Name.java   |   3 +-
 .../ignite/internal/catalog/sql/QueryContext.java  |  20 +--
 .../ignite/internal/catalog/sql/TableZoneId.java}  |  37 +++--
 .../catalog/sql/CreateFromAnnotationsTest.java     |  99 +++-----------
 .../catalog/sql/CreateFromDefinitionTest.java      |  58 +-------
 .../internal/catalog/sql/CreateTableTest.java      | 150 ++++++---------------
 .../internal/catalog/sql/CreateZoneTest.java       |  41 ++----
 .../ignite/internal/catalog/sql/DropTableTest.java |  21 +--
 .../ignite/internal/catalog/sql/DropZoneTest.java  |  21 +--
 .../ignite/internal/catalog/sql/QueryPartTest.java |  29 +---
 .../ignite/internal/client/TcpIgniteClient.java    |   5 +-
 .../org/apache/ignite/client/fakes/FakeIgnite.java |   5 +-
 .../org/apache/ignite/internal/app/IgniteImpl.java |   5 +-
 28 files changed, 279 insertions(+), 648 deletions(-)

diff --git a/modules/api/src/main/java/org/apache/ignite/Ignite.java 
b/modules/api/src/main/java/org/apache/ignite/Ignite.java
index 21fd965a17..396d7fc546 100644
--- a/modules/api/src/main/java/org/apache/ignite/Ignite.java
+++ b/modules/api/src/main/java/org/apache/ignite/Ignite.java
@@ -20,7 +20,6 @@ package org.apache.ignite;
 import java.util.Collection;
 import java.util.concurrent.CompletableFuture;
 import org.apache.ignite.catalog.IgniteCatalog;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.compute.ComputeJob;
 import org.apache.ignite.compute.IgniteCompute;
 import org.apache.ignite.network.ClusterNode;
@@ -85,22 +84,11 @@ public interface Ignite extends AutoCloseable {
      */
     CompletableFuture<Collection<ClusterNode>> clusterNodesAsync();
 
-    /**
-     * Returns {@link IgniteCatalog}, which can be used to create and execute 
SQL DDL queries from annotated classes or from fluent-style
-     * builders.
-     *
-     * @param options Query options.
-     * @return Catalog object.
-     */
-    IgniteCatalog catalog(Options options);
-
     /**
      * Returns {@link IgniteCatalog} with default options, which can be used 
to create and execute SQL DDL queries from annotated classes or
      * from fluent-style builders.
      *
      * @return Catalog object.
      */
-    default IgniteCatalog catalog() {
-        return catalog(Options.DEFAULT);
-    }
+    IgniteCatalog catalog();
 }
diff --git 
a/modules/api/src/main/java/org/apache/ignite/catalog/IgniteCatalog.java 
b/modules/api/src/main/java/org/apache/ignite/catalog/IgniteCatalog.java
index 5fb7f277c6..0d50efe2a8 100644
--- a/modules/api/src/main/java/org/apache/ignite/catalog/IgniteCatalog.java
+++ b/modules/api/src/main/java/org/apache/ignite/catalog/IgniteCatalog.java
@@ -19,6 +19,7 @@ package org.apache.ignite.catalog;
 
 import org.apache.ignite.catalog.definitions.TableDefinition;
 import org.apache.ignite.catalog.definitions.ZoneDefinition;
+import org.apache.ignite.table.Table;
 
 /**
  * Provides the ability to create and execute SQL DDL queries from annotated 
classes or fluent builders. This is an example of the simple
@@ -145,7 +146,7 @@ public interface IgniteCatalog {
      * @param recordClass Annotated record class.
      * @return Query object.
      */
-    Query create(Class<?> recordClass);
+    Table create(Class<?> recordClass);
 
     /**
      * Creates a query object from the annotated key and value classes.
@@ -154,7 +155,7 @@ public interface IgniteCatalog {
      * @param valueClass Annotated value class.
      * @return Query object.
      */
-    Query create(Class<?> keyClass, Class<?> valueClass);
+    Table create(Class<?> keyClass, Class<?> valueClass);
 
     /**
      * Creates a query object from the table definition.
@@ -162,45 +163,40 @@ public interface IgniteCatalog {
      * @param definition Table definition.
      * @return Query object.
      */
-    Query createTable(TableDefinition definition);
+    Table createTable(TableDefinition definition);
 
     /**
      * Creates a query object from the zone definition.
      *
      * @param definition Zone definition.
-     * @return Query object.
      */
-    Query createZone(ZoneDefinition definition);
+    void createZone(ZoneDefinition definition);
 
     /**
      * Creates a {@code DROP TABLE} query object from the table definition.
      *
      * @param definition Table definition.
-     * @return query object
      */
-    Query dropTable(TableDefinition definition);
+    void dropTable(TableDefinition definition);
 
     /**
      * Creates a {@code DROP TABLE} query object from the table name.
      *
      * @param name Table name.
-     * @return Query object.
      */
-    Query dropTable(String name);
+    void dropTable(String name);
 
     /**
      * Creates a {@code DROP ZONE} query object from the zone definition.
      *
      * @param definition Zone definition.
-     * @return Query object.
      */
-    Query dropZone(ZoneDefinition definition);
+    void dropZone(ZoneDefinition definition);
 
     /**
      * Creates a {@code DROP ZONE} query object from the zone name.
      *
      * @param name Zone name.
-     * @return Query object.
      */
-    Query dropZone(String name);
+    void dropZone(String name);
 }
diff --git a/modules/api/src/main/java/org/apache/ignite/catalog/Options.java 
b/modules/api/src/main/java/org/apache/ignite/catalog/Options.java
deleted file mode 100644
index 2238881a3d..0000000000
--- a/modules/api/src/main/java/org/apache/ignite/catalog/Options.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.ignite.catalog;
-
-/**
- * SQL query generation options.
- */
-public class Options {
-    /**
-     * Default options object - prints queries without line breaks, doesn't 
quote identifiers.
-     */
-    public static final Options DEFAULT = new Options(false, false, 2);
-
-    private final boolean prettyPrint;
-
-    private final boolean quoteIdentifiers;
-
-    private final int indentWidth;
-
-    private Options(boolean prettyPrint, boolean quoteIdentifiers, int 
indentWidth) {
-        this.prettyPrint = prettyPrint;
-        this.quoteIdentifiers = quoteIdentifiers;
-        this.indentWidth = indentWidth;
-    }
-
-    /**
-     * Creates new builder for options.
-     *
-     * @return New builder instance.
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    /**
-     * Returns pretty printing status.
-     *
-     * @return {@code true} if pretty printing is enabled.
-     */
-    public boolean isPrettyPrint() {
-        return prettyPrint;
-    }
-
-    /**
-     * Returns quoting identifiers status.
-     *
-     * @return {@code true} if identifiers are quoted.
-     */
-    public boolean isQuoteIdentifiers() {
-        return quoteIdentifiers;
-    }
-
-    /**
-     * Returns indentation width.
-     *
-     * @return Indentation width.
-     */
-    public int indentWidth() {
-        return indentWidth;
-    }
-
-    /**
-     * Builder class for {@link Options}.
-     */
-    public static class Builder {
-        private boolean prettyPrint = false;
-
-        private boolean quoteIdentifiers = false;
-
-        private int indentWidth = 2;
-
-        /**
-         * Enables pretty printing.
-         *
-         * @return Builder object.
-         */
-        public Builder prettyPrint() {
-            return prettyPrint(true);
-        }
-
-        /**
-         * Sets pretty printing.
-         *
-         * @param b If {@code true}, pretty printing is enabled.
-         * @return Builder object.
-         */
-        public Builder prettyPrint(boolean b) {
-            this.prettyPrint = b;
-            return this;
-        }
-
-        /**
-         * Enables quoting identifiers.
-         *
-         * @return Builder object.
-         */
-        public Builder quoteIdentifiers() {
-            return quoteIdentifiers(true);
-        }
-
-        /**
-         * Sets quoting identifiers.
-         *
-         * @param b If {@code true}, quotes identifiers.
-         * @return Builder object.
-         */
-        public Builder quoteIdentifiers(boolean b) {
-            this.quoteIdentifiers = b;
-            return this;
-        }
-
-        /**
-         * Sets indentation width.
-         *
-         * @param width Indentation width.
-         * @return Builder object.
-         */
-        public Builder indentWidth(int width) {
-            this.indentWidth = width;
-            return this;
-        }
-
-        /**
-         * Builds options object.
-         *
-         * @return Constructed options object.
-         */
-        public Options build() {
-            return new Options(prettyPrint, quoteIdentifiers, indentWidth);
-        }
-    }
-}
diff --git a/modules/api/src/main/java/org/apache/ignite/catalog/Query.java 
b/modules/api/src/main/java/org/apache/ignite/catalog/Query.java
index c6a4e22045..d1c09313d2 100644
--- a/modules/api/src/main/java/org/apache/ignite/catalog/Query.java
+++ b/modules/api/src/main/java/org/apache/ignite/catalog/Query.java
@@ -20,16 +20,9 @@ package org.apache.ignite.catalog;
 /**
  * Represents the query generated from the definition or annotation. Can be 
executed directly or converted to the string representation.
  */
-public interface Query {
+public interface Query<T> {
     /**
      * Executes the query.
      */
-    void execute();
-
-    /**
-     * Converts the query to string.
-     *
-     * @return String representation of the query.
-     */
-    String toSqlString();
+    T execute();
 }
diff --git a/modules/catalog-dsl/build.gradle b/modules/catalog-dsl/build.gradle
index 1190e9c077..da6a8160c3 100644
--- a/modules/catalog-dsl/build.gradle
+++ b/modules/catalog-dsl/build.gradle
@@ -23,6 +23,7 @@ apply from: 
"$rootDir/buildscripts/java-integration-test.gradle"
 description = 'ignite-catalog-dsl'
 
 dependencies {
+    implementation libs.jetbrains.annotations
     implementation project(':ignite-api')
     implementation project(':ignite-core')
 
diff --git 
a/modules/catalog-dsl/src/integrationTest/java/org/apache/ignite/internal/catalog/ItCatalogDslTest.java
 
b/modules/catalog-dsl/src/integrationTest/java/org/apache/ignite/internal/catalog/ItCatalogDslTest.java
index 58e86ac96a..4de39be2cd 100644
--- 
a/modules/catalog-dsl/src/integrationTest/java/org/apache/ignite/internal/catalog/ItCatalogDslTest.java
+++ 
b/modules/catalog-dsl/src/integrationTest/java/org/apache/ignite/internal/catalog/ItCatalogDslTest.java
@@ -23,6 +23,8 @@ import static 
org.apache.ignite.internal.testframework.IgniteTestUtils.assertThr
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+import static org.hamcrest.Matchers.nullValue;
 
 import java.util.List;
 import java.util.Objects;
@@ -81,7 +83,7 @@ class ItCatalogDslTest extends ClusterPerClassIntegrationTest 
{
                 .build();
 
         // When create zone from definition
-        catalog().createZone(zoneDefinition).execute();
+        catalog().createZone(zoneDefinition);
 
         // Then zone was created
         assertThrows(
@@ -91,7 +93,7 @@ class ItCatalogDslTest extends ClusterPerClassIntegrationTest 
{
         );
 
         // When drop zone by definition
-        catalog().dropZone(zoneDefinition).execute();
+        catalog().dropZone(zoneDefinition);
 
         // Then zone was dropped
         assertThrows(
@@ -110,7 +112,7 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
                 .build();
 
         // When create zone from definition
-        catalog().createZone(zoneDefinition).execute();
+        catalog().createZone(zoneDefinition);
 
         // Then zone was created
         assertThrows(
@@ -120,7 +122,7 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
         );
 
         // When drop zone by name
-        catalog().dropZone(ZONE_NAME).execute();
+        catalog().dropZone(ZONE_NAME);
 
         // Then zone was dropped
         assertThrows(
@@ -139,7 +141,9 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
                 .build();
 
         // When create table from definition
-        catalog().createTable(tableDefinition).execute();
+        org.apache.ignite.table.Table table = 
catalog().createTable(tableDefinition);
+
+        assertThat(table, not(nullValue()));
 
         // Then table was created
         assertThrows(
@@ -149,7 +153,7 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
         );
 
         // When drop table by definition
-        catalog().dropTable(tableDefinition).execute();
+        catalog().dropTable(tableDefinition);
 
         // Then table is dropped
         assertThrows(
@@ -168,7 +172,9 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
                 .build();
 
         // When create table from definition
-        catalog().createTable(tableDefinition).execute();
+        org.apache.ignite.table.Table table = 
catalog().createTable(tableDefinition);
+
+        assertThat(table, not(nullValue()));
 
         // Then table was created
         assertThrows(
@@ -178,7 +184,7 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
         );
 
         // When drop table by name
-        catalog().dropTable(POJO_KV_TABLE_NAME).execute();
+        catalog().dropTable(POJO_KV_TABLE_NAME);
 
         // Then table is dropped
         assertThrows(
@@ -194,9 +200,9 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
 
     @Test
     void primitiveKeyKvViewFromAnnotation() {
-        catalog().create(Integer.class, PojoValue.class).execute();
+        org.apache.ignite.table.Table table = catalog().create(Integer.class, 
PojoValue.class);
 
-        KeyValueView<Integer, PojoValue> keyValueView = 
tables().table(POJO_KV_TABLE_NAME)
+        KeyValueView<Integer, PojoValue> keyValueView = table
                 .keyValueView(Integer.class, PojoValue.class);
 
         keyValueView.put(null, KEY, POJO_VALUE);
@@ -205,9 +211,9 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
 
     @Test
     void pojoKeyKvViewFromAnnotation() {
-        catalog().create(PojoKey.class, PojoValue.class).execute();
+        org.apache.ignite.table.Table table = catalog().create(PojoKey.class, 
PojoValue.class);
 
-        KeyValueView<PojoKey, PojoValue> keyValueView = 
tables().table(POJO_KV_TABLE_NAME)
+        KeyValueView<PojoKey, PojoValue> keyValueView = table
                 .keyValueView(PojoKey.class, PojoValue.class);
 
         keyValueView.put(null, POJO_KEY, POJO_VALUE);
@@ -221,10 +227,9 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
                 .value(PojoValue.class)
                 .build();
 
-        catalog().createTable(definition).execute();
+        org.apache.ignite.table.Table table = 
catalog().createTable(definition);
 
-        KeyValueView<Integer, PojoValue> keyValueView = 
tables().table(POJO_KV_TABLE_NAME)
-                .keyValueView(Integer.class, PojoValue.class);
+        KeyValueView<Integer, PojoValue> keyValueView = 
table.keyValueView(Integer.class, PojoValue.class);
 
         keyValueView.put(null, KEY, POJO_VALUE);
         assertThat(keyValueView.get(null, KEY), is(POJO_VALUE));
@@ -237,10 +242,9 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
                 .value(PojoValue.class)
                 .build();
 
-        catalog().createTable(definition).execute();
+        org.apache.ignite.table.Table table = 
catalog().createTable(definition);
 
-        KeyValueView<PojoKey, PojoValue> keyValueView = 
tables().table(POJO_KV_TABLE_NAME)
-                .keyValueView(PojoKey.class, PojoValue.class);
+        KeyValueView<PojoKey, PojoValue> keyValueView = 
table.keyValueView(PojoKey.class, PojoValue.class);
 
         keyValueView.put(null, POJO_KEY, POJO_VALUE);
         assertThat(keyValueView.get(null, POJO_KEY), is(POJO_VALUE));
@@ -248,9 +252,9 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
 
     @Test
     void pojoRecordViewFromAnnotation() {
-        catalog().create(Pojo.class).execute();
+        org.apache.ignite.table.Table table = catalog().create(Pojo.class);
 
-        RecordView<Pojo> recordView = 
tables().table(POJO_RECORD_TABLE_NAME).recordView(Pojo.class);
+        RecordView<Pojo> recordView = table.recordView(Pojo.class);
 
         assertThat(recordView.insert(null, POJO_RECORD), is(true));
         assertThat(recordView.get(null, POJO_RECORD), is(POJO_RECORD));
@@ -260,9 +264,9 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
     void pojoRecordViewFromDefinition() {
         TableDefinition definition = 
TableDefinition.builder(POJO_RECORD_TABLE_NAME).record(Pojo.class).build();
 
-        catalog().createTable(definition).execute();
+        org.apache.ignite.table.Table table = 
catalog().createTable(definition);
 
-        RecordView<Pojo> recordView = 
tables().table(POJO_RECORD_TABLE_NAME).recordView(Pojo.class);
+        RecordView<Pojo> recordView = table.recordView(Pojo.class);
 
         assertThat(recordView.insert(null, POJO_RECORD), is(true));
         assertThat(recordView.get(null, POJO_RECORD), is(POJO_RECORD));
@@ -270,12 +274,15 @@ class ItCatalogDslTest extends 
ClusterPerClassIntegrationTest {
 
     @Test
     void createFromAnnotationAndInsertBySql() {
-        catalog().create(Pojo.class).execute();
+        org.apache.ignite.table.Table table = catalog().create(Pojo.class);
 
         sql("insert into " + POJO_RECORD_TABLE_NAME + " (id, id_str, f_name, 
l_name, str) values (1, '1', 'f', 'l', 's')");
         List<List<Object>> rows = sql("select * from " + 
POJO_RECORD_TABLE_NAME);
 
         assertThat(rows, contains(List.of(1, "1", "f", "l", "s")));
+
+        Pojo pojo = new Pojo(1, "1", "f", "l", "s");
+        assertThat(table.recordView(Pojo.class).get(null, pojo), is(pojo));
     }
 
     private static IgniteCatalog catalog() {
diff --git 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/AbstractCatalogQuery.java
 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/AbstractCatalogQuery.java
index 4487b9b0c9..93fde86210 100644
--- 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/AbstractCatalogQuery.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/AbstractCatalogQuery.java
@@ -17,35 +17,27 @@
 
 package org.apache.ignite.internal.catalog.sql;
 
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.catalog.Query;
 import org.apache.ignite.sql.IgniteSql;
 
-abstract class AbstractCatalogQuery extends QueryPart implements Query {
+abstract class AbstractCatalogQuery<T> extends QueryPart implements Query<T> {
     protected final IgniteSql sql;
 
-    protected final Options options;
-
-    AbstractCatalogQuery(IgniteSql sql, Options options) {
+    AbstractCatalogQuery(IgniteSql sql) {
         this.sql = sql;
-        this.options = options;
     }
 
     @Override
-    public void execute() {
-        sql.executeScript(toSqlString());
+    public T execute() {
+        sql.executeScript(toString());
+        return result();
     }
 
-    @Override
-    public String toSqlString() {
-        return new QueryContext(options)
-                .visit(this)
-                .getSql();
-    }
+    protected abstract T result();
 
     @Override
     public String toString() {
-        return new QueryContext(Options.builder().prettyPrint().build())
+        return new QueryContext()
                 .visit(this)
                 .getSql();
     }
diff --git 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateFromAnnotationsImpl.java
 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateFromAnnotationsImpl.java
index cda0865ef0..3981078deb 100644
--- 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateFromAnnotationsImpl.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateFromAnnotationsImpl.java
@@ -29,7 +29,6 @@ import org.apache.ignite.catalog.ColumnSorted;
 import org.apache.ignite.catalog.ColumnType;
 import org.apache.ignite.catalog.DefaultZone;
 import org.apache.ignite.catalog.IndexType;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.catalog.annotations.Column;
 import org.apache.ignite.catalog.annotations.ColumnRef;
 import org.apache.ignite.catalog.annotations.Id;
@@ -38,15 +37,24 @@ import org.apache.ignite.catalog.annotations.Table;
 import org.apache.ignite.catalog.annotations.Zone;
 import org.apache.ignite.sql.IgniteSql;
 
-class CreateFromAnnotationsImpl extends AbstractCatalogQuery {
+class CreateFromAnnotationsImpl extends AbstractCatalogQuery<TableZoneId> {
     private CreateZoneImpl createZone;
 
+    private String zoneName;
+
     private CreateTableImpl createTable;
 
+    private String tableName;
+
     private IndexType pkType;
 
-    CreateFromAnnotationsImpl(IgniteSql sql, Options options) {
-        super(sql, options);
+    CreateFromAnnotationsImpl(IgniteSql sql) {
+        super(sql);
+    }
+
+    @Override
+    protected TableZoneId result() {
+        return new TableZoneId(tableName, zoneName);
     }
 
     CreateFromAnnotationsImpl processKeyValueClasses(Class<?> keyClass, 
Class<?> valueClass) {
@@ -84,13 +92,14 @@ class CreateFromAnnotationsImpl extends 
AbstractCatalogQuery {
 
     private void processAnnotations(Class<?> clazz, boolean isKeyClass) {
         if (createTable == null) {
-            createTable = new CreateTableImpl(sql, options).ifNotExists();
+            createTable = new CreateTableImpl(sql).ifNotExists();
         }
 
         Table table = clazz.getAnnotation(Table.class);
         if (table != null) {
             String tableName = table.value().isEmpty() ? clazz.getSimpleName() 
: table.value();
             createTable.name(table.schemaName(), tableName);
+            this.tableName = tableName;
 
             processZone(table);
             processTable(table);
@@ -106,9 +115,10 @@ class CreateFromAnnotationsImpl extends 
AbstractCatalogQuery {
         }
         Zone zone = zoneRef.getAnnotation(Zone.class);
         if (zone != null) {
-            createZone = new CreateZoneImpl(sql, options).ifNotExists();
+            createZone = new CreateZoneImpl(sql).ifNotExists();
 
             String zoneName = zone.value().isEmpty() ? zoneRef.getSimpleName() 
: zone.value();
+            this.zoneName = zoneName;
             createTable.zone(zoneName);
             createZone.name(zoneName);
             createZone.storageProfiles(zone.storageProfiles());
@@ -213,4 +223,5 @@ class CreateFromAnnotationsImpl extends 
AbstractCatalogQuery {
             }
         }
     }
+
 }
diff --git 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateFromDefinitionImpl.java
 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateFromDefinitionImpl.java
index 86fc7d2295..180611de80 100644
--- 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateFromDefinitionImpl.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateFromDefinitionImpl.java
@@ -25,8 +25,6 @@ import java.util.Collection;
 import java.util.List;
 import org.apache.ignite.catalog.ColumnSorted;
 import org.apache.ignite.catalog.IndexType;
-import org.apache.ignite.catalog.Options;
-import org.apache.ignite.catalog.Query;
 import org.apache.ignite.catalog.definitions.ColumnDefinition;
 import org.apache.ignite.catalog.definitions.IndexDefinition;
 import org.apache.ignite.catalog.definitions.TableDefinition;
@@ -34,18 +32,29 @@ import org.apache.ignite.catalog.definitions.ZoneDefinition;
 import org.apache.ignite.internal.util.StringUtils;
 import org.apache.ignite.sql.IgniteSql;
 
-class CreateFromDefinitionImpl extends AbstractCatalogQuery {
+class CreateFromDefinitionImpl extends AbstractCatalogQuery<TableZoneId> {
     private CreateZoneImpl createZone;
 
+    private String zoneName;
+
     private CreateTableImpl createTable;
 
-    CreateFromDefinitionImpl(IgniteSql sql, Options options) {
-        super(sql, options);
+    private String tableName;
+
+    CreateFromDefinitionImpl(IgniteSql sql) {
+        super(sql);
+    }
+
+    @Override
+    protected TableZoneId result() {
+        return new TableZoneId(tableName, zoneName);
     }
 
-    Query from(ZoneDefinition def) {
-        createZone = new CreateZoneImpl(sql, options);
-        createZone.name(def.zoneName());
+    CreateFromDefinitionImpl from(ZoneDefinition def) {
+        createZone = new CreateZoneImpl(sql);
+        String zoneName = def.zoneName();
+        this.zoneName = zoneName;
+        createZone.name(zoneName);
         createZone.storageProfiles(def.storageProfiles());
         if (def.ifNotExists()) {
             createZone.ifNotExists();
@@ -78,9 +87,11 @@ class CreateFromDefinitionImpl extends AbstractCatalogQuery {
         return this;
     }
 
-    Query from(TableDefinition def) {
-        createTable = new CreateTableImpl(sql, options);
-        createTable.name(def.schemaName(), def.tableName());
+    CreateFromDefinitionImpl from(TableDefinition def) {
+        createTable = new CreateTableImpl(sql);
+        String tableName = def.tableName();
+        this.tableName = tableName;
+        createTable.name(def.schemaName(), tableName);
         if (def.ifNotExists()) {
             createTable.ifNotExists();
         }
diff --git 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateIndexImpl.java
 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateIndexImpl.java
index d30e68490d..7267491a14 100644
--- 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateIndexImpl.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateIndexImpl.java
@@ -25,10 +25,9 @@ import java.util.List;
 import java.util.Objects;
 import org.apache.ignite.catalog.ColumnSorted;
 import org.apache.ignite.catalog.IndexType;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.sql.IgniteSql;
 
-class CreateIndexImpl extends AbstractCatalogQuery {
+class CreateIndexImpl extends AbstractCatalogQuery<Name> {
     private Name indexName;
 
     private boolean ifNotExists;
@@ -44,8 +43,13 @@ class CreateIndexImpl extends AbstractCatalogQuery {
      *
      * @see CreateFromAnnotationsImpl
      */
-    CreateIndexImpl(IgniteSql sql, Options options) {
-        super(sql, options);
+    CreateIndexImpl(IgniteSql sql) {
+        super(sql);
+    }
+
+    @Override
+    protected Name result() {
+        return indexName;
     }
 
     CreateIndexImpl name(String... names) {
diff --git 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateTableImpl.java
 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateTableImpl.java
index 85f359c557..e85fafad10 100644
--- 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateTableImpl.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateTableImpl.java
@@ -27,10 +27,9 @@ import java.util.Objects;
 import org.apache.ignite.catalog.ColumnSorted;
 import org.apache.ignite.catalog.ColumnType;
 import org.apache.ignite.catalog.IndexType;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.sql.IgniteSql;
 
-class CreateTableImpl extends AbstractCatalogQuery {
+class CreateTableImpl extends AbstractCatalogQuery<Name> {
     private Name tableName;
 
     private boolean ifNotExists;
@@ -50,8 +49,13 @@ class CreateTableImpl extends AbstractCatalogQuery {
      *
      * @see CreateFromAnnotationsImpl
      */
-    CreateTableImpl(IgniteSql sql, Options options) {
-        super(sql, options);
+    CreateTableImpl(IgniteSql sql) {
+        super(sql);
+    }
+
+    @Override
+    protected Name result() {
+        return tableName;
     }
 
     CreateTableImpl name(String... names) {
@@ -135,7 +139,7 @@ class CreateTableImpl extends AbstractCatalogQuery {
         Objects.requireNonNull(name, "Index name must not be null.");
         Objects.requireNonNull(columns, "Index columns list must not be 
null.");
 
-        indexes.add(new CreateIndexImpl(sql, 
options).ifNotExists().name(name).using(type).on(tableName, columns));
+        indexes.add(new 
CreateIndexImpl(sql).ifNotExists().name(name).using(type).on(tableName, 
columns));
         return this;
     }
 
diff --git 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateZoneImpl.java
 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateZoneImpl.java
index bb307a57f6..8791ff743a 100644
--- 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateZoneImpl.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/CreateZoneImpl.java
@@ -22,10 +22,9 @@ import static 
org.apache.ignite.internal.catalog.sql.QueryPartCollection.partsLi
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.sql.IgniteSql;
 
-class CreateZoneImpl extends AbstractCatalogQuery {
+class CreateZoneImpl extends AbstractCatalogQuery<Name> {
     private Name zoneName;
 
     private boolean ifNotExists;
@@ -37,8 +36,13 @@ class CreateZoneImpl extends AbstractCatalogQuery {
      *
      * @see CreateFromAnnotationsImpl
      */
-    CreateZoneImpl(IgniteSql sql, Options options) {
-        super(sql, options);
+    CreateZoneImpl(IgniteSql sql) {
+        super(sql);
+    }
+
+    @Override
+    protected Name result() {
+        return zoneName;
     }
 
     CreateZoneImpl name(String... names) {
diff --git 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/DropTableImpl.java
 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/DropTableImpl.java
index c733291022..ede2dfca07 100644
--- 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/DropTableImpl.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/DropTableImpl.java
@@ -18,16 +18,20 @@
 package org.apache.ignite.internal.catalog.sql;
 
 import java.util.Objects;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.sql.IgniteSql;
 
-class DropTableImpl extends AbstractCatalogQuery {
+class DropTableImpl extends AbstractCatalogQuery<Name> {
     private Name tableName;
 
     private boolean ifExists;
 
-    DropTableImpl(IgniteSql sql, Options options) {
-        super(sql, options);
+    DropTableImpl(IgniteSql sql) {
+        super(sql);
+    }
+
+    @Override
+    protected Name result() {
+        return tableName;
     }
 
     DropTableImpl name(String... names) {
diff --git 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/DropZoneImpl.java
 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/DropZoneImpl.java
index 0c00315d3d..db11b136ad 100644
--- 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/DropZoneImpl.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/DropZoneImpl.java
@@ -18,16 +18,20 @@
 package org.apache.ignite.internal.catalog.sql;
 
 import java.util.Objects;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.sql.IgniteSql;
 
-class DropZoneImpl extends AbstractCatalogQuery {
+class DropZoneImpl extends AbstractCatalogQuery<Name> {
     private Name zoneName;
 
     private boolean ifExists;
 
-    DropZoneImpl(IgniteSql sql, Options options) {
-        super(sql, options);
+    DropZoneImpl(IgniteSql sql) {
+        super(sql);
+    }
+
+    @Override
+    protected Name result() {
+        return zoneName;
     }
 
     DropZoneImpl name(String... names) {
diff --git 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/IgniteCatalogSqlImpl.java
 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/IgniteCatalogSqlImpl.java
index d3ae9cbc9f..3b379e72eb 100644
--- 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/IgniteCatalogSqlImpl.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/IgniteCatalogSqlImpl.java
@@ -18,11 +18,11 @@
 package org.apache.ignite.internal.catalog.sql;
 
 import org.apache.ignite.catalog.IgniteCatalog;
-import org.apache.ignite.catalog.Options;
-import org.apache.ignite.catalog.Query;
 import org.apache.ignite.catalog.definitions.TableDefinition;
 import org.apache.ignite.catalog.definitions.ZoneDefinition;
 import org.apache.ignite.sql.IgniteSql;
+import org.apache.ignite.table.IgniteTables;
+import org.apache.ignite.table.Table;
 
 /**
  * Implementation of the catalog.
@@ -30,50 +30,53 @@ import org.apache.ignite.sql.IgniteSql;
 public class IgniteCatalogSqlImpl implements IgniteCatalog {
     private final IgniteSql sql;
 
-    private final Options options;
+    private final IgniteTables tables;
 
-    public IgniteCatalogSqlImpl(IgniteSql sql, Options options) {
-        this.options = options;
+    public IgniteCatalogSqlImpl(IgniteSql sql, IgniteTables tables) {
         this.sql = sql;
+        this.tables = tables;
     }
 
     @Override
-    public Query create(Class<?> keyClass, Class<?> valueClass) {
-        return new CreateFromAnnotationsImpl(sql, 
options).processKeyValueClasses(keyClass, valueClass);
+    public Table create(Class<?> keyClass, Class<?> valueClass) {
+        TableZoneId tableZoneId = new 
CreateFromAnnotationsImpl(sql).processKeyValueClasses(keyClass, 
valueClass).execute();
+        return tables.table(tableZoneId.tableName());
     }
 
     @Override
-    public Query create(Class<?> recordClass) {
-        return new CreateFromAnnotationsImpl(sql, 
options).processRecordClass(recordClass);
+    public Table create(Class<?> recordClass) {
+        TableZoneId tableZoneId = new 
CreateFromAnnotationsImpl(sql).processRecordClass(recordClass).execute();
+        return tables.table(tableZoneId.tableName());
     }
 
     @Override
-    public Query createTable(TableDefinition definition) {
-        return new CreateFromDefinitionImpl(sql, options).from(definition);
+    public Table createTable(TableDefinition definition) {
+        TableZoneId tableZoneId = new 
CreateFromDefinitionImpl(sql).from(definition).execute();
+        return tables.table(tableZoneId.tableName());
     }
 
     @Override
-    public Query createZone(ZoneDefinition definition) {
-        return new CreateFromDefinitionImpl(sql, options).from(definition);
+    public void createZone(ZoneDefinition definition) {
+        new CreateFromDefinitionImpl(sql).from(definition);
     }
 
     @Override
-    public Query dropTable(TableDefinition definition) {
-        return new DropTableImpl(sql, options).name(definition.schemaName(), 
definition.tableName()).ifExists();
+    public void dropTable(TableDefinition definition) {
+        new DropTableImpl(sql).name(definition.schemaName(), 
definition.tableName()).ifExists();
     }
 
     @Override
-    public Query dropTable(String name) {
-        return new DropTableImpl(sql, options).name(name).ifExists();
+    public void dropTable(String name) {
+        new DropTableImpl(sql).name(name).ifExists();
     }
 
     @Override
-    public Query dropZone(ZoneDefinition definition) {
-        return new DropZoneImpl(sql, 
options).name(definition.zoneName()).ifExists();
+    public void dropZone(ZoneDefinition definition) {
+        new DropZoneImpl(sql).name(definition.zoneName()).ifExists();
     }
 
     @Override
-    public Query dropZone(String name) {
-        return new DropZoneImpl(sql, options).name(name).ifExists();
+    public void dropZone(String name) {
+        new DropZoneImpl(sql).name(name).ifExists();
     }
 }
diff --git 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/Name.java
 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/Name.java
index 25fd22a820..7a3c7cd749 100644
--- 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/Name.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/Name.java
@@ -58,10 +58,9 @@ class Name extends QueryPart {
 
     @Override
     protected void accept(QueryContext ctx) {
-        String quote = ctx.isQuoteNames() ? "\"" : "";
         String separator = "";
         for (String name : names) {
-            ctx.sql(separator).sql(quote).sql(name).sql(quote);
+            ctx.sql(separator).sql(name);
             separator = ".";
         }
     }
diff --git 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/QueryContext.java
 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/QueryContext.java
index 39660fb982..6cf964c218 100644
--- 
a/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/QueryContext.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/QueryContext.java
@@ -17,11 +17,8 @@
 
 package org.apache.ignite.internal.catalog.sql;
 
-import org.apache.ignite.catalog.Options;
-
 class QueryContext {
-
-    private final Options options;
+    private static final int INDENT = 2;
 
     private final StringBuilder sql;
 
@@ -29,8 +26,7 @@ class QueryContext {
 
     private boolean newline = false;
 
-    QueryContext(Options options) {
-        this.options = options;
+    QueryContext() {
         sql = new StringBuilder();
     }
 
@@ -73,14 +69,14 @@ class QueryContext {
     }
 
     QueryContext formatSeparator() {
-        if (!newline && options.isPrettyPrint()) {
+        if (!newline) {
             newline = true;
         }
         return this;
     }
 
     boolean isQuoteNames() {
-        return options.isQuoteIdentifiers();
+        return false;
     }
 
     QueryContext sqlIndentStart(String s) {
@@ -88,10 +84,8 @@ class QueryContext {
     }
 
     private QueryContext sqlIndentStart() {
-        indent += options.indentWidth();
-        if (options.isPrettyPrint()) {
-            newline = true;
-        }
+        indent += INDENT;
+        newline = true;
         return this;
     }
 
@@ -100,7 +94,7 @@ class QueryContext {
     }
 
     private QueryContext sqlIndentEnd() {
-        indent -= options.indentWidth();
+        indent -= INDENT;
         return this.formatSeparator();
     }
 
diff --git a/modules/api/src/main/java/org/apache/ignite/catalog/Query.java 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/TableZoneId.java
similarity index 58%
copy from modules/api/src/main/java/org/apache/ignite/catalog/Query.java
copy to 
modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/TableZoneId.java
index c6a4e22045..a3135578ac 100644
--- a/modules/api/src/main/java/org/apache/ignite/catalog/Query.java
+++ 
b/modules/catalog-dsl/src/main/java/org/apache/ignite/internal/catalog/sql/TableZoneId.java
@@ -15,21 +15,32 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.catalog;
+package org.apache.ignite.internal.catalog.sql;
+
+import org.jetbrains.annotations.Nullable;
 
 /**
- * Represents the query generated from the definition or annotation. Can be 
executed directly or converted to the string representation.
+ * Composite class for table and zone names.
  */
-public interface Query {
-    /**
-     * Executes the query.
-     */
-    void execute();
+public class TableZoneId {
+    @Nullable
+    private final String tableName;
+
+    @Nullable
+    private final String zoneName;
+
+    public TableZoneId(@Nullable String tableName, @Nullable String zoneName) {
+        this.tableName = tableName;
+        this.zoneName = zoneName;
+    }
+
+    @Nullable
+    public String tableName() {
+        return tableName;
+    }
 
-    /**
-     * Converts the query to string.
-     *
-     * @return String representation of the query.
-     */
-    String toSqlString();
+    @Nullable
+    public String zoneName() {
+        return zoneName;
+    }
 }
diff --git 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateFromAnnotationsTest.java
 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateFromAnnotationsTest.java
index 1e732b85b8..7d6186cec9 100644
--- 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateFromAnnotationsTest.java
+++ 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateFromAnnotationsTest.java
@@ -25,7 +25,7 @@ import static org.hamcrest.Matchers.is;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import org.apache.ignite.catalog.IndexType;
-import org.apache.ignite.catalog.Options;
+import org.apache.ignite.catalog.Query;
 import org.apache.ignite.catalog.SortOrder;
 import org.apache.ignite.catalog.annotations.Column;
 import org.apache.ignite.catalog.annotations.ColumnRef;
@@ -71,7 +71,8 @@ class CreateFromAnnotationsTest {
                 .filter("filter")
                 .storageProfiles("default")
                 .build();
-        String sqlZoneFromDefinition = new CreateFromDefinitionImpl(null, 
Options.DEFAULT).from(zoneDefinition).toSqlString();
+        Query query2 = new CreateFromDefinitionImpl(null).from(zoneDefinition);
+        String sqlZoneFromDefinition = query2.toString();
 
         TableDefinition tableDefinition = 
TableDefinition.builder("pojo_value_test")
                 .ifNotExists()
@@ -81,17 +82,20 @@ class CreateFromAnnotationsTest {
                 .zone(zoneDefinition.zoneName())
                 .index("ix_pojo", IndexType.DEFAULT, column("f_name"), 
column("l_name").desc())
                 .build();
-        String sqlTableFromDefinition = new CreateFromDefinitionImpl(null, 
Options.DEFAULT).from(tableDefinition).toSqlString();
+        Query query1 = new 
CreateFromDefinitionImpl(null).from(tableDefinition);
+        String sqlTableFromDefinition = query1.toString();
 
-        String sqlFromAnnotations = 
createTable().processKeyValueClasses(PojoKey.class, 
PojoValue.class).toSqlString();
+        Query query = createTable().processKeyValueClasses(PojoKey.class, 
PojoValue.class);
+        String sqlFromAnnotations = query.toString();
         assertThat(sqlFromAnnotations, is(sqlZoneFromDefinition + 
sqlTableFromDefinition));
     }
 
     @Test
     void createFromKeyValueClassesPrimitive() {
         // primitive/boxed key class is a primary key with default name 'id'
+        Query query = createTable().processKeyValueClasses(Integer.class, 
PojoValue.class);
         assertThat(
-                createTable().processKeyValueClasses(Integer.class, 
PojoValue.class).toSqlString(),
+                query.toString(),
                 is("CREATE ZONE IF NOT EXISTS zone_test WITH 
STORAGE_PROFILES='default', PARTITIONS=1, REPLICAS=3,"
                         + " AFFINITY_FUNCTION='affinity',"
                         + " DATA_NODES_AUTO_ADJUST=1, 
DATA_NODES_AUTO_ADJUST_SCALE_UP=3, DATA_NODES_AUTO_ADJUST_SCALE_DOWN=2,"
@@ -102,26 +106,12 @@ class CreateFromAnnotationsTest {
         );
     }
 
-    @Test
-    void createFromKeyValueClassesPrimitiveQuoted() {
-        // primitive/boxed key class is a primary key with default name 'id'
-        assertThat(
-                createTableQuoted().processKeyValueClasses(Integer.class, 
PojoValue.class).toSqlString(),
-                is("CREATE ZONE IF NOT EXISTS \"zone_test\" WITH 
STORAGE_PROFILES='default', PARTITIONS=1, REPLICAS=3,"
-                        + " AFFINITY_FUNCTION='affinity',"
-                        + " DATA_NODES_AUTO_ADJUST=1, 
DATA_NODES_AUTO_ADJUST_SCALE_UP=3, DATA_NODES_AUTO_ADJUST_SCALE_DOWN=2,"
-                        + " DATA_NODES_FILTER='filter';"
-                        + "CREATE TABLE IF NOT EXISTS \"pojo_value_test\" 
(\"id\" int, \"f_name\" varchar, \"l_name\" varchar,"
-                        + " \"str\" varchar, PRIMARY KEY (\"id\")) COLOCATE BY 
(\"id\", \"id_str\") WITH PRIMARY_ZONE='ZONE_TEST';"
-                        + "CREATE INDEX IF NOT EXISTS \"ix_pojo\" ON 
\"pojo_value_test\" (\"f_name\", \"l_name\" desc);")
-        );
-    }
-
     @Test
     void createFromKeyValueClasses() {
         // key class fields (annotated only) is a composite primary keys
+        Query query = createTable().processKeyValueClasses(PojoKey.class, 
PojoValue.class);
         assertThat(
-                createTable().processKeyValueClasses(PojoKey.class, 
PojoValue.class).toSqlString(),
+                query.toString(),
                 is("CREATE ZONE IF NOT EXISTS zone_test WITH 
STORAGE_PROFILES='default', PARTITIONS=1, REPLICAS=3,"
                         + " AFFINITY_FUNCTION='affinity',"
                         + " DATA_NODES_AUTO_ADJUST=1, 
DATA_NODES_AUTO_ADJUST_SCALE_UP=3, DATA_NODES_AUTO_ADJUST_SCALE_DOWN=2,"
@@ -132,26 +122,11 @@ class CreateFromAnnotationsTest {
         );
     }
 
-    @Test
-    void createFromKeyValueClassesQuoted() {
-        // key class fields (annotated only) is a composite primary keys
-        assertThat(
-                createTableQuoted().processKeyValueClasses(PojoKey.class, 
PojoValue.class).toSqlString(),
-                is("CREATE ZONE IF NOT EXISTS \"zone_test\" WITH 
STORAGE_PROFILES='default', PARTITIONS=1, REPLICAS=3,"
-                        + " AFFINITY_FUNCTION='affinity',"
-                        + " DATA_NODES_AUTO_ADJUST=1, 
DATA_NODES_AUTO_ADJUST_SCALE_UP=3, DATA_NODES_AUTO_ADJUST_SCALE_DOWN=2,"
-                        + " DATA_NODES_FILTER='filter';"
-                        + "CREATE TABLE IF NOT EXISTS \"pojo_value_test\" 
(\"id\" int, \"id_str\" varchar(20), \"f_name\" varchar,"
-                        + " \"l_name\" varchar, \"str\" varchar, PRIMARY KEY 
(\"id\", \"id_str\")) COLOCATE BY (\"id\", \"id_str\")"
-                        + " WITH PRIMARY_ZONE='ZONE_TEST';"
-                        + "CREATE INDEX IF NOT EXISTS \"ix_pojo\" ON 
\"pojo_value_test\" (\"f_name\", \"l_name\" desc);")
-        );
-    }
-
     @Test
     void createFromRecordClass() {
+        Query query = createTable().processRecordClass(Pojo.class);
         assertThat(
-                createTable().processRecordClass(Pojo.class).toSqlString(),
+                query.toString(),
                 is("CREATE ZONE IF NOT EXISTS zone_test WITH 
STORAGE_PROFILES='default', PARTITIONS=1, REPLICAS=3,"
                         + " AFFINITY_FUNCTION='affinity',"
                         + " DATA_NODES_AUTO_ADJUST=1, 
DATA_NODES_AUTO_ADJUST_SCALE_UP=3, DATA_NODES_AUTO_ADJUST_SCALE_DOWN=2,"
@@ -163,55 +138,25 @@ class CreateFromAnnotationsTest {
         );
     }
 
-    @Test
-    void createFromRecordClassQuoted() {
-        assertThat(
-                
createTableQuoted().processRecordClass(Pojo.class).toSqlString(),
-                is("CREATE ZONE IF NOT EXISTS \"zone_test\" WITH 
STORAGE_PROFILES='default', PARTITIONS=1, REPLICAS=3,"
-                        + " AFFINITY_FUNCTION='affinity',"
-                        + " DATA_NODES_AUTO_ADJUST=1, 
DATA_NODES_AUTO_ADJUST_SCALE_UP=3, DATA_NODES_AUTO_ADJUST_SCALE_DOWN=2,"
-                        + " DATA_NODES_FILTER='filter';"
-                        + "CREATE TABLE IF NOT EXISTS \"pojo_test\" (\"id\" 
int, \"id_str\" varchar(20),"
-                        + " \"f_name\" varchar(20) not null default 'a', 
\"l_name\" varchar, \"str\" varchar,"
-                        + " PRIMARY KEY (\"id\", \"id_str\")) COLOCATE BY 
(\"id\", \"id_str\") WITH PRIMARY_ZONE='ZONE_TEST';"
-                        + "CREATE INDEX IF NOT EXISTS \"ix_pojo\" ON 
\"pojo_test\" (\"f_name\", \"l_name\" desc);")
-        );
-    }
-
     @Test
     void nameGeneration() {
+        Query query = createTable().processRecordClass(NameGeneration.class);
         assertThat(
-                
createTable().processRecordClass(NameGeneration.class).toSqlString(),
+                query.toString(),
                 is("CREATE TABLE IF NOT EXISTS public.NameGeneration (col1 
int, col2 varchar);"
                         + "CREATE INDEX IF NOT EXISTS ix_col1_col2 ON 
public.NameGeneration (col1, col2);")
         );
     }
 
-    @Test
-    void nameGenerationQuoted() {
-        assertThat(
-                
createTableQuoted().processRecordClass(NameGeneration.class).toSqlString(),
-                is("CREATE TABLE IF NOT EXISTS \"public\".\"NameGeneration\" 
(\"col1\" int, \"col2\" varchar);"
-                        + "CREATE INDEX IF NOT EXISTS \"ix_col1_col2\" ON 
\"public\".\"NameGeneration\" (\"col1\", \"col2\");")
-        );
-    }
-
     @Test
     void primaryKey() {
+        Query query = createTable().processRecordClass(PkSort.class);
         assertThat(
-                createTable().processRecordClass(PkSort.class).toSqlString(),
+                query.toString(),
                 is("CREATE TABLE IF NOT EXISTS PkSort (id int, PRIMARY KEY 
USING SORTED (id desc));")
         );
     }
 
-    @Test
-    void primaryKeyQuoted() {
-        assertThat(
-                
createTableQuoted().processRecordClass(PkSort.class).toSqlString(),
-                is("CREATE TABLE IF NOT EXISTS \"PkSort\" (\"id\" int, PRIMARY 
KEY USING SORTED (\"id\" desc));")
-        );
-    }
-
     @Test
     void nativeTypes() {
         assertThrows(IllegalArgumentException.class, () -> 
createTable().processKeyValueClasses(Integer.class, Integer.class));
@@ -313,14 +258,6 @@ class CreateFromAnnotationsTest {
     }
 
     private static CreateFromAnnotationsImpl createTable() {
-        return createTable(Options.DEFAULT);
-    }
-
-    private static CreateFromAnnotationsImpl createTable(Options options) {
-        return new CreateFromAnnotationsImpl(null, options);
-    }
-
-    private static CreateFromAnnotationsImpl createTableQuoted() {
-        return createTable(Options.builder().quoteIdentifiers().build());
+        return new CreateFromAnnotationsImpl(null);
     }
 }
diff --git 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateFromDefinitionTest.java
 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateFromDefinitionTest.java
index f1c14fc902..dc21ef99f1 100644
--- 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateFromDefinitionTest.java
+++ 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateFromDefinitionTest.java
@@ -28,7 +28,6 @@ import static org.hamcrest.Matchers.is;
 
 import org.apache.ignite.catalog.ColumnType;
 import org.apache.ignite.catalog.IndexType;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.catalog.annotations.Column;
 import org.apache.ignite.catalog.annotations.Id;
 import org.apache.ignite.catalog.definitions.TableDefinition;
@@ -108,16 +107,6 @@ class CreateFromDefinitionTest {
                         + "CREATE INDEX IF NOT EXISTS ix_id_str_f_name ON 
builder_test (id_str, f_name);"
                         + "CREATE INDEX IF NOT EXISTS ix_test ON builder_test 
USING SORTED (id_str asc, f_name desc nulls last);")
         );
-
-        assertThat(
-                createTableQuoted(table),
-                is("CREATE TABLE IF NOT EXISTS \"builder_test\""
-                        + " (\"id\" int, \"id_str\" varchar, \"f_name\" 
varchar(20) NOT NULL DEFAULT 'a', PRIMARY KEY (\"id\", \"id_str\"))"
-                        + " COLOCATE BY (\"id\", \"id_str\") WITH 
PRIMARY_ZONE='ZONE_TEST';"
-                        + "CREATE INDEX IF NOT EXISTS \"ix_id_str_f_name\" ON 
\"builder_test\" (\"id_str\", \"f_name\");"
-                        + "CREATE INDEX IF NOT EXISTS \"ix_test\" ON 
\"builder_test\""
-                        + " USING SORTED (\"id_str\" asc, \"f_name\" desc 
nulls last);")
-        );
     }
 
     @Test
@@ -132,11 +121,6 @@ class CreateFromDefinitionTest {
                 createTable(tableDefinition),
                 is("CREATE TABLE primitive_test (id int, val int, PRIMARY KEY 
(id));")
         );
-
-        assertThat(
-                createTableQuoted(tableDefinition),
-                is("CREATE TABLE \"primitive_test\" (\"id\" int, \"val\" int, 
PRIMARY KEY (\"id\"));")
-        );
     }
 
     @Test
@@ -151,12 +135,6 @@ class CreateFromDefinitionTest {
                 createTable(tableDefinition),
                 is("CREATE TABLE pojo_value_test (id int, f_name varchar, 
l_name varchar, str varchar, PRIMARY KEY (id));")
         );
-
-        assertThat(
-                createTableQuoted(tableDefinition),
-                is("CREATE TABLE \"pojo_value_test\""
-                        + " (\"id\" int, \"f_name\" varchar, \"l_name\" 
varchar, \"str\" varchar, PRIMARY KEY (\"id\"));")
-        );
     }
 
     @Test
@@ -175,14 +153,6 @@ class CreateFromDefinitionTest {
                         + " (id int, id_str varchar(20), f_name varchar, 
l_name varchar, str varchar, PRIMARY KEY (id, id_str))"
                         + " COLOCATE BY (id, id_str) WITH 
PRIMARY_ZONE='ZONE_TEST';")
         );
-
-        assertThat(
-                createTableQuoted(tableDefinition),
-                is("CREATE TABLE \"pojo_value_test\""
-                        + " (\"id\" int, \"id_str\" varchar(20), \"f_name\" 
varchar, \"l_name\" varchar, \"str\" varchar,"
-                        + " PRIMARY KEY (\"id\", \"id_str\"))"
-                        + " COLOCATE BY (\"id\", \"id_str\") WITH 
PRIMARY_ZONE='ZONE_TEST';")
-        );
     }
 
     @Test
@@ -200,14 +170,6 @@ class CreateFromDefinitionTest {
                         + " f_name varchar(20) not null default 'a', l_name 
varchar, str varchar,"
                         + " PRIMARY KEY (id, id_str)) COLOCATE BY (id, id_str) 
WITH PRIMARY_ZONE='ZONE_TEST';")
         );
-
-        // quote identifiers
-        assertThat(
-                createTableQuoted(tableDefinition),
-                is("CREATE TABLE IF NOT EXISTS \"pojo_test\" (\"id\" int, 
\"id_str\" varchar(20),"
-                        + " \"f_name\" varchar(20) not null default 'a', 
\"l_name\" varchar, \"str\" varchar,"
-                        + " PRIMARY KEY (\"id\", \"id_str\")) COLOCATE BY 
(\"id\", \"id_str\") WITH PRIMARY_ZONE='ZONE_TEST';")
-        );
     }
 
     @Test
@@ -220,12 +182,6 @@ class CreateFromDefinitionTest {
                 createTable(tableDefinition),
                 is("CREATE TABLE primitive_test (id int, PRIMARY KEY (id));")
         );
-
-        // quote identifiers
-        assertThat(
-                createTableQuoted(tableDefinition),
-                is("CREATE TABLE \"primitive_test\" (\"id\" int, PRIMARY KEY 
(\"id\"));")
-        );
     }
 
     @SuppressWarnings("unused")
@@ -250,22 +206,14 @@ class CreateFromDefinitionTest {
     }
 
     private static String createZone(ZoneDefinition zoneDefinition) {
-        return createTable().from(zoneDefinition).toSqlString();
+        return createTable().from(zoneDefinition).toString();
     }
 
     private static String createTable(TableDefinition tableDefinition) {
-        return createTable().from(tableDefinition).toSqlString();
+        return createTable().from(tableDefinition).toString();
     }
 
     private static CreateFromDefinitionImpl createTable() {
-        return new CreateFromDefinitionImpl(null, Options.DEFAULT);
-    }
-
-    private static String createTableQuoted(TableDefinition tableDefinition) {
-        return createTableQuoted().from(tableDefinition).toSqlString();
-    }
-
-    private static CreateFromDefinitionImpl createTableQuoted() {
-        return new CreateFromDefinitionImpl(null, 
Options.builder().quoteIdentifiers().build());
+        return new CreateFromDefinitionImpl(null);
     }
 }
diff --git 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateTableTest.java
 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateTableTest.java
index f24d642abc..94b8c0f190 100644
--- 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateTableTest.java
+++ 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateTableTest.java
@@ -24,40 +24,30 @@ import static org.hamcrest.Matchers.is;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import org.apache.ignite.catalog.IndexType;
-import org.apache.ignite.catalog.Options;
+import org.apache.ignite.catalog.Query;
 import org.junit.jupiter.api.Test;
 
 class CreateTableTest {
     @Test
     void ifNotExists() {
-        String sql = 
createTable().ifNotExists().name("table1").addColumn("col1", 
INTEGER).toSqlString();
+        Query query1 = 
createTable().ifNotExists().name("table1").addColumn("col1", INTEGER);
+        String sql = query1.toString();
         assertThat(sql, is("CREATE TABLE IF NOT EXISTS table1 (col1 int);"));
-
-        // quote identifiers
-        sql = 
createTableQuoted().ifNotExists().name("table1").addColumn("col1", 
INTEGER).toSqlString();
-        assertThat(sql, is("CREATE TABLE IF NOT EXISTS \"table1\" (\"col1\" 
int);"));
     }
 
     @Test
     void names() {
-        String sql = createTable().name("", "table1").addColumn("col1", 
INTEGER).toSqlString();
+        Query query5 = createTable().name("", "table1").addColumn("col1", 
INTEGER);
+        String sql = query5.toString();
         assertThat(sql, is("CREATE TABLE table1 (col1 int);"));
 
-        sql = createTable().name(null, "table1").addColumn("col1", 
INTEGER).toSqlString();
+        Query query4 = createTable().name(null, "table1").addColumn("col1", 
INTEGER);
+        sql = query4.toString();
         assertThat(sql, is("CREATE TABLE table1 (col1 int);"));
 
-        sql = createTable().name("public", "table1").addColumn("col1", 
INTEGER).toSqlString();
+        Query query3 = createTable().name("public", 
"table1").addColumn("col1", INTEGER);
+        sql = query3.toString();
         assertThat(sql, is("CREATE TABLE public.table1 (col1 int);"));
-
-        // quote identifiers
-        sql = createTableQuoted().name("", "table1").addColumn("col1", 
INTEGER).toSqlString();
-        assertThat(sql, is("CREATE TABLE \"table1\" (\"col1\" int);"));
-
-        sql = createTableQuoted().name(null, "table1").addColumn("col1", 
INTEGER).toSqlString();
-        assertThat(sql, is("CREATE TABLE \"table1\" (\"col1\" int);"));
-
-        sql = createTableQuoted().name("public", "table1").addColumn("col1", 
INTEGER).toSqlString();
-        assertThat(sql, is("CREATE TABLE \"public\".\"table1\" (\"col1\" 
int);"));
     }
 
     @Test
@@ -69,134 +59,80 @@ class CreateTableTest {
 
     @Test
     void columns() {
-        String sql = createTable().name("table1")
-                .addColumn("col", INTEGER).toSqlString();
+        Query query3 = createTable().name("table1")
+                .addColumn("col", INTEGER);
+        String sql = query3.toString();
         assertThat(sql, is("CREATE TABLE table1 (col int);"));
 
-        sql = createTable().name("table1")
+        Query query2 = createTable().name("table1")
                 .addColumn("col1", INTEGER)
-                .addColumn("col2", INTEGER)
-                .toSqlString();
+                .addColumn("col2", INTEGER);
+        sql = query2.toString();
         assertThat(sql, is("CREATE TABLE table1 (col1 int, col2 int);"));
-
-        // quote identifiers
-        sql = createTableQuoted().name("table1")
-                .addColumn("col", INTEGER).toSqlString();
-        assertThat(sql, is("CREATE TABLE \"table1\" (\"col\" int);"));
-
-        sql = createTableQuoted().name("table1")
-                .addColumn("col1", INTEGER)
-                .addColumn("col2", INTEGER)
-                .toSqlString();
-        assertThat(sql, is("CREATE TABLE \"table1\" (\"col1\" int, \"col2\" 
int);"));
     }
 
     @Test
     void primaryKey() {
-        String sql = createTable().name("table1")
+        Query query5 = createTable().name("table1")
                 .addColumn("col", INTEGER)
-                .primaryKey("col")
-                .toSqlString();
+                .primaryKey("col");
+        String sql = query5.toString();
         assertThat(sql, is("CREATE TABLE table1 (col int, PRIMARY KEY 
(col));"));
 
-        sql = createTable().name("table1")
+        Query query4 = createTable().name("table1")
                 .addColumn("col1", INTEGER)
                 .addColumn("col2", INTEGER)
-                .primaryKey("col1, col2")
-                .toSqlString();
+                .primaryKey("col1, col2");
+        sql = query4.toString();
         assertThat(sql, is("CREATE TABLE table1 (col1 int, col2 int, PRIMARY 
KEY (col1, col2));"));
 
-        sql = createTable().name("table1")
+        Query query3 = createTable().name("table1")
                 .addColumn("col1", INTEGER)
-                .primaryKey(IndexType.SORTED, "col1 ASC    nUlls First  ")
-                .toSqlString();
+                .primaryKey(IndexType.SORTED, "col1 ASC    nUlls First  ");
+        sql = query3.toString();
         assertThat(sql, is("CREATE TABLE table1 (col1 int, PRIMARY KEY USING 
SORTED (col1 asc nulls first));"));
-
-        // quote identifiers
-        sql = createTableQuoted().name("table1")
-                .addColumn("col", INTEGER)
-                .primaryKey("col")
-                .toSqlString();
-        assertThat(sql, is("CREATE TABLE \"table1\" (\"col\" int, PRIMARY KEY 
(\"col\"));"));
-
-        sql = createTableQuoted().name("table1")
-                .addColumn("col1", INTEGER)
-                .addColumn("col2", INTEGER)
-                .primaryKey("col1, col2")
-                .toSqlString();
-        assertThat(sql, is("CREATE TABLE \"table1\" (\"col1\" int, \"col2\" 
int, PRIMARY KEY (\"col1\", \"col2\"));"));
-
-        sql = createTableQuoted().name("table1")
-                .addColumn("col1", INTEGER)
-                .primaryKey(IndexType.SORTED, "col1 ASC nUlls First   ")
-                .toSqlString();
-        assertThat(sql, is("CREATE TABLE \"table1\" (\"col1\" int, PRIMARY KEY 
USING SORTED (\"col1\" asc nulls first));"));
     }
 
     @Test
     void colocateBy() {
-        String sql = createTable().name("table1").addColumn("col1", INTEGER)
-                .colocateBy("col1").toSqlString();
+        Query query5 = createTable().name("table1").addColumn("col1", INTEGER)
+                .colocateBy("col1");
+        String sql = query5.toString();
         assertThat(sql, is("CREATE TABLE table1 (col1 int) COLOCATE BY 
(col1);"));
 
-        sql = createTable().name("table1").addColumn("col1", INTEGER)
-                .colocateBy("col1", "col2").toSqlString();
+        Query query4 = createTable().name("table1").addColumn("col1", INTEGER)
+                .colocateBy("col1", "col2");
+        sql = query4.toString();
         assertThat(sql, is("CREATE TABLE table1 (col1 int) COLOCATE BY (col1, 
col2);"));
 
-        sql = createTable().name("table1").addColumn("col1", INTEGER)
-                .colocateBy("col1, col2").toSqlString();
+        Query query3 = createTable().name("table1").addColumn("col1", INTEGER)
+                .colocateBy("col1, col2");
+        sql = query3.toString();
         assertThat(sql, is("CREATE TABLE table1 (col1 int) COLOCATE BY (col1, 
col2);"));
-
-        // quote identifiers
-        sql = createTableQuoted().name("table1").addColumn("col1", INTEGER)
-                .colocateBy("col1").toSqlString();
-        assertThat(sql, is("CREATE TABLE \"table1\" (\"col1\" int) COLOCATE BY 
(\"col1\");"));
-
-        sql = createTableQuoted().name("table1").addColumn("col1", INTEGER)
-                .colocateBy("col1", "col2").toSqlString();
-        assertThat(sql, is("CREATE TABLE \"table1\" (\"col1\" int) COLOCATE BY 
(\"col1\", \"col2\");"));
-
-        sql = createTableQuoted().name("table1").addColumn("col1", INTEGER)
-                .colocateBy("col1, col2").toSqlString();
-        assertThat(sql, is("CREATE TABLE \"table1\" (\"col1\" int) COLOCATE BY 
(\"col1\", \"col2\");"));
     }
 
     @Test
     void withOptions() {
-        String sql = createTable().name("table1").addColumn("col1", INTEGER)
-                .zone("zone1").toSqlString(); // zone param is lowercase
+        Query query1 = createTable().name("table1").addColumn("col1", INTEGER)
+                .zone("zone1");
+        String sql = query1.toString(); // zone param is lowercase
         assertThat(sql, is("CREATE TABLE table1 (col1 int) WITH 
PRIMARY_ZONE='ZONE1';")); // zone result is uppercase
-
-        sql = createTableQuoted().name("table1").addColumn("col1", INTEGER)
-                .zone("zone1").toSqlString();
-        assertThat(sql, is("CREATE TABLE \"table1\" (\"col1\" int) WITH 
PRIMARY_ZONE='ZONE1';"));
     }
 
     @Test
     void index() {
-        String sql = createTable().name("table1").addColumn("col1", INTEGER)
-                .addIndex("ix_test1", "col1, COL2_UPPER desc nulls 
last").toSqlString();
+        Query query3 = createTable().name("table1").addColumn("col1", INTEGER)
+                .addIndex("ix_test1", "col1, COL2_UPPER desc nulls last");
+        String sql = query3.toString();
         assertThat(sql, endsWith("CREATE INDEX IF NOT EXISTS ix_test1 ON 
table1 (col1, COL2_UPPER desc nulls last);"));
 
-        sql = createTable().name("table1").addColumn("col1", INTEGER)
-                .addIndex("ix_test1", IndexType.HASH, "col1").toSqlString();
+        Query query2 = createTable().name("table1").addColumn("col1", INTEGER)
+                .addIndex("ix_test1", IndexType.HASH, "col1");
+        sql = query2.toString();
         assertThat(sql, endsWith("CREATE INDEX IF NOT EXISTS ix_test1 ON 
table1 USING HASH (col1);"));
-
-        // quote identifiers
-        sql = createTableQuoted().name("table1").addColumn("col1", INTEGER)
-                .addIndex("ix_test1", "col1, COL2_UPPER desc nulls 
last").toSqlString();
-        assertThat(sql, endsWith("CREATE INDEX IF NOT EXISTS \"ix_test1\" ON 
\"table1\" (\"col1\", \"COL2_UPPER\" desc nulls last);"));
-
-        sql = createTableQuoted().name("table1").addColumn("col1", INTEGER)
-                .addIndex("ix_test1", IndexType.HASH, "col1").toSqlString();
-        assertThat(sql, endsWith("CREATE INDEX IF NOT EXISTS \"ix_test1\" ON 
\"table1\" USING HASH (\"col1\");"));
     }
 
     private static CreateTableImpl createTable() {
-        return new CreateTableImpl(null, Options.DEFAULT);
-    }
-
-    private static CreateTableImpl createTableQuoted() {
-        return new CreateTableImpl(null, 
Options.builder().quoteIdentifiers().build());
+        return new CreateTableImpl(null);
     }
 }
diff --git 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateZoneTest.java
 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateZoneTest.java
index 544ce6a726..c922cc8c4d 100644
--- 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateZoneTest.java
+++ 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/CreateZoneTest.java
@@ -20,57 +20,36 @@ package org.apache.ignite.internal.catalog.sql;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
 
-import org.apache.ignite.catalog.Options;
+import org.apache.ignite.catalog.Query;
 import org.junit.jupiter.api.Test;
 
 class CreateZoneTest {
     @Test
     void testIfNotExists() {
-        String sql = createZone().ifNotExists().name("zone1").toSqlString();
+        Query query1 = createZone().ifNotExists().name("zone1");
+        String sql = query1.toString();
         assertThat(sql, is("CREATE ZONE IF NOT EXISTS zone1;"));
-
-        sql = createZoneQuoted().ifNotExists().name("zone1").toSqlString();
-        assertThat(sql, is("CREATE ZONE IF NOT EXISTS \"zone1\";"));
     }
 
     @Test
     void testNames() {
-        String sql = createZone().name("public", "zone1").toSqlString();
+        Query query1 = createZone().name("public", "zone1");
+        String sql = query1.toString();
         assertThat(sql, is("CREATE ZONE public.zone1;"));
-
-        // quote identifiers
-        sql = createZoneQuoted().name("public", "zone1").toSqlString();
-        assertThat(sql, is("CREATE ZONE \"public\".\"zone1\";"));
     }
 
     @Test
     void testWithOptions() {
-        String sql = createZone().name("zone1").partitions(1).toSqlString();
+        Query query4 = createZone().name("zone1").partitions(1);
+        String sql = query4.toString();
         assertThat(sql, is("CREATE ZONE zone1 WITH PARTITIONS=1;"));
 
-        sql = 
createZone().name("zone1").partitions(1).replicas(1).toSqlString();
+        Query query3 = createZone().name("zone1").partitions(1).replicas(1);
+        sql = query3.toString();
         assertThat(sql, is("CREATE ZONE zone1 WITH PARTITIONS=1, 
REPLICAS=1;"));
-
-        // quote identifiers
-        sql = createZoneQuoted().name("zone1").partitions(1).toSqlString();
-        assertThat(sql, is("CREATE ZONE \"zone1\" WITH PARTITIONS=1;"));
-
-        sql = 
createZoneQuoted().name("zone1").partitions(1).replicas(1).toSqlString();
-        assertThat(sql, is("CREATE ZONE \"zone1\" WITH PARTITIONS=1, 
REPLICAS=1;"));
-
-        sql = 
createZoneQuoted().name("zone1").storageProfiles("profile1,profile2").toSqlString();
-        assertThat(sql, is("CREATE ZONE \"zone1\" WITH 
STORAGE_PROFILES='profile1,profile2';"));
     }
 
     private static CreateZoneImpl createZone() {
-        return createZone(Options.DEFAULT);
-    }
-
-    private static CreateZoneImpl createZone(Options options) {
-        return new CreateZoneImpl(null, options);
-    }
-
-    private static CreateZoneImpl createZoneQuoted() {
-        return createZone(Options.builder().quoteIdentifiers().build());
+        return new CreateZoneImpl(null);
     }
 }
diff --git 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/DropTableTest.java
 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/DropTableTest.java
index e824b63ba7..fd4038862b 100644
--- 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/DropTableTest.java
+++ 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/DropTableTest.java
@@ -20,31 +20,22 @@ package org.apache.ignite.internal.catalog.sql;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
 
-import org.apache.ignite.catalog.Options;
+import org.apache.ignite.catalog.Query;
 import org.junit.jupiter.api.Test;
 
 class DropTableTest {
     @Test
     void testDropTable() {
-        String sql = dropTable().name("table1").toSqlString();
+        Query query2 = dropTable().name("table1");
+        String sql = query2.toString();
         assertThat(sql, is("DROP TABLE table1;"));
 
-        sql = dropTable().ifExists().name("table1").toSqlString();
+        Query query1 = dropTable().ifExists().name("table1");
+        sql = query1.toString();
         assertThat(sql, is("DROP TABLE IF EXISTS table1;"));
-
-        sql = dropTableQuoted().ifExists().name("table1").toSqlString();
-        assertThat(sql, is("DROP TABLE IF EXISTS \"table1\";"));
     }
 
     private static DropTableImpl dropTable() {
-        return dropTable(Options.DEFAULT);
-    }
-
-    private static DropTableImpl dropTable(Options options) {
-        return new DropTableImpl(null, options);
-    }
-
-    private static DropTableImpl dropTableQuoted() {
-        return dropTable(Options.builder().quoteIdentifiers().build());
+        return new DropTableImpl(null);
     }
 }
diff --git 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/DropZoneTest.java
 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/DropZoneTest.java
index a6e6d147e5..cad1f3c25e 100644
--- 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/DropZoneTest.java
+++ 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/DropZoneTest.java
@@ -20,31 +20,22 @@ package org.apache.ignite.internal.catalog.sql;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
 
-import org.apache.ignite.catalog.Options;
+import org.apache.ignite.catalog.Query;
 import org.junit.jupiter.api.Test;
 
 class DropZoneTest {
     @Test
     void testDropZone() {
-        String sql = dropZone().name("zone1").toSqlString();
+        Query query2 = dropZone().name("zone1");
+        String sql = query2.toString();
         assertThat(sql, is("DROP ZONE zone1;"));
 
-        sql = dropZone().ifExists().name("zone1").toSqlString();
+        Query query1 = dropZone().ifExists().name("zone1");
+        sql = query1.toString();
         assertThat(sql, is("DROP ZONE IF EXISTS zone1;"));
-
-        sql = dropZoneQuoted().ifExists().name("zone1").toSqlString();
-        assertThat(sql, is("DROP ZONE IF EXISTS \"zone1\";"));
     }
 
     private static DropZoneImpl dropZone() {
-        return dropZone(Options.DEFAULT);
-    }
-
-    private static DropZoneImpl dropZone(Options options) {
-        return new DropZoneImpl(null, options);
-    }
-
-    private static DropZoneImpl dropZoneQuoted() {
-        return dropZone(Options.builder().quoteIdentifiers().build());
+        return new DropZoneImpl(null);
     }
 }
diff --git 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/QueryPartTest.java
 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/QueryPartTest.java
index 66407a015f..46e772ad6a 100644
--- 
a/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/QueryPartTest.java
+++ 
b/modules/catalog-dsl/src/test/java/org/apache/ignite/internal/catalog/sql/QueryPartTest.java
@@ -47,7 +47,6 @@ import java.math.BigDecimal;
 import java.util.List;
 import org.apache.ignite.catalog.ColumnType;
 import org.apache.ignite.catalog.IndexType;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.catalog.SortOrder;
 import org.junit.jupiter.api.Test;
 
@@ -56,37 +55,30 @@ class QueryPartTest {
     void namePart() {
         Name name = new Name("a");
         assertThat(sql(name), is("a"));
-        assertThat(sqlQuoted(name), is("\"a\""));
 
         name = new Name("a", "b", "c");
         assertThat(sql(name), is("a.b.c"));
-        assertThat(sqlQuoted(name), is("\"a\".\"b\".\"c\""));
     }
 
     @Test
     void colocatePart() {
         Colocate colocate = new Colocate("a");
         assertThat(sql(colocate), is("COLOCATE BY (a)"));
-        assertThat(sqlQuoted(colocate), is("COLOCATE BY (\"a\")"));
 
         colocate = new Colocate("a", "b");
         assertThat(sql(colocate), is("COLOCATE BY (a, b)"));
-        assertThat(sqlQuoted(colocate), is("COLOCATE BY (\"a\", \"b\")"));
     }
 
     @Test
     void columnPart() {
         Column column = new Column("a", wrap(VARCHAR));
         assertThat(sql(column), is("a varchar"));
-        assertThat(sqlQuoted(column), is("\"a\" varchar"));
 
         column = new Column("a", wrap(ColumnType.varchar(3)));
         assertThat(sql(column), is("a varchar(3)"));
-        assertThat(sqlQuoted(column), is("\"a\" varchar(3)"));
 
         column = new Column("a", wrap(ColumnType.decimal(2, 3)));
         assertThat(sql(column), is("a decimal(2, 3)"));
-        assertThat(sqlQuoted(column), is("\"a\" decimal(2, 3)"));
     }
 
     @Test
@@ -133,34 +125,27 @@ class QueryPartTest {
     void constraintPart() {
         Constraint constraint = new Constraint().primaryKey(column("a"));
         assertThat(sql(constraint), is("PRIMARY KEY (a)"));
-        assertThat(sqlQuoted(constraint), is("PRIMARY KEY (\"a\")"));
 
         constraint = new Constraint().primaryKey(IndexType.SORTED, 
List.of(column("a")));
         assertThat(sql(constraint), is("PRIMARY KEY USING SORTED (a)"));
-        assertThat(sqlQuoted(constraint), is("PRIMARY KEY USING SORTED 
(\"a\")"));
 
         constraint = new Constraint().primaryKey(column("a"), column("b"));
         assertThat(sql(constraint), is("PRIMARY KEY (a, b)"));
-        assertThat(sqlQuoted(constraint), is("PRIMARY KEY (\"a\", \"b\")"));
 
         constraint = new Constraint().primaryKey(IndexType.SORTED, 
List.of(column("a"), column("b")));
         assertThat(sql(constraint), is("PRIMARY KEY USING SORTED (a, b)"));
-        assertThat(sqlQuoted(constraint), is("PRIMARY KEY USING SORTED (\"a\", 
\"b\")"));
     }
 
     @Test
     void withOptionPart() {
         WithOption withOption = WithOption.primaryZone("z");
         assertThat(sql(withOption), is("PRIMARY_ZONE='Z'"));
-        assertThat(sqlQuoted(withOption), is("PRIMARY_ZONE='Z'"));
 
         withOption = WithOption.partitions(1);
         assertThat(sql(withOption), is("PARTITIONS=1"));
-        assertThat(sqlQuoted(withOption), is("PARTITIONS=1"));
 
         withOption = WithOption.replicas(1);
         assertThat(sql(withOption), is("REPLICAS=1"));
-        assertThat(sqlQuoted(withOption), is("REPLICAS=1"));
     }
 
     @Test
@@ -168,22 +153,18 @@ class QueryPartTest {
         QueryPartCollection<Name> collection = 
QueryPartCollection.partsList(new Name("a"), new Name("b"));
 
         assertThat(sql(collection), is("a, b"));
-        assertThat(sqlQuoted(collection), is("\"a\", \"b\""));
     }
 
     @Test
     void indexColumnPart() {
         IndexColumnImpl column = IndexColumnImpl.wrap(column("col1"));
         assertThat(sql(column), is("col1"));
-        assertThat(sqlQuoted(column), is("\"col1\""));
 
         column = IndexColumnImpl.wrap(column("col1", 
SortOrder.ASC_NULLS_FIRST));
         assertThat(sql(column), is("col1 asc nulls first"));
-        assertThat(sqlQuoted(column), is("\"col1\" asc nulls first"));
 
         column = IndexColumnImpl.wrap(column("col1", 
SortOrder.DESC_NULLS_LAST));
         assertThat(sql(column), is("col1 desc nulls last"));
-        assertThat(sqlQuoted(column), is("\"col1\" desc nulls last"));
     }
 
     @Test
@@ -223,14 +204,6 @@ class QueryPartTest {
     }
 
     private static String sql(QueryPart part) {
-        return ctx(Options.DEFAULT).visit(part).getSql();
-    }
-
-    private static String sqlQuoted(QueryPart part) {
-        return 
ctx(Options.builder().quoteIdentifiers().build()).visit(part).getSql();
-    }
-
-    private static QueryContext ctx(Options options) {
-        return new QueryContext(options);
+        return new QueryContext().visit(part).getSql();
     }
 }
diff --git 
a/modules/client/src/main/java/org/apache/ignite/internal/client/TcpIgniteClient.java
 
b/modules/client/src/main/java/org/apache/ignite/internal/client/TcpIgniteClient.java
index 94f7e4b113..6088023ecd 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/internal/client/TcpIgniteClient.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/internal/client/TcpIgniteClient.java
@@ -24,7 +24,6 @@ import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import org.apache.ignite.catalog.IgniteCatalog;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.client.IgniteClient;
 import org.apache.ignite.client.IgniteClientConfiguration;
 import org.apache.ignite.compute.IgniteCompute;
@@ -207,8 +206,8 @@ public class TcpIgniteClient implements IgniteClient {
     }
 
     @Override
-    public IgniteCatalog catalog(Options options) {
-        return new IgniteCatalogSqlImpl(sql(), options);
+    public IgniteCatalog catalog() {
+        return new IgniteCatalogSqlImpl(sql(), tables);
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeIgnite.java 
b/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeIgnite.java
index e35c369520..52111bc901 100644
--- 
a/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeIgnite.java
+++ 
b/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeIgnite.java
@@ -21,7 +21,6 @@ import java.util.Collection;
 import java.util.concurrent.CompletableFuture;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.catalog.IgniteCatalog;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.compute.IgniteCompute;
 import org.apache.ignite.internal.catalog.sql.IgniteCatalogSqlImpl;
 import org.apache.ignite.internal.hlc.HybridClock;
@@ -107,8 +106,8 @@ public class FakeIgnite implements Ignite {
     }
 
     @Override
-    public IgniteCatalog catalog(Options options) {
-        return new IgniteCatalogSqlImpl(sql(), options);
+    public IgniteCatalog catalog() {
+        return new IgniteCatalogSqlImpl(sql(), tables);
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
index ee1d8799eb..3bc9aa2a6d 100644
--- 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
+++ 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
@@ -54,7 +54,6 @@ import java.util.function.Supplier;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgnitionManager;
 import org.apache.ignite.catalog.IgniteCatalog;
-import org.apache.ignite.catalog.Options;
 import org.apache.ignite.client.handler.ClientHandlerMetricSource;
 import org.apache.ignite.client.handler.ClientHandlerModule;
 import 
org.apache.ignite.client.handler.configuration.ClientConnectorConfiguration;
@@ -1333,8 +1332,8 @@ public class IgniteImpl implements Ignite {
     }
 
     @Override
-    public IgniteCatalog catalog(Options options) {
-        return new IgniteCatalogSqlImpl(sql, options);
+    public IgniteCatalog catalog() {
+        return new IgniteCatalogSqlImpl(sql, distributedTblMgr);
     }
 
     /**

Reply via email to