Index: wp-includes/post-template.php
===================================================================
--- wp-includes/post-template.php	(revision 11216)
+++ wp-includes/post-template.php	(working copy)
@@ -723,9 +723,27 @@
 /**
  * Retrieve or display list of pages in list (li) format.
  *
+ * The arguments are listed below.
+ *
+ * <ul> 
+ * <li><strong>depth</strong> - Data Configuration: Depth Quantifier</li>
+ * <li><strong>show_date</strong> -  Output Configuration: Show Date Flag</li>
+ * <li><strong>date_format</strong> - Output Configuration: Date Format String, defaults to the Blogs configuration</li>
+ * <li><strong>child_of</strong> - Data Configuration: Child Flag and Parent Identifier, defaults to 0</li>
+ * <li><strong>exclude</strong> - Data Configruation: Exclude List, defaults to an empty list ('')</li>
+ * <li><strong>title_li</strong> - Output Configuration: List Title, defaults to the translation of 'Pages'.</li>
+ * <li><strong>echo</strong> - Output Configuration: Echo Flag: Wether or not to echo the list, default is 1</li>
+ * <li><strong>authors</strong> - Data Configuration: Query Pages authored by the authors in list of author IDs, defaults to ''</li>
+ * <li><strong>sort_column</strong> - Data Configuration: Sort Column Identifier, default is 'menu_order, post_title'</li>
+ * <li><strong>link_before</strong> - Output Configuration: HTML Fragment before Link, defaults to ''</li>
+ * <li><strong>link_after</strong> - Output Configuration: HTML Fragment after Link, defaults to ''</li>
+ * <li><strong>fields</strong> - Data Configuration: Fields of Pages to query, defaults to '*', suggestion is 'ID, post_title, post_parent'</li>
+ * </ul>
+ *
  * @since 1.5.0
+ * @see http://codex.wordpress.org/Template_Tags/wp_list_pages
  *
- * @param array|string $args Optional. Override default arguments.
+ * @param array|string|object $args Optional. Override default arguments.
  * @return string HTML content, if not displaying.
  */
 function wp_list_pages($args = '') {
@@ -735,7 +753,8 @@
 		'child_of' => 0, 'exclude' => '',
 		'title_li' => __('Pages'), 'echo' => 1,
 		'authors' => '', 'sort_column' => 'menu_order, post_title',
-		'link_before' => '', 'link_after' => ''
+		'link_before' => '', 'link_after' => '',
+		'fields' => '*'	
 	);
 
 	$r = wp_parse_args( $args, $defaults );
@@ -744,11 +763,8 @@
 	$output = '';
 	$current_page = 0;
 
-	// sanitize, mostly to keep spaces out
-	$r['exclude'] = preg_replace('/[^0-9,]/', '', $r['exclude']);
-
 	// Allow plugins to filter an array of excluded pages
-	$r['exclude'] = implode(',', apply_filters('wp_list_pages_excludes', explode(',', $r['exclude'])));
+	$r['exclude'] = implode(',', apply_filters('wp_list_pages_excludes', array_map('intval', explode(',', $r['exclude']))));
 
 	// Query pages.
 	$r['hierarchical'] = 0;
@@ -769,7 +785,7 @@
 
 	$output = apply_filters('wp_list_pages', $output);
 
-	if ( $r['echo'] )
+	if ( $echo )
 		echo $output;
 	else
 		return $output;
Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 11216)
+++ wp-includes/post.php	(working copy)
@@ -2149,7 +2149,7 @@
  *
  * The defaults that can be overridden are the following: 'child_of',
  * 'sort_order', 'sort_column', 'post_title', 'hierarchical', 'exclude',
- * 'include', 'meta_key', 'meta_value', and 'authors'.
+ * 'include', 'meta_key', 'meta_value', 'authors', 'parent', 'exclude_tree' and 'fields'.
  *
  * @since 1.5.0
  * @uses $wpdb
@@ -2165,19 +2165,19 @@
 		'sort_column' => 'post_title', 'hierarchical' => 1,
 		'exclude' => '', 'include' => '',
 		'meta_key' => '', 'meta_value' => '',
-		'authors' => '', 'parent' => -1, 'exclude_tree' => ''
+		'authors' => '', 'parent' => -1, 'exclude_tree' => '',
+		'fields' => '*'
 	);
 
 	$r = wp_parse_args( $args, $defaults );
 	extract( $r, EXTR_SKIP );
 
 	$cache = array();
-	$key = md5( serialize( compact(array_keys($defaults)) ) );
-	if ( $cache = wp_cache_get( 'get_pages', 'posts' ) ) {
-		if ( is_array($cache) && isset( $cache[ $key ] ) ) {
-			$pages = apply_filters('get_pages', $cache[ $key ], $r );
-			return $pages;
-		}
+	if ( '*' == $fields ) {		
+		$key = md5( serialize( compact(array_keys($defaults)) ) );
+		if ( $cache = wp_cache_get( 'get_pages', 'posts' ) ) 
+			if ( is_array($cache) && isset( $cache[ $key ] ) )
+				return apply_filters('get_pages', $cache[ $key ], $r );
 	}
 
 	if ( !is_array($cache) )
@@ -2244,7 +2244,7 @@
 				$author_query = " AND ($author_query)";
 		}
 	}
-
+	
 	$join = '';
 	$where = "$exclusions $inclusions ";
 	if ( ! empty( $meta_key ) || ! empty( $meta_value ) ) {
@@ -2263,7 +2263,7 @@
 	if ( $parent >= 0 )
 		$where .= $wpdb->prepare(' AND post_parent = %d ', $parent);
 
-	$query = "SELECT * FROM $wpdb->posts $join WHERE (post_type = 'page' AND post_status = 'publish') $where ";
+	$query = "SELECT $fields FROM $wpdb->posts $join WHERE (post_type = 'page' AND post_status = 'publish') $where ";
 	$query .= $author_query;
 	$query .= " ORDER BY " . $sort_column . " " . $sort_order ;
 
@@ -2296,8 +2296,10 @@
 		}
 	}
 
-	$cache[ $key ] = $pages;
-	wp_cache_set( 'get_pages', $cache, 'posts' );
+	if ( '*' == $fields ) {
+		$cache[ $key ] = $pages;
+		wp_cache_set( 'get_pages', $cache, 'posts' );
+	}
 
 	$pages = apply_filters('get_pages', $pages, $r);
 
