diff --git a/sbroad-cartridge/test_app/test/integration/cte_test.lua b/sbroad-cartridge/test_app/test/integration/cte_test.lua
index 7ab607bdeb92ed3a82cb42f316329b08e066f3bb..cad5167b836bcdfb74307c510edc32f13d558078 100644
--- a/sbroad-cartridge/test_app/test/integration/cte_test.lua
+++ b/sbroad-cartridge/test_app/test/integration/cte_test.lua
@@ -129,5 +129,35 @@ g.test_cte = function ()
     t.assert_equals(err, nil)
     t.assert_items_equals(r["metadata"], { {name = "CTE.B", type = "number"} })
     t.assert_items_equals(r["rows"], { {5}, {4} })
+
+    -- randomly distributed cte, used multiple times
+    r, err = api:call("sbroad.execute", { [[
+        WITH cte (b) AS (SELECT "a" FROM "t" WHERE "id" > 3)
+        SELECT t.c FROM (SELECT count(*) as c FROM cte c1 JOIN cte c2 ON true) t
+        JOIN cte ON true
+    ]], })
+    t.assert_equals(err, nil)
+    t.assert_items_equals(r["metadata"], { {name = "T.C", type = "integer"} })
+    t.assert_items_equals(r["rows"], { {4}, {4} })
+
+    -- cte with segment distributed, used multiple times
+    r, err = api:call("sbroad.execute", { [[
+        WITH cte (b) AS (SELECT "id" FROM "t" WHERE "id" = 1)
+        SELECT t.c FROM (SELECT count(*) as c FROM cte c1 JOIN cte c2 ON true) t
+        JOIN cte ON true
+    ]], })
+    t.assert_equals(err, nil)
+    t.assert_items_equals(r["metadata"], { {name = "T.C", type = "integer"} })
+    t.assert_items_equals(r["rows"], { {1} })
+
+    -- globally distributed cte, used multiple times
+    r, err = api:call("sbroad.execute", { [[
+        WITH cte (b) AS (VALUES (1))
+        SELECT t.c FROM (SELECT count(*) as c FROM cte c1 JOIN cte c2 ON true) t
+        JOIN cte ON true
+    ]], })
+    t.assert_equals(err, nil)
+    t.assert_items_equals(r["metadata"], { {name = "T.C", type = "integer"} })
+    t.assert_items_equals(r["rows"], { {1} })
 end