Index: tests/comment/query.php
===================================================================
--- tests/comment/query.php	(revision 1056)
+++ tests/comment/query.php	(working copy)
@@ -33,4 +33,40 @@
 
 		$this->assertEquals( $comment_id, $result->comment_ID );
 	}
+
+	/**
+	 * @ticket 21003
+	 */
+	function test_orderby_meta() {
+		$comment_id = $this->factory->comment->create();
+		$comment_id2 = $this->factory->comment->create();
+		$comment_id3 = $this->factory->comment->create();
+
+		add_comment_meta( $comment_id, 'key', 'value1', true );
+		add_comment_meta( $comment_id, 'key1', 'value1', true );
+		add_comment_meta( $comment_id, 'key3', 'value3', true );
+		add_comment_meta( $comment_id2, 'key', 'value2', true );
+		add_comment_meta( $comment_id2, 'key2', 'value2', true );
+		add_comment_meta( $comment_id3, 'key3', 'value3', true );
+
+		$comments = get_comments( array( 'meta_key' => 'key', 'orderby' => array( 'meta_value' ) ) );
+		$this->assertEquals( 2, count( $comments ) );
+		$this->assertEquals( $comment_id2, $comments[0]->comment_ID );
+		$this->assertEquals( $comment_id, $comments[1]->comment_ID );
+
+		$comments = get_comments( array( 'meta_key' => 'key', 'orderby' => array( 'meta_value' ), 'order' => 'ASC' ) );
+		$this->assertEquals( 2, count( $comments ) );
+		$this->assertEquals( $comment_id, $comments[0]->comment_ID );
+		$this->assertEquals( $comment_id2, $comments[1]->comment_ID );
+
+		$comments = get_comments( array( 'meta_value' => 'value3', 'orderby' => array( 'meta_value' ) ) );
+		$this->assertEquals( 2, count( $comments ) );
+		$this->assertEquals( $comment_id, $comments[0]->comment_ID );
+		$this->assertEquals( $comment_id3, $comments[1]->comment_ID );
+
+		// value1 is present on two different keys for $comment_id yet we should get only one instance
+		// of that comment in the results
+		$comments = get_comments( array( 'meta_value' => 'value1', 'orderby' => array( 'meta_value' ) ) );
+		$this->assertEquals( 1, count( $comments ) );
+        }
 }
