From 4ea124a26efe4c58177ae85d92f4261298d382f7 Mon Sep 17 00:00:00 2001
From: Arseniy Volynets <vol0ncar@yandex.ru>
Date: Tue, 17 Oct 2023 11:22:01 +0300
Subject: [PATCH] rebase && review fixes

---
 sbroad-core/src/executor/engine/helpers.rs    |  2 +-
 sbroad-core/src/executor/engine/mock.rs       |  4 +-
 sbroad-core/src/frontend/sql/ir/tests.rs      | 12 ++--
 sbroad-core/src/ir/distribution.rs            | 23 ++------
 sbroad-core/src/ir/relation.rs                | 18 ++++--
 sbroad-core/src/ir/relation/tests.rs          |  2 +-
 .../src/ir/transformation/redistribution.rs   | 59 ++++++++++++-------
 .../sql/tree/arbitrary_projection_plan.yaml   |  2 +-
 .../sql/tree/arithmetic_projection_plan.yaml  |  2 +-
 .../sql/tree/arithmetic_selection_plan.yaml   |  2 +-
 .../backend/sql/tree/sql_order_selection.yaml |  2 +-
 .../ir/distribution/join_unite_keys.yaml      |  4 +-
 .../ir/distribution/shrink_dist_key_1.yaml    |  2 +-
 .../ir/distribution/shrink_dist_key_2.yaml    |  2 +-
 .../ir/distribution/shuffle_dist_key.yaml     |  2 +-
 .../union_fallback_to_random.yaml             |  4 +-
 .../ir/distribution/union_preserve_dist.yaml  |  4 +-
 .../tests/artifactory/ir/operator/join.yaml   |  4 +-
 .../ir/operator/output_aliases.yaml           |  2 +-
 .../operator/output_aliases_duplicates.yaml   |  2 +-
 .../ir/operator/output_aliases_oor.yaml       |  2 +-
 .../output_aliases_unsupported_type.yaml      |  2 +-
 .../artifactory/ir/operator/projection.yaml   |  2 +-
 .../artifactory/ir/operator/scan_rel.yaml     |  2 +-
 .../artifactory/ir/operator/selection.yaml    |  2 +-
 .../ir/operator/selection_with_sub_query.yaml |  4 +-
 .../artifactory/ir/operator/sub_query.yaml    |  4 +-
 .../tests/artifactory/ir/plan_no_top.yaml     |  2 +-
 .../tests/artifactory/ir/plan_oor_top.yaml    |  2 +-
 .../ir/relation/table_seg_serialized.yaml     |  2 +-
 ...able_seg_serialized_duplicate_columns.yaml |  2 +-
 .../table_seg_serialized_no_columns.yaml      |  2 +-
 .../relation/table_seg_serialized_no_key.yaml |  2 +-
 ...table_seg_serialized_out_of_range_key.yaml |  2 +-
 .../full_motion_less_for_sub_query.yaml       |  4 +-
 ...otion_non_segment_outer_for_sub_query.yaml |  4 +-
 .../redistribution/local_sub_query.yaml       |  4 +-
 .../redistribution/multiple_sub_queries.yaml  |  4 +-
 .../segment_motion_for_sub_query.yaml         |  4 +-
 39 files changed, 113 insertions(+), 93 deletions(-)

