diff --git a/test/conftest.py b/test/conftest.py
index 1ab22d95650f36ec27495090ddc346c22e542e9e..ad3aca8341813086c1bce53f815f31cad129455f 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -729,6 +729,29 @@ class Instance:
         with self.connect(timeout, user=user, password=password) as conn:
             return conn.sudo_sql(sql, *params)
 
+    def retriable_sql(
+        self,
+        sql: str,
+        *params,
+        rps: int | float = 5,
+        retry_timeout: int | float = 25,
+        user: str | None = None,
+        is_sudo: bool = False,
+        password: str | None = None,
+        timeout: int | float = 5,
+        fatal: Type[Exception] | Tuple[Exception, ...] = ProcessDead,
+    ) -> dict:
+        """Retry SQL query with constant rate until success or fatal is raised"""
+
+        def do_sql():
+            if is_sudo:
+                return self.sudo_sql(
+                    sql, *params, user=user, password=password, timeout=timeout
+                )
+            return self.sql(sql, *params, user=user, password=password, timeout=timeout)
+
+        return Retriable(rps, retry_timeout).call(do_sql)
+
     def create_user(
         self,
         with_name: str,
diff --git a/test/int/test_sql.py b/test/int/test_sql.py
index 4b2ea7333d7bbb695b00ae31e133e08d3a4b2f02..a08bc205fc9cb512d0c4b8c78c0efc5fa4a4058a 100644
--- a/test/int/test_sql.py
+++ b/test/int/test_sql.py
@@ -10,7 +10,6 @@ from conftest import (
     Instance,
     KeyDef,
     KeyPart,
-    Retriable,
     ReturnError,
     TarantoolError,
 )
@@ -516,11 +515,9 @@ def test_dml_on_global_tbls(cluster: Cluster):
     assert data["row_count"] == 4
 
     # test reading subtree with motion
-    def q1():
-        data = i1.sql("insert into global_t select count(*), 1 from t")
-        assert data["row_count"] == 1
+    data = i1.retriable_sql("insert into global_t select count(*), 1 from t")
+    assert data["row_count"] == 1
 
-    Retriable(rps=7, timeout=20).call(q1)
     data = i1.sql("select * from global_t")
     assert data["rows"] == [[5, 1]]
     i2.raft_read_index()
@@ -560,29 +557,26 @@ vtable_max_rows = 5000"""
     data = i1.sql("select * from global_t")
     assert data["rows"] == [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]]
 
-    def check_table_contents(contents):
-        i1.raft_read_index()
-        data = i1.sql("select * from t")
-        assert sorted(data["rows"]) == contents
-
     # insert into sharded table from global table
     data = i2.sql("insert into t select id + 5, a + 5 from global_t where id = 1")
     assert data["row_count"] == 1
-    Retriable(rps=7, timeout=20).call(
-        check_table_contents, [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6]]
-    )
+    i1.raft_read_index()
+    data = i1.retriable_sql("select * from t")
+    assert sorted(data["rows"]) == [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6]]
 
     # update sharded table from global table
     data = i2.sql("update t set y = a * a from global_t where id = x")
     assert data["row_count"] == 5
-    Retriable(rps=7, timeout=20).call(
-        check_table_contents, [[1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 6]]
-    )
+    i1.raft_read_index()
+    data = i1.retriable_sql("select * from t")
+    assert sorted(data["rows"]) == [[1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 6]]
 
     # delete sharded table using global table in predicate
     data = i2.sql("delete from t where x in (select id from global_t)")
     assert data["row_count"] == 5
-    Retriable(rps=7, timeout=20).call(check_table_contents, [[6, 6]])
+    i1.raft_read_index()
+    data = i1.retriable_sql("select * from t", retry_timeout=60, timeout=8)
+    assert sorted(data["rows"]) == [[6, 6]]
 
     # test user with write permession can do global dml
     user = "USER"
@@ -788,121 +782,91 @@ def test_subqueries_on_global_tbls(cluster: Cluster):
     # TODO: remove retries and add more instances when
     # https://git.picodata.io/picodata/picodata/sbroad/-/issues/542
     # is done.
-    def check_sq_with_segment_dist():
-        data = i1.sql(
-            """
-            select b from g
-            where b in (select c from s where c in (2, 10))
-            """,
-            timeout=2,
-        )
-        assert data["rows"] == [[2]]
-
-    Retriable(rps=5, timeout=6).call(check_sq_with_segment_dist)
-
-    def check_sq_with_single_distribution():
-        data = i1.sql(
-            """
-            select b from g
-            where b in (select sum(c) from s)
-            """,
-            timeout=2,
-        )
-        assert len(data["rows"]) == 0
-
-    Retriable(rps=5, timeout=6).call(check_sq_with_single_distribution)
-
-    def check_sq_with_any_distribution():
-        data = i1.sql(
-            """
-            select b from g
-            where b in (select c * 5 from s)
-            """,
-            timeout=2,
-        )
-        assert data["rows"] == [[5]]
-
-    Retriable(rps=5, timeout=6).call(check_sq_with_any_distribution)
-
-    def check_sqs_joined_with_or():
-        # first subquery selects [1], [2], [3]
-        # second subquery must add additional [4] tuple
-        data = i1.sql(
-            """
-            select b from g
-            where b in (select c from s) or a in (select count(*) from s)
-            """,
-            timeout=2,
-        )
-        assert data["rows"] == [[1], [2], [3], [4]]
-
-    Retriable(rps=5, timeout=6).call(check_sqs_joined_with_or)
-
-    def check_sqs_joined_with_and():
-        data = i1.sql(
-            """
-            select b from g
-            where b in (select c from s) and a in (select count(*) from s)
-            """,
-            timeout=2,
-        )
-        assert len(data["rows"]) == 0
-
-    Retriable(rps=5, timeout=6).call(check_sqs_joined_with_and)
+    data = i1.retriable_sql(
+        """
+        select b from g
+        where b in (select c from s where c in (2, 10))
+        """
+    )
+    assert data["rows"] == [[2]]
 
-    def check_sq_in_join_condition_joined_with_and():
-        data = i1.sql(
-            """
-            select c from s inner join
-            (select c as c1 from s)
-            on c = c1 + 3 and c in (select a from g)
-            """,
-            timeout=2,
-        )
-        assert data["rows"] == []
+    data = i1.retriable_sql(
+        """
+        select b from g
+        where b in (select sum(c) from s)
+        """
+    )
+    assert len(data["rows"]) == 0
 
-    Retriable(rps=5, timeout=6).call(check_sq_in_join_condition_joined_with_and)
+    data = i1.retriable_sql(
+        """
+        select b from g
+        where b in (select c * 5 from s)
+        """,
+    )
+    assert data["rows"] == [[5]]
 
-    def check_sq_in_join_condition_joined_with_or():
-        # Full join because of 'OR'
-        data = i1.sql(
-            """
-            select min(c) from s inner join
-            (select c as c1 from s)
-            on c = c1 + 3 or c in (select a from g)
-            """,
-            timeout=2,
-        )
-        assert data["rows"] == [[1]]
+    # first subquery selects [1], [2], [3]
+    # second subquery must add additional [4] tuple
+    data = i1.retriable_sql(
+        """
+        select b from g
+        where b in (select c from s) or a in (select count(*) from s)
+        """,
+        timeout=2,
+    )
+    assert data["rows"] == [[1], [2], [3], [4]]
 
-    Retriable(rps=5, timeout=6).call(check_sq_in_join_condition_joined_with_or)
+    data = i1.retriable_sql(
+        """
+        select b from g
+        where b in (select c from s) and a in (select count(*) from s)
+        """,
+        timeout=2,
+    )
+    assert len(data["rows"]) == 0
 
-    def check_bucket_discovery_when_sqs_joined_with_or():
-        data = i1.sql(
-            """
-            select a from g
-            where b in (select c from s where c = 1) or
-            b in (select c from s where c = 3)
-            """,
-            timeout=2,
-        )
-        assert data["rows"] == [[1], [3]]
+    data = i1.retriable_sql(
+        """
+        select c from s inner join
+        (select c as c1 from s)
+        on c = c1 + 3 and c in (select a from g)
+        """,
+        timeout=2,
+    )
+    assert data["rows"] == []
 
-    Retriable(rps=5, timeout=6).call(check_bucket_discovery_when_sqs_joined_with_or)
+    # Full join because of 'OR'
+    data = i1.retriable_sql(
+        """
+        select min(c) from s inner join
+        (select c as c1 from s)
+        on c = c1 + 3 or c in (select a from g)
+        """,
+        timeout=2,
+    )
+    assert data["rows"] == [[1]]
 
-    def check_sqs_joined_with_or_and():
-        data = i1.sql(
-            """
-            select a from g
-            where b in (select c from s where c = 1) or
-            b in (select c from s where c = 3) and
-            a < (select sum(c) from s)
-            """,
-            timeout=2,
-        )
-        assert data["rows"] == [[1], [3]]
+    data = i1.retriable_sql(
+        """
+        select a from g
+        where b in (select c from s where c = 1) or
+        b in (select c from s where c = 3)
+        """,
+        timeout=2,
+    )
+    assert data["rows"] == [[1], [3]]
 
-    Retriable(rps=5, timeout=6).call(check_sqs_joined_with_or_and)
+    data = i1.retriable_sql(
+        """
+        select a from g
+        where b in (select c from s where c = 1) or
+        b in (select c from s where c = 3) and
+        a < (select sum(c) from s)
+        """,
+        timeout=2,
+    )
+    assert data["rows"] == [[1], [3]]
 
 
 def test_aggregates_on_global_tbl(cluster: Cluster):
@@ -987,167 +951,132 @@ def test_join_with_global_tbls(cluster: Cluster):
 
     expected_rows = [[1], [1], [3]]
 
-    def check_inner_join_global_vs_segment():
-        data = i1.sql(
-            """
-            select b from g
-            join s on g.a = s.c
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda e: e[0]) == expected_rows
-
-    Retriable(rps=5, timeout=6).call(check_inner_join_global_vs_segment)
-
-    def check_inner_join_segment_vs_global():
-        data = i1.sql(
-            """
-            select b from s
-            join g on g.a = s.c
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda e: e[0]) == expected_rows
-
-    Retriable(rps=5, timeout=6).call(check_inner_join_segment_vs_global)
-
-    def check_inner_join_segment_vs_global_sq_in_cond():
-        data = i1.sql(
-            """
-            select c from s
-            join g on 1 = 1 and
-            c in (select a*a from g)
-            group by c
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda e: e[0]) == [[1], [4]]
-
-    Retriable(rps=5, timeout=6).call(check_inner_join_segment_vs_global_sq_in_cond)
-
-    def check_left_join_segment_vs_global_sq_in_cond():
-        data = i1.sql(
-            """
-            select c, cast(sum(a) as int) from s
-            left join g on 1 = 1 and
-            c in (select a*a from g)
-            where c < 4
-            group by c
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda e: e[0]) == [
-            [1, 6],
-            [2, None],
-            [3, None],
-        ]
-
-    Retriable(rps=5, timeout=6).call(check_left_join_segment_vs_global_sq_in_cond)
-
-    def check_left_join_any_vs_global():
-        data = i1.sql(
-            """
-            select c, b from
-            (select c*c as c from s)
-            left join g on c = b
-            where c < 5
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda e: e[0]) == [[1, 1], [1, 1], [4, None]]
-
-    Retriable(rps=5, timeout=6).call(check_left_join_any_vs_global)
-
-    def check_inner_join_any_vs_global():
-        data = i1.sql(
-            """
-            select c, b from
-            (select c*c as c from s)
-            inner join g on c = b
-            where c < 5
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda e: e[0]) == [[1, 1], [1, 1]]
+    data = i1.retriable_sql(
+        """
+        select b from g
+        join s on g.a = s.c
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda e: e[0]) == expected_rows
 
