Fixes #128 by adding :truncate / truncate
This commit is contained in:
parent
4fbf69e59e
commit
7831ebed38
5 changed files with 25 additions and 0 deletions
|
|
@ -1,6 +1,7 @@
|
|||
## Changes coming in 0.9.7
|
||||
|
||||
* Fix #248 by treating alias as "not a subquery" when generating SQL for it. (@seancorfield)
|
||||
* Fix #128 by adding `truncate` support.
|
||||
* Fix #99 by adding a note to the first use of `select` in the README that column names can be keywords or symbols but not strings.
|
||||
|
||||
## 0.9.6
|
||||
|
|
|
|||
|
|
@ -228,6 +228,14 @@ If your database supports it, you can also delete from multiple tables:
|
|||
"musical"]
|
||||
```
|
||||
|
||||
If you want to delete everything from a table, you can use `truncate`:
|
||||
|
||||
```clojure
|
||||
(-> (truncate :films)
|
||||
sql/format)
|
||||
=> ["TRUNCATE films"]
|
||||
```
|
||||
|
||||
Queries can be nested:
|
||||
|
||||
```clojure
|
||||
|
|
|
|||
|
|
@ -219,6 +219,7 @@
|
|||
:update 70
|
||||
:delete 75
|
||||
:delete-from 80
|
||||
:truncate 85
|
||||
:columns 90
|
||||
:from 110
|
||||
:join 120
|
||||
|
|
@ -629,6 +630,9 @@
|
|||
(defmethod format-clause :delete [[_ tables] _]
|
||||
(str "DELETE " (comma-join (map to-sql tables))))
|
||||
|
||||
(defmethod format-clause :truncate [[_ table] _]
|
||||
(str "TRUNCATE " (to-sql table)))
|
||||
|
||||
(defn cte->sql
|
||||
[[cte-name query]]
|
||||
(str (binding [*subquery?* false]
|
||||
|
|
|
|||
|
|
@ -279,6 +279,13 @@
|
|||
([tables] (delete nil tables))
|
||||
([m tables] (build-clause :delete m tables)))
|
||||
|
||||
(defmethod build-clause :truncate [_ m table]
|
||||
(assoc m :truncate table))
|
||||
|
||||
(defn truncate
|
||||
([table] (truncate nil table))
|
||||
([m table] (build-clause :truncate m table)))
|
||||
|
||||
(macros/usetime
|
||||
(defhelper with [m ctes]
|
||||
(assoc m :with ctes)))
|
||||
|
|
|
|||
|
|
@ -228,6 +228,11 @@
|
|||
:where [:= :t1.bar 42]}
|
||||
(format :quoting :mysql)))))
|
||||
|
||||
(deftest truncate-test
|
||||
(is (= ["TRUNCATE `foo`"]
|
||||
(-> {:truncate :foo}
|
||||
(format :quoting :mysql)))))
|
||||
|
||||
(deftest inlined-values-are-stringified-correctly
|
||||
(is (= ["SELECT foo, bar, NULL"]
|
||||
(format {:select [(honeysql.core/inline "foo")
|
||||
|
|
|
|||
Loading…
Reference in a new issue