From f83fbcaef51bbb0e46e144bd072204d255bac462 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cam=20Sa=C3=BCl?= <cammsaul@gmail.com> Date: Fri, 14 Oct 2016 13:13:00 -0700 Subject: [PATCH] Fix bug in edit segments API endpoint :wrench: --- src/metabase/api/common/internal.clj | 16 ++++++++++------ src/metabase/models/segment.clj | 2 +- src/metabase/util.clj | 4 ++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/metabase/api/common/internal.clj b/src/metabase/api/common/internal.clj index 04bc2761784..a5f5b874521 100644 --- a/src/metabase/api/common/internal.clj +++ b/src/metabase/api/common/internal.clj @@ -1,9 +1,11 @@ (ns metabase.api.common.internal "Internal functions used by `metabase.api.common`." - (:require [clojure.tools.logging :as log] + (:require [clojure.java.jdbc :as jdbc] + [clojure.string :as s] [medley.core :as m] [swiss.arrows :refer :all] - [metabase.util :as u])) + [metabase.util :as u]) + (:import java.sql.SQLException)) ;;; # DEFENDPOINT HELPER FUNCTIONS + MACROS @@ -232,10 +234,12 @@ status-code message ;; Otherwise it's a 500. Return a body that includes exception & filtered stacktrace for debugging purposes :else (let [stacktrace (u/filtered-stacktrace e)] - (log/debug message "\n" (u/pprint-to-str stacktrace)) - (assoc other-info - :message message - :stacktrace stacktrace)))})))) + (merge (assoc other-info + :message message + :stacktrace stacktrace) + (when (instance? SQLException e) + {:sql-exception-chain (s/split (with-out-str (jdbc/print-sql-exception-chain e)) + #"\s*\n\s*")}))))})))) (defmacro catch-api-exceptions "Execute BODY, and if an exception is thrown, return the appropriate HTTP response." diff --git a/src/metabase/models/segment.clj b/src/metabase/models/segment.clj index efe64501bc8..c0973fb84a0 100644 --- a/src/metabase/models/segment.clj +++ b/src/metabase/models/segment.clj @@ -112,7 +112,7 @@ (integer? user-id) (string? revision_message)]} ;; update the segment itself - (db/update! Segment id + (db/update-non-nil-keys! Segment id :name name :description description :caveats caveats diff --git a/src/metabase/util.clj b/src/metabase/util.clj index 8bef222d58e..4b2a0621420 100644 --- a/src/metabase/util.clj +++ b/src/metabase/util.clj @@ -16,7 +16,7 @@ (java.net Socket InetSocketAddress InetAddress) - java.sql.Timestamp + (java.sql SQLException Timestamp) (java.util Calendar TimeZone) javax.xml.bind.DatatypeConverter org.joda.time.format.DateTimeFormatter)) @@ -560,7 +560,7 @@ (fn [& args] (try (apply f args) - (catch java.sql.SQLException e + (catch SQLException e (log/error (format-color 'red "%s\n%s\n%s" exception-message (with-out-str (jdbc/print-sql-exception-chain e)) -- GitLab