diff --git a/sbroad-core/src/executor/engine/helpers.rs b/sbroad-core/src/executor/engine/helpers.rs
index 23c8bd428b..93ceee0c49 100644
--- a/sbroad-core/src/executor/engine/helpers.rs
+++ b/sbroad-core/src/executor/engine/helpers.rs
@@ -81,7 +81,7 @@ pub fn normalize_name_for_space_api(s: &str) -> String {
 
 #[must_use]
 pub fn is_sharding_column_name(name: &str) -> bool {
-    name == "\"bucket_id\""
+    name == "\"bucket_id\"" || name == "bucket_id"
 }
 
 /// A helper function to encode the execution plan into a pair of binary data (see `Message`):
diff --git a/sbroad-core/src/executor/engine/mock.rs b/sbroad-core/src/executor/engine/mock.rs
index 46babe7568..2abf65952d 100644
--- a/sbroad-core/src/executor/engine/mock.rs
+++ b/sbroad-core/src/executor/engine/mock.rs
@@ -309,8 +309,8 @@ impl RouterConfigurationMock {
         );
 
         let columns = vec![
-            Column::new("\"a\"", Type::Integer, ColumnRole::User),
-            Column::new("\"b\"", Type::Integer, ColumnRole::User),
+            Column::new("\"a\"", Type::Integer, ColumnRole::User, false),
+            Column::new("\"b\"", Type::Integer, ColumnRole::User, false),
         ];
         let sharding_key: &[&str] = &[];
         let primary_key: &[&str] = &["\"a\""];
diff --git a/sbroad-core/src/frontend/sql/ir/tests.rs b/sbroad-core/src/frontend/sql/ir/tests.rs
index 22624f4d9d..b4d7f30aaf 100644
--- a/sbroad-core/src/frontend/sql/ir/tests.rs
+++ b/sbroad-core/src/frontend/sql/ir/tests.rs
@@ -2847,9 +2847,9 @@ fn front_sql_check_global_tbl_support() {
         "expected sharded table",
     );
     check_error(
-        r#"insert into "t3" select * from "global_t""#,
+        r#"insert into "global_t" values (1, 1)"#,
         metadata,
-        global_tbl_err!("Insert"),
+        "expected sharded table",
     );
     check_error(
         r#"delete from "global_t""#,
@@ -2869,13 +2869,17 @@ fn front_sql_check_global_tbl_support() {
     check_error(
         r#"select * from "global_t" where "a" in (select sum("a") from "t3")"#,
         metadata,
-        global_tbl_err!("Subquery in condition"),
+        global_tbl_err!("Subquery"),
+    );
+    check_error(
+        r#"select * from "t3" where "a" in (select "a" as "a1" from "global_t")"#,
+        metadata,
+        global_tbl_err!("Subquery"),
     );
 
     fn check_error(input: &str, metadata: &RouterConfigurationMock, expected_err: &str) {
         let err = build(input, metadata).unwrap_err();
 
-        println!("{}", err.to_string());
         assert_eq!(true, err.to_string().contains(expected_err));
 
         fn build(input: &str, metadata: &RouterConfigurationMock) -> Result<(), SbroadError> {
diff --git a/sbroad-core/src/ir/distribution.rs b/sbroad-core/src/ir/distribution.rs
index 4e1f8a19aa..cecd04c67b 100644
--- a/sbroad-core/src/ir/distribution.rs
+++ b/sbroad-core/src/ir/distribution.rs
@@ -120,23 +120,18 @@ impl Distribution {
         right: &Distribution,
     ) -> Result<Distribution, SbroadError> {
         let dist = match (left, right) {
-            (Distribution::Single, Distribution::Global)
-            | (Distribution::Global, Distribution::Single) => Distribution::Single,
-            (Distribution::Global, _) | (_, Distribution::Global) => {
-                return Err(SbroadError::Unsupported(
-                    Entity::Query,
-                    Some("union/except is not supported for global tables!".into())
-                ))
-            }
+            // Currently Global distribution may come
+            // only from Motion(Full). The check for
+            // reading from global tables is done in
+            // conflict resolution.
+            (Distribution::Global, _) => right.clone(),
+            (_, Distribution::Global) => left.clone(),
             (Distribution::Single, _) | (_, Distribution::Single) => {
                 return Err(SbroadError::Invalid(
                     Entity::Distribution,
                     Some(format!("union/except child has unexpected distribution Single. Left: {left:?}, right: {right:?}"))));
             }
             (Distribution::Any, _) | (_, Distribution::Any) => Distribution::Any,
-            (Distribution::Global, _) | (_, Distribution::Global) => {
-                unimplemented!()
-            }
             (
                 Distribution::Segment {
                     keys: keys_left, ..
@@ -176,12 +171,6 @@ impl Distribution {
             (_, Distribution::Global) | (Distribution::Segment { .. }, Distribution::Any) => {
                 left.clone()
             }
-            (Distribution::Global, _) | (_, Distribution::Global) => {
-                return Err(SbroadError::Unsupported(
-                    Entity::Query,
-                    Some("join is not supported for global tables!".into())
-                ))
-            }
             (
                 Distribution::Segment {
                     keys: ref keys_left,
diff --git a/sbroad-core/src/ir/relation.rs b/sbroad-core/src/ir/relation.rs
index 04d8be0a45..a81e556f0b 100644
--- a/sbroad-core/src/ir/relation.rs
+++ b/sbroad-core/src/ir/relation.rs
@@ -395,7 +395,10 @@ pub struct Table {
 
 #[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
 pub enum TableKind {
-    ShardedSpace { shard_key: Key, engine: SpaceEngine },
+    ShardedSpace {
+        sharding_key: Key,
+        engine: SpaceEngine,
+    },
     GlobalSpace,
     SystemSpace,
 }
@@ -468,7 +471,7 @@ impl Table {
                 })
                 .collect::<Result<Vec<usize>, _>>()?;
             TableKind::ShardedSpace {
-                shard_key: Key::new(shard_positions),
+                sharding_key: Key::new(shard_positions),
                 engine,
             }
         };
@@ -524,7 +527,11 @@ impl Table {
             ));
         }
 
-        if let TableKind::ShardedSpace { shard_key, .. } = &table.kind {
+        if let TableKind::ShardedSpace {
+            sharding_key: shard_key,
+            ..
+        } = &table.kind
+        {
             let in_range = shard_key.positions.iter().all(|pos| *pos < cols.len());
 
             if !in_range {
@@ -611,7 +618,10 @@ impl Table {
     /// - The table is global
     pub fn get_sk(&self) -> Result<&[usize], SbroadError> {
         match &self.kind {
-            TableKind::ShardedSpace { shard_key, .. } => Ok(&shard_key.positions),
+            TableKind::ShardedSpace {
+                sharding_key: shard_key,
+                ..
+            } => Ok(&shard_key.positions),
             TableKind::GlobalSpace | TableKind::SystemSpace => Err(SbroadError::Invalid(
                 Entity::Table,
                 Some(format!("expected sharded table. Name: {}", self.name)),
diff --git a/sbroad-core/src/ir/relation/tests.rs b/sbroad-core/src/ir/relation/tests.rs
index b5c1144bbe..b4c7c90f0a 100644
--- a/sbroad-core/src/ir/relation/tests.rs
+++ b/sbroad-core/src/ir/relation/tests.rs
@@ -235,7 +235,7 @@ fn table_seg_serialized_no_key() {
     assert_eq!(t.unwrap_err(), SbroadError::FailedTo(
         Action::Serialize,
         Some(Entity::Table),
-        "Message(\"invalid type: unit value, expected struct Key\", Some(Pos { marker: Marker { index: 118, line: 10, col: 15 }, path: \"kind.ShardedSpace.shard_key\" }))".into()),
+        "Message(\"invalid type: unit value, expected struct Key\", Some(Pos { marker: Marker { index: 121, line: 10, col: 18 }, path: \"kind.ShardedSpace.sharding_key\" }))".into()),
     );
 }
 
diff --git a/sbroad-core/src/ir/transformation/redistribution.rs b/sbroad-core/src/ir/transformation/redistribution.rs
index 0e745e50be..d7c89a8b6e 100644
--- a/sbroad-core/src/ir/transformation/redistribution.rs
+++ b/sbroad-core/src/ir/transformation/redistribution.rs
@@ -10,6 +10,7 @@ use crate::ir::distribution::{Distribution, Key, KeySet};
 use crate::ir::expression::Expression;
 use crate::ir::operator::{Bool, JoinKind, Relational, Unary, UpdateStrategy};
 
+use crate::ir::relation::TableKind;
 use crate::ir::transformation::redistribution::eq_cols::EqualityCols;
 use crate::ir::tree::traversal::{
     BreadthFirst, LevelNode, PostOrder, PostOrderWithFilter, EXPR_CAPACITY, REL_CAPACITY,
@@ -523,17 +524,6 @@ impl Plan {
         let bool_op = BoolOp::from_expr(self, op_id)?;
         let left = self.get_additional_sq(rel_id, bool_op.left)?;
         let right = self.get_additional_sq(rel_id, bool_op.right)?;
-        let is_global_child = {
-            let d = self.get_distribution(
-                self.get_relational_output(self.get_relational_child(rel_id, 0)?)?,
-            )?;
-            matches!(d, Distribution::Global)
-        };
-        if (left.is_some() || right.is_some()) && is_global_child {
-            return Err(SbroadError::UnsupportedOpForGlobalTables(
-                "Subquery in condition".to_string(),
-            ));
-        }
         match left {
             Some(left_sq) => {
                 match right {
@@ -960,12 +950,7 @@ impl Plan {
     pub(crate) fn check_global_tbl_support(&self, rel_id: usize) -> Result<(), SbroadError> {
         let node = self.get_relation_node(rel_id)?;
         match node {
-            Relational::Delete { .. }
-            | Relational::Insert { .. }
-            | Relational::Update { .. }
-            | Relational::Values { .. }
-            | Relational::GroupBy { .. }
-            | Relational::Having { .. } => {
+            Relational::Values { .. } | Relational::GroupBy { .. } | Relational::Having { .. } => {
                 let child_dist = self.get_distribution(
                     self.get_relational_output(self.get_relational_child(rel_id, 0)?)?,
                 )?;
@@ -975,6 +960,21 @@ impl Plan {
                     ));
                 }
             }
+            Relational::Delete { relation, .. }
+            | Relational::Update { relation, .. }
+            | Relational::Insert { relation, .. } => {
+                // Reading from global table for dml is allowed,
+                // but updating/inserting/deleting from global table
+                // is not: it must be done via cas picodata api.
+                if matches!(
+                    self.get_relation_or_error(relation.as_str())?.kind,
+                    TableKind::GlobalSpace
+                ) {
+                    return Err(SbroadError::UnsupportedOpForGlobalTables(
+                        node.name().into(),
+                    ));
+                }
+            }
             Relational::UnionAll { .. } | Relational::Except { .. } | Relational::Join { .. } => {
                 let left_dist = self.get_distribution(
                     self.get_relational_output(self.get_relational_child(rel_id, 0)?)?,
@@ -991,10 +991,27 @@ impl Plan {
                     ));
                 }
             }
+            Relational::Selection { children, .. } => {
+                // Currently only Projection + Selection without SQs is supported.
+                let has_sq = children.len() > 1;
+                if has_sq {
+                    let child_dist = self.get_distribution(
+                        self.get_relational_output(self.get_relational_child(rel_id, 0)?)?,
+                    )?;
+                    let sq_dist = self.get_distribution(
+                        self.get_relational_output(self.get_relational_child(rel_id, 1)?)?,
+                    )?;
+                    if matches!(
+                        (child_dist, sq_dist),
+                        (Distribution::Global, _) | (_, Distribution::Global)
+                    ) {
+                        return Err(SbroadError::UnsupportedOpForGlobalTables("Subquery".into()));
+                    }
+                }
+            }
             Relational::Projection { .. }
             | Relational::ScanRelation { .. }
             | Relational::ValuesRow { .. }
-            | Relational::Selection { .. }
             | Relational::ScanSubQuery { .. }
             | Relational::Motion { .. } => {}
         }
@@ -1143,7 +1160,7 @@ impl Plan {
                             return Err(SbroadError::Unsupported(
                                 Entity::Operator,
                                 Some("unsupported boolean operation, expected And or Or".into()),
-                            ))
+                            ));
                         }
                     }
                 }
@@ -1182,7 +1199,7 @@ impl Plan {
                     return Err(SbroadError::Unsupported(
                         Entity::Operator,
                         Some("unsupported boolean operation".into()),
-                    ))
+                    ));
                 }
             };
             inner_map.insert(node_id, new_inner_policy.clone());
@@ -1641,7 +1658,7 @@ impl Plan {
                             }
                             let key = left_keys.iter().next().ok_or_else(|| SbroadError::Invalid(
                                 Entity::Distribution,
-                                Some("left child's segment distribution is invalid: no keys found in the set".into())
+                                Some("left child's segment distribution is invalid: no keys found in the set".into()),
                             ))?;
                             map.add_child(
                                 *right,
diff --git a/sbroad-core/tests/artifactory/backend/sql/tree/arbitrary_projection_plan.yaml b/sbroad-core/tests/artifactory/backend/sql/tree/arbitrary_projection_plan.yaml
index 976af00e09..c3fd63a7d7 100644
--- a/sbroad-core/tests/artifactory/backend/sql/tree/arbitrary_projection_plan.yaml
+++ b/sbroad-core/tests/artifactory/backend/sql/tree/arbitrary_projection_plan.yaml
@@ -199,7 +199,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/backend/sql/tree/arithmetic_projection_plan.yaml b/sbroad-core/tests/artifactory/backend/sql/tree/arithmetic_projection_plan.yaml
index 057bc046d9..8c92fd55c8 100644
--- a/sbroad-core/tests/artifactory/backend/sql/tree/arithmetic_projection_plan.yaml
+++ b/sbroad-core/tests/artifactory/backend/sql/tree/arithmetic_projection_plan.yaml
@@ -272,7 +272,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/backend/sql/tree/arithmetic_selection_plan.yaml b/sbroad-core/tests/artifactory/backend/sql/tree/arithmetic_selection_plan.yaml
index 8939c0f4f4..2c05c97084 100644
--- a/sbroad-core/tests/artifactory/backend/sql/tree/arithmetic_selection_plan.yaml
+++ b/sbroad-core/tests/artifactory/backend/sql/tree/arithmetic_selection_plan.yaml
@@ -404,7 +404,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/backend/sql/tree/sql_order_selection.yaml b/sbroad-core/tests/artifactory/backend/sql/tree/sql_order_selection.yaml
index 4dc4cad72b..04e6a7d25c 100644
--- a/sbroad-core/tests/artifactory/backend/sql/tree/sql_order_selection.yaml
+++ b/sbroad-core/tests/artifactory/backend/sql/tree/sql_order_selection.yaml
@@ -119,7 +119,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/distribution/join_unite_keys.yaml b/sbroad-core/tests/artifactory/ir/distribution/join_unite_keys.yaml
index f3cd5170a2..dfd291714c 100644
--- a/sbroad-core/tests/artifactory/ir/distribution/join_unite_keys.yaml
+++ b/sbroad-core/tests/artifactory/ir/distribution/join_unite_keys.yaml
@@ -172,7 +172,7 @@ relations:
       name: t2
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 1
           engine: Memtx
@@ -188,7 +188,7 @@ relations:
       name: t1
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/distribution/shrink_dist_key_1.yaml b/sbroad-core/tests/artifactory/ir/distribution/shrink_dist_key_1.yaml
index 2104ba9f18..3ab0b75a2c 100644
--- a/sbroad-core/tests/artifactory/ir/distribution/shrink_dist_key_1.yaml
+++ b/sbroad-core/tests/artifactory/ir/distribution/shrink_dist_key_1.yaml
@@ -105,7 +105,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 1
               - 0
diff --git a/sbroad-core/tests/artifactory/ir/distribution/shrink_dist_key_2.yaml b/sbroad-core/tests/artifactory/ir/distribution/shrink_dist_key_2.yaml
index 7ff2b81f09..ac1e8928f4 100644
--- a/sbroad-core/tests/artifactory/ir/distribution/shrink_dist_key_2.yaml
+++ b/sbroad-core/tests/artifactory/ir/distribution/shrink_dist_key_2.yaml
@@ -93,7 +93,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 1
               - 0
diff --git a/sbroad-core/tests/artifactory/ir/distribution/shuffle_dist_key.yaml b/sbroad-core/tests/artifactory/ir/distribution/shuffle_dist_key.yaml
index 894c9877ae..e42bf59c5f 100644
--- a/sbroad-core/tests/artifactory/ir/distribution/shuffle_dist_key.yaml
+++ b/sbroad-core/tests/artifactory/ir/distribution/shuffle_dist_key.yaml
@@ -105,7 +105,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 1
               - 0
diff --git a/sbroad-core/tests/artifactory/ir/distribution/union_fallback_to_random.yaml b/sbroad-core/tests/artifactory/ir/distribution/union_fallback_to_random.yaml
index 244b1324f4..d64da381e0 100644
--- a/sbroad-core/tests/artifactory/ir/distribution/union_fallback_to_random.yaml
+++ b/sbroad-core/tests/artifactory/ir/distribution/union_fallback_to_random.yaml
@@ -111,7 +111,7 @@ relations:
       name: t1
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
@@ -127,7 +127,7 @@ relations:
       name: t2
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 1
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/distribution/union_preserve_dist.yaml b/sbroad-core/tests/artifactory/ir/distribution/union_preserve_dist.yaml
index e5d68cf031..b4a7d0a76c 100644
--- a/sbroad-core/tests/artifactory/ir/distribution/union_preserve_dist.yaml
+++ b/sbroad-core/tests/artifactory/ir/distribution/union_preserve_dist.yaml
@@ -111,7 +111,7 @@ relations:
       name: t1
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
@@ -127,7 +127,7 @@ relations:
       name: t2
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/operator/join.yaml b/sbroad-core/tests/artifactory/ir/operator/join.yaml
index c4fd29e1b1..bad216b002 100644
--- a/sbroad-core/tests/artifactory/ir/operator/join.yaml
+++ b/sbroad-core/tests/artifactory/ir/operator/join.yaml
@@ -172,7 +172,7 @@ relations:
       name: t2
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 1
           engine: Memtx
@@ -188,7 +188,7 @@ relations:
       name: t1
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/operator/output_aliases.yaml b/sbroad-core/tests/artifactory/ir/operator/output_aliases.yaml
index 138aa6be99..650ebfbdd0 100644
--- a/sbroad-core/tests/artifactory/ir/operator/output_aliases.yaml
+++ b/sbroad-core/tests/artifactory/ir/operator/output_aliases.yaml
@@ -40,7 +40,7 @@ relations:
         type: Number
       - name: b
         type: Number
-    shard_key:
+    sharding_key:
       positions:
         - 0
     primary_key:
diff --git a/sbroad-core/tests/artifactory/ir/operator/output_aliases_duplicates.yaml b/sbroad-core/tests/artifactory/ir/operator/output_aliases_duplicates.yaml
index 258c84feab..ebde2db8ea 100644
--- a/sbroad-core/tests/artifactory/ir/operator/output_aliases_duplicates.yaml
+++ b/sbroad-core/tests/artifactory/ir/operator/output_aliases_duplicates.yaml
@@ -40,7 +40,7 @@ relations:
         type: Number
       - name: b
         type: Number
-    shard_key:
+    sharding_key:
       positions:
         - 0
     primary_key:
diff --git a/sbroad-core/tests/artifactory/ir/operator/output_aliases_oor.yaml b/sbroad-core/tests/artifactory/ir/operator/output_aliases_oor.yaml
index 0e48585b79..a7ebb683c4 100644
--- a/sbroad-core/tests/artifactory/ir/operator/output_aliases_oor.yaml
+++ b/sbroad-core/tests/artifactory/ir/operator/output_aliases_oor.yaml
@@ -30,7 +30,7 @@ relations:
         type: Number
       - name: b
         type: Number
-    shard_key:
+    sharding_key:
       positions:
         - 0
     primary_key:
diff --git a/sbroad-core/tests/artifactory/ir/operator/output_aliases_unsupported_type.yaml b/sbroad-core/tests/artifactory/ir/operator/output_aliases_unsupported_type.yaml
index adce5a27f5..8333909232 100644
--- a/sbroad-core/tests/artifactory/ir/operator/output_aliases_unsupported_type.yaml
+++ b/sbroad-core/tests/artifactory/ir/operator/output_aliases_unsupported_type.yaml
@@ -36,7 +36,7 @@ relations:
         type: Number
       - name: b
         type: Number
-    shard_key:
+    sharding_key:
       positions:
         - 0
     primary_key:
diff --git a/sbroad-core/tests/artifactory/ir/operator/projection.yaml b/sbroad-core/tests/artifactory/ir/operator/projection.yaml
index c4e0bf9ffd..0423db664d 100644
--- a/sbroad-core/tests/artifactory/ir/operator/projection.yaml
+++ b/sbroad-core/tests/artifactory/ir/operator/projection.yaml
@@ -78,7 +78,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/operator/scan_rel.yaml b/sbroad-core/tests/artifactory/ir/operator/scan_rel.yaml
index feec5181b8..303b5686d3 100644
--- a/sbroad-core/tests/artifactory/ir/operator/scan_rel.yaml
+++ b/sbroad-core/tests/artifactory/ir/operator/scan_rel.yaml
@@ -77,7 +77,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 1
               - 0
diff --git a/sbroad-core/tests/artifactory/ir/operator/selection.yaml b/sbroad-core/tests/artifactory/ir/operator/selection.yaml
index 0ff6f832ec..23241ad418 100644
--- a/sbroad-core/tests/artifactory/ir/operator/selection.yaml
+++ b/sbroad-core/tests/artifactory/ir/operator/selection.yaml
@@ -159,7 +159,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 1
               - 0
diff --git a/sbroad-core/tests/artifactory/ir/operator/selection_with_sub_query.yaml b/sbroad-core/tests/artifactory/ir/operator/selection_with_sub_query.yaml
index 54836235e6..832d8977c8 100644
--- a/sbroad-core/tests/artifactory/ir/operator/selection_with_sub_query.yaml
+++ b/sbroad-core/tests/artifactory/ir/operator/selection_with_sub_query.yaml
@@ -150,7 +150,7 @@ relations:
       name: t1
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
@@ -164,7 +164,7 @@ relations:
       name: t2
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/operator/sub_query.yaml b/sbroad-core/tests/artifactory/ir/operator/sub_query.yaml
index 602eaf9b2f..2193f62198 100644
--- a/sbroad-core/tests/artifactory/ir/operator/sub_query.yaml
+++ b/sbroad-core/tests/artifactory/ir/operator/sub_query.yaml
@@ -80,7 +80,7 @@ relations:
           type: Boolean
         - name: b
           type: Number
-      shard_key:
+      sharding_key:
         positions:
           - 0
       primary_key:
@@ -89,7 +89,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/plan_no_top.yaml b/sbroad-core/tests/artifactory/ir/plan_no_top.yaml
index eead839c39..59e0b3318e 100644
--- a/sbroad-core/tests/artifactory/ir/plan_no_top.yaml
+++ b/sbroad-core/tests/artifactory/ir/plan_no_top.yaml
@@ -36,7 +36,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/plan_oor_top.yaml b/sbroad-core/tests/artifactory/ir/plan_oor_top.yaml
index 6af8e87e8f..036abe88d2 100644
--- a/sbroad-core/tests/artifactory/ir/plan_oor_top.yaml
+++ b/sbroad-core/tests/artifactory/ir/plan_oor_top.yaml
@@ -36,7 +36,7 @@ relations:
       name: t
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized.yaml b/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized.yaml
index 2a25283f7d..3e09b693a8 100644
--- a/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized.yaml
+++ b/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized.yaml
@@ -18,7 +18,7 @@ primary_key:
     - 3
 kind:
   ShardedSpace:
-    shard_key:
+    sharding_key:
       positions:
         - 0
         - 3
diff --git a/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_duplicate_columns.yaml b/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_duplicate_columns.yaml
index a1d9b073e8..a13be3a202 100644
--- a/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_duplicate_columns.yaml
+++ b/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_duplicate_columns.yaml
@@ -11,7 +11,7 @@ primary_key:
     - 0
 kind:
   ShardedSpace:
-    shard_key:
+    sharding_key:
       positions:
         - 0
     engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_no_columns.yaml b/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_no_columns.yaml
index f43c570233..66f8d7de6f 100644
--- a/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_no_columns.yaml
+++ b/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_no_columns.yaml
@@ -1,6 +1,6 @@
 columns: ~
 name: t
-shard_key:
+sharding_key:
   positions:
     - 0
 primary_key:
diff --git a/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_no_key.yaml b/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_no_key.yaml
index 03acb99cb4..6f9dd48d35 100644
--- a/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_no_key.yaml
+++ b/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_no_key.yaml
@@ -7,5 +7,5 @@ primary_key:
     - 0
 kind:
   ShardedSpace:
-    shard_key: ~
+    sharding_key: ~
     engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_out_of_range_key.yaml b/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_out_of_range_key.yaml
index 9a54ed96f7..7cfbf0b23a 100644
--- a/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_out_of_range_key.yaml
+++ b/sbroad-core/tests/artifactory/ir/relation/table_seg_serialized_out_of_range_key.yaml
@@ -7,7 +7,7 @@ primary_key:
     - 0
 kind:
   ShardedSpace:
-    shard_key:
+    sharding_key:
       positions:
         - 10
     engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/transformation/redistribution/full_motion_less_for_sub_query.yaml b/sbroad-core/tests/artifactory/ir/transformation/redistribution/full_motion_less_for_sub_query.yaml
index 58d460ec78..b885c53780 100644
--- a/sbroad-core/tests/artifactory/ir/transformation/redistribution/full_motion_less_for_sub_query.yaml
+++ b/sbroad-core/tests/artifactory/ir/transformation/redistribution/full_motion_less_for_sub_query.yaml
@@ -200,7 +200,7 @@ relations:
       name: t2
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Vinyl
@@ -214,7 +214,7 @@ relations:
       name: t1
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Vinyl
diff --git a/sbroad-core/tests/artifactory/ir/transformation/redistribution/full_motion_non_segment_outer_for_sub_query.yaml b/sbroad-core/tests/artifactory/ir/transformation/redistribution/full_motion_non_segment_outer_for_sub_query.yaml
index fb26f5ddf8..13d0ea7aa6 100644
--- a/sbroad-core/tests/artifactory/ir/transformation/redistribution/full_motion_non_segment_outer_for_sub_query.yaml
+++ b/sbroad-core/tests/artifactory/ir/transformation/redistribution/full_motion_non_segment_outer_for_sub_query.yaml
@@ -220,7 +220,7 @@ relations:
       name: t1
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Vinyl
@@ -234,7 +234,7 @@ relations:
       name: t2
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Vinyl
diff --git a/sbroad-core/tests/artifactory/ir/transformation/redistribution/local_sub_query.yaml b/sbroad-core/tests/artifactory/ir/transformation/redistribution/local_sub_query.yaml
index 823725f500..01167fd074 100644
--- a/sbroad-core/tests/artifactory/ir/transformation/redistribution/local_sub_query.yaml
+++ b/sbroad-core/tests/artifactory/ir/transformation/redistribution/local_sub_query.yaml
@@ -175,7 +175,7 @@ relations:
       name: t1
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
@@ -189,7 +189,7 @@ relations:
       name: t2
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/transformation/redistribution/multiple_sub_queries.yaml b/sbroad-core/tests/artifactory/ir/transformation/redistribution/multiple_sub_queries.yaml
index 8fa314e63c..6d98741086 100644
--- a/sbroad-core/tests/artifactory/ir/transformation/redistribution/multiple_sub_queries.yaml
+++ b/sbroad-core/tests/artifactory/ir/transformation/redistribution/multiple_sub_queries.yaml
@@ -359,7 +359,7 @@ relations:
       name: t1
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
@@ -375,7 +375,7 @@ relations:
       name: t2
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
diff --git a/sbroad-core/tests/artifactory/ir/transformation/redistribution/segment_motion_for_sub_query.yaml b/sbroad-core/tests/artifactory/ir/transformation/redistribution/segment_motion_for_sub_query.yaml
index e66b2b4b1a..49d47415cb 100644
--- a/sbroad-core/tests/artifactory/ir/transformation/redistribution/segment_motion_for_sub_query.yaml
+++ b/sbroad-core/tests/artifactory/ir/transformation/redistribution/segment_motion_for_sub_query.yaml
@@ -209,7 +209,7 @@ relations:
       name: t1
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
@@ -225,7 +225,7 @@ relations:
       name: t2
       kind:
         ShardedSpace:
-          shard_key:
+          sharding_key:
             positions:
               - 0
           engine: Memtx
-- 
GitLab