From dcb8cf4ebf874976eb930e8a283989954adff59a Mon Sep 17 00:00:00 2001
From: EmirVildanov <reddog201030@gmail.com>
Date: Fri, 6 Sep 2024 16:12:43 +0300
Subject: [PATCH] feat: add tests for asterisk

---
 sbroad-core/src/executor/tests/exec_plan.rs | 89 +++++++++++++++++++++
 1 file changed, 89 insertions(+)

diff --git a/sbroad-core/src/executor/tests/exec_plan.rs b/sbroad-core/src/executor/tests/exec_plan.rs
index eb19e96ea..00cc91b2d 100644
--- a/sbroad-core/src/executor/tests/exec_plan.rs
+++ b/sbroad-core/src/executor/tests/exec_plan.rs
@@ -1116,6 +1116,95 @@ fn global_except() {
     assert_eq!(expected, res)
 }
 
+#[test]
+fn local_translation_asterisk_single() {
+    let sql = r#"SELECT * from "t3""#;
+    let coordinator = RouterRuntimeMock::new();
+
+    let mut query = Query::new(&coordinator, sql, vec![]).unwrap();
+    let exec_plan = query.get_mut_exec_plan();
+    let top_id = exec_plan.get_ir_plan().get_top().unwrap();
+
+    let sql =
+        get_sql_from_execution_plan(exec_plan, top_id, Snapshot::Oldest, &Buckets::All, "test");
+    assert_eq!(
+        sql,
+        PatternWithParams::new(
+            format!("{}", r#"SELECT "t3"."a", "t3"."b" FROM "t3""#,),
+            vec![]
+        )
+    );
+}
+
+#[test]
+fn local_translation_asterisk_several() {
+    let sql = r#"SELECT *, * from "t3""#;
+    let coordinator = RouterRuntimeMock::new();
+
+    let mut query = Query::new(&coordinator, sql, vec![]).unwrap();
+    let exec_plan = query.get_mut_exec_plan();
+    let top_id = exec_plan.get_ir_plan().get_top().unwrap();
+
+    let sql =
+        get_sql_from_execution_plan(exec_plan, top_id, Snapshot::Oldest, &Buckets::All, "test");
+    assert_eq!(
+        sql,
+        PatternWithParams::new(
+            format!(
+                "{}",
+                r#"SELECT "t3"."a", "t3"."b", "t3"."a", "t3"."b" FROM "t3""#,
+            ),
+            vec![]
+        )
+    );
+}
+
+#[test]
+fn local_translation_asterisk_named() {
+    let sql = r#"SELECT *, "t3".*, * from "t3""#;
+    let coordinator = RouterRuntimeMock::new();
+
+    let mut query = Query::new(&coordinator, sql, vec![]).unwrap();
+    let exec_plan = query.get_mut_exec_plan();
+    let top_id = exec_plan.get_ir_plan().get_top().unwrap();
+
+    let sql =
+        get_sql_from_execution_plan(exec_plan, top_id, Snapshot::Oldest, &Buckets::All, "test");
+    assert_eq!(
+        sql,
+        PatternWithParams::new(
+            format!(
+                "{}",
+                r#"SELECT "t3"."a", "t3"."b", "t3"."a", "t3"."b", "t3"."a", "t3"."b" FROM "t3""#,
+            ),
+            vec![]
+        )
+    );
+}
+
+#[test]
+fn local_translation_asterisk_with_additional_columns() {
+    let sql = r#"SELECT "a", *, "t3"."b", "t3".*, * from "t3""#;
+    let coordinator = RouterRuntimeMock::new();
+
+    let mut query = Query::new(&coordinator, sql, vec![]).unwrap();
+    let exec_plan = query.get_mut_exec_plan();
+    let top_id = exec_plan.get_ir_plan().get_top().unwrap();
+
+    let sql =
+        get_sql_from_execution_plan(exec_plan, top_id, Snapshot::Oldest, &Buckets::All, "test");
+    assert_eq!(
+        sql,
+        PatternWithParams::new(
+            format!(
+                "{}",
+                r#"SELECT "t3"."a", "t3"."a", "t3"."b", "t3"."b", "t3"."a", "t3"."b", "t3"."a", "t3"."b" FROM "t3""#,
+            ),
+            vec![]
+        )
+    );
+}
+
 #[test]
 fn exec_plan_order_by() {
     let sql = r#"SELECT "identification_number" from "hash_testing"
-- 
GitLab