Skip to content
Snippets Groups Projects
This project is mirrored from https://github.com/metabase/metabase. Pull mirroring updated .
  1. Apr 27, 2022
    • dpsutton's avatar
      Fix errors when downgrading then upgrading to bigquery driver (#22121) · 2ada1fc4
      dpsutton authored
      This issue has a simple fix but a convoluted story. The new bigquery
      driver handles multiple schemas and puts that schema (dataset-id) in the
      normal spot on a table in our database. The old driver handled only a
      single schema by having that dataset-id hardcoded in the database
      details and leaving the schema slot nil on the table row.
      
      ```clojure
      ;; new driver describe database:
      [{:name "table-1" :schema "a"}
       {:name "table-2" :schema "b"}]
      
      ;; old driver describe database (with dataset-id "a" on the db):
      [{:name "table-1" :schema nil}]
      ```
      
      So if you started on the new driver and then downgraded for some reason,
      the table sync would see you had tables with schemas, but when it
      enumerated the tables in the database on the next sync, would see tables
      without schemas. It did not unify these two together, nor did it archive
      the tables with a schema. You ended up with both copies in the
      database, all active.
      
      ```clojure
      [{:name "table-1" :schema "a"}
       {:name "table-2" :schema "b"}
       {:name "table-1" :schema nil}]
      ```
      
      If you then tried to migrate back to the newer driver, we migrated them
      as normal: since the old driver only dealt with one schema but left it
      nil, put that dataset-id on all of the tables connected to this
      connection.
      
      But since the new driver and then the old driver created copies of the
      same tables, you would end up with a constraint violation: tables with
      the same name and, now after the migration, the same schema. Ignore this
      error and the sync in more recent versions will correctly inactivate the
      old tables with no schema.
      
      ```clojure
      [{:name "table-1" :schema "a"}  <-|
       {:name "table-2" :schema "b"}    | constraint violation
       {:name "table-1" :schema "a"}] <-|
      
      ;; preferrable:
      [{:name "table-1" :schema "a"}
       {:name "table-2" :schema "b"}
       {:name "table-1" :schema nil :active false}]
      ```
      Unverified
      2ada1fc4
  2. Apr 26, 2022
    • dpsutton's avatar
      Bump bigquery version to first version that supports SNAPSHOT tables (#22049) · 54d064fc
      dpsutton authored
      Fixes #19860
      
      SNAPSHOT tables in bigquery hold diffs from an underlying table:
      https://cloud.google.com/bigquery/docs/table-snapshots-intro. But the
      support in the sdk only came in 1.135.0 :
      https://github.com/googleapis/java-bigquery/blob/main/CHANGELOG.md#11350-2021-06-28
      
      I picked the most recent 1.135 version.
      
      Running
      
      ```shell
      clj -A:dev:ee:ee-dev:drivers:drivers-dev -Stree
      ```
      
      Shows conflicts on
      
      ```
      X google-http-client-jackson2 1.39.2 :older-version
      ; using 1.39.2-sp.1 from google analytics
      
      X com.fasterxml.jackson.core/jackson-core 2.12.3 :older-version
      ; from cheshire we have 2.12.4
      
      X com.google.http-client/google-http-client 1.39.2 :superseded
      ; using 1.39.2-sp.1 from google-http-client-jackson2 (1.39.2-sp1)
      
      X commons-codec/commons-codec 1.15 :use-top
      ; pinned to this version at top level
      
      X com.google.guava/guava 30.1.1-android :use-top
      ; pinned to 31.0.1-jre top level
      ```
      
      So I think this change is quite safe. After the release we should
      investigate the breaking changes that come in the 2.0.0 release and look
      into getting onto 2.10.10. This version worked locally for me but I
      don't want to introduce that into the release just yet.
      Unverified
      54d064fc
  3. Apr 22, 2022
    • Cam Saul's avatar
      Handle March 31st + 3 months (June 31st?) for Oracle (#21841) · b9cedccc
      Cam Saul authored
      * Handle March 31st + 3 months for Oracle (#10072)
      
      * Optimize out some casting in Oracle
      
      * rx util support varargs inside `opt`
      
      * hx/ math operators like + and - should propagate type information
      
      * Some dox tweaks
      
      * Fix SQLite busted behavior
      
      * Avoid unneeded casting in Vertica when adding temporal intervals
      
      * Lint error fixes
      
      * BigQuery fix for #21969
      
      * Add testing context for tests for #21968 and #21971
      Unverified
      b9cedccc
    • Howon Lee's avatar
      Group-by fix for JSON columns. (#21741) · bad129cd
      Howon Lee authored
      Group-bys didn't work because you need two instances of the field and you couldn't have two instances of the field be considered by the postgres backend as the same. Ported over the BigQuery fix to this to apply to JSON columns as well.
      Unverified
      bad129cd
  4. Apr 19, 2022
    • Braden Shepherdson's avatar
      Make namespace aliasing consistent everywhere; enforce with clj-kondo (#21738) · 19beda53
      Braden Shepherdson authored
      * Make namespace aliasing consistent everywhere; enforce with clj-kondo
      
      See the table of aliases in .clj-kondo/config.edn
      
      Notable patterns:
      - `[metabase.api.foo :as api.foo]`
      - `[metabase.models.foo :as foo]`
      - `[metabase.query-processor.foo :as qp.foo]`
      - `[metabase.server.middleware.foo :as mw.foo]`
      - `[metabase.util.foo :as u.foo]`
      - `[clj-http.client :as http]` and `[metabase.http-client :as client]`
      
      Fixes #19930.
      Unverified
      19beda53
  5. Apr 13, 2022
  6. Apr 07, 2022
  7. Apr 05, 2022
  8. Apr 01, 2022
  9. Mar 24, 2022
  10. Mar 23, 2022
  11. Mar 16, 2022
  12. Mar 10, 2022
  13. Feb 24, 2022
  14. Feb 16, 2022
  15. Feb 15, 2022
    • Cam Saul's avatar
      Upgrade Hive JDBC driver version from 1.2.2 -> 3.1.2; Bump Spark SQL from 2.1.1 to 3.2.1 (#20353) · 4dc16403
      Cam Saul authored
      * Replace AOT Spark SQL deps with a `proxy` and a `DataSource`
      
      * Support `connection-details->spec` returning a `DataSource`
      
      * Remove target/classes
      
      * Don't need to deps prep drivers anymore
      
      * Fix duplicate `this` params in `proxy` methods; add `:test` alias for Eastwood to make it be a little quieter
      
      * Make sure to call `pool/map->properties`
      
      * Upgrade Hive JDBC driver version from 1.2.2 -> 3.1.2; Bump Spark SQL from 2.1.1 to 3.2.1
      
      * Clean the namespaces
      
      * Don't need to register the a proxy JDBC driver since we're not even using it anymore
      
      * Fix Spark SQL :schema sync for newer versions
      
      * Remove unneeded override
      
      * Fix day-of-week extract for new :sparksql
      
      * Hive/Spark SQL needs to escape question marks inside QUOTED identifiers now :unamused:
      
      * Some minor SQL generation improvements to avoid duplicate casts
      
      * Revert change to debug test
      Unverified
      4dc16403
  16. Feb 14, 2022
    • Cam Saul's avatar
      Add logic to truncate and uniquely-suffix column alias identifiers (#19659) · f94d5149
      Cam Saul authored
      * Add failing test for #15978
      
      * Improved test
      
      * Add new metabase.driver.query-processor.escape-join-aliases QP middleware
      
      * Test fix :wrench:
      
      * Add reference to #20307
      
      * Add some extra dox
      
      * Test fixes for BigQuery drivers
      
      * revert unneeded change
      
      * Fix :bigquery and :bigquery-cloud-sdk mixup
      
      * Test fixes :wrench:
      
      * Test fix :wrench:
      
      * Remove comment I meant to remove
      Unverified
      f94d5149
  17. Feb 11, 2022
  18. Feb 08, 2022
    • Jeff Evans's avatar
      Remove :bigquery driver (#20142) · 22ebe102
      Jeff Evans authored
      
      * Remove :bigquery driver
      
      Add "migration" to convert existing Database instances from :bigquery to :bigquery-cloud-sdk (with error log if using outdated OAuth mechanisms), by way of `normalize-db-details`
      
      Removing references to :bigquery from various places in the code
      
      * Remove from modules/drivers/deps.edn
      
      * Remove stuff from CircleCI that is running the old driver
      
      Remove `driver-switch-test` since there is no practical way to run this anymore (since we can't initialize the old driver)
      
      Remove buggy redef of `isa?` from `semantic-type-migration-tests`
      
      Co-authored-by: default avatarCam Saul <github@camsaul.com>
      Unverified
      22ebe102
  19. Feb 03, 2022
  20. Feb 02, 2022
  21. Jan 27, 2022
  22. Jan 26, 2022
    • Jeff Evans's avatar
      Support overriding ROWCOUNT for SQL Server (#19267) · 802cc236
      Jeff Evans authored
      * Support overriding ROWCOUNT for SQL Server
      
      Add new "ROWCOUNT Override" connection property for `:sqlserver`, which will provide a DB-level mechanism to override the `ROWCOUNT` session level setting as needed for specific DBs
      
      Change `max-results-bare-rows` from a hardcoded constant to a setting definition instead, which permits a DB level override, and move the former constant default to a new def instead (`default-max-results-bare-rows`)
      
      For `:sqlserver`, set the DB-level setting override (if the connection property is set), via the `driver/normalize-db-details` impl
      
      Add test to confirm the original scenario from #9940 works using this new override (set to `0`)
      
      Move common computation function of overall row limit to the `metabase.query-processor.middleware.limit` namespace, and invoke it from execute now, called `determine-query-max-rows`
      
      Add new clause to the `determine-query-max-rows` function that preferentially takes the value from `row-limit-override` (if defined)
      Unverified
      802cc236
  23. Jan 25, 2022
    • Jeff Evans's avatar
      Apply schema inclusion/exclusion filtering to sql-jdbc drivers (#19651) · b6d542f8
      Jeff Evans authored
      * Apply schema inclusion/exclusion filtering to sql-jdbc drivers
      
      Update `sql-jdbc` namespaces to handle schema inclusion/exclusion patterns when filtering schemas
      
      Add new generic schema inclusion/exclusion test for sql-jdbc drivers that define the property
      
      Update Snowflake and Redshift driver manifests to include schema filtering property
      
      Create `db-details->schema-filter-patterns` util fn to turn DB details into the inclusion/exclusion patterns
      
      Move schema inclusion/exclusion filtering code to new namespace (since it's not strictly used by `:sql-jdbc` derived drivers)
      
      Move existing tests accordingly
      
      Add schema inclusion/exclusion check to the new `filtered-syncable-schemas` multimethod (and updating docstring)
      
      Change `:redshift` impl of `filtered-syncable-schemas` to call the `:sql-jdbc` version instead
      
      Use new multimethod instead for `filtered-syncable-schemas`, and have default impl of `syncable-schemas` call that
      
      Mark `syncable-schemas` as deprecated and include notes on the new method (and update driver markdown file accordingly)
      Unverified
      b6d542f8
  24. Jan 20, 2022
  25. Jan 19, 2022
  26. Jan 18, 2022
  27. Jan 14, 2022
  28. Jan 13, 2022
    • dpsutton's avatar
      Don't update tables in a schema one by one (#19658) · 1c54f6a0
      dpsutton authored
      * Don't update tables in a schema one by one
      
      Code had wanted to log each table which is admirable. But on bigquery
      there can be 15,000 tables and this will lock up calls to
      /api/database. On stats they are taking about 18s for me. Need to do
      once and let the db do the heavy lifting
      
      * Also where schema is nil
      
      * slightly better query
      Unverified
      1c54f6a0
  29. Jan 12, 2022
    • Jeff Evans's avatar
      Sync multiple schemas for BigQuery (#19547) · 526594f4
      Jeff Evans authored
      Add functions to describe-database namespace for performing inclusive/exclusive schema filtering
      
      Add tests for these functions in isolation
      
      Update `:bigquery-cloud-sdk` driver and QP code to remove the single `dataset-id` conn-param
      
      Changing :bigquery-cloud-sdk` driver to use dataset inclusion/exclusion filters instead
      
      Updating `add.cy.spec.js` Cypress test to account for new structure
      
      Add data upgrade (via `driver/normalize-db-details` implementation) to change `dataset-id` property to inclusion filter
      
      Add test to confirm data upgrade
      
      Adding server side expansion of `:schema-filters` type connection property
      Unverified
      526594f4
  30. Jan 11, 2022
Loading