# HG changeset patch
# User desjagui@atchoum.iro.umontreal.ca
# Date 1232526433 18000
# Node ID 9b24b4345f52a08de6e3ff38591f9a6a674271e0
# Parent  e242c12eb30d55e64d9fd98d28b21b78c74b9920# Parent  e52a5c3aaca551fd90fe52f86b4cd29667eb621c
merge

diff -r e242c12eb30d -r 9b24b4345f52 pylearn/dbdict/sql.py
--- a/pylearn/dbdict/sql.py	Wed Jan 21 03:23:50 2009 -0500
+++ b/pylearn/dbdict/sql.py	Wed Jan 21 03:27:13 2009 -0500
@@ -86,6 +86,9 @@
         # use dedicated column to retrieve jobs, not the dictionary keyval pair
         # This should be much faster.
         q = q.filter(db._Dict.status==START)
+        q = q.order_by(db._Dict.priority.desc())
+
+        # this doesn't seem to work, hene the string hack below
         q = q.options(eagerload('_attrs')) #hard-coded in api0
 
         #try to reserve a dct
@@ -209,7 +212,7 @@
 # Queue
 ###########
 
-def insert_dict(jobdict, db, force_dup=False, session=None):
+def insert_dict(jobdict, db, force_dup=False, session=None, priority=1.0):
     """Insert a new `job` dictionary into database `db`.
 
     :param force_dup: forces insertion even if an identical dictionary is already in the db
@@ -230,7 +233,7 @@
     if do_insert:
         job[STATUS] = START
         job[HASH] = jobhash
-        job[PRIORITY] = 1.0
+        job[PRIORITY] = priority
         rval = db.insert(job, session=s)
         s.commit()
 
@@ -239,10 +242,10 @@
     return rval
 
 
-def insert_job(experiment_fn, state, db, force_dup=False, session=None):
+def insert_job(experiment_fn, state, db, force_dup=False, session=None, priority=1.0):
     state = copy.copy(state)
     state[EXPERIMENT] = experiment_fn.__module__ + '.' + experiment_fn.__name__
-    return insert_dict(state, db, force_dup=force_dup, session=session)
+    return insert_dict(state, db, force_dup=force_dup, session=session, priority=priority)
 
 
 # TODO: FIXME: WARNING