-    Retriable(rps=5, timeout=6).call(check_inner_join_any_vs_global)
+    data = i1.retriable_sql(
+        """
+        select b from s
+        join g on g.a = s.c
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda e: e[0]) == expected_rows
 
-    def check_left_join_single_vs_global():
-        data = i1.sql(
-            """
-            select c, a from
-            (select count(*) as c from s)
-            left join g on c = a + 2
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda e: e[0]) == [[5, 3]]
+    data = i1.retriable_sql(
+        """
+        select c from s
+        join g on 1 = 1 and
+        c in (select a*a from g)
+        group by c
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda e: e[0]) == [[1], [4]]
 
-    Retriable(rps=5, timeout=6).call(check_left_join_single_vs_global)
+    data = i1.retriable_sql(
+        """
+        select c, cast(sum(a) as int) from s
+        left join g on 1 = 1 and
+        c in (select a*a from g)
+        where c < 4
+        group by c
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda e: e[0]) == [
+        [1, 6],
+        [2, None],
+        [3, None],
+    ]
 
-    def check_left_join_global_with_expr_in_proj_vs_segment():
-        data = i1.sql(
-            """
-            select b, c from (select b + 3 as b from g)
-            left join s on b = c
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda e: e[0]) == [[4, 4], [4, 4], [6, None]]
+    data = i1.retriable_sql(
+        """
+        select c, b from
+        (select c*c as c from s)
+        left join g on c = b
+        where c < 5
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda e: e[0]) == [[1, 1], [1, 1], [4, None]]
 
