Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 18495)
+++ wp-includes/post.php	(working copy)
@@ -1497,22 +1497,7 @@
  * @return bool Whether the post meta key was deleted from the database
  */
 function delete_post_meta_by_key($post_meta_key) {
-	if ( !$post_meta_key )
-		return false;
-
-	global $wpdb;
-	$post_ids = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT post_id FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key));
-	if ( $post_ids ) {
-		$postmetaids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key ) );
-		$in = implode( ',', array_fill(1, count($postmetaids), '%d'));
-		do_action( 'delete_postmeta', $postmetaids );
-		$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id IN($in)", $postmetaids ));
-		do_action( 'deleted_postmeta', $postmetaids );
-		foreach ( $post_ids as $post_id )
-			wp_cache_delete($post_id, 'post_meta');
-		return true;
-	}
-	return false;
+	return delete_metadata( 'post', null, $post_meta_key, '', true );
 }
 
 /**
Index: wp-includes/meta.php
===================================================================
--- wp-includes/meta.php	(revision 18495)
+++ wp-includes/meta.php	(working copy)
@@ -149,6 +149,9 @@
 	}
 
 	do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value );
+	
+	if ( 'post' == $meta_type )
+		do_action( 'update_postmeta', $meta_id, $object_id, $meta_key, $meta_value );	
 
 	$wpdb->update( $table, $data, $where );
 
@@ -158,6 +161,9 @@
 		clean_user_cache($object_id);
 
 	do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value );
+	
+	if ( 'post' == $meta_type )
+		do_action( 'updated_postmeta', $meta_id, $object_id, $meta_key, $meta_value );		
 
 	return true;
 }
@@ -218,9 +224,12 @@
 		return false;
 
 	do_action( "delete_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value );
-
+	
+	if ( 'post' == $meta_type )
+		do_action( 'delete_postmeta', $meta_ids );
+	
 	$query = "DELETE FROM $table WHERE $id_column IN( " . implode( ',', $meta_ids ) . " )";
-
+	
 	$count = $wpdb->query($query);
 
 	if ( !$count )
@@ -232,6 +241,9 @@
 		clean_user_cache($object_id);
 
 	do_action( "deleted_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value );
+	
+	if ( 'post' == $meta_type )
+		do_action( 'deleted_postmeta', $meta_ids );
 
 	return true;
 }
@@ -381,6 +393,9 @@
 		$where[$id_column] = $meta_id;
 
 		do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value );
+
+		if ( 'post' == $meta_type )
+			do_action( 'update_postmeta', $meta_id, $object_id, $meta_key, $meta_value );
 		
 		// Run the update query, all fields in $data are %s, $where is a %d.
 		$result = (bool) $wpdb->update( $table, $data, $where, '%s', '%d' );
@@ -394,6 +409,9 @@
 
 		do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value );
 
+		if ( 'post' == $meta_type )
+			do_action( 'updated_postmeta', $meta_id, $object_id, $meta_key, $meta_value );
+
 		return $result;
 	}
 	
@@ -436,6 +454,9 @@
 
 		do_action( "delete_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value );
 
+		if ( 'post' == $meta_type )
+			do_action( 'delete_postmeta', $object_id );
+
 		// Run the query, will return true if deleted, false otherwise
 		$result = (bool) $wpdb->query( $wpdb->prepare( "DELETE FROM $table WHERE $id_column = %d LIMIT 1;", $meta_id ) );
 
@@ -448,6 +469,9 @@
 
 		do_action( "deleted_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value );
 
+		if ( 'post' == $meta_type )
+			do_action( 'delete_postmeta', $object_id );
+
 		return $result;
 
 	}
Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 18495)
+++ wp-admin/includes/post.php	(working copy)
@@ -701,17 +701,7 @@
  * @return unknown
  */
 function delete_meta( $mid ) {
-	global $wpdb;
-	$mid = (int) $mid;
-
-	$post_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = %d", $mid) );
-
-	do_action( 'delete_postmeta', $mid );
-	wp_cache_delete($post_id, 'post_meta');
-	$rval = $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id = %d", $mid) );
-	do_action( 'deleted_postmeta', $mid );
-
-	return $rval;
+	return delete_metadata_by_mid( 'post' , $mid );
 }
 
 /**
@@ -742,15 +732,7 @@
  * @return unknown
  */
 function get_post_meta_by_id( $mid ) {
-	global $wpdb;
-	$mid = (int) $mid;
-
-	$meta = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE meta_id = %d", $mid) );
-	if ( empty($meta) )
-		return false;
-	if ( is_serialized_string( $meta->meta_value ) )
-		$meta->meta_value = maybe_unserialize( $meta->meta_value );
-	return $meta;
+	return get_metadata_by_mid( 'post', $mid );
 }
 
 /**
@@ -782,27 +764,10 @@
  * @return unknown
  */
 function update_meta( $meta_id, $meta_key, $meta_value ) {
-	global $wpdb;
+	$meta_key = stripslashes( $meta_key );
+	$meta_value = stripslashes_deep( $meta_value );
 
-	$meta_key = stripslashes($meta_key);
-
-	if ( '' === trim( $meta_value ) )
-		return false;
-
-	$post_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = %d", $meta_id) );
-
-	$meta_value = maybe_serialize( stripslashes_deep( $meta_value ) );
-	$meta_id = (int) $meta_id;
-
-	$data  = compact( 'meta_key', 'meta_value' );
-	$where = compact( 'meta_id' );
-
-	do_action( 'update_postmeta', $meta_id, $post_id, $meta_key, $meta_value );
-	$rval = $wpdb->update( $wpdb->postmeta, $data, $where );
-	wp_cache_delete($post_id, 'post_meta');
-	do_action( 'updated_postmeta', $meta_id, $post_id, $meta_key, $meta_value );
-
-	return $rval;
+	return update_metadata_by_mid( 'post', $meta_id, $meta_value, $meta_key );
 }
 
 //
