ETS retrieve all objects before deleting the table

Fred Youhanaie fly@REDACTED
Tue Jan 18 09:34:35 CET 2022


Hi Frank

For the select/2 and match_object/2 choices you should be able to use a match_spec such as the following:

{ {'$1', '$2'}, [], {'$1'} }

The first element matches your two element ETS object, the third returns the first element only, assuming that's the key.

Cheers,
Fred

On 18/01/2022 07:46, Frank Muller wrote:
> Hi Mikael,
> 
> I  tried them all before posting here.
> 
>  From fastest to slowest:
> 1. select/2 (stable numbers)
> 2. match_object/2
> 3. first/1 + next/2
> 4. tab2list
> 
> Is there a way to only retrieve keys from an ETS table?
> /Frank
> 
> 
>     On Mon, Jan 17, 2022 at 10:02 PM Frank Muller
>     <frank.muller.erl@REDACTED <mailto:frank.muller.erl@REDACTED>> wrote:
>      >
>      > Hey guys,
>      >
>      > Is there a way (documented or not) to retrieve all objects from an ordered_set table?
>      >
>      > I’d like to retrieve all objects before deleting the table.
>      > What’s the most efficient way to do it?
>      >
>      > My table contains roughly ~1 million objects.
>      > Objects are tuple: {non_neg_integer(), pos_integer()}
> 
>     ets:tab2list/1, or possibly ets:match_object/2 or ets:select/2 (I
>     haven't benchmarked them).
>     They are all documented.
> 
>     ($subject mentions ETS, so I assume this is about plain ETS and not
>     Mnesia ram_copies or something like that.)
> 


More information about the erlang-questions mailing list