fix(2meet-data-optimizer): rewrite only standalone posts.ID tie-breaks in ORDER BY
- flat_first and the copy route share ties_on_post_id(): a posts.ID term alone (optionally with a direction) reads the flat post_id; posts.ID inside an expression a plugin added (FIELD(), IN) is left alone — inserting a direction there made the SQL invalid and the page empty - PCRE failures return the text given instead of '' (the query kept its shape rather than becoming an empty request) - Found in the 2.4 correctness review (Medium) and security review (Low L1) - Verify: 2 new integration tests (the flat-first one runs the SQL), router suites 69 OK - PR: PR-131
This commit is contained in:
@@ -100,6 +100,13 @@ class PostQueryRouterCopyTest extends TestCase {
|
||||
$this->assertStringEndsWith( 'ORDER BY ' . self::ALIAS . '.`post_date` DESC LIMIT 0, 10', $this->request( '', '' ) );
|
||||
}
|
||||
|
||||
public function test_copy_route_leaves_posts_id_inside_expressions_alone(): void {
|
||||
global $wpdb;
|
||||
$sql = $this->request( '', ', FIELD({posts}.ID,5,9) DESC, ({posts}.ID IN (3,4)) DESC, {posts}.ID DESC' );
|
||||
|
||||
$this->assertStringEndsWith( "`post_date` DESC, FIELD({$wpdb->posts}.ID,5,9) DESC, ({$wpdb->posts}.ID IN (3,4)) DESC, " . self::ALIAS . '.`post_id` DESC LIMIT 0, 10', $sql );
|
||||
}
|
||||
|
||||
public function test_copy_route_keeps_group_by_with_another_join(): void {
|
||||
global $wpdb;
|
||||
$sql = $this->request( " LEFT JOIN wp_term_relationships ON ({$wpdb->posts}.ID = wp_term_relationships.object_id)" );
|
||||
|
||||
Reference in New Issue
Block a user