-    Retriable(rps=5, timeout=6).call(
-        check_left_join_global_with_expr_in_proj_vs_segment
+    data = i1.retriable_sql(
+        """
+        select c, b from
+        (select c*c as c from s)
+        inner join g on c = b
+        where c < 5
+        """,
+        timeout=2,
     )
+    assert sorted(data["rows"], key=lambda e: e[0]) == [[1, 1], [1, 1]]
 
-    def check_left_join_global_vs_any_false_condition():
-        data = i1.sql(
-            """
-            select b, c from g
-            left join
-            (select c*c as c from s where c > 3)
-            on b = c
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda e: e[0]) == [
-            [1, None],
-            [1, None],
-            [3, None],
-        ]
+    data = i1.retriable_sql(
+        """
+        select c, a from
+        (select count(*) as c from s)
+        left join g on c = a + 2
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda e: e[0]) == [[5, 3]]
 
-    Retriable(rps=5, timeout=6).call(check_left_join_global_vs_any_false_condition)
+    data = i1.retriable_sql(
+        """
+        select b, c from (select b + 3 as b from g)
+        left join s on b = c
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda e: e[0]) == [[4, 4], [4, 4], [6, None]]
 
-    def check_left_join_global_vs_any():
-        data = i1.sql(
-            """
-            select b, c from g
-            left join
-            (select c*c as c from s where c < 3)
-            on b = c
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda e: e[0]) == [[1, 1], [1, 1], [3, None]]
+    data = i1.retriable_sql(
+        """
+        select b, c from g
+        left join
+        (select c*c as c from s where c > 3)
+        on b = c
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda e: e[0]) == [
+        [1, None],
+        [1, None],
+        [3, None],
+    ]
 
-    Retriable(rps=5, timeout=6).call(check_left_join_global_vs_any)
+    data = i1.retriable_sql(
+        """
+        select b, c from g
+        left join
+        (select c*c as c from s where c < 3)
+        on b = c
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda e: e[0]) == [[1, 1], [1, 1], [3, None]]
 
-    def check_left_join_complex_global_child_vs_any():
-        data = i1.sql(
-            """
-            select a, b, c from (
-                select a, b from g
-                inner join (select a + 2 as u from g)
-                on a = u
-            )
-            left join
-            (select c + 1 as c from s where c = 2)
-            on b = c
-            """,
-            timeout=2,
+    data = i1.retriable_sql(
+        """
+        select a, b, c from (
+            select a, b from g
+            inner join (select a + 2 as u from g)
+            on a = u
         )
-        assert sorted(data["rows"], key=lambda e: e[0]) == [[3, 3, 3]]
-
-    Retriable(rps=5, timeout=6).call(check_left_join_complex_global_child_vs_any)
+        left join
+        (select c + 1 as c from s where c = 2)
+        on b = c
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda e: e[0]) == [[3, 3, 3]]
 
 
 def test_union_all_on_global_tbls(cluster: Cluster):
@@ -1185,159 +1114,129 @@ def test_union_all_on_global_tbls(cluster: Cluster):
 
     expected = [[1], [2], [2], [2], [2], [2]]
 
-    def check_global_vs_any():
-        data = i1.sql(
-            """
-            select b from g
-            union all
-            select d from s
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
-
-    Retriable(rps=5, timeout=6).call(check_global_vs_any)
-
-    def check_any_vs_global():
-        data = i1.sql(
-            """
-            select d from s
-            union all
-            select b from g
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
-
-    Retriable(rps=5, timeout=6).call(check_any_vs_global)
+    data = i1.retriable_sql(
+        """
+        select b from g
+        union all
+        select d from s
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
 
-    def check_global_vs_global():
-        data = i1.sql(
-            """
-            select b from g
-            union all
-            select a from g
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [
-            [1],
-            [1],
-            [2],
-            [2],
-            [2],
-            [3],
-        ]
+    data = i1.retriable_sql(
+        """
+        select d from s
+        union all
+        select b from g
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
 
-    Retriable(rps=5, timeout=6).call(check_global_vs_global)
+    data = i1.retriable_sql(
+        """
+        select b from g
+        union all
+        select a from g
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [
+        [1],
+        [1],
+        [2],
+        [2],
+        [2],
+        [3],
+    ]
 
     expected = [[1], [1], [2], [2], [3], [3]]
 
-    def check_global_vs_segment():
-        data = i1.sql(
-            """
-            select a from g
-            union all
-            select c from s
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
-
-    Retriable(rps=5, timeout=6).call(check_global_vs_segment)
-
-    def check_segment_vs_global():
-        data = i1.sql(
-            """
-            select c from s
-            union all
-            select a from g
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
+    data = i1.retriable_sql(
+        """
+        select a from g
+        union all
+        select c from s
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
 
-    Retriable(rps=5, timeout=6).call(check_segment_vs_global)
+    data = i1.retriable_sql(
+        """
+        select c from s
+        union all
+        select a from g
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
 
     expected = [[1], [2], [3], [6]]
 
-    def check_single_vs_global():
-        data = i1.sql(
-            """
-            select sum(c) from s
-            union all
-            select a from g
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
-
-    Retriable(rps=5, timeout=6).call(check_single_vs_global)
-
-    def check_global_vs_single():
-        data = i1.sql(
-            """
-            select a from g
-            union all
-            select sum(c) from s
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
+    data = i1.retriable_sql(
+        """
+        select sum(c) from s
+        union all
+        select a from g
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
 
-    Retriable(rps=5, timeout=6).call(check_global_vs_single)
+    data = i1.retriable_sql(
+        """
+        select a from g
+        union all
+        select sum(c) from s
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
 
     # some arbitrary queries
 
-    def check_multiple_union_all():
-        data = i1.sql(
-            """
-            select a from g
-            where a = 2
-            union all
-            select d from s
-            group by d
-            union all
-            select a from g
-            where b = 1
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [[1], [2], [2]]
-
-    Retriable(rps=5, timeout=6).call(check_multiple_union_all)
-
-    def check_union_with_where():
-        data = i1.sql(
-            """
-            select a from g
-            where a in (select d from s)
-            union all
-            select c from s
-            where c = 3
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [[2], [3]]
-
-    Retriable(rps=5, timeout=6).call(check_union_with_where)
+    data = i1.retriable_sql(
+        """
+        select a from g
+        where a = 2
+        union all
+        select d from s
+        group by d
+        union all
+        select a from g
+        where b = 1
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [[1], [2], [2]]
 
-    def check_complex_segment_child():
-        data = i1.sql(
-            """
-            select a, b from g
-            where a in (select d from s)
-            union all
-            select d, sum(u) from s
-            inner join (select c as u from s)
-            on d = u or u = 1
-            group by d
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [[2, 2], [2, 9]]
+    data = i1.retriable_sql(
+        """
+        select a from g
+        where a in (select d from s)
+        union all
+        select c from s
+        where c = 3
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [[2], [3]]
 
-    Retriable(rps=5, timeout=6).call(check_complex_segment_child)
+    data = i1.retriable_sql(
+        """
+        select a, b from g
+        where a in (select d from s)
+        union all
+        select d, sum(u) from s
+        inner join (select c as u from s)
+        on d = u or u = 1
+        group by d
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [[2, 2], [2, 9]]
 
 
 def test_union_on_global_tbls(cluster: Cluster):
@@ -1372,125 +1271,101 @@ def test_union_on_global_tbls(cluster: Cluster):
 
     expected = [[1], [2]]
 
-    def check_global_vs_any():
-        data = i1.sql(
-            """
-            select b from g
-            union
-            select d from s
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
-
-    Retriable(rps=5, timeout=6).call(check_global_vs_any)
-
-    def check_any_vs_global():
-        data = i1.sql(
-            """
-            select d from s
-            union
-            select b from g
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
-
-    Retriable(rps=5, timeout=6).call(check_any_vs_global)
+    data = i1.retriable_sql(
+        """
+        select b from g
+        union
+        select d from s
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
 
-    def check_global_vs_global():
-        data = i1.sql(
-            """
-            select b from g
-            union
-            select a from g
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [
-            [1],
-            [2],
-            [3],
-        ]
+    data = i1.retriable_sql(
+        """
+        select d from s
+        union
+        select b from g
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
 
-    Retriable(rps=5, timeout=6).call(check_global_vs_global)
+    data = i1.retriable_sql(
+        """
+        select b from g
+        union
+        select a from g
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [
+        [1],
+        [2],
+        [3],
+    ]
 
     expected = [[1], [2], [3]]
 
-    def check_global_vs_segment():
-        data = i1.sql(
-            """
-            select a from g
-            union
-            select c from s
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
-
-    Retriable(rps=5, timeout=6).call(check_global_vs_segment)
-
-    def check_segment_vs_global():
-        data = i1.sql(
-            """
-            select c from s
-            union
-            select a from g
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
+    data = i1.retriable_sql(
+        """
+        select a from g
+        union
+        select c from s
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
 
-    Retriable(rps=5, timeout=6).call(check_segment_vs_global)
+    data = i1.retriable_sql(
+        """
+        select c from s
+        union
+        select a from g
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
 
     expected = [[1], [2], [3]]
 
-    def check_single_vs_global():
-        data = i1.sql(
-            """
-            select sum(c) - 3 from s
-            union
-            select a from g
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
-
-    Retriable(rps=5, timeout=6).call(check_single_vs_global)
-
-    def check_global_vs_single():
-        data = i1.sql(
-            """
-            select a from g
-            union
-            select sum(c) - 3 from s
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == expected
-
-    Retriable(rps=5, timeout=6).call(check_global_vs_single)
-
-    def check_multiple_union():
-        data = i1.sql(
-            """
-            select a from g
-            where a = 2
-            union
-            select d from s
-            group by d
-            union
-            select a from g
-            where b = 1
-            except
-            select null from g
-            where false
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [[1], [2]]
+    data = i1.retriable_sql(
+        """
+        select sum(c) - 3 from s
+        union
+        select a from g
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
 
-    Retriable(rps=5, timeout=6).call(check_multiple_union)
+    data = i1.retriable_sql(
+        """
+        select a from g
+        union
+        select sum(c) - 3 from s
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == expected
+
+    data = i1.retriable_sql(
+        """
+        select a from g
+        where a = 2
+        union
+        select d from s
+        group by d
+        union
+        select a from g
+        where b = 1
+        except
+        select null from g
+        where false
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [[1], [2]]
 
 
 def test_trim(instance: Instance):
@@ -1562,120 +1437,98 @@ def test_except_on_global_tbls(cluster: Cluster):
     )
     assert ddl["row_count"] == 1
 
-    data = i1.sql("""insert into s values (3, 2), (4, 3), (5, 4), (6, 5), (7, 6);""")
+    data = i1.retriable_sql(
+        """insert into s values (3, 2), (4, 3), (5, 4), (6, 5), (7, 6);"""
+    )
     assert data["row_count"] == 5
 
-    def check_global_vs_global():
-        data = i1.sql(
-            """
-            select a from g
-            except
-            select a - 1 from g
-            """,
-            timeout=2,
-        )
-        assert data["rows"] == [[5]]
-
-    Retriable(rps=5, timeout=6).call(check_global_vs_global)
-
-    def check_global_vs_segment():
-        data = i1.sql(
-            """
-            select a from g
-            except
-            select c from s
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [[1], [2]]
-
-    Retriable(rps=5, timeout=6).call(check_global_vs_segment)
-
-    def check_global_vs_any():
-        data = i1.sql(
-            """
-            select b from g
-            except
-            select d from s
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [[1]]
-
-    Retriable(rps=5, timeout=6).call(check_global_vs_any)
-
-    def check_global_vs_single():
-        data = i1.sql(
-            """
-            select b from g
-            where b = 1 or b = 2
-            except
-            select sum(d) from s
-            where d = 3
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [[1], [2]]
-
-    Retriable(rps=5, timeout=6).call(check_global_vs_single)
+    data = i1.retriable_sql(
+        """
+        select a from g
+        except
+        select a - 1 from g
+        """,
+        timeout=2,
+    )
+    assert data["rows"] == [[5]]
 
-    def check_single_vs_global():
-        data = i1.sql(
-            """
-            select sum(d) from s
-            where d = 3 or d = 2
-            except
-            select b from g
-            where b = 1 or b = 2
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [[5]]
+    data = i1.retriable_sql(
+        """
+        select a from g
+        except
+        select c from s
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [[1], [2]]
 
-    Retriable(rps=5, timeout=6).call(check_single_vs_global)
+    data = i1.retriable_sql(
+        """
+        select b from g
+        except
+        select d from s
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [[1]]
 
-    def check_segment_vs_global():
-        data = i1.sql(
-            """
-            select c from s
-            except
-            select a from g
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [[6], [7]]
+    data = i1.retriable_sql(
+        """
+        select b from g
+        where b = 1 or b = 2
+        except
+        select sum(d) from s
+        where d = 3
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [[1], [2]]
 
-    Retriable(rps=5, timeout=6).call(check_segment_vs_global)
+    data = i1.retriable_sql(
+        """
+        select sum(d) from s
+        where d = 3 or d = 2
+        except
+        select b from g
+        where b = 1 or b = 2
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [[5]]
 
-    def check_any_vs_global():
-        data = i1.sql(
-            """
-            select d from s
-            except
-            select b from g
-            """,
-            timeout=2,
-        )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [[6]]
+    data = i1.retriable_sql(
+        """
+        select c from s
+        except
+        select a from g
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [[6], [7]]
 
-    Retriable(rps=5, timeout=6).call(check_any_vs_global)
+    data = i1.retriable_sql(
+        """
+        select d from s
+        except
+        select b from g
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [[6]]
 
-    def check_multiple_excepts():
-        data = i1.sql(
-            """
-            select a + 5 from g
-            where a = 1 or a = 2
-            except select * from (
-            select d from s
-            except
-            select b from g
-            )
-            """,
-            timeout=2,
+    data = i1.retriable_sql(
+        """
+        select a + 5 from g
+        where a = 1 or a = 2
+        except select * from (
+        select d from s
+        except
+        select b from g
         )
-        assert sorted(data["rows"], key=lambda x: x[0]) == [[7]]
-
-    Retriable(rps=5, timeout=6).call(check_multiple_excepts)
+        """,
+        timeout=2,
+    )
+    assert sorted(data["rows"], key=lambda x: x[0]) == [[7]]
 
 
 def test_hash(cluster: Cluster):
@@ -2528,7 +2381,7 @@ def test_sql_acl_privileges(cluster: Cluster):
     ddl = i1.sql(
         f"""
         create table {table_name} ("a" int not null, primary key ("a"))
-        distributed by ("a")
+        distributed globally
     """
     )
     assert ddl["row_count"] == 1
@@ -2536,7 +2389,7 @@ def test_sql_acl_privileges(cluster: Cluster):
     ddl = i1.sql(
         f"""
         create table {another_table_name} ("a" int not null, primary key ("a"))
-        distributed by ("a")
+        distributed globally
     """
     )
     assert ddl["row_count"] == 1
@@ -2856,7 +2709,7 @@ def test_distributed_sql_via_set_language(cluster: Cluster):
         {prelude}
         return console.eval('create table t \
             (a integer not null, b int not null, primary key (a)) \
-                using memtx distributed by (b) option (timeout = 3);')
+                using memtx distributed globally option (timeout = 3);')
     """
     )
 
@@ -3082,7 +2935,7 @@ def test_create_drop_procedure(cluster: Cluster):
         """
         create table t (a int not null, b int, primary key (a))
         using memtx
-        distributed by (b)
+        distributed globally
         """
     )
     assert data["row_count"] == 1
@@ -3354,11 +3207,11 @@ def test_call_procedure(cluster: Cluster):
         """
     )
     assert data["row_count"] == 1
-    data = i2.sql(""" call "proc1"(1, 1) """)
+    data = i2.retriable_sql(""" call "proc1"(1, 1) """)
     assert data["row_count"] == 1
-    data = i2.sql(""" call "proc1"(1, 1) """)
+    data = i2.retriable_sql(""" call "proc1"(1, 1) """)
     assert data["row_count"] == 0
-    data = i2.sql(""" call "proc1"(2, 2) """)
+    data = i2.retriable_sql(""" call "proc1"(2, 2) """)
     assert data["row_count"] == 1
 
     data = i1.sql(
@@ -3385,9 +3238,9 @@ def test_call_procedure(cluster: Cluster):
         i2.sql(""" call "proc2"(1) """)
 
     # Check parameters are passed correctly.
-    data = i1.sql(""" call "proc2"(?) """, 4)
+    data = i1.retriable_sql(""" call "proc2"(?) """, 4)
     assert data["row_count"] == 1
-    data = i1.sql(
+    data = i1.retriable_sql(
         """ call "proc2"($1) option(sql_vdbe_max_steps = $1, vtable_max_rows = $1)""",
         5,
     )
@@ -3406,7 +3259,12 @@ def test_call_procedure(cluster: Cluster):
     with pytest.raises(
         TarantoolError, match="Execute access to function 'proc1' is denied"
     ):
-        i1.sql(""" call "proc1"(3, 3) """, user=username, password=alice_pwd)
+        i1.retriable_sql(
+            """ call "proc1"(3, 3) """,
+            user=username,
+            password=alice_pwd,
+            fatal=TarantoolError,
+        )
 
 
 def test_rename_procedure(cluster: Cluster):