This is an automated email from the ASF dual-hosted git repository.

khannaekta pushed a commit to branch madlib2-master
in repository https://gitbox.apache.org/repos/asf/madlib.git


The following commit(s) were added to refs/heads/madlib2-master by this push:
     new 3f6500d3 PMML: Add more namespec tests
3f6500d3 is described below

commit 3f6500d32169ffeef058f3cf3cc3a3a9362e8fd8
Author: Nikhil Kak <[email protected]>
AuthorDate: Fri Mar 1 17:11:03 2024 -0800

    PMML: Add more namespec tests
    
    JIRA: MADLIB-1517
    
    This commit adds a bit more coverage to the pmml tests by testing the pmml
    function with an ARRAY namespec instead of just text/string namespec 
formulaes
---
 src/ports/postgres/modules/pmml/test/pmml.setup.sql_in |  2 ++
 .../modules/pmml/test/pmml_glm_with_name_spec.sql_in   | 18 ++++++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/src/ports/postgres/modules/pmml/test/pmml.setup.sql_in 
b/src/ports/postgres/modules/pmml/test/pmml.setup.sql_in
index 6688ef5f..39d5e233 100644
--- a/src/ports/postgres/modules/pmml/test/pmml.setup.sql_in
+++ b/src/ports/postgres/modules/pmml/test/pmml.setup.sql_in
@@ -76,6 +76,8 @@ CREATE OR REPLACE FUNCTION test_pmml_output(test_table TEXT, 
madlib_train_table
     #get madlib pmml output string
     if name_spec == '':
         pmml_query = "SELECT pmml('{}')".format(madlib_train_table)
+    elif 'array' in name_spec.lower():
+        pmml_query = "SELECT pmml('{}',{})".format(madlib_train_table, 
name_spec)
     else:
         pmml_query = "SELECT pmml('{}','{}')".format(madlib_train_table, 
name_spec)
     madlib_pmml_str = plpy.execute(pmml_query)[0]["pmml"]
diff --git 
a/src/ports/postgres/modules/pmml/test/pmml_glm_with_name_spec.sql_in 
b/src/ports/postgres/modules/pmml/test/pmml_glm_with_name_spec.sql_in
index 79d9f0f6..9d001beb 100644
--- a/src/ports/postgres/modules/pmml/test/pmml_glm_with_name_spec.sql_in
+++ b/src/ports/postgres/modules/pmml/test/pmml_glm_with_name_spec.sql_in
@@ -48,6 +48,9 @@ SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binom
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','foo1+foo2+foo3+foo4+foo5+foo6+foo7');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','{bar,foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','{foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','ARRAY[''bar'', 
''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','ARRAY[''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
+
 -- Even if we use explicit "1" in the formula, we will get the correct xml 
although it won't use the formula provided
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','bar ~ 1+foo1+foo2+foo3+foo4+foo5+foo6+foo7');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','1+foo1+foo2+foo3+foo4+foo5+foo6+foo7');
@@ -61,6 +64,9 @@ SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binom
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_rings < 10', '', 'foo1+foo2+foo3+foo4+foo5+foo6+foo7');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_bar', '', '{bar,foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_rings < 10', '', '{foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_bar', '','ARRAY[''bar'', 
''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_rings < 10', 
'','ARRAY[''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
+
 -- Even if we use explicit "1" in the formula, we will get the correct xml 
although it won't use the formula provided
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_rings < 10', '', 'bar ~ 1+foo1+foo2+foo3+foo4+foo5+foo6+foo7');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_rings < 10', '', '1+foo1+foo2+foo3+foo4+foo5+foo6+foo7');
@@ -83,6 +89,8 @@ SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binom
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','foo1+foo2+foo3+foo4+foo5+foo6+foo7');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','{bar, foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','{foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','ARRAY[''bar'', 
''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'','ARRAY[''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
 
 -- Test output category
 DROP TABLE IF EXISTS glm_predict_binomial_logit_out; CREATE TABLE 
glm_predict_binomial_logit_out as SELECT id, glm_predict_binomial(coef, 
ARRAY[length, diameter, height, whole, shucked, viscera, shell], 'logit')
@@ -91,6 +99,8 @@ SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binom
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_rings < 10', '', 'foo1+foo2+foo3+foo4+foo5+foo6+foo7');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_bar', '', '{bar, foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_rings < 10', '', '{foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_bar', '','ARRAY[''bar'', 
''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_rings < 10', 
'','ARRAY[''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
 
 
 ---------------------------- with grouping 
