Index: wp-includes/query.php
===================================================================
--- wp-includes/query.php	(revision 36287)
+++ wp-includes/query.php	(working copy)
@@ -3531,28 +3531,38 @@
 		}
 
 		if ( 'ids' == $q['fields'] ) {
-			$this->posts = $wpdb->get_col( $this->request );
-			$this->posts = array_map( 'intval', $this->posts );
-			$this->post_count = count( $this->posts );
-			$this->set_found_posts( $q, $limits );
+			$this->posts = apply_filters( 'fields_the_posts', false, $q['fields'], $this->request, &$this );
 
+			if ( false === $this->posts ) {
+				$this->posts = $wpdb->get_col( $this->request );
+				$this->posts = array_map( 'intval', $this->posts );
+				$this->post_count = count( $this->posts );
+				$this->set_found_posts( $q, $limits );
+			}
+
 			return $this->posts;
 		}
 
 		if ( 'id=>parent' == $q['fields'] ) {
-			$this->posts = $wpdb->get_results( $this->request );
-			$this->post_count = count( $this->posts );
-			$this->set_found_posts( $q, $limits );
+			$this->posts = apply_filters( 'fields_the_posts', false, $q['fields'], $this->request, &$this );
 
-			$r = array();
-			foreach ( $this->posts as $key => $post ) {
-				$this->posts[ $key ]->ID = (int) $post->ID;
-				$this->posts[ $key ]->post_parent = (int) $post->post_parent;
+			if ( false === $this->posts ) {
+				$this->posts = $wpdb->get_results( $this->request );
+				$this->post_count = count( $this->posts );
+				$this->set_found_posts( $q, $limits );
 
-				$r[ (int) $post->ID ] = (int) $post->post_parent;
+				$r = array();
+				foreach ( $this->posts as $key => $post ) {
+					$this->posts[ $key ]->ID = (int) $post->ID;
+					$this->posts[ $key ]->post_parent = (int) $post->post_parent;
+
+					$r[ (int) $post->ID ] = (int) $post->post_parent;
+				}
+
+				$this->posts = $r;
 			}
 
-			return $r;
+			return $this->posts;
 		}
 
 		$split_the_query = ( $old_request == $this->request && "$wpdb->posts.*" == $fields && !empty( $limits ) && $q['posts_per_page'] < 500 );
