This is an automated email from the ASF dual-hosted git repository.
arivero pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 6ed9dae2f7 fix(migrations): Handle no params in time comparison
migration (#32155)
6ed9dae2f7 is described below
commit 6ed9dae2f7c32602b152f476a89f82afe72eebc2
Author: Antonio Rivero <[email protected]>
AuthorDate: Wed Feb 5 23:00:22 2025 +0100
fix(migrations): Handle no params in time comparison migration (#32155)
---
...02_f84fde59123a_update_charts_with_old_time_comparison.py | 8 ++++++++
...fde59123a_update_charts_with_old_time_comparison__test.py | 12 ++++++++++++
2 files changed, 20 insertions(+)
diff --git
a/superset/migrations/versions/2024-05-10_18-02_f84fde59123a_update_charts_with_old_time_comparison.py
b/superset/migrations/versions/2024-05-10_18-02_f84fde59123a_update_charts_with_old_time_comparison.py
index 57acaee9ef..b6f975dd02 100644
---
a/superset/migrations/versions/2024-05-10_18-02_f84fde59123a_update_charts_with_old_time_comparison.py
+++
b/superset/migrations/versions/2024-05-10_18-02_f84fde59123a_update_charts_with_old_time_comparison.py
@@ -63,6 +63,8 @@ time_map = {
def upgrade_comparison_params(slice_params: dict[str, Any]) -> dict[str, Any]:
+ if not slice_params or not isinstance(slice_params, dict):
+ return {}
params = deepcopy(slice_params)
# Update time_comparison to time_compare
@@ -103,6 +105,8 @@ def upgrade():
)
):
try:
+ if not slc.params: # Noop if there's no params on the slice
+ continue
params = json.loads(slc.params)
updated_slice_params = upgrade_comparison_params(params)
slc.params = json.dumps(updated_slice_params)
@@ -119,6 +123,8 @@ def upgrade():
def downgrade_comparison_params(slice_params: dict[str, Any]) -> dict[str,
Any]:
+ if not slice_params or not isinstance(slice_params, dict):
+ return {}
params = deepcopy(slice_params)
params["enable_time_comparison"] = False
@@ -199,6 +205,8 @@ def downgrade():
)
):
try:
+ if not slc.params: # Noop if there's no params on the slice
+ continue
params = json.loads(slc.params)
updated_slice_params = downgrade_comparison_params(params)
slc.params = json.dumps(updated_slice_params)
diff --git
a/tests/integration_tests/migrations/f84fde59123a_update_charts_with_old_time_comparison__test.py
b/tests/integration_tests/migrations/f84fde59123a_update_charts_with_old_time_comparison__test.py
index cec6a636c5..a9f343b950 100644
---
a/tests/integration_tests/migrations/f84fde59123a_update_charts_with_old_time_comparison__test.py
+++
b/tests/integration_tests/migrations/f84fde59123a_update_charts_with_old_time_comparison__test.py
@@ -229,3 +229,15 @@ def test_downgrade_chart_params_other_than_custom_false():
original_params = deepcopy(params_v2_other_than_custom_false)
downgraded_params = downgrade_comparison_params(original_params)
assert downgraded_params == params_v1_other_than_custom_false
+
+
+def test_upgrade_chart_params_empty():
+ """
+ Ensure that the migration does not fail when params is None or empty.
+ """
+ assert upgrade_comparison_params(None) == {}
+ assert upgrade_comparison_params({}) == {}
+ assert upgrade_comparison_params("") == {}
+ assert downgrade_comparison_params(None) == {}
+ assert downgrade_comparison_params({}) == {}
+ assert downgrade_comparison_params("") == {}