diff --git a/superset-frontend/src/explore/components/controls/SelectAsyncControl/SelectAsyncControl.test.tsx b/superset-frontend/src/explore/components/controls/SelectAsyncControl/SelectAsyncControl.test.tsx index 24e16b30b73..19c1825e9c6 100644 --- a/superset-frontend/src/explore/components/controls/SelectAsyncControl/SelectAsyncControl.test.tsx +++ b/superset-frontend/src/explore/components/controls/SelectAsyncControl/SelectAsyncControl.test.tsx @@ -104,3 +104,15 @@ test('Should send correct props to Select component - function onChange multi:fa userEvent.click(await screen.findByText('onChange')); expect(props.onChange).toHaveBeenCalledTimes(1); }); + +test('Should handle null value without crashing when clearing selection', () => { + const props = createProps(); + const { rerender } = render(, { + useRedux: true, + }); + + // Simulate clearing the selection by passing null value + expect(() => { + rerender(); + }).not.toThrow(); +}); diff --git a/superset-frontend/src/explore/components/controls/SelectAsyncControl/index.tsx b/superset-frontend/src/explore/components/controls/SelectAsyncControl/index.tsx index 5cbb8a86ca7..356165d0fb2 100644 --- a/superset-frontend/src/explore/components/controls/SelectAsyncControl/index.tsx +++ b/superset-frontend/src/explore/components/controls/SelectAsyncControl/index.tsx @@ -50,7 +50,7 @@ interface SelectAsyncControlProps extends SelectAsyncProps { } function isLabeledValue(arg: any): arg is LabeledValue { - return arg.value !== undefined; + return arg && typeof arg === 'object' && arg.value !== undefined; } const SelectAsyncControl = ({ diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py index cb9ce380a95..c77c75099b3 100644 --- a/superset/connectors/sqla/models.py +++ b/superset/connectors/sqla/models.py @@ -1376,6 +1376,7 @@ class SqlaTable( data_["owners"] = self.owners_data data_["always_filter_main_dttm"] = self.always_filter_main_dttm data_["normalize_columns"] = self.normalize_columns + data_["drill_through_chart_id"] = self.drill_through_chart_id return data_ @property diff --git a/superset/datasets/api.py b/superset/datasets/api.py index 95af1736ae1..9d150274d79 100644 --- a/superset/datasets/api.py +++ b/superset/datasets/api.py @@ -220,6 +220,7 @@ class DatasetRestApi(BaseSupersetModelRestApi): "changed_on_humanized", "changed_by.first_name", "changed_by.last_name", + "drill_through_chart_id", ] show_columns = show_select_columns + [ "columns.type_generic",