-
- Downloads
Add database_required to field metadata (#23213)
* Add database_required to field metadata The purpose of this new column is meant to track if the database believes that the column is required during writeback. It may be that the user knows better but that is out of scope and would need another column so that sync never overwrites what a user would set. Since writeback isn't planned to be added to non transactional-dbs yet we do not need to calculate requiredness in other drivers. This could become more sophisticated in the future (look at triggers that modify the column) simply looking for not-null and non-default columns gets us a big win in UI. * Fixing tests * Fixing more tests * Default updates to false * Add database-required to field sync metadata test * Update driver tests * Fix tests * Changes from testing on different dbs https://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html#getColumns(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String) Based on these descriptions of `getColumns` and testing across dbs made the following changes: `COLUMN_DEF` may or may not show autoincrement defaults `COLUMN_DEF` may be `nil` or `"NULL"` and the docs say it may be `"null"` `NULLABLE` is an int value, `0` indicating not null NULLABLE and AUTOINCREMENT may be unknown (`3`, `""`) in those cases the field will not be marked as required. * Updating tests from changes * Fix driver tests * Cypress tests had fk field ids hardcoded
Showing
- frontend/test/metabase/scenarios/dashboard/reproductions/21597-query-build-card-save-modal.cy.spec.js 6 additions, 2 deletions...eproductions/21597-query-build-card-save-modal.cy.spec.js
- frontend/test/metabase/scenarios/models/models-metadata.cy.spec.js 6 additions, 2 deletions...test/metabase/scenarios/models/models-metadata.cy.spec.js
- modules/drivers/snowflake/test/metabase/driver/snowflake_test.clj 4 additions, 2 deletions...drivers/snowflake/test/metabase/driver/snowflake_test.clj
- modules/drivers/sqlite/test/metabase/driver/sqlite_test.clj 2 additions, 1 deletionmodules/drivers/sqlite/test/metabase/driver/sqlite_test.clj
- resources/migrations/000_migrations.yaml 15 additions, 1 deletionresources/migrations/000_migrations.yaml
- src/metabase/driver/sql_jdbc/sync/describe_table.clj 17 additions, 7 deletionssrc/metabase/driver/sql_jdbc/sync/describe_table.clj
- src/metabase/sync/interface.clj 1 addition, 0 deletionssrc/metabase/sync/interface.clj
- src/metabase/sync/sync_metadata/fields/fetch_metadata.clj 3 additions, 2 deletionssrc/metabase/sync/sync_metadata/fields/fetch_metadata.clj
- src/metabase/sync/sync_metadata/fields/sync_instances.clj 2 additions, 1 deletionsrc/metabase/sync/sync_metadata/fields/sync_instances.clj
- src/metabase/sync/sync_metadata/fields/sync_metadata.clj 14 additions, 3 deletionssrc/metabase/sync/sync_metadata/fields/sync_metadata.clj
- test/metabase/api/database_test.clj 4 additions, 2 deletionstest/metabase/api/database_test.clj
- test/metabase/api/field_test.clj 2 additions, 1 deletiontest/metabase/api/field_test.clj
- test/metabase/api/table_test.clj 19 additions, 10 deletionstest/metabase/api/table_test.clj
- test/metabase/driver/postgres_test.clj 6 additions, 3 deletionstest/metabase/driver/postgres_test.clj
- test/metabase/driver/sql_jdbc/sync/describe_table_test.clj 6 additions, 6 deletionstest/metabase/driver/sql_jdbc/sync/describe_table_test.clj
- test/metabase/driver/sql_jdbc_test.clj 12 additions, 6 deletionstest/metabase/driver/sql_jdbc_test.clj
- test/metabase/sync/sync_metadata/fields/fetch_metadata_test.clj 17 additions, 7 deletions...etabase/sync/sync_metadata/fields/fetch_metadata_test.clj
- test/metabase/sync/sync_metadata/fields/sync_metadata_test.clj 36 additions, 10 deletions...metabase/sync/sync_metadata/fields/sync_metadata_test.clj
Loading
Please register or sign in to comment