I recently used my spare time to enhance Apache MADlib 2.X by adding support for PostgreSQL 16. I've committed changes (see link below) that enable the project to build successfully and pass both install-check and dev-check tests. Additionally, I've confirmed that the modifications still allow PostgreSQL 15 to pass the build, install-check, and dev-check tests. Could anyone recommend any further tests that would help ensure comprehensive coverage?
*Add PostgreSQL 16 support* https://github.com/edespino/madlib/commit/f1d2dd804324e2e14e05b289b11741aba9cab092 Thank you, -=e madpack -c localhost:${PGPORT}/madlibtest -s madlib -p postgres install madpack.py: INFO : Detected PostgreSQL version 16.2. madpack.py: INFO : *** Installing MADlib *** madpack.py: INFO : MADlib tools version = 2.1.0 (/home/eespino/madlib-vedespino/Versions/2.1.0/bin/../madpack/madpack.py) madpack.py: INFO : MADlib database version = None (host=localhost:5432, db=madlibtest, schema=madlib) madpack.py: INFO : Testing PL/Python environment... madpack.py: INFO : > Creating language PL/Python... madpack.py: INFO : > PL/Python environment OK (version: 3.9.18) madpack.py: INFO : > Preparing objects for the following modules: madpack.py: INFO : > - array_ops madpack.py: INFO : > - bayes madpack.py: INFO : > - crf madpack.py: INFO : > - elastic_net madpack.py: INFO : > - linalg madpack.py: INFO : > - pmml madpack.py: INFO : > - prob madpack.py: INFO : > - sketch madpack.py: INFO : > - svec madpack.py: INFO : > - svm madpack.py: INFO : > - tsa madpack.py: INFO : > - stemmer madpack.py: INFO : > - conjugate_gradient madpack.py: INFO : > - knn madpack.py: INFO : > - lda madpack.py: INFO : > - stats madpack.py: INFO : > - svec_util madpack.py: INFO : > - utilities madpack.py: INFO : > - assoc_rules madpack.py: INFO : > - convex madpack.py: INFO : > - dbscan madpack.py: INFO : > - deep_learning madpack.py: INFO : > - glm madpack.py: INFO : > - graph madpack.py: INFO : > - linear_systems madpack.py: INFO : > - mxgboost madpack.py: INFO : > - recursive_partitioning madpack.py: INFO : > - regress madpack.py: INFO : > - sample madpack.py: INFO : > - summary madpack.py: INFO : > - kmeans madpack.py: INFO : > - pca madpack.py: INFO : > - validation madpack.py: INFO : Installing MADlib: madpack.py: INFO : > Created madlib schema madpack.py: INFO : > Created madlib.MigrationHistory table madpack.py: INFO : > Wrote version info in MigrationHistory table madpack.py: INFO : MADlib 2.1.0 installed successfully in madlib schema. [eespino@cdw build]$ madpack -c localhost:${PGPORT}m/adlibtest -s madlib -p postgres install-check madpack.py: INFO : Detected PostgreSQL version 16.2. TEST CASE RESULT|Module: array_ops|array_ops.ic.sql_in|PASS|Time: 30 milliseconds TEST CASE RESULT|Module: bayes|bayes.ic.sql_in|PASS|Time: 112 milliseconds TEST CASE RESULT|Module: crf|crf_test_small.ic.sql_in|PASS|Time: 128 milliseconds TEST CASE RESULT|Module: crf|crf_train_small.ic.sql_in|PASS|Time: 116 milliseconds TEST CASE RESULT|Module: elastic_net|elastic_net.ic.sql_in|PASS|Time: 109 milliseconds TEST CASE RESULT|Module: linalg|linalg.ic.sql_in|PASS|Time: 36 milliseconds TEST CASE RESULT|Module: linalg|matrix_ops.ic.sql_in|PASS|Time: 212 milliseconds TEST CASE RESULT|Module: linalg|svd.ic.sql_in|PASS|Time: 134 milliseconds TEST CASE RESULT|Module: pmml|pmml.ic.sql_in|PASS|Time: 284 milliseconds TEST CASE RESULT|Module: prob|prob.ic.sql_in|PASS|Time: 14 milliseconds TEST CASE RESULT|Module: svm|svm.ic.sql_in|PASS|Time: 126 milliseconds TEST CASE RESULT|Module: tsa|arima.ic.sql_in|PASS|Time: 137 milliseconds TEST CASE RESULT|Module: stemmer|porter_stemmer.ic.sql_in|PASS|Time: 21 milliseconds TEST CASE RESULT|Module: conjugate_gradient|conj_grad.ic.sql_in|PASS|Time: 32 milliseconds TEST CASE RESULT|Module: knn|knn.ic.sql_in|PASS|Time: 98 milliseconds TEST CASE RESULT|Module: lda|lda.ic.sql_in|PASS|Time: 109 milliseconds TEST CASE RESULT|Module: stats|anova_test.ic.sql_in|PASS|Time: 23 milliseconds TEST CASE RESULT|Module: stats|chi2_test.ic.sql_in|PASS|Time: 22 milliseconds TEST CASE RESULT|Module: stats|correlation.ic.sql_in|PASS|Time: 99 milliseconds TEST CASE RESULT|Module: stats|cox_prop_hazards.ic.sql_in|PASS|Time: 96 milliseconds TEST CASE RESULT|Module: stats|f_test.ic.sql_in|PASS|Time: 19 milliseconds TEST CASE RESULT|Module: stats|ks_test.ic.sql_in|PASS|Time: 22 milliseconds TEST CASE RESULT|Module: stats|mw_test.ic.sql_in|PASS|Time: 22 milliseconds TEST CASE RESULT|Module: stats|pred_metrics.ic.sql_in|PASS|Time: 110 milliseconds TEST CASE RESULT|Module: stats|robust_and_clustered_variance_coxph.ic.sql_in|PASS|Time: 114 milliseconds TEST CASE RESULT|Module: stats|t_test.ic.sql_in|PASS|Time: 20 milliseconds TEST CASE RESULT|Module: stats|wsr_test.ic.sql_in|PASS|Time: 22 milliseconds TEST CASE RESULT|Module: utilities|encode_categorical.ic.sql_in|PASS|Time: 97 milliseconds TEST CASE RESULT|Module: utilities|minibatch_preprocessing.ic.sql_in|PASS|Time: 100 milliseconds TEST CASE RESULT|Module: utilities|path.ic.sql_in|PASS|Time: 93 milliseconds TEST CASE RESULT|Module: utilities|pivot.ic.sql_in|PASS|Time: 83 milliseconds TEST CASE RESULT|Module: utilities|sessionize.ic.sql_in|PASS|Time: 84 milliseconds TEST CASE RESULT|Module: utilities|text_utilities.ic.sql_in|PASS|Time: 87 milliseconds TEST CASE RESULT|Module: utilities|transform_vec_cols.ic.sql_in|PASS|Time: 103 milliseconds TEST CASE RESULT|Module: utilities|utilities.ic.sql_in|PASS|Time: 92 milliseconds TEST CASE RESULT|Module: assoc_rules|assoc_rules.ic.sql_in|PASS|Time: 121 milliseconds TEST CASE RESULT|Module: convex|lmf.ic.sql_in|PASS|Time: 98 milliseconds TEST CASE RESULT|Module: convex|mlp.ic.sql_in|PASS|Time: 196 milliseconds TEST CASE RESULT|Module: deep_learning|keras_model_arch_table.ic.sql_in|PASS|Time: 86 milliseconds TEST CASE RESULT|Module: glm|glm.ic.sql_in|PASS|Time: 216 milliseconds TEST CASE RESULT|Module: graph|graph.ic.sql_in|PASS|Time: 236 milliseconds TEST CASE RESULT|Module: linear_systems|dense_linear_sytems.ic.sql_in|PASS|Time: 93 milliseconds TEST CASE RESULT|Module: linear_systems|sparse_linear_sytems.ic.sql_in|PASS|Time: 87 milliseconds TEST CASE RESULT|Module: recursive_partitioning|decision_tree.ic.sql_in|PASS|Time: 120 milliseconds TEST CASE RESULT|Module: recursive_partitioning|random_forest.ic.sql_in|PASS|Time: 134 milliseconds TEST CASE RESULT|Module: regress|clustered.ic.sql_in|PASS|Time: 103 milliseconds TEST CASE RESULT|Module: regress|linear.ic.sql_in|PASS|Time: 20 milliseconds TEST CASE RESULT|Module: regress|logistic.ic.sql_in|PASS|Time: 104 milliseconds TEST CASE RESULT|Module: regress|marginal.ic.sql_in|PASS|Time: 129 milliseconds TEST CASE RESULT|Module: regress|multilogistic.ic.sql_in|PASS|Time: 103 milliseconds TEST CASE RESULT|Module: regress|robust.ic.sql_in|PASS|Time: 99 milliseconds TEST CASE RESULT|Module: sample|balance_sample.ic.sql_in|PASS|Time: 89 milliseconds TEST CASE RESULT|Module: sample|sample.ic.sql_in|PASS|Time: 17 milliseconds TEST CASE RESULT|Module: sample|stratified_sample.ic.sql_in|PASS|Time: 80 milliseconds TEST CASE RESULT|Module: sample|train_test_split.ic.sql_in|PASS|Time: 89 milliseconds TEST CASE RESULT|Module: summary|summary.ic.sql_in|PASS|Time: 91 milliseconds TEST CASE RESULT|Module: kmeans|kmeans.ic.sql_in|PASS|Time: 161 milliseconds TEST CASE RESULT|Module: pca|pca.ic.sql_in|PASS|Time: 218 milliseconds TEST CASE RESULT|Module: pca|pca_project.ic.sql_in|PASS|Time: 142 milliseconds TEST CASE RESULT|Module: validation|cross_validation.ic.sql_in|PASS|Time: 112 milliseconds [eespino@cdw build]$ madpack -c localhost:${PGPORT}/madlibtest -s madlib -p postgres dev-check madpack.py: INFO : Detected PostgreSQL version 16.2. TEST CASE RESULT|Module: array_ops|array_ops.sql_in|PASS|Time: 283 milliseconds TEST CASE RESULT|Module: bayes|bayes.sql_in|PASS|Time: 253 milliseconds TEST CASE RESULT|Module: bayes|gaussian_naive_bayes.sql_in|PASS|Time: 131 milliseconds TEST CASE RESULT|Module: crf|crf_test_large.sql_in|PASS|Time: 197 milliseconds TEST CASE RESULT|Module: crf|crf_test_small.sql_in|PASS|Time: 178 milliseconds TEST CASE RESULT|Module: crf|crf_train_large.sql_in|PASS|Time: 494 milliseconds TEST CASE RESULT|Module: crf|crf_train_small.sql_in|PASS|Time: 208 milliseconds TEST CASE RESULT|Module: elastic_net|elastic_net.sql_in|PASS|Time: 2694 milliseconds TEST CASE RESULT|Module: linalg|linalg.sql_in|PASS|Time: 47 milliseconds TEST CASE RESULT|Module: linalg|matrix_ops.sql_in|PASS|Time: 355 milliseconds TEST CASE RESULT|Module: linalg|svd.sql_in|PASS|Time: 429 milliseconds TEST CASE RESULT|Module: pmml|pmml_check_fields.sql_in|PASS|Time: 868 milliseconds TEST CASE RESULT|Module: pmml|pmml_dt.sql_in|PASS|Time: 2073 milliseconds TEST CASE RESULT|Module: pmml|pmml_glm_binomial.sql_in|PASS|Time: 2961 milliseconds TEST CASE RESULT|Module: pmml|pmml_glm_gamma.sql_in|PASS|Time: 2413 milliseconds TEST CASE RESULT|Module: pmml|pmml_glm_ig.sql_in|PASS|Time: 1855 milliseconds TEST CASE RESULT|Module: pmml|pmml_glm_normal.sql_in|PASS|Time: 2422 milliseconds TEST CASE RESULT|Module: pmml|pmml_glm_poisson.sql_in|PASS|Time: 1734 milliseconds TEST CASE RESULT|Module: pmml|pmml_glm_with_grouping.sql_in|PASS|Time: 5456 milliseconds TEST CASE RESULT|Module: pmml|pmml_glm_with_name_spec.sql_in|PASS|Time: 12491 milliseconds TEST CASE RESULT|Module: pmml|pmml_intercept_as_predictor.sql_in|PASS|Time: 1578 milliseconds TEST CASE RESULT|Module: pmml|pmml_linear.sql_in|PASS|Time: 1337 milliseconds TEST CASE RESULT|Module: pmml|pmml_logistic.sql_in|PASS|Time: 2228 milliseconds TEST CASE RESULT|Module: pmml|pmml_multinom.sql_in|PASS|Time: 6908 milliseconds TEST CASE RESULT|Module: pmml|pmml_ordinal.sql_in|PASS|Time: 4621 milliseconds TEST CASE RESULT|Module: pmml|pmml_rf.sql_in|PASS|Time: 2798 milliseconds TEST CASE RESULT|Module: pmml|pmml_with_non_array_expression.sql_in|PASS|Time: 3770 milliseconds TEST CASE RESULT|Module: prob|prob.sql_in|PASS|Time: 105 milliseconds TEST CASE RESULT|Module: sketch|cm.sql_in|PASS|Time: 2994 milliseconds TEST CASE RESULT|Module: sketch|fm.sql_in|PASS|Time: 1132 milliseconds TEST CASE RESULT|Module: sketch|mfv.sql_in|PASS|Time: 213 milliseconds TEST CASE RESULT|Module: sketch|support.sql_in|PASS|Time: 21 milliseconds TEST CASE RESULT|Module: svm|svm.sql_in|PASS|Time: 5405 milliseconds TEST CASE RESULT|Module: tsa|arima.sql_in|PASS|Time: 266 milliseconds TEST CASE RESULT|Module: tsa|arima_train.sql_in|PASS|Time: 262 milliseconds TEST CASE RESULT|Module: stemmer|porter_stemmer.sql_in|PASS|Time: 22 milliseconds TEST CASE RESULT|Module: conjugate_gradient|conj_grad.sql_in|PASS|Time: 44 milliseconds TEST CASE RESULT|Module: knn|knn.sql_in|PASS|Time: 391 milliseconds TEST CASE RESULT|Module: lda|lda.sql_in|PASS|Time: 836 milliseconds TEST CASE RESULT|Module: stats|anova_test.sql_in|PASS|Time: 25 milliseconds TEST CASE RESULT|Module: stats|chi2_test.sql_in|PASS|Time: 33 milliseconds TEST CASE RESULT|Module: stats|correlation.sql_in|PASS|Time: 287 milliseconds TEST CASE RESULT|Module: stats|cox_prop_hazards.sql_in|PASS|Time: 283 milliseconds TEST CASE RESULT|Module: stats|f_test.sql_in|PASS|Time: 23 milliseconds TEST CASE RESULT|Module: stats|ks_test.sql_in|PASS|Time: 30 milliseconds TEST CASE RESULT|Module: stats|mw_test.sql_in|PASS|Time: 25 milliseconds TEST CASE RESULT|Module: stats|pred_metrics.sql_in|PASS|Time: 180 milliseconds TEST CASE RESULT|Module: stats|robust_and_clustered_variance_coxph.sql_in|PASS|Time: 193 milliseconds TEST CASE RESULT|Module: stats|t_test.sql_in|PASS|Time: 30 milliseconds TEST CASE RESULT|Module: stats|wsr_test.sql_in|PASS|Time: 38 milliseconds TEST CASE RESULT|Module: svec_util|svec_test.sql_in|PASS|Time: 853 milliseconds TEST CASE RESULT|Module: svec_util|gp_sfv_sort_order.sql_in|PASS|Time: 21 milliseconds TEST CASE RESULT|Module: utilities|encode_categorical.sql_in|PASS|Time: 170 milliseconds TEST CASE RESULT|Module: utilities|minibatch_preprocessing.sql_in|PASS|Time: 330 milliseconds TEST CASE RESULT|Module: utilities|path.sql_in|PASS|Time: 123 milliseconds TEST CASE RESULT|Module: utilities|pivot.sql_in|PASS|Time: 257 milliseconds TEST CASE RESULT|Module: utilities|sessionize.sql_in|PASS|Time: 96 milliseconds TEST CASE RESULT|Module: utilities|text_utilities.sql_in|PASS|Time: 101 milliseconds TEST CASE RESULT|Module: utilities|transform_vec_cols.sql_in|PASS|Time: 587 milliseconds TEST CASE RESULT|Module: utilities|utilities.sql_in|PASS|Time: 110 milliseconds TEST CASE RESULT|Module: assoc_rules|assoc_rules.sql_in|PASS|Time: 286 milliseconds TEST CASE RESULT|Module: convex|lmf.sql_in|PASS|Time: 674 milliseconds TEST CASE RESULT|Module: convex|mlp.sql_in|PASS|Time: 4007 milliseconds TEST CASE RESULT|Module: dbscan|dbscan.sql_in|PASS|Time: 1611 milliseconds TEST CASE RESULT|Module: deep_learning|input_data_preprocessor.sql_in|PASS|Time: 553 milliseconds TEST CASE RESULT|Module: deep_learning|keras_model_arch_table.sql_in|PASS|Time: 2381 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_automl.sql_in|PASS|Time: 411 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_custom_function.sql_in|PASS|Time: 2726 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_evaluate.sql_in|PASS|Time: 4897 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_fit.sql_in|PASS|Time: 22216 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_fit_multiple.sql_in|PASS|Time: 13 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_gpu_info.sql_in|PASS|Time: 10260 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_model_averaging_e2e.sql_in|PASS|Time: 26715 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_model_selection.sql_in|PASS|Time: 2915 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_model_selection_e2e.sql_in|PASS|Time: 403 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_multi_io.sql_in|PASS|Time: 19760 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_predict.sql_in|PASS|Time: 10749 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_predict_byom.sql_in|PASS|Time: 12845 milliseconds TEST CASE RESULT|Module: deep_learning|madlib_keras_transfer_learning.sql_in|PASS|Time: 6896 milliseconds TEST CASE RESULT|Module: glm|binomial.sql_in|PASS|Time: 295 milliseconds TEST CASE RESULT|Module: glm|gamma.sql_in|PASS|Time: 514 milliseconds TEST CASE RESULT|Module: glm|gaussian.sql_in|PASS|Time: 209 milliseconds TEST CASE RESULT|Module: glm|inverse_gaussian.sql_in|PASS|Time: 202 milliseconds TEST CASE RESULT|Module: glm|multinom.sql_in|PASS|Time: 194 milliseconds TEST CASE RESULT|Module: glm|poisson.sql_in|PASS|Time: 205 milliseconds TEST CASE RESULT|Module: glm|ordinal.sql_in|PASS|Time: 177 milliseconds TEST CASE RESULT|Module: graph|apsp.sql_in|PASS|Time: 499 milliseconds TEST CASE RESULT|Module: graph|bfs.sql_in|PASS|Time: 293 milliseconds TEST CASE RESULT|Module: graph|hits.sql_in|PASS|Time: 300 milliseconds TEST CASE RESULT|Module: graph|measures.sql_in|PASS|Time: 266 milliseconds TEST CASE RESULT|Module: graph|pagerank.sql_in|PASS|Time: 1568 milliseconds TEST CASE RESULT|Module: graph|sssp.sql_in|PASS|Time: 532 milliseconds TEST CASE RESULT|Module: graph|wcc.sql_in|PASS|Time: 503 milliseconds TEST CASE RESULT|Module: linear_systems|dense_linear_sytems.sql_in|PASS|Time: 120 milliseconds TEST CASE RESULT|Module: linear_systems|sparse_linear_sytems.sql_in|PASS|Time: 114 milliseconds TEST CASE RESULT|Module: mxgboost|madlib_xgboost.sql_in|PASS|Time: 6485 milliseconds TEST CASE RESULT|Module: recursive_partitioning|decision_tree.sql_in|PASS|Time: 476 milliseconds TEST CASE RESULT|Module: recursive_partitioning|random_forest.sql_in|PASS|Time: 699 milliseconds TEST CASE RESULT|Module: regress|clustered.sql_in|PASS|Time: 359 milliseconds TEST CASE RESULT|Module: regress|linear.sql_in|PASS|Time: 135 milliseconds TEST CASE RESULT|Module: regress|logistic.sql_in|PASS|Time: 373 milliseconds TEST CASE RESULT|Module: regress|marginal.sql_in|PASS|Time: 554 milliseconds TEST CASE RESULT|Module: regress|multilogistic.sql_in|PASS|Time: 211 milliseconds TEST CASE RESULT|Module: regress|robust.sql_in|PASS|Time: 409 milliseconds TEST CASE RESULT|Module: sample|balance_sample.sql_in|PASS|Time: 190 milliseconds TEST CASE RESULT|Module: sample|sample.sql_in|PASS|Time: 197 milliseconds TEST CASE RESULT|Module: sample|stratified_sample.sql_in|PASS|Time: 108 milliseconds TEST CASE RESULT|Module: sample|train_test_split.sql_in|PASS|Time: 152 milliseconds TEST CASE RESULT|Module: summary|summary.sql_in|PASS|Time: 197 milliseconds TEST CASE RESULT|Module: kmeans|kmeans.sql_in|PASS|Time: 11305 milliseconds TEST CASE RESULT|Module: pca|pca.sql_in|PASS|Time: 2215 milliseconds TEST CASE RESULT|Module: pca|pca_project.sql_in|PASS|Time: 605 milliseconds TEST CASE RESULT|Module: validation|cross_validation.sql_in|PASS|Time: 215 milliseconds [eespino@cdw build]$ -- Ed Espino Apache MADlib