# Changelist for MADlib version 1.7.1 to 1.8

# 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.7.1 to 1.8 ----------
    text_utilities:

# Changes in the types (UDT) including removal and modification
udt:
    # ----------------- Changes from 1.7.1 to 1.8 ----------
    # ----------------- Changes from 1.8 to 1.9 ----------
    __enc_tbl_result:
    __gen_acc_time:
    __rep_type:
    __train_result:
    c45_classify_result:
    c45_train_result:
    correlation_result:
    lsvm_sgd_model_rec:
    lsvm_sgd_result:
    rf_classify_result:
    rf_train_result:
    svm_cls_result:
    svm_model_pr:
    svm_model_rec:
    svm_nd_result:
    svm_reg_result:
    svm_support_vector:
    _prune_result_type:
    _tree_result_type:
    linear_svm_result:

# 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.7.1 to 1.8 ----------
    - __filter_input_relation:
        rettype: character varying
        argument: character varying, character varying
    - __lda_util_unnest:
        rettype: SETOF bigint[]
        argument: bigint[]
    - matrix_block_mult:
        rettype: schema_madlib.matrix_result
        argument: text, text, text
    - matrix_block_square:
        rettype: schema_madlib.matrix_result
        argument: text, text
    - matrix_block_trans:
        rettype: schema_madlib.matrix_result
        argument: text, text
    - matrix_block_trans:
        rettype: schema_madlib.matrix_result
        argument: text, text, boolean
    - matrix_blockize:
        rettype: schema_madlib.matrix_result
        argument: text, integer, integer, text
    - matrix_densify:
        rettype: schema_madlib.matrix_result
        argument: text, text, text, text, text, boolean
    - matrix_mult:
        rettype: schema_madlib.matrix_result
        argument: text, boolean, text, boolean, text
    - matrix_mult:
        rettype: schema_madlib.matrix_result
        argument: text, text, text, text, boolean, text, text, text, text, boolean, text
    - matrix_norm:
        rettype: double precision
        argument: text
    - matrix_scale_and_add:
        rettype: void
        argument: text, text, double precision, text
    - matrix_sparsify:
        rettype: schema_madlib.matrix_result
        argument: text, text, boolean
    - matrix_square:
        rettype: schema_madlib.matrix_result
        argument: text, text
    - matrix_trans:
        rettype: schema_madlib.matrix_result
        argument: text, text, boolean
    - matrix_trans:
        rettype: schema_madlib.matrix_result
        argument: text, text, text, text, text, boolean
    - matrix_unblockize:
        rettype: schema_madlib.matrix_result
        argument: text, text
    # ----------------- Changes from 1.8 to 1.9 ----------

    - _dt_apply:
       rettype: schema_madlib._tree_result_type
       argument: schema_madlib.bytea8,schema_madlib.bytea8,schema_madlib.bytea8,smallint,smallint,smallint,boolean,integer

    - internal_linear_svm_igd_result:
       rettype: schema_madlib.linear_svm_result
       argument: double precision[]

    - _prune_and_cplist:
       rettype: schema_madlib._prune_result_type
       argument: schema_madlib.bytea8,double precision,boolean

    - __array_elem_in:
       rettype: boolean[]
       argument: anyarray, anyarray

    - __array_indexed_agg_ffunc:
       rettype: double precision[]
       argument: double precision[]

    - __array_indexed_agg_prefunc:
       rettype: double precision[]
       argument: double precision[], double precision[]

    - __array_indexed_agg_sfunc:
       rettype: double precision[]
       argument: double precision[], double precision, bigint, bigint

    - __array_search:
       rettype: boolean
       argument: anyelement, anyarray

    - __array_sort:
       rettype: anyarray
       argument: anyarray

    - __assert:
       rettype: void
       argument: boolean, text

    - __assert_table:
       rettype: void
       argument: text, boolean

    - __best_scv_prefunc:
       rettype: double precision[]
       argument: double precision[], double precision[]

    - __best_scv_sfunc:
       rettype: double precision[]
       argument: double precision[], double precision[], integer, double precision

    - __bigint_array_add:
       rettype: bigint[]
       argument: bigint[], bigint[]

    - __breakup_table:
       rettype: void
       argument: text, text, text, text, text, text[], boolean[], integer, integer

    - __check_dt_common_params:
       rettype: void
       argument: text, text, text, text, text, text, text, text, integer, double precision, double precision, integer, text

    - __check_training_table:
       rettype: void
       argument: text, text[], text[], text, text, integer

    - __column_exists:
       rettype: boolean
       argument: text, text

    - __columns_in_table:
       rettype: boolean
       argument: text[], text

    - __create_metatable:
       rettype: void
       argument: text

    - __create_tree_tables:
       rettype: void
       argument: text

    - __csvstr_to_array:
       rettype: text[]
       argument: text

    - __display_node_sfunc:
       rettype: text
       argument: text, integer, boolean, text, text, double precision, double precision, text, integer

    - __display_tree_no_ordered_aggr:
       rettype: text
       argument: text, integer, integer, integer, boolean, double precision, text, integer, integer

    - __distinct_feature_value:
       rettype: integer
       argument: text, integer

    - __drop_metatable:
       rettype: void
       argument: text

    - __dt_acc_count_sfunc:
       rettype: bigint[]
       argument: bigint[], integer, bigint, integer

    - __dt_get_node_split_fids:
       rettype: integer[]
       argument: integer, integer, integer, integer[]

    - __ebp_calc_errors:
       rettype: double precision
       argument: double precision, double precision, double precision

    - __ebp_prune_tree:
       rettype: void
       argument: text

    - __encode_and_train:
       rettype: record
       argument: text, text, integer, integer, text, text, text, text, text, text, text, double precision, text, integer, double precision, boolean, double precision, double precision, text, integer

    - __encode_columns:
       rettype: void
       argument: text, text, integer, integer

    - __encode_table:
       rettype: void
       argument: text, text, text, integer, integer

    - __encode_table:
       rettype: void
       argument: text, text, text[], text, text[], text, text, integer, integer

    - __find_best_split:
       rettype: void
       argument: text, double precision, text, integer, integer, text, integer, integer

    - __format:
       rettype: text
       argument: text, text

    - __format:
       rettype: text
       argument: text, text, text

    - __format:
       rettype: text
       argument: text, text, text, text

    - __format:
       rettype: text
       argument: text, text, text, text, text

    - __format:
       rettype: text
       argument: text, text[]

    - __gen_acc:
       rettype: __gen_acc_time
       argument: text, text, text, text, text, integer, integer, boolean, integer

    - __gen_enc_meta_names:
       rettype: text[]
       argument: text, text

    - __gen_horizontal_encoded_table:
       rettype: void
       argument: text, text, integer, integer

    - __gen_vertical_encoded_table:
       rettype: void
       argument: text, text, text, boolean, integer

    - __generate_final_tree:
       rettype: void
       argument: text

    - __get_class_column_name:
       rettype: text
       argument: text

    - __get_class_value:
       rettype: text
       argument: integer, text

    - __get_classtable_name:
       rettype: text
       argument: text

    - __get_column_value:
       rettype: text
       argument: integer, integer, character, text

    - __get_feature_name:
       rettype: text
       argument: integer, text

    - __get_feature_value:
       rettype: text
       argument: integer, integer, text

    - __get_features_of_nodes:
       rettype: text
       argument: text, text, integer, integer, integer

    - __get_id_column_name:
       rettype: text
       argument: text

    - __get_schema_name:
       rettype: text
       argument: text

    - __get_table_name:
       rettype: text
       argument: text

    - __insert_into_metatable:
       rettype: void
       argument: text, integer, text, character, boolean, text, integer

    - __is_valid_enc_table:
       rettype: boolean
       argument: text

    - __num_of_class:
       rettype: integer
       argument: text

    - __num_of_columns:
       rettype: integer
       argument: text

    - __num_of_feature:
       rettype: integer
       argument: text

    - __regclass_to_text:
       rettype: text
       argument: regclass

    - __rename_table:
       rettype: void
       argument: text, text

    - __rep_aggr_class_count_ffunc:
       rettype: bigint[]
       argument: bigint[]

    - __rep_aggr_class_count_sfunc:
       rettype: bigint[]
       argument: bigint[], integer, integer, integer

    - __rep_prune_tree:
       rettype: void
       argument: text, text, integer

    - __sample_with_replacement:
       rettype: void
       argument: integer, bigint, text, text

    - __sample_within_range:
       rettype: SETOF bigint
       argument: bigint, bigint, bigint

    - __scv_aggr_ffunc:
       rettype: double precision[]
       argument: double precision[]

    - __scv_aggr_prefunc:
       rettype: double precision[]
       argument: double precision[], double precision[]

    - __scv_aggr_sfunc:
       rettype: double precision[]
       argument: double precision[], integer, boolean, integer, double precision[], double precision[], bigint

    - __strip_schema_name:
       rettype: text
       argument: text

    - __svm_random_ind2:
       rettype: double precision[]
       argument: integer

    - __svm_random_ind:
       rettype: double precision[]
       argument: integer

    - __svm_target_cl_func:
       rettype: double precision
       argument: double precision[]

    - __svm_target_reg_func:
       rettype: double precision
       argument: double precision[]

    - __table_exists:
       rettype: boolean
       argument: text

    - __train_tree:
       rettype: __train_result
       argument: text, integer, integer, text, text, text, text, text, text, double precision, integer, double precision, double precision, double precision, boolean, integer, integer

    - __treemodel_classify_internal:
       rettype: text[]
       argument: text, text, integer

    - __treemodel_classify_internal_serial:
       rettype: text[]
       argument: text, text, integer

    - __treemodel_display_no_ordered_aggr:
       rettype: SETOF text
       argument: text, integer[], integer

    - __treemodel_display_with_ordered_aggr:
       rettype: SETOF text
       argument: text, integer[], integer

    - __treemodel_get_vote_result:
       rettype: void
       argument: text, text

    - __treemodel_score:
       rettype: double precision
       argument: text, text, integer

    - __validate_input_table:
       rettype: void
       argument: text, text[], text, text

    - __validate_metatable:
       rettype: void
       argument: text

    - c45_classify:
       rettype: c45_classify_result
       argument: text, text, text

    - c45_classify:
       rettype: c45_classify_result
       argument: text, text, text, integer

    - c45_clean:
       rettype: boolean
       argument: text

    - c45_display:
       rettype: SETOF text
       argument: text

    - c45_display:
       rettype: SETOF text
       argument: text, integer

    - c45_genrule:
       rettype: SETOF text
       argument: text

    - c45_genrule:
       rettype: SETOF text
       argument: text, integer

    - c45_score:
       rettype: double precision
       argument: text, text

    - c45_score:
       rettype: double precision
       argument: text, text, integer

    - c45_train:
       rettype: c45_train_result
       argument: text, text, text

    - c45_train:
       rettype: c45_train_result
       argument: text, text, text, text, text, text, text, text, double precision, text

    - c45_train:
       rettype: c45_train_result
       argument: text, text, text, text, text, text, text, text, double precision, text, integer, double precision, double precision, integer

    - correlation:
       rettype: correlation_result
       argument: character varying, character varying

    - correlation:
       rettype: correlation_result
       argument: character varying, character varying, character varying

    - correlation:
       rettype: correlation_result
       argument: character varying, character varying, character varying, boolean

    - linear_svm_igd_transition:
       rettype: double precision[]
       argument: double precision[], double precision[], boolean, double precision[], integer, double precision, double precision

    - lsvm_classification:
       rettype: SETOF lsvm_sgd_result
       argument: text, text

    - lsvm_classification:
       rettype: SETOF lsvm_sgd_result
       argument: text, text, boolean

    - lsvm_classification:
       rettype: SETOF lsvm_sgd_result
       argument: text, text, boolean, boolean, double precision, double precision

    - lsvm_classification:
       rettype: SETOF lsvm_sgd_result
       argument: text, text, boolean, boolean, double precision, double precision, integer

    - lsvm_predict:
       rettype: double precision
       argument: double precision[], double precision[]

    - lsvm_predict_batch:
       rettype: text
       argument: text, text, text, text, text

    - lsvm_predict_batch:
       rettype: text
       argument: text, text, text, text, text, boolean

    - matrix_block_trans:
       rettype: matrix_result
       argument: text, text, text, text, boolean

    - matrix_densify:
       rettype: matrix_result
       argument: text, text, text, text, boolean

    - matrix_sparsify:
       rettype: matrix_result
       argument: text, text, text, text, boolean

    - matrix_trans:
       rettype: matrix_result
       argument: text, text, text, text, boolean

    - rf_classify:
       rettype: rf_classify_result
       argument: text, text, text

    - rf_classify:
       rettype: rf_classify_result
       argument: text, text, text, boolean, integer

    - rf_classify:
       rettype: rf_classify_result
       argument: text, text, text, integer

    - rf_clean:
       rettype: boolean
       argument: text

    - rf_display:
       rettype: SETOF text
       argument: text

    - rf_display:
       rettype: SETOF text
       argument: text, integer[]

    - rf_display:
       rettype: SETOF text
       argument: text, integer[], integer

    - rf_score:
       rettype: double precision
       argument: text, text

    - rf_score:
       rettype: double precision
       argument: text, text, integer

    - rf_train:
       rettype: rf_train_result
       argument: text, text, text

    - rf_train:
       rettype: rf_train_result
       argument: text, text, text, integer, integer, double precision, text, text, text, text, text, integer, double precision, double precision, integer

    - svdmf_run:
       rettype: text
       argument: text, text, text, text, integer

    - svdmf_run:
       rettype: text
       argument: text, text, text, text, integer, integer, double precision

    - svm_classification:
       rettype: SETOF svm_cls_result
       argument: text, text, boolean, text

    - svm_classification:
       rettype: SETOF svm_cls_result
       argument: text, text, boolean, text, boolean, double precision, double precision

    - svm_classification:
       rettype: SETOF svm_cls_result
       argument: text, text, boolean, text, boolean, double precision, double precision, double precision

    - svm_classification:
       rettype: SETOF svm_cls_result
       argument: text, text, boolean, text, double precision

    - svm_cls_update:
       rettype: schema_madlib.svm_model_rec
       argument: schema_madlib.svm_model_rec, double precision[], double precision, text, double precision, double precision, double precision

    - svm_data_normalization:
       rettype: void
       argument: text

    - svm_dot:
       rettype: double precision
       argument: double precision[], double precision[]

    - svm_dot:
       rettype: double precision
       argument: double precision[], double precision[], double precision

    - svm_drop_model:
       rettype: void
       argument: text

    - svm_gaussian:
       rettype: double precision
       argument: double precision[], double precision[], double precision

    - svm_generate_cls_data:
       rettype: void
       argument: text, integer, integer

    - svm_generate_nd_data:
       rettype: void
       argument: text, integer, integer

    - svm_generate_reg_data:
       rettype: void
       argument: text, integer, integer

    - svm_nd_update:
       rettype: schema_madlib.svm_model_rec
       argument: schema_madlib.svm_model_rec, double precision[], text, double precision, double precision, double precision

    - svm_novelty_detection:
       rettype: SETOF schema_madlib.svm_nd_result
       argument: text, text, boolean, text

    - svm_novelty_detection:
       rettype: SETOF schema_madlib.svm_nd_result
       argument: text, text, boolean, text, boolean, double precision, double precision

    - svm_novelty_detection:
       rettype: SETOF schema_madlib.svm_nd_result
       argument: text, text, boolean, text, boolean, double precision, double precision, double precision

    - svm_polynomial:
       rettype: double precision
       argument: double precision[], double precision[], double precision

    - svm_predict:
       rettype: double precision
       argument: schema_madlib.svm_model_rec, double precision[], text, double precision

    - svm_predict_batch:
       rettype: text
       argument: text, text, text, text, text, boolean

    - svm_predict_sub:
       rettype: double precision
       argument: integer, integer, double precision[], double precision[], double precision[], text, double precision

    - svm_reg_update:
       rettype: schema_madlib.svm_model_rec
       argument: schema_madlib.svm_model_rec, double precision[], double precision, text, double precision, double precision, double precision, double precision

    - svm_regression:
       rettype: SETOF svm_reg_result
       argument: text, text, boolean, text

    - svm_regression:
       rettype: SETOF svm_reg_result
       argument: text, text, boolean, text, boolean, double precision, double precision, double precision

    - svm_regression:
       rettype: SETOF svm_reg_result
       argument: text, text, boolean, text, boolean, double precision, double precision, double precision, double precision

    - svm_store_model:
       rettype: void
       argument: text, text, text

