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); } /**
