# Changelist for MADlib version 1.2 to 1.7

# 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.2 to 1.3 -----------------
    # ----------------- Changes from 1.3 to 1.4 -----------------
    robust_variance_coxph:
    clustered_variance_coxph:
    # ----------------- Changes from 1.4 to 1.4.1 ---------------
    # ----------------- Changes from 1.4.1 to 1.5 ---------------
    # ----------------- Changes from 1.5 to 1.6 ---------------
    table_to_pmml:
    # ----------------- Changes from 1.6 to 1.6.0S ----------
    # ----------------- Changes from 1.6.0S to 1.7 ----------
    glm:
    multiresponseglm:
    ordinal:
    decision_tree:
    random_forest:
    distribution:
    # ----------------- Changes from 1.7.1 to 1.8 ----------
    text_utilities:

# Changes in the types (UDT) including removal and modification
udt:
    # ----------------- Changes from 1.2 to 1.3 -----------------
    __logregr_result:
    linregr_result:
    intermediate_cox_prop_hazards_result:
    # ----------------- Changes from 1.3 to 1.4 -----------------
    # coxph_result: not exists in 1.2
    mlogregr_result:
    marginal_logregr_result:
    marginal_mlogregr_result:
    # ----------------- Changes from 1.4 to 1.4.1 ---------------
    # ----------------- Changes from 1.4.1 to 1.5 ---------------
    # ----------------- Changes from 1.5 to 1.6 ---------------
    # __logregr_result: appeared before
    # coxph_result: not exists in 1.2
    # linregr_result: appeared before
    # mlogregr_result: appeared before
    # some types missed before upgrade to v1.6
    __utils_scaled_data:
    # ----------------- Changes from 1.6 to 1.6.0S ----------
    # ----------------- Changes from 1.6.0S to 1.7 ----------
    bytea8:
    # ----------------- 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, change in argument order or argument types, and 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.2 to 1.3 -----------------
    # linear regression: 'num_processed' added in 'linregr_result'
    - linregr_final:
        rettype: schema_madlib.linregr_result
        argument: schema_madlib.bytea8
    - linregr_merge_states:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, schema_madlib.bytea8
    - linregr_transition:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, double precision, double precision[]

    # logistic regression: 'num_processed' added in '__logregr_result'
    - __logregr_cg_result:
        rettype: schema_madlib.__logregr_result
        argument: double precision[]

    - __logregr_irls_result:
        rettype: schema_madlib.__logregr_result
        argument: double precision[]

    - __logregr_igd_result:
        rettype: schema_madlib.__logregr_result
        argument: double precision[]

    # there were once missing till upgrade to v1.6
    - __internal_get_cox_prop_hazards_insert_string:
        rettype: character varying
        argument: schema_madlib.cox_prop_hazards_result, text
    - __internal_get_cox_prop_hazards_result:
        rettype: schema_madlib.cox_prop_hazards_result
        argument: character varying, character varying, character varying, character varying
    - __internal_get_hsk_result:
        rettype: schema_madlib.heteroskedasticity_test_result
        argument: character varying, character varying, character varying, double precision[]
    - __internal_get_linreg_result:
        rettype: schema_madlib.linregr_result
        argument: character varying, character varying, character varying
    - __internal_get_linregr_insert_string:
        rettype: character varying
        argument: schema_madlib.linregr_result, text
    - __internal_linregr_train_hetero:
        rettype: void
        argument: character varying, character varying, character varying, character varying, boolean
    - compute_cox_prop_hazards_regr:
        rettype: integer
        argument: character varying, character varying, character varying, character varying, integer, character varying, double precision
    - cox_prop_hazards_step_final:
        rettype: double precision[]
        argument: double precision[]
    - cox_prop_hazards_step_transition:
        rettype: double precision[]
        argument: double precision[], double precision[], double precision, boolean, double precision, double precision[], double precision[], double precision[]
    - intermediate_cox_prop_hazards:
        rettype: schema_madlib.intermediate_cox_prop_hazards_result
        argument: double precision[], boolean, double precision[]
    - internal_cox_prop_hazards_result:
        rettype: schema_madlib.cox_prop_hazards_result
        argument: double precision[]
    - internal_cox_prop_hazards_step_distance:
        rettype: double precision
        argument: double precision[], double precision[]
    # ----------------- Changes from 1.3 to 1.4 -----------------
    - __internal_get_robust_linregr_insert_string:
        rettype: character varying
        argument: schema_madlib.robust_linregr_result, double precision[], text
    - __internal_get_robust_linregr_result:
        rettype: schema_madlib.robust_linregr_result
        argument: character varying, character varying, character varying, double precision[]
    - __internal_get_robust_logregr_insert_string:
        rettype: character varying
        argument: schema_madlib.robust_logregr_result, text
    - __internal_get_robust_logregr_result:
        rettype: schema_madlib.robust_logregr_result
        argument: character varying, character varying, character varying, double precision[]
    - __internal_get_robust_mlogregr_insert_string:
        rettype: character varying
        argument: schema_madlib.robust_mlogregr_result, text
    - __lda_count_topic_prefunc:
        rettype: integer[]
        argument: integer[], integer[]
    - __lda_count_topic_sfunc:
        rettype: integer[]
        argument: integer[], integer[], integer[], integer[], integer, integer
    - __lda_gibbs_sample:
        rettype: integer[]
        argument: integer[], integer[], integer[], integer[], double precision, double precision, integer, integer, integer
    - __lda_perplexity_ffunc:
        rettype: double precision
        argument: integer[]
    - __lda_perplexity_prefunc:
        rettype: integer[]
        argument: integer[], integer[]
    - __lda_perplexity_sfunc:
        rettype: integer[]
        argument: integer[], integer[], integer[], integer[], integer[], double precision, double precision, integer, integer
    - __lda_util_transpose:
        rettype: integer[]
        argument: integer[]
    - __lda_util_unnest:
        rettype: SETOF integer[]
        argument: integer[]
    - clustered_variance_mlogregr:
        rettype: void
        argument: text, text, text, text, text, integer, text, integer, text, double precision
    - clustered_variance_mlogregr:
        rettype: void
        argument: text, text, text, text, text, integer, text, integer, text
    - clustered_variance_mlogregr:
        rettype: void
        argument: text, text, text, text, text, integer, text, integer, text, double precision, boolean
    - robust_input_checking:
        rettype: void
        argument: character varying, character varying, character varying, character varying

    # ----------------- Changes from 1.4 to 1.4.1 ---------------
    # ----------------- Changes from 1.4.1 to 1.5 ---------------
    - __cmsketch_final:
        rettype: bytea
        argument: bytea
    - __delete_traininginfo:
        rettype: void
        argument: text
    - __get_encode_table_name:
        rettype: text
        argument: text
    - __get_metatable_name:
        rettype: text
        argument: text
    - __get_routine_id:
        rettype: integer
        argument: text
    - __get_routine_name:
        rettype: text
        argument: text
    - __get_tree_table_name:
        rettype: text
        argument: text
    - __insert_into_traininginfo:
        rettype: void
        argument: text, text, text, text, text, text, text, text, double precision, integer, integer
    - __treemodel_clean:
        rettype: boolean
        argument: text
    - compute_lincrf:
        rettype: integer
        argument: character varying, character varying, character varying, character varying, character varying, integer, integer
    - create_nb_classify_fn:
        rettype: void
        argument: character varying, character varying, integer, character varying
    - create_nb_classify_fn:
        rettype: void
        argument: character varying, character varying, character varying, integer, character varying
    - create_table_as:
        rettype: void
        argument: character varying, character varying
    - create_table_as:
        rettype: void
        argument: character varying, character varying, character varying
    - create_temp_table_as:
        rettype: void
        argument: character varying, character varying, character varying
    - create_temp_table_as:
        rettype: void
        argument: character varying, character varying
    - create_temporary_table_as:
        rettype: void
        argument: character varying, character varying, character varying
    - create_temporary_table_as:
        rettype: void
        argument: character varying, character varying
    - crf_train_fgen:
        rettype: void
        argument: text, text, text, text, text
    - insert_into:
        rettype: void
        argument: character varying, character varying
    - internal_create_table_as:
        rettype: void
        argument: boolean, character varying, character varying, character varying
    - internal_execute_using_kmeans_args:
        rettype: void
        argument: character varying, double precision[], regproc, integer, double precision
    - internal_execute_using_kmeanspp_seeding_args:
        rettype: void
        argument: character varying, integer, regproc, double precision[]
    - internal_execute_using_silhouette_args:
        rettype: double precision
        argument: character varying, double precision[], regproc
    - lincrf:
        rettype: integer
        argument: character varying, character varying, character varying, character varying, character varying, integer, character varying, character varying, integer
    - lincrf:
        rettype: integer
        argument: character varying, character varying, character varying, character varying, character varying, integer, character varying, character varying
    - lsvm_predict:
        rettype: double precision
        argument: text, double precision[]
    - lsvm_predict_combo:
        rettype: SETOF schema_madlib.svm_model_pr
        argument: text, double precision[]
    - lsvm_sgd_update:
        rettype: schema_madlib.lsvm_sgd_model_rec
        argument: schema_madlib.lsvm_sgd_model_rec, double precision[], double precision, double precision, 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
    - svm_nd_update:
        rettype: schema_madlib.svm_model_rec
        argument: schema_madlib.svm_model_rec, double precision[], text, double precision, double precision
    - svm_predict:
        rettype: double precision
        argument: schema_madlib.svm_model_rec, double precision[], text
    - svm_predict:
        rettype: double precision
        argument: text, double precision[]
    - svm_predict_combo:
        rettype: SETOF schema_madlib.svm_model_pr
        argument: text, double precision[]
    - svm_predict_sub:
        rettype: double precision
        argument: integer, integer, double precision[], double precision[], double precision[], text
    - 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
    - utils_normalize_data:
        rettype: schema_madlib.__utils_scaled_data
        argument: double precision[], double precision[], double precision[]
    - vcrf_top1_label:
        rettype: integer[]
        argument: integer[], integer[], integer
    - vcrf_top1_view:
        rettype: text
        argument: text, text, text, text
    # ----------------- Changes from 1.5 to 1.6 ---------------
    # Removed functions
    - array_contains_null:
        rettype: boolean
        argument: double precision[]
    - array_sqrt:
        rettype: anyarray
        argument: anyarray
    - coxph_step_final:
        rettype: double precision[]
        argument: double precision[]
    - coxph_step_strata_final:
        rettype: double precision[]
        argument: double precision[]
    - coxph_step_transition:
        rettype: double precision[]
        argument: double precision[], double precision[], double precision, boolean, double precision[]
    - internal_coxph_result:
        rettype: schema_madlib.coxph_result
        argument: double precision[]
    - internal_coxph_step_distance:
        rettype: double precision
        argument: double precision[], double precision[]
    - normalize:
        rettype: double precision[]
        argument: double precision[]
    # Changed functions (return type)
    # These functions can be recreated correctly even if we don't add them here.
    # But the view dependency checker needs the information.
    - __internal_mlogregr_irls_result:
        rettype: schema_madlib.mlogregr_result
        argument: double precision[]
    - __logregr_cg_result:
        rettype: schema_madlib.__logregr_result
        argument: double precision[]
    - __logregr_igd_result:
        rettype: schema_madlib.__logregr_result
        argument: double precision[]
    - __logregr_irls_result:
        rettype: schema_madlib.__logregr_result
        argument: double precision[]
    - linregr_final:
        rettype: schema_madlib.linregr_result
        argument: schema_madlib.bytea8
    - mlogregr:
        rettype: schema_madlib.mlogregr_result
        argument: character varying, character varying, character varying, integer, character varying, double precision, integer
    - mlogregr:
        rettype: schema_madlib.mlogregr_result
        argument: character varying, character varying, character varying, integer, character varying
    - mlogregr:
        rettype: schema_madlib.mlogregr_result
        argument: character varying, character varying, character varying, integer
    - mlogregr:
        rettype: schema_madlib.mlogregr_result
        argument: character varying, character varying, character varying
    # make-ups from upgrade to v1.6
    - marginal_logregr_step_final:
        rettype: schema_madlib.marginal_logregr_result
        argument: double precision[]
    - mlogregr_marginal_step_final:
        rettype: schema_madlib.marginal_mlogregr_result
        argument: double precision[]
    # ----------------- Changes from 1.6 to 1.6.0S ----------
    # ----------------- Changes from 1.6.0S to 1.7 ----------
    - cross_validation_general:   # change in name of argument "fold_num"
        rettype: void
        argument: character varying, character varying[], character varying[], character varying, character varying[], character varying, character varying[], character varying[], character varying, character varying[], character varying[], character varying, character varying, boolean, character varying, character varying[], integer
    - lmf_igd_transition:
        rettype: double precision[]
        argument: double precision[], smallint, smallint, double precision, double precision[], smallint, smallint, smallint, double precision, double precision
    # depending on bytea8
    # return type is bytea8
    - __clustered_err_lin_merge:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, schema_madlib.bytea8
    - __clustered_err_lin_transition:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, double precision, double precision[], double precision[]
    - __clustered_err_log_merge:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, schema_madlib.bytea8
    - __clustered_err_log_transition:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, boolean, double precision[], double precision[]
    - __clustered_err_mlog_merge:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, schema_madlib.bytea8
    - __clustered_err_mlog_transition:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, integer, double precision[], double precision[], integer, integer
    - dense_residual_norm_merge_states:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, schema_madlib.bytea8
    - dense_residual_norm_transition:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, double precision[], double precision, double precision[]
    - hetero_linregr_merge_states:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, schema_madlib.bytea8
    - hetero_linregr_transition:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, double precision, double precision[], double precision[]
    - linregr_merge_states:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, schema_madlib.bytea8
    - linregr_transition:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, double precision, double precision[]
    - robust_linregr_merge_states:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, schema_madlib.bytea8
    - robust_linregr_transition:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, double precision, double precision[], double precision[]
    - weighted_sample_merge_int64:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, schema_madlib.bytea8
    - weighted_sample_merge_vector:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, schema_madlib.bytea8
    - weighted_sample_transition_int64:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, bigint, double precision
    - weighted_sample_transition_vector:
        rettype: schema_madlib.bytea8
        argument: schema_madlib.bytea8, double precision[], double precision
    # argument type bytea8
    - __clustered_err_lin_final:
        rettype: schema_madlib.__clustered_agg_result
        argument: schema_madlib.bytea8
    - __clustered_err_log_final:
        rettype: schema_madlib.__clustered_agg_result
        argument: schema_madlib.bytea8
    - __clustered_err_mlog_final:
        rettype: schema_madlib.__clustered_agg_result
        argument: schema_madlib.bytea8
    - dense_residual_norm_final:
        rettype: schema_madlib.residual_norm_result
        argument: schema_madlib.bytea8
    - hetero_linregr_final:
        rettype: schema_madlib.heteroskedasticity_test_result
        argument: schema_madlib.bytea8
    - linregr_final:
        rettype: schema_madlib.linregr_result
        argument: schema_madlib.bytea8
    - robust_linregr_final:
        rettype: schema_madlib.robust_linregr_result
        argument: schema_madlib.bytea8
    - weighted_sample_final_int64:
        rettype: bigint
        argument: schema_madlib.bytea8
    - weighted_sample_final_vector:
        rettype: double precision[]
        argument: schema_madlib.bytea8
    # ----------------- 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.2 to 1.3 -----------------
    - linregr:
        rettype: schema_madlib.linregr_result
        argument: double precision, double precision[]
    - cox_prop_hazards_step:
         rettype: double precision[]
         argument: double precision[], double precision, boolean, double precision, double precision[], double precision[], double precision[]
    # ----------------- Changes from 1.3 to 1.4 -----------------
    - __lda_count_topic_agg:
        rettype: integer[]
        argument: integer[], integer[], integer[], integer, integer
    - __lda_perplexity_agg:
        rettype: double precision
        argument: integer[], integer[], integer[], integer[], double precision, double precision, integer, integer
    # ----------------- Changes from 1.4 to 1.4.1 ---------------
    # ----------------- Changes from 1.4.1 to 1.5 ---------------
    - lsvm_sgd_agg:
        rettype: schema_madlib.lsvm_sgd_model_rec
        argument: double precision[], double precision, double precision, double precision
    - svm_cls_agg:
        rettype: schema_madlib.svm_model_rec
        argument: double precision[], double precision, text, double precision, double precision
    - svm_nd_agg:
        rettype: schema_madlib.svm_model_rec
        argument: double precision[], text, 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
    # ----------------- Changes from 1.5 to 1.6 ---------------
    # - coxph_step: not exists in v1.2
    # - coxph_strata_step_inner: not exists in v1.2
    # - coxph_strata_step_outer: not exists in v1.2
    # return type change
    # - linregr: appeared before
    # initcond change
    - __mlogregr_irls_step:
        rettype: double precision[]
        argument: integer, integer, integer, double precision[], double precision[]
    # make-ups from upgrade to v1.6
    - marginal_logregr:
        rettype: schema_madlib.marginal_logregr_result
        argument: boolean, double precision[], double precision[]
    - marginal_mlogregr:
        rettype: schema_madlib.marginal_mlogregr_result
        argument: integer, integer, integer, double precision[], double precision[]
    # ----------------- Changes from 1.6 to 1.6.0S ----------
    # ----------------- Changes from 1.6.0S to 1.7 ----------
    - lmf_igd_step:
        rettype: double precision[]
        argument: smallint, smallint, double precision, double precision[], smallint, smallint, smallint, double precision, double precision
    - __clustered_err_lin_step:
        rettype: schema_madlib.__clustered_agg_result
        argument: double precision, double precision[], double precision[]
    - __clustered_err_log_step:
        rettype: schema_madlib.__clustered_agg_result
        argument: boolean, double precision[], double precision[]
    - __clustered_err_mlog_step:
        rettype: schema_madlib.__clustered_agg_result
        argument: integer, double precision[], double precision[], integer, integer
    - dense_residual_norm:
        rettype: schema_madlib.residual_norm_result
        argument: double precision[], double precision, double precision[]
    - heteroskedasticity_test_linregr:
        rettype: schema_madlib.heteroskedasticity_test_result
        argument: double precision, double precision[], double precision[]
    - linregr:
        rettype: schema_madlib.linregr_result
        argument: double precision, double precision[]
    - robust_linregr:
        rettype: schema_madlib.robust_linregr_result
        argument: double precision, double precision[], double precision[]
    - weighted_sample:
        rettype: double precision[]
        argument: double precision[], double precision
    - weighted_sample:
        rettype: bigint
        argument: bigint, double precision
    # ----------------- 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
