dirty mnesia function

Francesco Cesarini <>
Tue Sep 24 01:03:59 CEST 2002


Hi Roberto,

you are running your match_object function from the shell. That means 
that the shell will format the result for you as it sees fit. Thus, as 
is happening in your second example, if there are many records, instead 
of printing them all out, it prints out the leading elements and 
replaces all the others with |...

Try binding your result to a variable and print it out. For example

 > RecordList = mnesia:dirty_match_object(piuTable, 
{piuTable,'_','_','_','_','_','_','_','_','_','_','_','_','_'}).
 > io:format("~p~n",[RecordList]).

Because you are using the tuple representation or records, I am assuming 
your retrieving the list of records from the shell is for pure test 
reasons. In that case, as mnesia tables are built on ets tables, you can 
instead use
 > RecordList = ets:tab2list(piuTable).

 You have to still assign it to a variable and print it out using 
io:format, but avoiding the underscores,  are not using the tuple 
representation of records, with less chances of making mistakes.

Good Luck (More like good night over here :-),
Francesco
--
http://www.erlang-consulting.com

Roberto Portugal (CEC) wrote:

> Hi,
>
> We are trying to get all records from a mnesia's table.
> "dirty_match_object" function is used to this purpose:
>
>    mnesia:dirty_match_object(piuTable, 
> {piuTable,'_','_','_','_','_','_','_','_','_','_','_','_','_'}).
>
> However some records are not valid when content is returned.
> The following is a valid record returned:
>
>         {piuTable,{1,2,2,1},
>           2,
>           "SC",
>           1,
>           5,
>           2,
>           "ROJ_238_007/1",
>           "R7A/B",
>           "T220089350",
>           "SCB_20G",
>           2,
>           2,
>           [1]}.
>        
> But in the next case, record information is not valid:
>
>         {piuTable,{1,19,19,2},
>           5,
>           "CP-IO",
>           1,
>           5,
>           2,
>           "ROJ_237_051/1",
>           "R9A",
>           "T220110020"|...}.
>
> some fields are replaced with "|...".
>
> How we can to get all records in a rigth form througth this function?
>
> Thanks in advanced.
>
> Roberto
>
>
> Roberto Portugal
> System Integrator
>
> Regional Competence Center
> Ericsson Chile, S.A.
> Av. Vitacura 2808, Las Condes, Santiago, Chile
> Telf.: +56 2 372 53 95
> Fax:  +56 2 372 50 57
> E-mail: 
> http://www.ericsson.com
>





More information about the erlang-questions mailing list