Merge pull request #562 from alexander-yakushev/opt

More small optimizations
This commit is contained in:
Sean Corfield 2025-01-17 00:05:07 +00:00 committed by GitHub
commit 3beaa6b2bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 33 additions and 32 deletions

View file

@ -2,7 +2,7 @@
* 2.6.next in progress * 2.6.next in progress
* Support expressions in `WITH` clauses via PR [#563](https://github.com/seancorfield/honeysql/pull/563) [@krevedkokun](https://github.com/krevedkokun). * Support expressions in `WITH` clauses via PR [#563](https://github.com/seancorfield/honeysql/pull/563) [@krevedkokun](https://github.com/krevedkokun).
* More performance optimizations via PR [#560](https://github.com/seancorfield/honeysql/pull/560) [@alexander-yakushev](https://github.com/alexander-yakushev). * More performance optimizations via PRs [#560](https://github.com/seancorfield/honeysql/pull/560) and [#562](https://github.com/seancorfield/honeysql/pull/562) [@alexander-yakushev](https://github.com/alexander-yakushev).
* Fix two broken links to the [HoneySQL web app](https://john.shaffe.rs/honeysql/) via PR [#559](https://github.com/seancorfield/honeysql/pull/559) [@whatacold](https://github.com/whatacold). * Fix two broken links to the [HoneySQL web app](https://john.shaffe.rs/honeysql/) via PR [#559](https://github.com/seancorfield/honeysql/pull/559) [@whatacold](https://github.com/whatacold).
* Make SQL Server dialect auto-lift Boolean values to parameters since SQL Server has no `TRUE` / `FALSE` literals. * Make SQL Server dialect auto-lift Boolean values to parameters since SQL Server has no `TRUE` / `FALSE` literals.
* Fix bug in `DEFAULT` values clause (that omitted some values). * Fix bug in `DEFAULT` values clause (that omitted some values).

View file

@ -227,7 +227,8 @@
Hyphens at the start or end of a string should not be touched." Hyphens at the start or end of a string should not be touched."
[s] [s]
(str/replace s #"(\w)-(?=\w)" "$1 ")) (cond-> s
(str/includes? s "-") (str/replace #"(\w)-(?=\w)" "$1 ")))
(defn- namespace-_ (defn- namespace-_
"Return the namespace portion of a symbol, with dashes converted." "Return the namespace portion of a symbol, with dashes converted."
@ -1176,17 +1177,17 @@
x)) x))
xs))) xs)))
[sqls params] [sqls params]
(reduce (fn [[sql params] [sqls' params']] (reduce (fn [[sql params] x]
(if (sequential? x)
(let [[sqls' params'] (format-expr-list x)]
[(conj sql [(conj sql
(if (sequential? sqls') (if (sequential? sqls')
(str "(" (join ", " sqls') ")") (str "(" (join ", " sqls') ")")
sqls')) sqls'))
(into params params')]) (into* params params')])
[(conj sql (sql-kw x)) params]))
[[] []] [[] []]
(map #(if (sequential? %) xs')
(format-expr-list %)
[(sql-kw %)])
xs'))
sqls (if row-ctr (map #(str "ROW" %) sqls) sqls)] sqls (if row-ctr (map #(str "ROW" %) sqls) sqls)]
(into [(str (sql-kw k) " " (join ", " sqls))] params)) (into [(str (sql-kw k) " " (join ", " sqls))] params))
@ -1198,26 +1199,26 @@
(contains-clause? :replace-into) (contains-clause? :replace-into)
(contains-clause? :columns))) (contains-clause? :columns)))
[sqls params] [sqls params]
(reduce (fn [[sql params] [sqls' params']] (reduce
[(conj sql (fn [[sql params] x]
(if (sequential? sqls') (if (map? x)
(str "(" (join ", " sqls') ")") (let [[sqls' params']
sqls')) (reduce-sql (map #(format-expr
(if params' (into params params') params)]) (get x %
[[] []]
(map (fn [m]
(if (map? m)
(format-expr-list
(map #(get m
%
;; issue #366: use NULL or DEFAULT ;; issue #366: use NULL or DEFAULT
;; for missing column values: ;; for missing column values:
(if (contains? *values-default-columns* %) (if (contains? *values-default-columns* %)
[:default] [:default]
nil)) nil))))
cols)) cols)]
[(sql-kw m)])) [(conj sql
xs))] (if (sequential? sqls')
(str "(" (join ", " sqls') ")")
sqls'))
(into* params params')])
[(conj sql (sql-kw x)) params]))
[[] []]
xs)]
(into [(str (when cols-sql (into [(str (when cols-sql
(str cols-sql " ")) (str cols-sql " "))
(sql-kw k) (sql-kw k)