Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ADAP-814: Add support for replacing materialized views with tables/views and vice versa #8449

Merged
merged 26 commits into from
Sep 1, 2023

Conversation

mikealfare
Copy link
Contributor

@mikealfare mikealfare commented Aug 17, 2023

Problem

Materialized view support for dbt-postgres does not allow for replacing a materialized view with a table/view and vice versa.

Solution

  • Make the drop and rename statements generic across relations
  • Dispatch to the relation-specific statement for drop/rename to allow for variations in the statement
  • Allow a table/view to trigger the drop/rename of a materialized view
  • Allow a materialized view to trigger the drop/rename of a table/view

Checklist

  • I have read the contributing guide and understand what's expected of me
  • I have run this code in development and it appears to resolve the stated issue
  • This PR includes tests, or tests are not required/relevant for this PR
  • This PR has no interface changes (e.g. macros, cli, logs, json artifacts, config files, adapter interface, etc) or this PR has already received feedback and approval from Product or DX

@mikealfare mikealfare self-assigned this Aug 17, 2023
@cla-bot cla-bot bot added the cla:yes label Aug 17, 2023
@github-actions
Copy link
Contributor

Thank you for your pull request! We could not find a changelog entry for this change. For details on how to document a change, see the contributing guide.

@codecov
Copy link

codecov bot commented Aug 17, 2023

Codecov Report

Patch coverage: 100.00% and no project coverage change.

Comparison is base (4ec87a0) 86.36% compared to head (8b643bd) 86.36%.
Report is 14 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #8449   +/-   ##
=======================================
  Coverage   86.36%   86.36%           
=======================================
  Files         174      174           
  Lines       25575    25582    +7     
