From a566bd328df255f84815d70c9ca5e6855ee8f5a7 Mon Sep 17 00:00:00 2001 From: Cam Saul <1455846+camsaul@users.noreply.github.com> Date: Wed, 19 Jan 2022 09:39:18 -0800 Subject: [PATCH] Add test for #13932 (#19766) --- .../test/metabase/driver/vertica_test.clj | 22 +++++++++++++++++++ test/metabase/driver/postgres_test.clj | 7 ------ .../test/data/dataset_definitions.clj | 7 ++++++ 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/modules/drivers/vertica/test/metabase/driver/vertica_test.clj b/modules/drivers/vertica/test/metabase/driver/vertica_test.clj index 260a3a41722..7147e51b54d 100644 --- a/modules/drivers/vertica/test/metabase/driver/vertica_test.clj +++ b/modules/drivers/vertica/test/metabase/driver/vertica_test.clj @@ -1,6 +1,7 @@ (ns metabase.driver.vertica-test (:require [clojure.test :refer :all] [metabase.driver.sql-jdbc.connection :as sql-jdbc.conn] + [metabase.query-processor :as qp] [metabase.test :as mt] [metabase.test.util :as tu])) @@ -18,3 +19,24 @@ :port 5433 :db "birds-near-me" :additional-options "ConnectionLoadBalance=1"})))))) + +(deftest dots-in-column-names-test + (mt/test-driver :vertica + (testing "Columns with dots in the name should be properly quoted (#13932)" + (mt/dataset dots-in-names + (is (= {:query (str "SELECT * " + "FROM table " + "WHERE \"public\".\"dots_in_names_objects.stuff\".\"dotted.name\" = ?") + :params ["ouija_board"]} + (qp/query->native + {:database (mt/id) + :type :native + :native {:query "SELECT * FROM table WHERE {{x}}" + :template-tags {"x" {:name "x" + :display-name "X" + :type :dimension + :dimension [:field (mt/id :objects.stuff :dotted.name) nil] + :widget-type :text}}} + :parameters [{:type :text + :target [:dimension [:template-tag "x"]] + :value "ouija_board"}]}))))))) diff --git a/test/metabase/driver/postgres_test.clj b/test/metabase/driver/postgres_test.clj index 28f5b3655aa..275b194ebb9 100644 --- a/test/metabase/driver/postgres_test.clj +++ b/test/metabase/driver/postgres_test.clj @@ -117,13 +117,6 @@ ;;; ------------------------------------------- Tests for sync edge cases -------------------------------------------- -(mt/defdataset dots-in-names - [["objects.stuff" - [{:field-name "dotted.name", :base-type :type/Text}] - [["toucan_cage"] - ["four_loko"] - ["ouija_board"]]]]) - (deftest edge-case-identifiers-test (mt/test-driver :postgres (testing "Make sure that Tables / Fields with dots in their names get escaped properly" diff --git a/test/metabase/test/data/dataset_definitions.clj b/test/metabase/test/data/dataset_definitions.clj index 2965658a62f..9a1e94e5f74 100644 --- a/test/metabase/test/data/dataset_definitions.clj +++ b/test/metabase/test/data/dataset_definitions.clj @@ -210,3 +210,10 @@ (t/offset-time t) ; time-ltz (t/offset-time t) ; time-tz cnt])]]) ; num-crows + +(tx/defdataset dots-in-names + [["objects.stuff" + [{:field-name "dotted.name", :base-type :type/Text}] + [["toucan_cage"] + ["four_loko"] + ["ouija_board"]]]]) -- GitLab