mnesia query for list membership?

Bjorn Turesson <>
Wed Dec 16 17:56:14 CET 1998


On Wed, 16 Dec 1998, Edwin Young wrote:

> Hello,
> 
> I tried the following, but I got an impenetrable error message (which I
> don't have with me: sorry).
> Any suggestions?
> 
> -record(document, {id
>             title}).

You do have a comma between id and title, don't you?

I tried your code (exact example attached) and it works
like a charm on the version I got here (which is very similar 
to the open source that is released).

The shell output is as follows:

Erlang (JAM) emulator version 4.7.3.4
 
Eshell V4.7.3.4  (abort with ^G)
1> c(tst).
{ok,tst}
2> tst:s().
{atomic,ok}
3> tst:add(23,hello).
{atomic,ok}
4> tst:docs(2).
{atomic,[hello]}


			// bjoern


--
Mouse moved last hour: 41.84, today: 364.28, this week: 627.84 (meters)
-------------- next part --------------
-module(tst).

-compile(export_all).
-compile({parse_transform,mnemosyne}).

-record(document, {id,
		   title}).

-export ([s/0, add/2,
	  docs/1]).

s () ->
    mnesia:start (),
    application:start(mnemosyne),
    mnesia:create_table (document, 
		 [{attributes, record_info(fields, document)}]).

add (Id, Title) ->
    Fun = fun () ->
		  mnesia:write (#document{id=Id, title=Title})
	  end,
    mnesia:transaction (Fun).


docs(Term) ->
    Fun = fun() ->
		  Q = query [ D.title || D <- table(document),
					 lists:member(1,[1]) ]
		      end,
		  mnemosyne:eval(Q)
	  end,
    mnesia:transaction(Fun).




More information about the erlang-questions mailing list