class DropFunctionPlan implements Plan {

    private final AnalyzedDropFunction analyzedDropFunction;

    public DropFunctionPlan(AnalyzedDropFunction analyzedDropFunction) {
        this.analyzedDropFunction = analyzedDropFunction;
    }

    @Override
    public StatementType type() {
        return StatementType.DDL;
    }

    @Override
    public void executeOrFail(DependencyCarrier dependencies,
                              PlannerContext plannerContext,
                              RowConsumer consumer,
                              Row params, SubQueryResults subQueryResults) throws Exception {<FILL_FUNCTION_BODY>}
}

        DropUserDefinedFunctionRequest request = new DropUserDefinedFunctionRequest(
            analyzedDropFunction.schema(),
            analyzedDropFunction.name(),
            analyzedDropFunction.argumentTypes(),
            analyzedDropFunction.ifExists()
        );
        OneRowActionListener<AcknowledgedResponse> listener = new OneRowActionListener<>(consumer, r -> new Row1(1L));
        dependencies.dropFunctionAction().execute(request).whenComplete(listener);
    
<no_super_class>