Index: views/revisioning.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/revisioning/views/revisioning.views.inc,v
retrieving revision 1.3
diff -u -p -r1.3 revisioning.views.inc
--- views/revisioning.views.inc	22 Mar 2010 01:20:34 -0000	1.3
+++ views/revisioning.views.inc	20 Nov 2010 15:35:40 -0000
@@ -72,6 +72,14 @@ function revisioning_views_data_alter(&$
     )
     // Cannot support sort as 'state' cannot be expressed as ORDER BY clause
   );
+  $data['node_revisions']['latest'] = array(
+    'title' => t('Latest'),
+    'help' => t('Include only the most recent revisions.'),
+    'filter' => array(
+      'handler' => 'revisioning_handler_filter_revision_latest',
+    )
+    // Cannot support sort as 'latest' cannot be expressed as ORDER BY clause
+  );
 }
 
 /**
@@ -93,6 +101,7 @@ function revisioning_views_handlers() {
       'revisioning_handler_filter_node_number_of_revisions' => array('parent' => 'views_handler_filter_numeric'),
       'revisioning_handler_filter_node_revision_moderation' => array('parent' => 'views_handler_filter_in_operator'),
       'revisioning_handler_filter_revision_state' => array('parent' => 'views_handler_filter_in_operator'),
+      'revisioning_handler_filter_revision_latest' => array('parent' => 'views_handler_filter'),
     )
   );
-}
\ No newline at end of file
+}
Index: views/revisioning_handler_filter_revision_latest.inc
===================================================================
RCS file: views/revisioning_handler_filter_revision_latest.inc
diff -N views/revisioning_handler_filter_revision_latest.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views/revisioning_handler_filter_revision_latest.inc	20 Nov 2010 15:35:41 -0000
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @file
+ *   Views filter override to filter on revision recency, i.e. whether this is the latest revision of a node or not.
+ */
+
+class revisioning_handler_filter_revision_latest extends views_handler_filter {
+
+  /**
+   * Override the query, in particular the WHERE clause.
+   */
+  function query() {
+    $revisions_table = $this->ensure_my_table();
+    $node_table = $this->query->ensure_table('node');
+    
+    $max_vid_subquery = "SELECT MAX(vid) FROM {".$revisions_table ."} WHERE nid=$node_table.nid";
+    // The subquery selects the maximal revision ID (vid) for a given node ID (nid).
+    // This is guaranteed to be the latest revision, because vids are assigned chronologically.
+    
+    $where_clause = "$revisions_table.vid=($max_vid_subquery)";
+    $this->query->add_where($this->options['group'], $where_clause);
+  }
+}