=======================================
+ Hits        22087    22095    +8     
+ Misses       3488     3487    -1     
Flag Coverage Δ
integration 83.16% <100.00%> (-0.04%) ⬇️
unit 65.04% <100.00%> (-0.12%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed Coverage Δ
core/dbt/adapters/base/relation.py 93.75% <100.00%> (+0.11%) ⬆️

... and 31 files with indirect coverage changes

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@mikealfare mikealfare changed the title ADAP-816: Add support for replacing materialized views with tables ADAP-814: Add support for replacing materialized views with tables Aug 17, 2023
@mikealfare mikealfare changed the title ADAP-814: Add support for replacing materialized views with tables ADAP-814: Add support for replacing materialized views with tables/views and vice versa Aug 17, 2023
@mikealfare mikealfare changed the base branch from main to feature/materialized-views/adap-814-prep August 19, 2023 01:55
Base automatically changed from feature/materialized-views/adap-814-prep to main August 21, 2023 18:44
mikealfare added a commit that referenced this pull request Aug 21, 2023
* apply reformatting changes only for #8449
* add logging back to get_create_materialized_view_as_sql
* changie
# Conflicts:
#	core/dbt/include/global_project/macros/relations/drop.sql
#	core/dbt/include/global_project/macros/relations/rename.sql
#	plugins/postgres/dbt/include/postgres/macros/relations/materialized_view/alter.sql
…relations` so that generics are close to the relation specific macros that they reference; also aligns with adapter macro files structure, to look more familiar
…r adapters that have a unique list of relation types, e.g. dbt-snowflake
@mikealfare mikealfare marked this pull request as ready for review August 25, 2023 21:53
@mikealfare mikealfare requested review from a team as code owners August 25, 2023 21:53
@mikealfare mikealfare requested review from nathaniel-may and gshank and removed request for gshank and nathaniel-may August 25, 2023 21:53
peterallenwebb pushed a commit that referenced this pull request Aug 30, 2023
* apply reformatting changes only for #8449
* add logging back to get_create_materialized_view_as_sql
* changie
peterallenwebb added a commit that referenced this pull request Aug 30, 2023
* Add compiled node properties to run_results.json

* Include compiled-node attributes in run_results.json

* Fix typo

* Bump schema version of run_results

* Fix test assertions

* Update expected run_results to reflect new attributes

* Code review changes

* Fix mypy warnings for ManifestLoader.load() (#8443)

* revert python version for docker images (#8445)

* revert python version for docker images

* add comment to not update python version, update changelog

* Bumping version to 1.7.0b1 and generate changelog

* [CT-3013]  Fix parsing of `window_groupings` (#8454)

* Update semantic model parsing tests to check measure non_additive_dimension spec

* Make `window_groupings` default to empty list if not specified on `non_additive_dimension`

* Add changie doc for `window_groupings`  parsing fix

* update `Number` class to handle integer values (#8306)

* add show test for json data

* oh changie my changie

* revert unecessary cahnge to fixture

* keep decimal class for precision methods, but return __int__ value

* jerco updates

* update integer type

* update other tests

* Update .changes/unreleased/Fixes-20230803-093502.yaml

---------

Co-authored-by: Emily Rockman <emily.rockman@dbtlabs.com>

* Improve docker image README (#8212)

* Improve docker image README

- Fix unnecessary/missing newline escapes
- Remove double whitespace between parameters
- 2-space indent for extra lines in image build commands

* Add changelog entry for #8212

* ADAP-814: Refactor prep for MV updates (#8459)

* apply reformatting changes only for #8449
* add logging back to get_create_materialized_view_as_sql
* changie

* swap trigger (#8463)

* update the implementation template (#8466)

* update the implementation template

* add colon

* Split tests into classes (#8474)

* add flaky decorator

* split up tests into classes

* revert update agate for int (#8478)

* updated typing and methods to meet mypy standards (#8485)

* Convert error to conditional warning for unversioned contracted model, fix msg format (#8451)

* first pass, tests need updates

* update proto defn

* fixing tests

* more test fixes

* finish fixing test file

* reformat the message

* formatting messages

* changelog

* add event to unit test

* feedback on message structure

* WIP

* fix up event to take in all fields

* fix test

* Fix ambiguous reference error for duplicate model names across packages with tests (#8488)

* Safely remove external nodes from manifest (#8495)

* [CT-2840] Improved semantic layer protocol satisfaction tests (#8456)

* Test `SemanticModel` satisfies protocol when none of it's `Optionals` are specified

* Add tests ensuring SourceFileMetadata and FileSlice satisfiy DSI protocols

* Add test asserting Defaults obj satisfies protocol

* Add test asserting SemanticModel with optionals specified satisfies protocol

* Split dimension protocol satisfaction tests into with and without optionals

* Simplify DSI Protocol import strategy in protocol satisfaction tests

* Add test asserting DimensionValidtyParams satisfies protocol

* Add test asserting DimensionTypeParams satisfies protocol

* Split entity protocol satisfaction tests into with and without optionals

* Split measure protocol satisfication tests and add measure aggregation params satisficaition test

* Split metric protocol satisfaction test into optional specified an unspecified

Additionally, create where_filter pytest fixture

* Improve protocol satisfaction tests for MetricTypeParams and sub protocols

Specifically we added/improved protocol satisfaction tests for
- MetricTypeParams
- MetricInput
- MetricInputMeasure
- MetricTimeWindow

* Convert to using mashumaro jsonschema with acceptable performance (#8437)

* Regenerate run_results schema after merging in changes from main.

---------

Co-authored-by: Gerda Shank <gerda@dbtlabs.com>
Co-authored-by: Matthew McKnight <91097623+McKnight-42@users.noreply.github.com>
Co-authored-by: Github Build Bot <buildbot@fishtownanalytics.com>
Co-authored-by: Quigley Malcolm <QMalcolm@users.noreply.github.com>
Co-authored-by: dave-connors-3 <73915542+dave-connors-3@users.noreply.github.com>
Co-authored-by: Emily Rockman <emily.rockman@dbtlabs.com>
Co-authored-by: Jaime Martínez Rincón <jaime@jamezrin.name>
Co-authored-by: Mike Alfare <13974384+mikealfare@users.noreply.github.com>
Co-authored-by: Michelle Ark <MichelleArk@users.noreply.github.com>
@mikealfare mikealfare marked this pull request as draft August 31, 2023 15:07
@mikealfare mikealfare marked this pull request as ready for review August 31, 2023 20:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants