Skip to content
Snippets Groups Projects
  • dpsutton's avatar
    254e73f8
    Initial support for datetimeDiff (#25722) · 254e73f8
    dpsutton authored
    
    * Initial support for pg for `date-diff`
    
    * Make the useful-dates closer to one day
    
    * Add simple FE stuff
    
    * shorter test bodies
    
    * Ensure we can use datediff functions in arithmetic expressions
    
    * Correctly disable datediff for redshift
    
    * simplify var names
    
    * Support week
    
    * cleanup test
    
    * :datediff -> :datetimediff
    
    * ngoc's suggestions
    
    * Better acceptance test for datetimediff
    
    * sort ns
    
    * embrace the different cases for results
    
    * bigquery day month year
    
    * Reverse args
    
    * Update test
    
    * Centralize tests
    
    * Change postgres day, month, year behaviour
    
    * Refactor keep identity
    
    * Tidy tests
    
    * Tidy
    
    * Fix bigquery week
    
    * Add week tests
    
    * Fix bigquery week
    
    * Change mysql day, month, year behaviour
    
    * Add test for hour, minute, second
    
    * Fix postgres hour minute second
    
    * Formatting
    
    * Fix bigquery hour, minute, second
    
    * Formatting
    
    * Fix postgres timestamptz
    
    * WIP
    
    * Allow literals in datediff clauses
    
    * Uncomment tests
    
    * Fix bigquery when reporting timezone is not UTC
    
    * Linting
    
    * Moving away from dataset based tests
    
    * Add timezone tests for week and tidy
    
    * Remove unused import
    
    * Consolidate tests
    
    * Remove with-time-column dataset
    
    * Remove more-useful-dates defdataset
    
    * Remove redshift driver WIP
    
    * Typo
    
    * Move DatetimeLiteral clause into DateTimeExpressionArg
    
    * Try changing test order
    
    * Remove mt/with-report-timezone-id nil
    
    * Add year report timezone tests
    
    * Rename
    
    * Rename
    
    * Remove unused tables from useful-dates
    
    * Remove useful-dates
    
    * Update helper-text-strings
    
    * Tidy
    
    * Swap order of mt/with-report-timezone-id
    
    * Change with-report-timezone-id; notify databases after running test
    
    * Use temp setting for report-timezone instead
    
    * Update helper-test-strings
    
    * Handle literals in `datetimediff-base-base`
    
    * Update src/metabase/driver/postgres.clj
    
    Co-authored-by: default avatarmetamben <103100869+metamben@users.noreply.github.com>
    
    * Simplify postgres second
    
    * Tidy: prefer hx arithmetic functions
    
    * Drop coercion for string timestamp args for now
    
    * Extract helper
    
    * Revert "Change with-report-timezone-id; notify databases after running test"
    
    This reverts commit 7abb543bed13d9d13295d0e00ad1293a40e40d53.
    
    * Use ->timestamptz
    
    * Use hx/->timestamp
    
    * Rename dataset
    
    * Undo changes to datetime-arithmetics? as these will not match by default
    
    * Use proper format for offset datetime literals
    
    * Shorten datetime literals in tests
    
    * Removing notify-all-databases-updated from report-timezone setting
    
    * Fix datetime-arithmetics test
    
    * Revert "Fix datetime-arithmetics test"
    
    This reverts commit 9141582508170bdbe99c4aa74bc4444e41475be6.
    
    * Revert "Undo changes to datetime-arithmetics? as these will not match by default"
    
    This reverts commit 9cb05f5475b24a78cb89601c918f3440606cc525.
    
    * Add UTC timezone to tests
    
    * Coerce strings to datetimes for ISO formats
    
    * Revert "Removing notify-all-databases-updated from report-timezone setting"
    
    This reverts commit 37356435a2e3981deca9ae76118d857babb2aada.
    
    * Add comment to postgres driver implementation
    
    * Formatting
    
    * Disable datediff from redshift for the moment (for ever?)
    
    * Override redshift driver/database-supports?
    
    * Fix comments mixed up by refactoring
    
    * Fix comments mixed up by refactoring 2
    
    * Tidy comment
    
    * Rename datetimediff to datetime-diff/datetimeDiff
    
    * date-add -> datetime-add
    
    * Linting
    
    * add datetime-subtract to `datetime-arithmetics?`
    
    rework tests a bit as well.
    
    * Update docstring
    
    * Use ->temporal-type and trunc to handle report-timezone for bigquery
    
    * Log errors caught during sync steps (#26306)
    
    * log errors caught during sync steps
    
    * remove accidental extra parens
    
    * Errors combining datetime interval addition with datetime functions (#26279)
    
    * Add failing tests
    
    * Fix failing tests
    
    * Update shared/src/metabase/mbql/util.cljc
    
    Co-authored-by: default avatarNgoc Khuat <qn.khuat@gmail.com>
    
    * datetime-add and datetime subtract should annotate type by col type
    
    * Fix infer-expression-type for datetime-add/subtract with second, minute, hour
    
    * Undo last commit; they actually always return :type/DateTime
    
    * Fix test based on last commit
    
    * Undo unrelated refactor
    
    * Only test drivers that support expressions
    
    * Only test drivers that support expressions, again
    
    * Update tests from legacy mbql
    
    * Change infered-col-type to be a function again, not macro
    
    * Fix test
    
    Co-authored-by: default avatarNgoc Khuat <qn.khuat@gmail.com>
    
    * whitespace
    
    * Remove comments
    
    * Add explanation for datetime_diff
    
    * Refactor: replace cast and add `mt/with-driver :bigquery-cloud-sdk` where report-timezone is relevant
    
    * Add failing tests
    
    * Fix failing tests
    
    * Technically it should be bigquery-type
    
    * Update modules/drivers/bigquery-cloud-sdk/src/metabase/driver/bigquery_cloud_sdk.clj
    
    Co-authored-by: default avatarCam Saul <1455846+camsaul@users.noreply.github.com>
    
    * Move documentation to metabase.mbql.schema
    
    * Update DatetimeDiffUnits
    
    Co-authored-by: default avatarCam Saul <1455846+camsaul@users.noreply.github.com>
    
    * Add error type and optimize case expressions to driver implementations
    
    * refactor for brevity
    
    * Fix error with postgres
    
    * Fix error with postgres
    
    * Handle string literal parsing in wrap-value-literals
    
    * Remove ->timestamptz
    
    * Add comments + TODOs showing arithmetic expressions should return numeric values
    
    * Add explanation of arithmetic expression as docstring
    
    * Add test for normalize-mbql-clause-tokens
    
    * Remove unused import
    
    * Remove unused form
    
    * Switch tests to use attempted-murders dataset
    
    * Undo optimization that broke tests
    
    * Validate non-temporal types for bigquery
    
    * Add error handling for incorrect types
    
    * Fix mysql type checking
    
    * Fix mysql type checking
    
    * invalid-parameter -> invalid-query
    
    * Use date-trunc and extract
    
    * Remove unit error handling
    
    * DatetimeLiteral -> DateOrDatetimeLiteral
    
    * Remove unused binding
    
    * Fix mysql type checking
    
    Co-authored-by: default avatarCallum Herries <hi@callumherries.com>
    Co-authored-by: default avatarCal Herries <39073188+calherries@users.noreply.github.com>
    Co-authored-by: default avatarmetamben <103100869+metamben@users.noreply.github.com>
    Co-authored-by: default avatarNoah Moss <32746338+noahmoss@users.noreply.github.com>
    Co-authored-by: default avatarNgoc Khuat <qn.khuat@gmail.com>
    Co-authored-by: default avatarCam Saul <1455846+camsaul@users.noreply.github.com>
    Initial support for datetimeDiff (#25722)
    dpsutton authored
    
    * Initial support for pg for `date-diff`
    
    * Make the useful-dates closer to one day
    
    * Add simple FE stuff
    
    * shorter test bodies
    
    * Ensure we can use datediff functions in arithmetic expressions
    
    * Correctly disable datediff for redshift
    
    * simplify var names
    
    * Support week
    
    * cleanup test
    
    * :datediff -> :datetimediff
    
    * ngoc's suggestions
    
    * Better acceptance test for datetimediff
    
    * sort ns
    
    * embrace the different cases for results
    
    * bigquery day month year
    
    * Reverse args
    
    * Update test
    
    * Centralize tests
    
    * Change postgres day, month, year behaviour
    
    * Refactor keep identity
    
    * Tidy tests
    
    * Tidy
    
    * Fix bigquery week
    
    * Add week tests
    
    * Fix bigquery week
    
    * Change mysql day, month, year behaviour
    
    * Add test for hour, minute, second
    
    * Fix postgres hour minute second
    
    * Formatting
    
    * Fix bigquery hour, minute, second
    
    * Formatting
    
    * Fix postgres timestamptz
    
    * WIP
    
    * Allow literals in datediff clauses
    
    * Uncomment tests
    
    * Fix bigquery when reporting timezone is not UTC
    
    * Linting
    
    * Moving away from dataset based tests
    
    * Add timezone tests for week and tidy
    
    * Remove unused import
    
    * Consolidate tests
    
    * Remove with-time-column dataset
    
    * Remove more-useful-dates defdataset
    
    * Remove redshift driver WIP
    
    * Typo
    
    * Move DatetimeLiteral clause into DateTimeExpressionArg
    
    * Try changing test order
    
    * Remove mt/with-report-timezone-id nil
    
    * Add year report timezone tests
    
    * Rename
    
    * Rename
    
    * Remove unused tables from useful-dates
    
    * Remove useful-dates
    
    * Update helper-text-strings
    
    * Tidy
    
    * Swap order of mt/with-report-timezone-id
    
    * Change with-report-timezone-id; notify databases after running test
    
    * Use temp setting for report-timezone instead
    
    * Update helper-test-strings
    
    * Handle literals in `datetimediff-base-base`
    
    * Update src/metabase/driver/postgres.clj
    
    Co-authored-by: default avatarmetamben <103100869+metamben@users.noreply.github.com>
    
    * Simplify postgres second
    
    * Tidy: prefer hx arithmetic functions
    
    * Drop coercion for string timestamp args for now
    
    * Extract helper
    
    * Revert "Change with-report-timezone-id; notify databases after running test"
    
    This reverts commit 7abb543bed13d9d13295d0e00ad1293a40e40d53.
    
    * Use ->timestamptz
    
    * Use hx/->timestamp
    
    * Rename dataset
    
    * Undo changes to datetime-arithmetics? as these will not match by default
    
    * Use proper format for offset datetime literals
    
    * Shorten datetime literals in tests
    
    * Removing notify-all-databases-updated from report-timezone setting
    
    * Fix datetime-arithmetics test
    
    * Revert "Fix datetime-arithmetics test"
    
    This reverts commit 9141582508170bdbe99c4aa74bc4444e41475be6.
    
    * Revert "Undo changes to datetime-arithmetics? as these will not match by default"
    
    This reverts commit 9cb05f5475b24a78cb89601c918f3440606cc525.
    
    * Add UTC timezone to tests
    
    * Coerce strings to datetimes for ISO formats
    
    * Revert "Removing notify-all-databases-updated from report-timezone setting"
    
    This reverts commit 37356435a2e3981deca9ae76118d857babb2aada.
    
    * Add comment to postgres driver implementation
    
    * Formatting
    
    * Disable datediff from redshift for the moment (for ever?)
    
    * Override redshift driver/database-supports?
    
    * Fix comments mixed up by refactoring
    
    * Fix comments mixed up by refactoring 2
    
    * Tidy comment
    
    * Rename datetimediff to datetime-diff/datetimeDiff
    
    * date-add -> datetime-add
    
    * Linting
    
    * add datetime-subtract to `datetime-arithmetics?`
    
    rework tests a bit as well.
    
    * Update docstring
    
    * Use ->temporal-type and trunc to handle report-timezone for bigquery
    
    * Log errors caught during sync steps (#26306)
    
    * log errors caught during sync steps
    
    * remove accidental extra parens
    
    * Errors combining datetime interval addition with datetime functions (#26279)
    
    * Add failing tests
    
    * Fix failing tests
    
    * Update shared/src/metabase/mbql/util.cljc
    
    Co-authored-by: default avatarNgoc Khuat <qn.khuat@gmail.com>
    
    * datetime-add and datetime subtract should annotate type by col type
    
    * Fix infer-expression-type for datetime-add/subtract with second, minute, hour
    
    * Undo last commit; they actually always return :type/DateTime
    
    * Fix test based on last commit
    
    * Undo unrelated refactor
    
    * Only test drivers that support expressions
    
    * Only test drivers that support expressions, again
    
    * Update tests from legacy mbql
    
    * Change infered-col-type to be a function again, not macro
    
    * Fix test
    
    Co-authored-by: default avatarNgoc Khuat <qn.khuat@gmail.com>
    
    * whitespace
    
    * Remove comments
    
    * Add explanation for datetime_diff
    
    * Refactor: replace cast and add `mt/with-driver :bigquery-cloud-sdk` where report-timezone is relevant
    
    * Add failing tests
    
    * Fix failing tests
    
    * Technically it should be bigquery-type
    
    * Update modules/drivers/bigquery-cloud-sdk/src/metabase/driver/bigquery_cloud_sdk.clj
    
    Co-authored-by: default avatarCam Saul <1455846+camsaul@users.noreply.github.com>
    
    * Move documentation to metabase.mbql.schema
    
    * Update DatetimeDiffUnits
    
    Co-authored-by: default avatarCam Saul <1455846+camsaul@users.noreply.github.com>
    
    * Add error type and optimize case expressions to driver implementations
    
    * refactor for brevity
    
    * Fix error with postgres
    
    * Fix error with postgres
    
    * Handle string literal parsing in wrap-value-literals
    
    * Remove ->timestamptz
    
    * Add comments + TODOs showing arithmetic expressions should return numeric values
    
    * Add explanation of arithmetic expression as docstring
    
    * Add test for normalize-mbql-clause-tokens
    
    * Remove unused import
    
    * Remove unused form
    
    * Switch tests to use attempted-murders dataset
    
    * Undo optimization that broke tests
    
    * Validate non-temporal types for bigquery
    
    * Add error handling for incorrect types
    
    * Fix mysql type checking
    
    * Fix mysql type checking
    
    * invalid-parameter -> invalid-query
    
    * Use date-trunc and extract
    
    * Remove unit error handling
    
    * DatetimeLiteral -> DateOrDatetimeLiteral
    
    * Remove unused binding
    
    * Fix mysql type checking
    
    Co-authored-by: default avatarCallum Herries <hi@callumherries.com>
    Co-authored-by: default avatarCal Herries <39073188+calherries@users.noreply.github.com>
    Co-authored-by: default avatarmetamben <103100869+metamben@users.noreply.github.com>
    Co-authored-by: default avatarNoah Moss <32746338+noahmoss@users.noreply.github.com>
    Co-authored-by: default avatarNgoc Khuat <qn.khuat@gmail.com>
    Co-authored-by: default avatarCam Saul <1455846+camsaul@users.noreply.github.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.