Fix CTE syntax
Should always be wrapped in parens
This commit is contained in:
parent
1ebbbc1772
commit
a6c1f98b71
2 changed files with 4 additions and 6 deletions
|
|
@ -193,10 +193,8 @@
|
||||||
(map (fn [[x expr]]
|
(map (fn [[x expr]]
|
||||||
(let [[sql & params] (format-with-part x)
|
(let [[sql & params] (format-with-part x)
|
||||||
[sql' & params'] (format-dsl expr)]
|
[sql' & params'] (format-dsl expr)]
|
||||||
(cond-> [(str sql " AS "
|
;; according to docs, CTE should _always_ be wrapped:
|
||||||
(if (seq params')
|
(cond-> [(str sql " AS " (str "(" sql' ")"))]
|
||||||
(str "(" sql' ")")
|
|
||||||
sql'))]
|
|
||||||
params (into params)
|
params (into params)
|
||||||
params' (into params'))))
|
params' (into params'))))
|
||||||
xs))]
|
xs))]
|
||||||
|
|
|
||||||
|
|
@ -84,9 +84,9 @@
|
||||||
:from [[{:values [[1 2 3]]} [:vals {:columns [:a :b :c]}]]]}))))
|
:from [[{:values [[1 2 3]]} [:vals {:columns [:a :b :c]}]]]}))))
|
||||||
(deftest test-cte
|
(deftest test-cte
|
||||||
(is (= (format {:with [[:query {:select [:foo] :from [:bar]}]]})
|
(is (= (format {:with [[:query {:select [:foo] :from [:bar]}]]})
|
||||||
["WITH query AS SELECT foo FROM bar"]))
|
["WITH query AS (SELECT foo FROM bar)"]))
|
||||||
(is (= (format {:with-recursive [[:query {:select [:foo] :from [:bar]}]]})
|
(is (= (format {:with-recursive [[:query {:select [:foo] :from [:bar]}]]})
|
||||||
["WITH RECURSIVE query AS SELECT foo FROM bar"]))
|
["WITH RECURSIVE query AS (SELECT foo FROM bar)"]))
|
||||||
(is (= (format {:with [[[:static {:columns [:a :b :c]}] {:values [[1 2 3] [4 5 6]]}]]})
|
(is (= (format {:with [[[:static {:columns [:a :b :c]}] {:values [[1 2 3] [4 5 6]]}]]})
|
||||||
["WITH static (a, b, c) AS (VALUES (?, ?, ?), (?, ?, ?))" 1 2 3 4 5 6]))
|
["WITH static (a, b, c) AS (VALUES (?, ?, ?), (?, ?, ?))" 1 2 3 4 5 6]))
|
||||||
(is (= (format
|
(is (= (format
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue