-- Error handling of fbsql.fit_glm(). Every failure must surface a clear, -- 'fit_glm:'-prefixed message (PL/R wraps it in DETAIL). CREATE TEMP TABLE t_err ( y double precision, x double precision ); INSERT INTO t_err VALUES (1.0, 0.1), (2.0, 0.9), (3.1, 2.1), (3.9, 3.0); -- Unsupported family. SELECT * FROM fbsql.fit_glm( relation => $$ SELECT y, x FROM t_err $$, formula => 'y ~ x', family => 'poisson'); ERROR: R interpreter expression evaluation error DETAIL: Error: fit_glm: family 'poisson' is not supported yet (supported families: gaussian, binomial) CONTEXT: In PL/R function fit_glm -- Formula string that does not parse as an R formula. SELECT * FROM fbsql.fit_glm( relation => $$ SELECT y, x FROM t_err $$, formula => 'not a formula'); ERROR: R interpreter expression evaluation error DETAIL: Error: fit_glm: invalid formula: 'not a formula' CONTEXT: In PL/R function fit_glm -- Formula referencing a column the relation does not provide. SELECT * FROM fbsql.fit_glm( relation => $$ SELECT y, x FROM t_err $$, formula => 'y ~ missing_col'); ERROR: R interpreter expression evaluation error DETAIL: Error: fit_glm: formula references column(s) not in relation: missing_col (available: y, x) CONTEXT: In PL/R function fit_glm -- Broken relation SQL. SELECT * FROM fbsql.fit_glm( relation => $$ SELECT * FROM no_such_table $$, formula => 'y ~ x'); ERROR: R interpreter expression evaluation error DETAIL: Error in pg.spi.exec(relation) : error in SQL statement : relation "no_such_table" does not exist CONTEXT: In R support function pg.spi.exec In PL/R function fit_glm -- Relation that yields zero rows. SELECT * FROM fbsql.fit_glm( relation => $$ SELECT y, x FROM t_err WHERE false $$, formula => 'y ~ x'); ERROR: R interpreter expression evaluation error DETAIL: Error: fit_glm: relation returned no rows CONTEXT: In PL/R function fit_glm -- R-level fitting error (binomial response outside [0, 1]) keeps R's -- informative message, prefixed with the function name. SELECT * FROM fbsql.fit_glm( relation => $$ SELECT y, x FROM t_err $$, formula => 'y ~ x', family => 'binomial'); ERROR: R interpreter expression evaluation error DETAIL: Error: fit_glm: y values must be 0 <= y <= 1 CONTEXT: In PL/R function fit_glm