this is **exactly** what i was looking for.  thanks everyone!



On Wed, May 20, 2015 at 8:55 PM, Stefan O'Rear <stefan@gudtech.com> wrote:
On Wed, May 20, 2015 at 2:05 PM, Anthony Damico <ajdamico@gmail.com> wrote:
> i'm just curious/thinking out loud if anything can be done to prevent
> division by zero from de-railing a huge query?  unlike most error messages,
> division by zero destroys a query *after* the bulk of the processing occurs
> - so you sit and wait and the command still fails, despite all the time and
> cpu revving.
>
> i assume it's impossible to check for this event *before* a query gets
> executed, but would it be possible to have a database option that
> essentially replaces zeroes with NULLs in the circumstances that this does
> occur so the query still returns the rest of the table?  or would doing that
> be sloppy database management?
>
> so maybe this fails
>
> select 1 / 0 as x;
>
> but you change some setting and it auto-coerces everything under a division
> operator to
>
> select 1 / ( CASE WHEN value = 0 THEN NULL ELSE value END ) as x;
>
> that way you lose x but maybe not other columns?

If you don't mind unportable code, use the div_noerror function
instead of default division:

sql>create function div_noerror(l double, r double) returns double
external name calc.div_noerror;
operation successful (223.503ms)
sql>select div_noerror(1, 0) as x;
+--------------------------+
| x                        |
+==========================+
|                     null |
+--------------------------+
1 tuple (132.864ms)
_______________________________________________
users-list mailing list
users-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/users-list