Make it possible to pass functional expression to :order-by in select.
[clsql.git] / sql / oodml.lisp
index 9bd2ab66dea8f5db6b74f2665ea31092b2ebe899..6283ee771ef10ff6df899310d2fe960f9ae07bba 100644 (file)
@@ -949,7 +949,6 @@ maximum of MAX-LEN instances updated in each query."
                                    (listify order-by)))
            (join-where nil))
 
-
       ;;(format t "sclasses: ~W~%ijc: ~W~%tables: ~W~%" sclasses immediate-join-classes tables)
 
       (dolist (ob order-by-slots)
@@ -1094,17 +1093,18 @@ as elements of a list."
             ;; one selected table. This is required so FIND-ALL won't duplicate
             ;; the field
             (when (and order-by (= 1 (length target-args)))
-              (let ((table-name  (view-table (find-class (car target-args))))
+              (let ((table-name (view-table (find-class (car target-args))))
                     (order-by-list (copy-seq (listify order-by))))
 
                 (loop for i from 0 below (length order-by-list)
-                      do (etypecase (nth i order-by-list)
+                   do (etypecase (nth i order-by-list)
                            (sql-ident-attribute
                             (unless (slot-value (nth i order-by-list) 'qualifier)
                               (setf (slot-value (nth i order-by-list) 'qualifier) table-name)))
                            (cons
                             (unless (slot-value (car (nth i order-by-list)) 'qualifier)
-                              (setf (slot-value (car (nth i order-by-list)) 'qualifier) table-name)))))
+                              (setf (slot-value (car (nth i order-by-list)) 'qualifier) table-name)))
+                           (clsql-sys:sql-function-exp)))
                 (setf (getf qualifier-args :order-by) order-by-list)))
 
             (cond