# ------------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ------------------------------------------------------------------------------

# Changelist for MADlib version 1.12 to 1.13

# This file contains all changes that were introduced in a new version of
# MADlib. This changelist is used by the upgrade script to detect what objects
# should be upgraded (while retaining all other objects from the previous version)

# New modules (actually .sql_in files) added in upgrade version
# For these files the sql_in code is retained as is with the functions in the
# file installed on the upgrade version. All other files (that don't have
# updates), are cleaned up to remove object replacements
new module:
    # ----------------- Changes from 1.11 to 1.12 --------
    hits:

# Changes in the types (UDT) including removal and modification
udt:

# List of the UDF changes that affect the user externally. This includes change
# in function name, return type, argument order or types, or removal of
# the function. In each case, the original function is as good as removed and a
# new function is created. In such cases, we should abort the upgrade if there
# are user views dependent on this function, since the original function will
# not be present in the upgraded version.
udf:
    # ----------------- Changes from 1.12 to 1.13 ----------
    - __build_tree:
        rettype: void
        argument: boolean, text, text, text, text, text, boolean, character varying[], character varying[], character varying[], character varying[], text, text, integer, integer, integer, integer, text, smallint, text, integer
    - mlp_classification:
        rettype: void
        argument: character varying, character varying, character varying, character varying
    - mlp_igd_final:
        rettype: schema_madlib.mlp_step_result
        argument: double precision[]
    - mlp_igd_transition:
        rettype: double precision[]
        argument: double precision[], double precision[], double precision[], double precision[], double precision[], double precision, integer, integer, double precision, boolean, double precision[], integer, double precision, double precision[], double precision[]
    - mlp_regression:
        rettype: void
        argument: character varying, character varying, character varying, character varying
    - __knn_validate_src:
        rettype: integer
        argument: character varying, character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer
    - knn:
        rettype: character varying
        argument: character varying, character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer
    - knn:
        rettype: character varying
        argument: character varying, character varying, character varying, character varying, character varying, character varying, character varying, character varying
    - knn:
        rettype: void
        argument: character varying
    - knn:
        rettype: void


# Changes to aggregates (UDA) including removal and modification
# Overloaded functions should be mentioned separately
uda:
    - mlp_igd_step:
        rettype: schema_madlib.mlp_step_result
        argument: double precision[], double precision[], double precision[], double precision[], double precision, integer, integer, double precision, boolean, double precision[], integer, double precision, double precision[], double precision[]

# Casts (UDC) updated/removed
udc:

# Operators (UDO) removed/updated
udo:

# Operator Classes (UDOC) removed/updated
udoc:
