[erlang-questions] Why QLC join query failed on transformed table in mnesia?

devdoer bird <>
Fri Aug 8 16:36:40 CEST 2008


HI:

I have two tables :"user" and "product", I found the join query  failed when
one table is been transformed by function "mensia:transform_table".

 Here is the record defination:
-record(user,{uuid,name,version}).
-record(user2,{uuid,name}).
-record(product,{uuid,name,price,user}).

The user table is first defined as the record "user", then is transformed by
mensia:transform_table to  the record "user2",after the transformation ,the
join query on user table and  product table failed and report badrecord
exception.

The related code lists as below.

 1.Here is the record defination:

-record(user,{uuid,name,version}).
-record(user2,{uuid,name}).
-record(product,{uuid,name,price,user}).

----------------------------------------------------------
2.here is the transform code:

upgrade_fun(X)->
    #user2{
        uuid=X#user.uuid,
        name=X#user.name
    }.

upgrade_table()->

    mnesia:transform_table(user,fun
upgrade_fun/1,record_info(fields,user2),user2),

--------------------------------------------------------------------
3. here is my QLC query code:

q_product_6()->
    do(qlc:q([{Y#user.uuid,Y#user.name
}||X<-mnesia:table(product),X#product.price<5,Y<-mnesia:table(
user),Y#user.uuid =< 6])).
do(Q) ->
    F = fun() -> qlc:e(Q) end,
   Val= mnesia:transaction(F),

    Val.


The join query throw the exception:

** exception exit: {aborted,{{badrecord,user},
                             [{product,'-q_product_6/0-fun-1-',8},
                              {qlc,collect,1},
                              {qlc,eval,2},
                              {mnesia_tm,apply_fun,3},
                              {mnesia_tm,execute_transaction,5},
                              {mnesia,wrap_trans,6},
                              {erl_eval,do_apply,5},
                              {shell,exprs,6}]}}
     in function  mnesia:wrap_trans/6

Any guys know why? It seems be a bug in QLC.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20080808/4aeffe27/attachment.html>


More information about the erlang-questions mailing list