# ------------------------------------------------------------------------------
# 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.9 to 1.10

# 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.9.1 to 1.0 ----------
    sssp:
    encode_categorical:
    knn:

# Changes in the types (UDT) including removal and modification
udt:
    # ----------------- Changes from 1.9 to 1.9.1 ----------
    profile_result:
    # ----------------- Changes from 1.9.1 to 1.0 ----------
    _tree_result_type:
    _prune_result_type:
    kmeans_result:
    kmeans_state:

# 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.9 to 1.9.1 ----------
    - array_collapse:
        rettype: anyarray
        argument: anyarray
    - linear_svm_igd_transition:
        rettype: double precision[]
        argument: double precision[], double precision[], double precision, double precision[], integer, double precision, double precision, boolean, integer, double precision, boolean
    - profile:
        rettype: SETOF schema_madlib.profile_result
        argument: text
    - profile_full:
        rettype: SETOF schema_madlib.profile_result
        argument: text, integer
    - profile:
        rettype: schema_madlib.profile_result
        argument: text
    - profile_full:
        rettype: schema_madlib.profile_result
        argument: text, integer
    - quantile:
        rettype: double precision
        argument: text, text, double precision
    - quantile_big:
        rettype: double precision
        argument: text, text, double precision
    # ----------------- Changes from 1.9.1 to 1.0 ----------
    - _dt_apply:
        rettype: schema_madlib._tree_result_type
        argument: schema_madlib.bytea8, schema_madlib.bytea8, schema_madlib.bytea8, smallint, smallint, smallint, boolean, integer
    - _prune_and_cplist:
        rettype: schema_madlib._prune_result_type
        argument: schema_madlib.bytea8, double precision, boolean
    - kmeans:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, double precision[], character varying, character varying, integer, double precision
    - kmeans:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, double precision[], character varying, character varying, integer
    - kmeans:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, double precision[], character varying, character varying
    - kmeans:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, double precision[], character varying
    - kmeans:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, double precision[]
    - kmeans:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, character varying, character varying, character varying, character varying, integer, double precision
    - kmeans:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, character varying, character varying, character varying, character varying, integer
    - kmeans:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, character varying, character varying, character varying, character varying
    - kmeans:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, character varying, character varying, character varying
    - kmeans:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, character varying, character varying
    - kmeanspp:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, integer, character varying, character varying, integer, double precision, double precision
    - kmeanspp:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, integer, character varying, character varying, integer, double precision
    - kmeanspp:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, integer, character varying, character varying, integer
    - kmeanspp:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, integer, character varying, character varying
    - kmeanspp:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, integer, character varying
    - kmeanspp:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, integer
    - kmeans_random:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, integer, character varying, character varying, integer, double precision
    - kmeans_random:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, integer, character varying, character varying, integer
    - kmeans_random:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, integer, character varying, character varying
    - kmeans_random:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, integer, character varying
    - kmeans_random:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, integer
    - internal_execute_using_kmeans_args:
        rettype: schema_madlib.kmeans_result
        argument: character varying, character varying, character varying, character varying, character varying, integer, double precision


# Changes to aggregates (UDA) including removal and modification
# Overloaded functions should be mentioned separately
uda:
    # ----------------- Changes from 1.9 to 1.9.1 ----------
    - array_agg:
        rettype: anyarray
        argument: anyelement
    - linear_svm_igd_step:
       rettype: double precision[]
       argument: double precision[], double precision, double precision[], integer, double precision, double precision, boolean, integer, double precision, boolean


# Casts (UDC) updated/removed
udc:
    # ----------------- Changes from 1.9 to 1.9.1 ----------

# Operators (UDO) removed/updated
udo:
    # ----------------- Changes from 1.9 to 1.9.1 ----------

# Operator Classes (UDOC) removed/updated
udoc:
    # ----------------- Changes from 1.9 to 1.9.1 ----------