-----------------------------------------
@@ -110,6 +120,8 @@ SELECT test_pmml_output('abalone_test_for_pmml', 
'glm_model', 'glm_predict_binom
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','foo1+foo2+foo3+foo4+foo5+foo6+foo7');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','{bar, foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','{foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','ARRAY[''bar'', 
''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','ARRAY[''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
 
 -- Test output category
 DROP TABLE IF EXISTS glm_predict_binomial_logit_out; CREATE TABLE 
glm_predict_binomial_logit_out as SELECT id, glm_model.sex, 
glm_predict_binomial(coef, ARRAY[1, length, diameter, height, whole, shucked, 
viscera, shell], 'logit')
@@ -118,6 +130,8 @@ SELECT test_pmml_output('abalone_test_for_pmml', 
'glm_model', 'glm_predict_binom
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 'predicted_id > 
2000', 'sex', 'foo1+foo2+foo3+foo4+foo5+foo6+foo7');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_bar', 'sex', '{bar, foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
 SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 'predicted_id > 
2000', 'sex', '{foo1,foo2,foo3,foo4,foo5,foo6,foo7}');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 'predicted_id > 
2000', 'sex', 
'ARRAY[''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
+SELECT test_pmml_output('abalone_test_for_pmml', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 
'predicted_bar', 'sex', 'ARRAY[''bar'', 
''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'']');
 
 
 ----------------------- with grouping and incorrect feature length in name 
spec -------------------------
@@ -140,12 +154,14 @@ SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out'
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','foo1+foo2+foo3+foo4+foo5+foo6');
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','{foo1,foo2,foo3,foo4,foo5,foo6}');
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','{bar,foo1,foo2,foo3,foo4,foo5,foo6,foo7,foo8}');
+SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','ARRAY[''bar'', 
''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'',''foo8'']');
 
 DROP TABLE IF EXISTS glm_predict_binomial_logit_out; CREATE TABLE 
glm_predict_binomial_logit_out as SELECT id, glm_model.sex, 
glm_predict_binomial(coef, ARRAY[1, length, diameter, height, whole, shucked, 
viscera, shell], 'logit')
 FROM glm_model, abalone WHERE abalone.sex=glm_model.sex;
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 'predicted_id > 
2000', 'sex','foo1+foo2+foo3+foo4+foo5+foo6');
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 'predicted_id > 
2000', 'sex','{foo1,foo2,foo3,foo4,foo5,foo6}');
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 'predicted_id > 
2000', 'sex','{bar,foo1,foo2,foo3,foo4,foo5,foo6,foo7,foo8}');
+SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 'predicted_id > 
2000', 'sex','ARRAY[''bar'', 
''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'',''foo8'']');
 
 DROP TABLE IF EXISTS glm_model, glm_model_summary;
 SELECT glm(
@@ -163,10 +179,12 @@ SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out'
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','foo1+foo2+foo3+foo4+foo5+foo6');
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','{foo1,foo2,foo3,foo4,foo5,foo6}');
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','{bar,foo1,foo2,foo3,foo4,foo5,foo6,foo7,foo8}');
+SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict', 'probability_true', 
'sex','ARRAY[''bar'', 
''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'',''foo8'']');
 
 DROP TABLE IF EXISTS glm_predict_binomial_logit_out; CREATE TABLE 
glm_predict_binomial_logit_out as SELECT id, glm_model.sex, 
glm_predict_binomial(coef, ARRAY[length, diameter, height, whole, shucked, 
viscera, shell], 'logit')
 FROM glm_model, abalone WHERE abalone.sex=glm_model.sex;
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 'predicted_id > 
2000', 'sex','foo1+foo2+foo3+foo4+foo5+foo6');
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 'predicted_id > 
2000', 'sex','{foo1,foo2,foo3,foo4,foo5,foo6}');
 SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 'predicted_id > 
2000', 'sex','{bar,foo1,foo2,foo3,foo4,foo5,foo6,foo7,foo8}');
+SELECT test_pmml_output('abalone', 'glm_model', 
'glm_predict_binomial_logit_out', 'id', 'glm_predict_binomial', 'predicted_id > 
2000', 'sex','ARRAY[''bar'', 
''foo1'',''foo2'',''foo3'',''foo4'',''foo5'',''foo6'',''foo7'',''foo8'']');
 

Reply via email to