Hello!
When evaluating intoduction tutorial I found a bug in
erlydb_mnesia.erl preventing from using order_by.
Here's the example result of invoking entry:find_with({order_by, {id, desc}}) :
erlydb_mnesia:204 ["In q with: ",
{select,'*',
{from,entry},
{where,undefined},
{order_by,{id,desc}}}]
erlydb_mnesia:539 ["Unhandled extras: ",{order_by,{id,desc}}]
Below is the quick fix - patch against revision 245.
Regards,
Wojtek
Sun May 18 22:50:28 CEST 2008 Wojciech Kaczmarek <[EMAIL PROTECTED]>
* fixed mnesia order_by impl
diff -rN -u old-current/src/erlydb/erlydb_mnesia.erl
new-current/src/erlydb/erlydb_mnesia.erl
--- old-current/src/erlydb/erlydb_mnesia.erl 2008-05-18
22:50:47.000000000 +0200
+++ new-current/src/erlydb/erlydb_mnesia.erl 2008-05-18
22:50:47.000000000 +0200
@@ -508,11 +508,12 @@
extras([], QHDesc) ->
QHDesc;
-extras({order_by, Field}, #qhdesc{metadata = QLCData} = QHDesc) when
is_atom(Field) ->
+extras({order_by, {Field, Order}}, #qhdesc{metadata = QLCData} =
QHDesc) when is_atom(Field) ->
QHDesc#qhdesc{postqh =
fun(QH, QHOptions) ->
[Table | _Rest] = dict:fetch(tables, QLCData),
- qlc:keysort(dict:fetch({index,Table,Field}, QLCData), QH,
QHOptions)
+ SortOptions = [{order, translate_order(Order)} | QHOptions],
+ qlc:keysort(dict:fetch({index,Table,Field}, QLCData), QH,
SortOptions)
end};
extras({limit, Limit}, QHDesc) ->
QHDesc#qhdesc{evalfun =
@@ -539,6 +540,8 @@
?L(["Unhandled extras: ", Extras]),
exit("Unhandled extras").
+translate_order(asc) -> ascending;
+translate_order(desc) -> descending.
postqh(QueryHandle, _QHOptions) ->
QueryHandle.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"erlyweb" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/erlyweb?hl=en
-~----------~----~----~----~------~----~------~--~---