Index: apply_for_role.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/apply_for_role/apply_for_role.install,v
retrieving revision 1.6
diff -u -p -r1.6 apply_for_role.install
--- apply_for_role.install	30 Mar 2008 06:42:55 -0000	1.6
+++ apply_for_role.install	2 Aug 2008 17:31:12 -0000
@@ -60,3 +60,17 @@ function apply_for_role_uninstall() {
   variable_del('apply_for_role_multiple');
   variable_del('apply_for_role_register');
 }
+
+/**
+ * Remove any applications that don't have a matching user.
+ */
+function apply_for_role_update_6000() {
+  // There's not a db agnostic way to do this in one query. PostgeSQL doesn't
+  // allow JOINs in a DELETE and old 4.x versions of MySQL don't support
+  // subselects. So we just suck it up and run multipl queries.
+  $result = db_query("SELECT ura.uid FROM {users_roles_apply} ura LEFT JOIN {users} u ON ura.uid = u.uid WHERE u.uid IS NULL");
+  while ($row = db_fetch_object($result)) {
+    $ret[] = update_sql("DELETE FROM {users_roles_apply} WHERE uid = ". (int) $row->uid);
+  }
+  return $ret;
+}
