From bdfee0883ea7d9c501a80acf10dbabfb5cd92013 Mon Sep 17 00:00:00 2001 From: Tom Connors Date: Wed, 22 Mar 2017 15:38:15 -0400 Subject: [PATCH] Fix using maps with different key orders in :values --- src/honeysql/format.cljc | 9 +++++---- test/honeysql/core_test.cljc | 8 +++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/honeysql/format.cljc b/src/honeysql/format.cljc index f20dbef..21e6fc5 100644 --- a/src/honeysql/format.cljc +++ b/src/honeysql/format.cljc @@ -541,10 +541,11 @@ (if (sequential? (first values)) (str "VALUES " (comma-join (for [x values] (str "(" (comma-join (map to-sql x)) ")")))) - (str - "(" (comma-join (map to-sql (keys (first values)))) ") VALUES " - (comma-join (for [x values] - (str "(" (comma-join (map to-sql (vals x))) ")")))))) + (let [cols (keys (first values))] + (str + "(" (comma-join (map to-sql cols)) ") VALUES " + (comma-join (for [x values] + (str "(" (comma-join (map #(to-sql (get x %)) cols)) ")"))))))) (defmethod format-clause :query-values [[_ query-values] _] (to-sql query-values)) diff --git a/test/honeysql/core_test.cljc b/test/honeysql/core_test.cljc index 8a87a45..5fd2be5 100644 --- a/test/honeysql/core_test.cljc +++ b/test/honeysql/core_test.cljc @@ -84,7 +84,13 @@ (insert-into :foo) (columns :bar) (values [[(honeysql.format/value {:baz "my-val"})]]) - sql/format)))) + sql/format))) + (is (= ["INSERT INTO foo (a, b, c) VALUES (?, ?, ?), (?, ?, ?)" + "a" "b" "c" "a" "b" "c"] + (-> (insert-into :foo) + (values [(array-map :a "a" :b "b" :c "c") + (hash-map :a "a" :b "b" :c "c")]) + sql/format)))) (deftest test-operators (testing "="