From 0b2195aa64bbf364ca07ec43f21f5f36d9a73edc Mon Sep 17 00:00:00 2001 From: Denis Smirnov <sd@picodata.io> Date: Tue, 23 Apr 2024 19:12:49 +0700 Subject: [PATCH] test: add cte test --- .../test_app/test/integration/cte_test.lua | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/sbroad-cartridge/test_app/test/integration/cte_test.lua b/sbroad-cartridge/test_app/test/integration/cte_test.lua index 7ab607bde..cad5167b8 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 -- GitLab