This is an automated email from the ASF dual-hosted git repository.
mpochatkin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 35266e6623 IGNITE-22277 Rework Zone annotation (#3856)
35266e6623 is described below
commit 35266e6623a8ea41f0aaddf09b1265f29d13f311
Author: Mikhail <[email protected]>
AuthorDate: Thu Jun 6 13:51:14 2024 +0300
IGNITE-22277 Rework Zone annotation (#3856)
Removed possibility to configure zone by class reference.
User PUBLIC as default schema
---
.../org/apache/ignite/catalog/DefaultZone.java | 27 ----------
.../apache/ignite/catalog/annotations/Table.java | 15 ++++--
.../apache/ignite/catalog/annotations/Zone.java | 19 ++++---
.../catalog/definitions/TableDefinition.java | 3 +-
.../ignite/internal/catalog/ItCatalogDslTest.java | 11 ++--
.../catalog/sql/CreateFromAnnotationsImpl.java | 13 ++---
.../catalog/sql/CreateFromAnnotationsTest.java | 61 ++++++++++++----------
.../catalog/sql/CreateFromDefinitionTest.java | 18 +++----
8 files changed, 75 insertions(+), 92 deletions(-)
diff --git
a/modules/api/src/main/java/org/apache/ignite/catalog/DefaultZone.java
b/modules/api/src/main/java/org/apache/ignite/catalog/DefaultZone.java
deleted file mode 100644
index b3591123b7..0000000000
--- a/modules/api/src/main/java/org/apache/ignite/catalog/DefaultZone.java
+++ /dev/null
@@ -1,27 +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;
-
-
-import org.apache.ignite.catalog.annotations.Table;
-
-/**
- * Marker interface for {@link Table} annotation.
- */
-public interface DefaultZone {
-}
diff --git
a/modules/api/src/main/java/org/apache/ignite/catalog/annotations/Table.java
b/modules/api/src/main/java/org/apache/ignite/catalog/annotations/Table.java
index 18f8a72a01..74cda4c860 100644
--- a/modules/api/src/main/java/org/apache/ignite/catalog/annotations/Table.java
+++ b/modules/api/src/main/java/org/apache/ignite/catalog/annotations/Table.java
@@ -22,7 +22,6 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
-import org.apache.ignite.catalog.DefaultZone;
import org.apache.ignite.catalog.IndexType;
/**
@@ -31,6 +30,16 @@ import org.apache.ignite.catalog.IndexType;
@Target(TYPE)
@Retention(RUNTIME)
public @interface Table {
+ /**
+ * Default zone name.
+ */
+ String DEFAULT_ZONE = "Default";
+
+ /**
+ * Default schema name.
+ */
+ String DEFAULT_SCHEMA = "PUBLIC";
+
/**
* The name of the table. If it's empty, the name of the class annotated
with this annotation will be used.
*
@@ -43,7 +52,7 @@ public @interface Table {
*
* @return The schema name.
*/
- String schemaName() default "";
+ String schemaName() default DEFAULT_SCHEMA;
/**
* Indexes to create on this table.
@@ -71,5 +80,5 @@ public @interface Table {
*
* @return Zone description class.
*/
- Class<?> zone() default DefaultZone.class;
+ Zone zone() default @Zone(value = DEFAULT_ZONE, storageProfiles = "");
}
diff --git
a/modules/api/src/main/java/org/apache/ignite/catalog/annotations/Zone.java
b/modules/api/src/main/java/org/apache/ignite/catalog/annotations/Zone.java
index 939936f0ea..58e6b1e146 100644
--- a/modules/api/src/main/java/org/apache/ignite/catalog/annotations/Zone.java
+++ b/modules/api/src/main/java/org/apache/ignite/catalog/annotations/Zone.java
@@ -17,7 +17,6 @@
package org.apache.ignite.catalog.annotations;
-import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
@@ -26,7 +25,7 @@ import java.lang.annotation.Target;
/**
* Describes a distribution zone.
*/
-@Target(TYPE)
+@Target({})
@Retention(RUNTIME)
public @interface Zone {
/**
@@ -34,7 +33,14 @@ public @interface Zone {
*
* @return The name of the zone.
*/
- String value() default "";
+ String value();
+
+ /**
+ * Storage profiles.
+ *
+ * @return Storage profiles.
+ */
+ String storageProfiles();
/**
* Number of partitions.
@@ -84,11 +90,4 @@ public @interface Zone {
* @return Nodes filter.
*/
String filter() default "";
-
- /**
- * Storage profiles.
- *
- * @return Storage profiles.
- */
- String storageProfiles();
}
diff --git
a/modules/api/src/main/java/org/apache/ignite/catalog/definitions/TableDefinition.java
b/modules/api/src/main/java/org/apache/ignite/catalog/definitions/TableDefinition.java
index abf9d4651e..74f9e15eeb 100644
---
a/modules/api/src/main/java/org/apache/ignite/catalog/definitions/TableDefinition.java
+++
b/modules/api/src/main/java/org/apache/ignite/catalog/definitions/TableDefinition.java
@@ -24,6 +24,7 @@ import java.util.Objects;
import java.util.stream.Collectors;
import org.apache.ignite.catalog.ColumnSorted;
import org.apache.ignite.catalog.IndexType;
+import org.apache.ignite.catalog.annotations.Table;
import org.jetbrains.annotations.Nullable;
/**
@@ -211,7 +212,7 @@ public class TableDefinition {
public static class Builder {
private String tableName;
- private String schemaName;
+ private String schemaName = Table.DEFAULT_SCHEMA;
private boolean ifNotExists;
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 74591630a5..227f62cfaf 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
@@ -306,10 +306,6 @@ class ItCatalogDslTest extends
ClusterPerClassIntegrationTest {
return CLUSTER.node(0).tables();
}
- @Zone(value = ZONE_NAME, storageProfiles = DEFAULT_AIPERSIST_PROFILE_NAME)
- private static class ZoneTest {
- }
-
private static class PojoKey {
@Id
Integer id;
@@ -329,7 +325,10 @@ class ItCatalogDslTest extends
ClusterPerClassIntegrationTest {
@Table(
value = POJO_KV_TABLE_NAME,
- zone = ZoneTest.class,
+ zone = @Zone(
+ value = ZONE_NAME,
+ storageProfiles = DEFAULT_AIPERSIST_PROFILE_NAME
+ ),
colocateBy = @ColumnRef("id"),
indexes = @Index(value = "ix_pojo", columns = {
@ColumnRef("f_name"),
@@ -374,7 +373,7 @@ class ItCatalogDslTest extends
ClusterPerClassIntegrationTest {
@Table(
value = POJO_RECORD_TABLE_NAME,
- zone = ZoneTest.class,
+ zone = @Zone(value = ZONE_NAME, storageProfiles =
DEFAULT_AIPERSIST_PROFILE_NAME),
colocateBy = @ColumnRef("id"),
indexes = @Index(value = "ix_pojo", columns = {
@ColumnRef("f_name"),
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 3981078deb..e10a924589 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
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.catalog.sql;
import static org.apache.ignite.catalog.ColumnSorted.column;
+import static org.apache.ignite.catalog.annotations.Table.DEFAULT_ZONE;
import static org.apache.ignite.internal.catalog.sql.QueryUtils.mapArrayToList;
import static org.apache.ignite.table.mapper.Mapper.nativelySupported;
@@ -27,7 +28,6 @@ import java.util.ArrayList;
import java.util.List;
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.annotations.Column;
import org.apache.ignite.catalog.annotations.ColumnRef;
@@ -109,15 +109,12 @@ class CreateFromAnnotationsImpl extends
AbstractCatalogQuery<TableZoneId> {
}
private void processZone(Table table) {
- Class<?> zoneRef = table.zone();
- if (zoneRef == DefaultZone.class) {
- return;
- }
- Zone zone = zoneRef.getAnnotation(Zone.class);
- if (zone != null) {
+ Zone zone = table.zone();
+
+ if (zone != null && !DEFAULT_ZONE.equalsIgnoreCase(zone.value())) {
createZone = new CreateZoneImpl(sql).ifNotExists();
- String zoneName = zone.value().isEmpty() ? zoneRef.getSimpleName()
: zone.value();
+ String zoneName = zone.value();
this.zoneName = zoneName;
createTable.zone(zoneName);
createZone.name(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 3b29e16248..22e7bd03f3 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
@@ -100,10 +100,10 @@ class CreateFromAnnotationsTest {
+ " DATA_NODES_AUTO_ADJUST=1,
DATA_NODES_AUTO_ADJUST_SCALE_UP=3, DATA_NODES_AUTO_ADJUST_SCALE_DOWN=2,"
+ " DATA_NODES_FILTER='filter';"
+ System.lineSeparator()
- + "CREATE TABLE IF NOT EXISTS pojo_value_test (id int,
f_name varchar, l_name varchar, str varchar,"
+ + "CREATE TABLE IF NOT EXISTS PUBLIC.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';"
+ System.lineSeparator()
- + "CREATE INDEX IF NOT EXISTS ix_pojo ON
pojo_value_test (f_name, l_name desc);")
+ + "CREATE INDEX IF NOT EXISTS ix_pojo ON
PUBLIC.pojo_value_test (f_name, l_name desc);")
);
}
@@ -118,10 +118,10 @@ class CreateFromAnnotationsTest {
+ " DATA_NODES_AUTO_ADJUST=1,
DATA_NODES_AUTO_ADJUST_SCALE_UP=3, DATA_NODES_AUTO_ADJUST_SCALE_DOWN=2,"
+ " DATA_NODES_FILTER='filter';"
+ System.lineSeparator()
- + "CREATE TABLE IF NOT EXISTS pojo_value_test (id int,
id_str varchar(20), f_name varchar, l_name varchar,"
+ + "CREATE TABLE IF NOT EXISTS PUBLIC.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';"
+ System.lineSeparator()
- + "CREATE INDEX IF NOT EXISTS ix_pojo ON
pojo_value_test (f_name, l_name desc);")
+ + "CREATE INDEX IF NOT EXISTS ix_pojo ON
PUBLIC.pojo_value_test (f_name, l_name desc);")
);
}
@@ -135,11 +135,12 @@ class CreateFromAnnotationsTest {
+ " DATA_NODES_AUTO_ADJUST=1,
DATA_NODES_AUTO_ADJUST_SCALE_UP=3, DATA_NODES_AUTO_ADJUST_SCALE_DOWN=2,"
+ " DATA_NODES_FILTER='filter';"
+ System.lineSeparator()
- + "CREATE TABLE IF NOT EXISTS pojo_test (id int,
id_str varchar(20), f_name varchar(20) not null default 'a',"
+ + "CREATE TABLE IF NOT EXISTS PUBLIC.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';"
+ System.lineSeparator()
- + "CREATE INDEX IF NOT EXISTS ix_pojo ON pojo_test
(f_name, l_name desc);")
+ + "CREATE INDEX IF NOT EXISTS ix_pojo ON
PUBLIC.pojo_test (f_name, l_name desc);")
);
}
@@ -148,9 +149,9 @@ class CreateFromAnnotationsTest {
CreateFromAnnotationsImpl query =
createTable().processRecordClass(NameGeneration.class);
assertThat(
query.toString(),
- is("CREATE TABLE IF NOT EXISTS public.NameGeneration (col1
int, col2 varchar);"
+ is("CREATE TABLE IF NOT EXISTS PUBLIC.NameGeneration (col1
int, col2 varchar);"
+ System.lineSeparator()
- + "CREATE INDEX IF NOT EXISTS ix_col1_col2 ON
public.NameGeneration (col1, col2);")
+ + "CREATE INDEX IF NOT EXISTS ix_col1_col2 ON
PUBLIC.NameGeneration (col1, col2);")
);
}
@@ -159,7 +160,7 @@ class CreateFromAnnotationsTest {
CreateFromAnnotationsImpl query =
createTable().processRecordClass(PkSort.class);
assertThat(
query.toString(),
- is("CREATE TABLE IF NOT EXISTS PkSort (id int, PRIMARY KEY
USING SORTED (id desc));")
+ is("CREATE TABLE IF NOT EXISTS PUBLIC.PkSort (id int, PRIMARY
KEY USING SORTED (id desc));")
);
}
@@ -174,19 +175,6 @@ class CreateFromAnnotationsTest {
assertThrows(IllegalArgumentException.class, () ->
createTable().processRecordClass(NoAnnotations.class));
}
- @Zone(
- value = "zone_test",
- partitions = 1,
- replicas = 3,
- affinityFunction = "affinity",
- dataNodesAutoAdjust = 1,
- dataNodesAutoAdjustScaleDown = 2,
- dataNodesAutoAdjustScaleUp = 3,
- filter = "filter",
- storageProfiles = "default"
- )
- private static class ZoneTest {}
-
@SuppressWarnings("unused")
private static class PojoKey {
@Id
@@ -200,7 +188,17 @@ class CreateFromAnnotationsTest {
@SuppressWarnings("unused")
@Table(
value = "pojo_value_test",
- zone = ZoneTest.class,
+ zone = @Zone(
+ value = "zone_test",
+ partitions = 1,
+ replicas = 3,
+ affinityFunction = "affinity",
+ dataNodesAutoAdjust = 1,
+ dataNodesAutoAdjustScaleDown = 2,
+ dataNodesAutoAdjustScaleUp = 3,
+ filter = "filter",
+ storageProfiles = "default"
+ ),
colocateBy = {@ColumnRef("id"), @ColumnRef("id_str")},
indexes = @Index(value = "ix_pojo", columns = {
@ColumnRef("f_name"),
@@ -220,7 +218,17 @@ class CreateFromAnnotationsTest {
@SuppressWarnings("unused")
@Table(
value = "pojo_test",
- zone = ZoneTest.class,
+ zone = @Zone(
+ value = "zone_test",
+ partitions = 1,
+ replicas = 3,
+ affinityFunction = "affinity",
+ dataNodesAutoAdjust = 1,
+ dataNodesAutoAdjustScaleDown = 2,
+ dataNodesAutoAdjustScaleUp = 3,
+ filter = "filter",
+ storageProfiles = "default"
+ ),
colocateBy = {@ColumnRef("id"), @ColumnRef("id_str")},
indexes = @Index(value = "ix_pojo", columns = {
@ColumnRef("f_name"),
@@ -244,10 +252,7 @@ class CreateFromAnnotationsTest {
String str;
}
- @Table(
- schemaName = "public",
- indexes = @Index(columns = {@ColumnRef("col1"),
@ColumnRef("col2")})
- )
+ @Table(indexes = @Index(columns = {@ColumnRef("col1"),
@ColumnRef("col2")}))
private static class NameGeneration {
Integer col1;
String col2;
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 2dfc1167f4..51da66c003 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
@@ -80,7 +80,7 @@ class CreateFromDefinitionTest {
.columns(column("id", INTEGER))
.build();
- assertThat(createTable(table), is("CREATE TABLE builder_test (id
int);"));
+ assertThat(createTable(table), is("CREATE TABLE PUBLIC.builder_test
(id int);"));
}
@Test
@@ -101,13 +101,13 @@ class CreateFromDefinitionTest {
assertThat(
createTable(table),
- is("CREATE TABLE IF NOT EXISTS builder_test"
+ is("CREATE TABLE IF NOT EXISTS PUBLIC.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';"
+ System.lineSeparator()
- + "CREATE INDEX IF NOT EXISTS ix_id_str_f_name ON
builder_test (id_str, f_name);"
+ + "CREATE INDEX IF NOT EXISTS ix_id_str_f_name ON
PUBLIC.builder_test (id_str, f_name);"
+ System.lineSeparator()
- + "CREATE INDEX IF NOT EXISTS ix_test ON builder_test
USING SORTED (id_str asc, f_name desc nulls last);")
+ + "CREATE INDEX IF NOT EXISTS ix_test ON
PUBLIC.builder_test USING SORTED (id_str asc, f_name desc nulls last);")
);
}
@@ -121,7 +121,7 @@ class CreateFromDefinitionTest {
assertThat(
createTable(tableDefinition),
- is("CREATE TABLE primitive_test (id int, val int, PRIMARY KEY
(id));")
+ is("CREATE TABLE PUBLIC.primitive_test (id int, val int,
PRIMARY KEY (id));")
);
}
@@ -135,7 +135,7 @@ class CreateFromDefinitionTest {
assertThat(
createTable(tableDefinition),
- is("CREATE TABLE pojo_value_test (id int, f_name varchar,
l_name varchar, str varchar, PRIMARY KEY (id));")
+ is("CREATE TABLE PUBLIC.pojo_value_test (id int, f_name
varchar, l_name varchar, str varchar, PRIMARY KEY (id));")
);
}
@@ -151,7 +151,7 @@ class CreateFromDefinitionTest {
assertThat(
createTable(tableDefinition),
- is("CREATE TABLE pojo_value_test"
+ is("CREATE TABLE PUBLIC.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';")
);
@@ -168,7 +168,7 @@ class CreateFromDefinitionTest {
assertThat(
createTable(tableDefinition),
- is("CREATE TABLE IF NOT EXISTS pojo_test (id int, id_str
varchar(20),"
+ is("CREATE TABLE IF NOT EXISTS PUBLIC.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';")
);
@@ -182,7 +182,7 @@ class CreateFromDefinitionTest {
assertThat(
createTable(tableDefinition),
- is("CREATE TABLE primitive_test (id int, PRIMARY KEY (id));")
+ is("CREATE TABLE PUBLIC.primitive_test (id int, PRIMARY KEY
(id));")
);
}