mnemosyne:string_to_handle pb !

Ulf Wiger <>
Wed Dec 13 12:18:58 CET 2000


I cannot help you with the exact problem, except to say that 
the following construct is _much_ more efficient:

mnesia_transaction(
   fun() ->
      P = mnesia:table_info(jabber_personne, wild_pattern),
      mnesia:match_object(P#jabber_personne{age = 22})
   end).

Basically, mnemosyne should be avoided for all queries, unless
you really need the cursor support, or you have very complex queries.

/Uffe

On Wed, 13 Dec 2000, Lecomte Jean François wrote:

>Hi, 
>
>I do need to build a handle query using a string but when i tried to
>use the mnemosyne string_to_handle it fails !
>
>Following code
>
>    Q =  mnemosyne:string_to_handle( "query [ X || X <- table ( jabber_personne ), X.age=22 ] end. "),
>    mnesia:transaction(fun() -> mnemosyne:eval(Q) end).
>
>gives 
>
>{aborted,{function_clause,[{mnemosyne,setup_query,
>                                      [{'EXIT',
>                                           {function_clause,
>                                               [{erl_parse,
>                                                    normalise,
>                                                    [{call,
>                                                         0,
>                                                         {atom,
>                                                             0|...},
>                                                         [{tuple|...}]}]},
>                                                {erl_parse,normalise_list,1},
>                                                {erl_parse,normalise,1},
>                                                {erl_parse,normalise_list,1},
>                                                {erl_parse,normalise,1},
>                                                {mnemosyne_lc,
>                                                    '-one_lc_to_handle/1-fun-1-',
>                                                    2},
>                                                {lists,foldl,3},
>                                                {mnemosyne_lc,
>                                                    one_lc_to_handle,
>                                                    1}|
>                                                more]}}]},
>                           {mnemosyne,cursor,2},
>                           {mnemosyne,eval,1},
>                           {mnesia_tm,apply_fun,2},
>                           {mnesia_tm,execute_transaction,4},
>                           {erl_eval,expr,3},
>                           {erl_eval,exprs,4},
>                           {shell,eval_loop,2}]}}
>
>
>
>but :
>    query [ X || X <- table ( jabber_personne ), X.age=22 ] end,
>    mnesia:transaction(fun() -> mnemosyne:eval(Q) end).
>
>works fine !
>
>Any idea
>
>

-- 
Ulf Wiger                                    tfn: +46  8 719 81 95
Senior System Architect                      mob: +46 70 519 81 95
Strategic Product & System Management    ATM Multiservice Networks
Data Backbone & Optical Services Division      Ericsson Telecom AB




More information about the erlang-questions mailing list