|
1 | | -(ns macaw.scope-experiments |
| 1 | +(ns macaw.scope-experiments-test |
2 | 2 | (:require |
3 | 3 | [clojure.test :refer :all] |
4 | 4 | [macaw.scope-experiments :as mse])) |
|
57 | 57 | ;; like source-columns, but understands scope |
58 | 58 | (is (= (mse/fields-to-search |
59 | 59 | (mse/fields->tables-in-scope "select x from t, u, v left join w on w.a = v.a where t.b = u.b and u.c = v.c limit 3")) |
60 | | - #{[:table "t" :column "b"] |
61 | | - [:table "t" :column "x"] |
62 | | - [:table "u" :column "b"] |
63 | | - [:table "u" :column "c"] |
64 | | - [:table "u" :column "x"] |
65 | | - [:table "v" :column "a"] |
66 | | - [:table "v" :column "c"] |
67 | | - [:table "v" :column "x"] |
68 | | - [:table "w" :column "a"] |
69 | | - [:table "w" :column "x"]}))) |
| 60 | + #{{:table "t" :column "b"} |
| 61 | + {:table "t" :column "x"} |
| 62 | + {:table "u" :column "b"} |
| 63 | + {:table "u" :column "c"} |
| 64 | + {:table "u" :column "x"} |
| 65 | + {:table "v" :column "a"} |
| 66 | + {:table "v" :column "c"} |
| 67 | + {:table "v" :column "x"} |
| 68 | + {:table "w" :column "a"} |
| 69 | + {:table "w" :column "x"}})) |
| 70 | + |
| 71 | + (is (= (mse/fields-to-search |
| 72 | + (mse/fields->tables-in-scope |
| 73 | + "with b as (select x, * from a), |
| 74 | + c as (select y, * from b) |
| 75 | + select z from c;")) |
| 76 | + ;; getting there - needs to unwrap cte aliases to the tables that they come from |
| 77 | + #{{:table "a" :column "x"} |
| 78 | + {:table "b" :column "y"} |
| 79 | + {:table "c" :column "z"}})) |
| 80 | + |
| 81 | + (is (= (mse/fields-to-search |
| 82 | + (mse/fields->tables-in-scope |
| 83 | + "select x, y, (select z from u) from t")) |
| 84 | + ;; totally loses x and y :-( |
| 85 | + #{{:table "u" :column "z"}}))) |
0 commit comments