| --------------------------------------------------------------------------- |
| -- Rules: |
| -- ------ |
| -- 1) Any DB objects should be created w/o schema prefix, |
| -- since this file is executed in a separate schema context. |
| -- 2) There should be no DROP statements in this script, since |
| -- all objects created in the default schema will be cleaned-up outside. |
| --------------------------------------------------------------------------- |
| |
| --------------------------------------------------------------------------- |
| -- Setup: |
| --------------------------------------------------------------------------- |
| CREATE FUNCTION install_test() RETURNS VOID AS $$ |
| declare |
| result TEXT; |
| q FLOAT; |
| begin |
| -- DROP TABLE IF EXISTS T; |
| CREATE TABLE T ( |
| val FLOAT |
| ); |
| |
| INSERT INTO T SELECT i % 100 FROM generate_series(1,1000) i; |
| SELECT INTO q MADLIB_SCHEMA.quantile('T', 'val', .5); |
| |
| SELECT INTO result CASE WHEN( q > 45 and q < 55) THEN 'PASS' ELSE 'FAIL' END; |
| |
| IF result = 'FAIL' THEN |
| RAISE EXCEPTION 'Quantile install check failed: returned=%, expected=[45;55]', q; |
| END IF; |
| |
| SELECT INTO q MADLIB_SCHEMA.quantile_big('T', 'val', .5); |
| |
| SELECT INTO result CASE WHEN( q > 45 and q < 55) THEN 'PASS' ELSE 'FAIL' END; |
| DROP TABLE IF EXISTS T; |
| |
| IF result = 'FAIL' THEN |
| RAISE EXCEPTION 'Quantile_big install check failed: returned=%, expected=[45;55]', q; |
| END IF; |
| |
| RAISE INFO 'Quantile install check passed: returned=%, expected=[45;55]', q; |
| RETURN; |
| |
| end $$ language plpgsql; |
| |
| --------------------------------------------------------------------------- |
| -- Test |
| --------------------------------------------------------------------------- |
| SELECT install_test(); |