[erlang-questions] QLC cursor with QLC query using nested QLC.
Daniel Kwiecinski
daniel.kwiecinski@REDACTED
Mon May 11 12:46:02 CEST 2009
Just some additional info:
$ erl -version
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 5.6.5
mnesia-4.4.7
stdlib-1.15.5
2009/5/11 Dan Gudmundsson <dgud@REDACTED>
> That sounds like a bug in mnesia, I will have looka at it.
>
> /Dan
>
> Daniel Kwiecinski wrote:
>
>> Hi,
>>
>> I'm trying to implement kind of SELECT COUNT(B.ID <http://B.ID>) C, A.*
>> FROM A, B WHERE A.ID <http://A.ID> = B.F_ID GROUP BY A.ID <http://A.ID>
>> HAVING C > 0
>>
>> So I need to make join with count on details. The thing is, I want also to
>> involve sorting and limiting with is but it seams qlc cursor don't like my
>> approach. *as_with_bs() *works fine but* **top_as_with_some_bs(10)
>> *returns*:**
>>
>> {aborted,{badarg,[{ets,first,[106291236]},
>> {mnesia_tm,arrange,3},
>> {mnesia_tm,t_commit,1},
>> {mnesia_tm,apply_fun,3},
>> {mnesia_tm,execute_transaction,5},
>> {erl_eval,do_apply,5},
>> {shell,exprs,6},
>> {shell,eval_exprs,6}]}}*
>>
>> QLC with nested QLC queries works fine as long not used with cursors.
>> Could anyone help me with it?
>>
>> Here is what I wrote: (http://gist.github.com/109936)
>>
>> *
>> bs_by_a_id(A_id) ->
>> find(qlc:q([ B || B=#b{f_id=F_id} <- mnesia:table(b), F_id == A_id])).
>>
>> as_with_bs() ->
>> find(
>> qlc:q([ {A,bs_by_a_id(A#a.id <http://a.id>)} || A <- mnesia:table(a)])
>> ).
>>
>> top_as_with_some_bs(Limit) ->
>> top(
>> qlc:q([ {A,bs_by_a_id(A#a.id <http://a.id>)} || A <-
>> mnesia:table(a)]),
>> Limit,
>> fun(A1,A2) -> A1 < A2 end
>> ).
>> % --- utils
>>
>> find(Q) ->
>> F = fun() -> qlc:e(Q) end,
>> transaction(F).
>>
>> % --- it returns top Limit results from query Q ordered by Order sort
>> function
>> top(Q, Limit, Order) ->
>> {atomic, Res} = mnesia:transaction(fun() ->
>> OQ = qlc:sort(Q, [{order,Order}]),
>> QC = qlc:cursor(OQ),
>> Res = qlc:next_answers(QC, Limit),
>> qlc:delete_cursor(QC),
>> Res
>> end),
>> Res.*
>>
>> Regards,
>> Daniel
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://www.erlang.org/mailman/listinfo/erlang-questions
>>
>
--
Kind Regards,
Daniel Kwiecinski
m: 07952028105
e: daniel.kwiecinski@REDACTED
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20090511/cc90d612/attachment.htm>
More information about the erlang-questions
mailing list