# Changes to aggregates (UDA) including removal and modification
# Overloaded functions should be mentioned separately
uda:
    # ----------------- Changes from 1.7.1 to 1.8 ----------
    - discrete_distribution_agg:
        rettype: double precision[]
        argument: integer, double precision, integer
    - vectorized_distribution_agg:
        rettype: double precision[]
        argument: integer[], integer[]
    # ----------------- Changes from 1.8 to 1.9 ----------

    - __array_indexed_agg:
        rettype: double precision[]
        argument: double precision, bigint, bigint

    - __best_scv_aggr:
        rettype: double precision[]
        argument: double precision[], integer, double precision

    - __bigint_array_sum:
        rettype: bigint[]
        argument: bigint[]

    - __display_tree_aggr:
        rettype: text
        argument: integer, boolean, text, text, double precision, double precision, text, integer

    - __dt_acc_count_aggr:
        rettype: bigint[]
        argument: integer, bigint, integer

    - __rep_aggr_class_count:
        rettype: bigint[]
        argument: integer, integer, integer

    - __scv_aggr:
        rettype: double precision[]
        argument: integer, boolean, integer, double precision[], double precision[], bigint

    - linear_svm_igd_step:
        rettype: double precision[]
        argument: double precision[], boolean, double precision[], integer, double precision, double precision

    - linear_svm_igd_step_serial:
        rettype: double precision[]
        argument: double precision[], boolean, double precision[], integer, double precision, double precision

    - svm_cls_agg:
        rettype: schema_madlib.svm_model_rec
        argument: double precision[], double precision, text, double precision, double precision, double precision

    - svm_nd_agg:
        rettype: schema_madlib.svm_model_rec
        argument: double precision[], text, double precision, double precision, double precision

    - svm_reg_agg:
        rettype: schema_madlib.svm_model_rec
        argument: double precision[], double precision, text, double precision, double precision, double precision, double precision

    - __svm_random_ind2:
        rettype: double precision[]
        argument: integer
# Casts (UDC) updated/removed
udc:
    # ----------------- Changes from 1.7.1 to 1.8 ----------

# Operators (UDO) removed/updated
udo:
    # ----------------- Changes from 1.7.1 to 1.8 ----------

# Operator Classes (UDOC) removed/updated
udoc:
    # ----------------- Changes from 1.7.1 to 1.8 ----------
