mnesia table: mnemosyne query

Dan Gudmundsson dgud@REDACTED
Thu Oct 28 08:09:41 CEST 1999


Both 'Tv', 'Mnemosyne' don't work if the table name differ from record name.
The handling of 'record name' was a new feature in mnesia in the open
source release and the other apps wasn't fixed to handle it. 

Mnemosyne should handle record names in the new open source release.

Coming soon.. :-) 

/Dan


Emmanuelle Bernard writes:
 > Hi!
 > 
 > I've the following code:
 > 
 > in the file: projet.hrl
 > 
 > -record (domaine, { nom, ip , type }).
 > 
 > in the file: projet.erl
 > 
 > -module(projet).
 > -copyright('Copyright (c) 1991-97 Ericsson Telecom AB').
 > -export([ nouv_table/1 , insert_ordi/2  ,  essai/0]).
 > 
 > -include("projet.hrl").
 > -include_lib("mnemosyne/include/mnemosyne.hrl").
 > 
 > nouv_table(Nom_Table) ->
 >  mnesia:create_table(Nom_Table,[{record_name,domaine},{disc_copies,
 > [node()]}, {attributes, record_info(fields, domaine)}]).
 > 
 > 
 > insert_ordi(Tuple,Where) ->
 >  Fun = fun() ->
 >   mnesia:write(Where,Tuple,write)
 >  end,
 >  mnesia:transaction(Fun).
 > 
 > 
 > essai() ->
 > Handle=
 >  query
 >    [U.ip || U <- table(domaine),
 >     U.nom = 4]
 >  end,
 > Answer =
 >  mnesia:transaction(
 >  fun() ->
 >   mnemosyne:eval(Handle)
 >  end)
 > .
 > 
 > 
 > 
 > In the shell:
 > 
 > 
 > 21> c(projet).
 > {ok,projet}
 > 
 > 22> projet:nouv_table(ecole).
 > {atomic,ok}
 > 
 > 23> projet:insert_ordi({domaine,4,5,6},ecole).
 > {atomic,ok}
 > 
 > 24>tv:start().
 > <0.129.0>
 > 
 > 25>projet:essai().
 > {aborted,{no_exists,domaine}}
 > 
 > // if I replace by "U <- table(ecole)" in the projet.erl file
 > it doesn't want to compile:
 > 
 >     26> c(projet).
 >     ./projet.erl:112: the record "ecole" is undefined
 >     ./projet.erl:124: function essai/0 undefined
 >     error
 > 
 > 
 > How can I ask it to search in the table "ecole" (that has a "domaine"
 > record) with the mnemosyne query?
 > Moreover, when I check my tables with tv, they are empty, even if I've
 > written anything in.
 > 
 > Can anyone help me?
 > thanks
 > 
 > Emmanuelle
 > 




More information about the erlang-questions mailing list