[erlang-questions] Failure semantics of dets:insert_new vs dets:insert

Alexei Sholik <>
Fri Jun 27 16:26:50 CEST 2014


The signature for dets:insert_new is

    insert(Name, Objects) -> ok | {error, Reason}

However, in my use case, I'm using a hash of the value as the key. So I
thought I'd switch to using insert_new because that might be slightly more
efficient (no need to update stored value).

But the signature for insert_new is

    insert_new(Name, Objects) -> boolean()

In this case, false only indicates that a value for the key is already in
the table. What about failure cases of insert()?

With insert() I have this code

   case dets:insert(table, {Key,Value}) of
      ok  -> ok;
      {error, _}=Other -> Other
   end

With insert_new it turns to just

   dets:insert_new(table, {Key,Value}),
   ok.

IOW, it loses error handling.

Does insert_new() somehow handle any errors that could arise when calling
insert()?

-- 
Best regards
Alexei Sholik
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20140627/67d283b1/attachment.html>


More information about the erlang-questions mailing list