# Cast operators (UDC) updated/added
udc:
    # ----------------- Changes from 1.2 to 1.3 -----------------
    # ----------------- Changes from 1.3 to 1.4 -----------------
    # ----------------- Changes from 1.4 to 1.4.1 ---------------
    # ----------------- Changes from 1.4.1 to 1.5 ---------------
    bool2text:
        sourcetype: boolean
        targettype: text
    # ----------------- Changes from 1.5 to 1.6 ---------------
    # ----------------- Changes from 1.6 to 1.6.0S ----------
    # ----------------- Changes from 1.6.0S to 1.7 ----------

# Operators (UDO) removed/updated
udo:
    # ----------------- Changes from 1.5 to 1.6 ---------------
    - '<':
        leftarg: schema_madlib.svec
        rightarg: schema_madlib.svec
    - '<=':
        leftarg: schema_madlib.svec
        rightarg: schema_madlib.svec
    - '<>':
        leftarg: schema_madlib.svec
        rightarg: schema_madlib.svec
    - '==':
        leftarg: schema_madlib.svec
        rightarg: schema_madlib.svec
    - '>=':
        leftarg: schema_madlib.svec
        rightarg: schema_madlib.svec
    - '>':
        leftarg: schema_madlib.svec
        rightarg: schema_madlib.svec
    # ----------------- Changes from 1.6 to 1.6.0S ----------
    # ----------------- Changes from 1.6.0S to 1.7 ----------

# Operator Classes (UDOC) removed/updated
udoc:
    # ----------------- Changes from 1.5 to 1.6 ---------------
    # removed
    - svec_l2_ops:
        index: btree
    # ----------------- Changes from 1.6 to 1.6.0S ----------
    # ----------------- Changes from 1.6.0S to 1.7 ----------
