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));")
         );
     }
 

Reply via email to