This is an automated email from the ASF dual-hosted git repository. aafghahi pushed a commit to branch arash.afghahi/sc-46372/remove-native-druid-nosql-from-the-codebase in repository https://gitbox.apache.org/repos/asf/superset.git
commit b237b2c5dc7f1649a8d6f951b4192ac7c9571b4a Author: AAfghahi <[email protected]> AuthorDate: Thu Jun 9 15:18:23 2022 -0400 first pass at removing native Druid nosql --- .../src/components/Datasource/DatasourceEditor.jsx | 17 --------------- .../explore/components/ControlPanelsContainer.tsx | 5 ++--- .../DndColumnSelectControl/DndFilterSelect.tsx | 20 ++++-------------- .../FilterControl/AdhocFilterControl/index.jsx | 20 ++++-------------- .../FilterControl/AdhocFilterEditPopover/index.jsx | 15 +------------- ...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 7 ------- .../index.tsx | 14 +------------ .../AdhocMetricEditPopover.test.tsx | 12 ----------- .../MetricControl/AdhocMetricEditPopover/index.jsx | 24 +++------------------- superset/charts/schemas.py | 1 + superset/common/query_object.py | 1 + superset/utils/core.py | 3 +++ superset/viz.py | 1 - 13 files changed, 20 insertions(+), 120 deletions(-) diff --git a/superset-frontend/src/components/Datasource/DatasourceEditor.jsx b/superset-frontend/src/components/Datasource/DatasourceEditor.jsx index afa47ea80b..7c2894dca6 100644 --- a/superset-frontend/src/components/Datasource/DatasourceEditor.jsx +++ b/superset-frontend/src/components/Datasource/DatasourceEditor.jsx @@ -580,9 +580,6 @@ class DatasourceEditor extends React.PureComponent { }), }, errors: [], - isDruid: - props.datasource.type === 'druid' || - props.datasource.datasource_type === 'druid', isSqla: props.datasource.datasource_type === 'table' || props.datasource.type === 'table', @@ -1079,20 +1076,6 @@ class DatasourceEditor extends React.PureComponent { /> </> )} - {this.state.isDruid && ( - <Field - fieldKey="json" - label={t('JSON')} - description={ - <div> - {t('The JSON metric or post aggregation definition.')} - </div> - } - control={ - <TextAreaControl language="json" offerEditInModal={false} /> - } - /> - )} </div> )} {this.state.datasourceType === DATASOURCE_TYPES.physical.key && ( diff --git a/superset-frontend/src/explore/components/ControlPanelsContainer.tsx b/superset-frontend/src/explore/components/ControlPanelsContainer.tsx index 6ed73f2b38..23f4ca041c 100644 --- a/superset-frontend/src/explore/components/ControlPanelsContainer.tsx +++ b/superset-frontend/src/explore/components/ControlPanelsContainer.tsx @@ -175,9 +175,8 @@ const isTimeSection = (section: ControlPanelSectionConfig): boolean => sections.legacyTimeseriesTime.label === section.label); const hasTimeColumn = (datasource: Dataset): boolean => - datasource?.columns?.some(c => c.is_dttm) || - datasource.type === DatasourceType.Druid; - + datasource?.columns?.some(c => c.is_dttm) + //unsure about this one because I think it is for the time column. const sectionsToExpand = ( sections: ControlPanelSectionConfig[], datasource: Dataset, diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx index 4a08c214de..097283adfa 100644 --- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx +++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx @@ -222,14 +222,8 @@ export const DndFilterSelect = (props: DndFilterSelectProps) => { // via datasource saved metric if (filterOptions.saved_metric_name) { return new AdhocFilter({ - expressionType: - datasource.type === 'druid' - ? EXPRESSION_TYPES.SIMPLE - : EXPRESSION_TYPES.SQL, - subject: - datasource.type === 'druid' - ? filterOptions.saved_metric_name - : getMetricExpression(filterOptions.saved_metric_name), + expressionType: EXPRESSION_TYPES.SQL, + subject: getMetricExpression(filterOptions.saved_metric_name), operator: OPERATOR_ENUM_TO_OPERATOR_TYPE[Operators.GREATER_THAN].operation, operatorId: Operators.GREATER_THAN, @@ -240,14 +234,8 @@ export const DndFilterSelect = (props: DndFilterSelectProps) => { // has a custom label, meaning it's custom column if (filterOptions.label) { return new AdhocFilter({ - expressionType: - datasource.type === 'druid' - ? EXPRESSION_TYPES.SIMPLE - : EXPRESSION_TYPES.SQL, - subject: - datasource.type === 'druid' - ? filterOptions.label - : new AdhocMetric(option).translateToSql(), + expressionType: EXPRESSION_TYPES.SQL, + subject: new AdhocMetric(option).translateToSql(), operator: OPERATOR_ENUM_TO_OPERATOR_TYPE[Operators.GREATER_THAN].operation, operatorId: Operators.GREATER_THAN, diff --git a/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/index.jsx b/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/index.jsx index 876eca1e75..a8e80d7ee6 100644 --- a/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/index.jsx +++ b/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/index.jsx @@ -241,14 +241,8 @@ class AdhocFilterControl extends React.Component { // via datasource saved metric if (option.saved_metric_name) { return new AdhocFilter({ - expressionType: - this.props.datasource.type === 'druid' - ? EXPRESSION_TYPES.SIMPLE - : EXPRESSION_TYPES.SQL, - subject: - this.props.datasource.type === 'druid' - ? option.saved_metric_name - : this.getMetricExpression(option.saved_metric_name), + expressionType: EXPRESSION_TYPES.SQL, + subject:this.getMetricExpression(option.saved_metric_name), operator: OPERATOR_ENUM_TO_OPERATOR_TYPE[Operators.GREATER_THAN].operation, comparator: 0, @@ -258,14 +252,8 @@ class AdhocFilterControl extends React.Component { // has a custom label, meaning it's custom column if (option.label) { return new AdhocFilter({ - expressionType: - this.props.datasource.type === 'druid' - ? EXPRESSION_TYPES.SIMPLE - : EXPRESSION_TYPES.SQL, - subject: - this.props.datasource.type === 'druid' - ? option.label - : new AdhocMetric(option).translateToSql(), + expressionType: EXPRESSION_TYPES.SQL, + subject: new AdhocMetric(option).translateToSql(), operator: OPERATOR_ENUM_TO_OPERATOR_TYPE[Operators.GREATER_THAN].operation, comparator: 0, diff --git a/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopover/index.jsx b/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopover/index.jsx index 8ae706fc54..0febc0a307 100644 --- a/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopover/index.jsx +++ b/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopover/index.jsx @@ -227,20 +227,7 @@ export default class AdhocFilterEditPopover extends React.Component { <Tabs.TabPane className="adhoc-filter-edit-tab" key={EXPRESSION_TYPES.SQL} - tab={ - datasource?.type === 'druid' ? ( - <Tooltip - title={t( - 'Custom SQL ad-hoc filters are not available for the native Druid connector', - )} - > - {t('Custom SQL')} - </Tooltip> - ) : ( - t('Custom SQL') - ) - } - disabled={datasource?.type === 'druid'} + tab={ t('Custom SQL') } > <ErrorBoundary> <AdhocFilterEditPopoverSqlTabContent diff --git a/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/AdhocFilterEditPopoverSimpleTabContent.test.tsx b/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/AdhocFilterEditPopoverSimpleTabContent.test.tsx index a34a77c442..887db94847 100644 --- a/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/AdhocFilterEditPopoverSimpleTabContent.test.tsx +++ b/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/AdhocFilterEditPopoverSimpleTabContent.test.tsx @@ -239,13 +239,6 @@ describe('AdhocFilterEditPopoverSimpleTabContent', () => { expect(isOperatorRelevant(Operators.LIKE, 'value')).toBe(true); }); - it('will filter operators for druid datasources', () => { - const { props } = setup({ datasource: { type: 'druid' } }); - const { isOperatorRelevant } = useSimpleTabFilterProps(props); - expect(isOperatorRelevant(Operators.REGEX, 'value')).toBe(true); - expect(isOperatorRelevant(Operators.LIKE, 'value')).toBe(false); - }); - it('will show LATEST PARTITION operator', () => { const { props } = setup({ datasource: { diff --git a/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx b/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx index c24282f09e..337eaac98c 100644 --- a/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx +++ b/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx @@ -141,8 +141,6 @@ export const useSimpleTabFilterProps = (props: Props) => { ); } return !( - (props.datasource.type === 'druid' && - TABLE_ONLY_OPERATORS.indexOf(operator) >= 0) || (props.datasource.type === 'table' && DRUID_ONLY_OPERATORS.indexOf(operator) >= 0) || (props.adhocFilter.clause === CLAUSES.HAVING && @@ -315,16 +313,7 @@ const AdhocFilterEditPopoverSimpleTabContent: React.FC<Props> = props => { autoFocus: !subject, placeholder: '', }; - - if (props.datasource.type === 'druid') { - subjectSelectProps.placeholder = t( - '%s column(s) and metric(s)', - columns.length, - ); - } else { - // we cannot support simple ad-hoc filters for metrics because we don't know what type - // the value should be cast to (without knowing the output type of the aggregate, which - // becomes a rather complicated problem) + subjectSelectProps.placeholder = props.adhocFilter.clause === CLAUSES.WHERE ? t('%s column(s)', columns.length) @@ -332,7 +321,6 @@ const AdhocFilterEditPopoverSimpleTabContent: React.FC<Props> = props => { columns = props.options.filter( option => 'column_name' in option && option.column_name, ); - } const operatorSelectProps = { placeholder: t( diff --git a/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/AdhocMetricEditPopover.test.tsx b/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/AdhocMetricEditPopover.test.tsx index d665befcca..b364fa67a2 100644 --- a/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/AdhocMetricEditPopover.test.tsx +++ b/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/AdhocMetricEditPopover.test.tsx @@ -80,18 +80,6 @@ test('Should render correct elements for SQL', () => { expect(screen.getByRole('tabpanel', { name: 'Saved' })).toBeVisible(); }); -test('Should render correct elements for native Druid', () => { - const props = { ...createProps(), datasource: { type: 'druid' } }; - render(<AdhocMetricEditPopover {...props} />); - expect(screen.getByRole('tab', { name: 'Custom SQL' })).toHaveAttribute( - 'aria-disabled', - 'true', - ); - expect(screen.getByRole('tab', { name: 'Simple' })).toBeEnabled(); - expect(screen.getByRole('tab', { name: 'Saved' })).toBeEnabled(); - expect(screen.getByRole('tabpanel', { name: 'Saved' })).toBeVisible(); -}); - test('Should render correct elements for allow ad-hoc metrics', () => { const props = { ...createProps(), diff --git a/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx b/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx index decad4c12d..e63b22b645 100644 --- a/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx +++ b/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx @@ -323,15 +323,6 @@ export default class AdhocMetricEditPopover extends React.PureComponent { autoFocus: true, }; - if ( - this.props.datasource?.type === 'druid' && - aggregateSelectProps.options - ) { - aggregateSelectProps.options = aggregateSelectProps.options.filter( - aggregate => aggregate !== 'AVG', - ); - } - const stateIsValid = adhocMetric.isValid() || savedMetric?.metric_name; const hasUnsavedChanges = !adhocMetric.equals(propsAdhocMetric) || @@ -431,17 +422,9 @@ export default class AdhocMetricEditPopover extends React.PureComponent { <Tabs.TabPane key={EXPRESSION_TYPES.SQL} tab={ - extra.disallow_adhoc_metrics || - this.props.datasource?.type === 'druid' ? ( + extra.disallow_adhoc_metrics ? ( <Tooltip - title={ - this.props.datasource?.type === 'druid' - ? t( - 'Custom SQL ad-hoc metrics are not available for the native Druid connector', - ) - : t( - 'Custom SQL ad-hoc metrics are not enabled for this dataset', - ) + title={t('Custom SQL ad-hoc metrics are not enabled for this dataset',) } > {t('Custom SQL')} @@ -452,8 +435,7 @@ export default class AdhocMetricEditPopover extends React.PureComponent { } data-test="adhoc-metric-edit-tab#custom" disabled={ - extra.disallow_adhoc_metrics || - this.props.datasource?.type === 'druid' + extra.disallow_adhoc_metrics } > <SQLEditor diff --git a/superset/charts/schemas.py b/superset/charts/schemas.py index 8a82e364be..e3ab15f7bb 100644 --- a/superset/charts/schemas.py +++ b/superset/charts/schemas.py @@ -854,6 +854,7 @@ class ChartDataExtrasSchema(Schema): having_druid = fields.List( fields.Nested(ChartDataFilterSchema), description="HAVING filters to be added to legacy Druid datasource queries.", + deprecated= True, ) time_grain_sqla = fields.String( description="To what level of granularity should the temporal column be " diff --git a/superset/common/query_object.py b/superset/common/query_object.py index 40d37041b9..c36cb3f217 100644 --- a/superset/common/query_object.py +++ b/superset/common/query_object.py @@ -61,6 +61,7 @@ class DeprecatedField(NamedTuple): new_name: str +# Since we are getting rid of druid we are not replacing it with a new field. Should this be updated? DEPRECATED_FIELDS = ( DeprecatedField(old_name="granularity_sqla", new_name="granularity"), DeprecatedField(old_name="groupby", new_name="columns"), diff --git a/superset/utils/core.py b/superset/utils/core.py index 6c90837959..d070a4f1ca 100644 --- a/superset/utils/core.py +++ b/superset/utils/core.py @@ -1737,6 +1737,8 @@ def get_time_filter_status( ) if ExtraFiltersTimeColumnType.TIME_ORIGIN in applied_time_extras: + # This seems like it is to do with the druid time series, which I think we + # are still keeping mentions of. if datasource.type == "druid": applied.append({"column": ExtraFiltersTimeColumnType.TIME_ORIGIN}) else: @@ -1748,6 +1750,7 @@ def get_time_filter_status( ) if ExtraFiltersTimeColumnType.GRANULARITY in applied_time_extras: + # Same here if datasource.type == "druid": applied.append({"column": ExtraFiltersTimeColumnType.GRANULARITY}) else: diff --git a/superset/viz.py b/superset/viz.py index e83e012777..b1a02337b0 100644 --- a/superset/viz.py +++ b/superset/viz.py @@ -399,7 +399,6 @@ class BaseViz: # pylint: disable=too-many-public-methods extras = { "druid_time_origin": self.form_data.get("druid_time_origin", ""), "having": self.form_data.get("having", ""), - "having_druid": self.form_data.get("having_filters", []), "time_grain_sqla": self.form_data.get("time_grain_sqla"), "where": self.form_data.get("where", ""), }
