DROP TYPE IF EXISTS MADLIB_SCHEMA.model_rec CASCADE;
DROP TABLE IF EXISTS MADLIB_SCHEMA.sv_train_data CASCADE;
DROP TABLE IF EXISTS MADLIB_SCHEMA.sv_results CASCADE;
DROP TABLE IF EXISTS MADLIB_SCHEMA.sv_model CASCADE;
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.kernel(x float8[][], idx int, y float8[]);

DROP FUNCTION IF EXISTS MADLIB_SCHEMA.kernel(x float8[], y float8[]) ;
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.dot_kernel(x float8[], y float8[]);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.polynomial_kernel(x float8[], y float8[], degree int);
-- DROP FUNCTION IF EXISTS MADLIB_SCHEMA.svs_predict(svs MADLIB_SCHEMA.model_rec, ind float8[]); 
-- DROP FUNCTION IF EXISTS MADLIB_SCHEMA.online_sv_reg_update(svs MADLIB_SCHEMA.model_rec, ind float8[], label float8);

DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.online_sv_reg_agg(float8[], float8);

-- DROP FUNCTION IF EXISTS MADLIB_SCHEMA.online_sv_cl_update(svs MADLIB_SCHEMA.model_rec, ind float8[], label float8); 

DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.online_sv_cl_agg(float8[], float8);

-- DROP FUNCTION IF EXISTS MADLIB_SCHEMA.online_sv_nd_update(svs MADLIB_SCHEMA.model_rec, ind float8[]);

DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.online_sv_nd_agg(float8[]);

DROP FUNCTION IF EXISTS MADLIB_SCHEMA.transform_rec(modelname text, ind_dim int, weights float8[], individuals float8[][]);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.storeModel(modelname TEXT);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.storeModel(modelname TEXT, n INT);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.svs_predict(modelname text, ind float8[], OUT ret float8);

DROP TYPE IF EXISTS MADLIB_SCHEMA.model_pr CASCADE;

DROP FUNCTION IF EXISTS MADLIB_SCHEMA.svs_predict_combo(modelname text, n int, ind float8[]);

DROP FUNCTION IF EXISTS MADLIB_SCHEMA.sv_regression(text,text,bool);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.sv_classification(text,text,bool);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.sv_novelty_detection(text,text,bool);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.sv_predict(text,text,text,text,bool);

DROP FUNCTION IF EXISTS MADLIB_SCHEMA.randomInd(d INT);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.randomInd2(d INT);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.generateRegData(num int, dim int);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.targetRegFunc(ind float8[]);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.generateClData(num int, dim int);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.targetClFunc(ind float8[]);
DROP FUNCTION IF EXISTS MADLIB_SCHEMA.generateNdData(num int, dim int);



