fix(2meet-data-optimizer): do not recreate a deleted entity's flat row
- Deleting a post / user / term / comment drops its flat row in the adapter delete hook, then WordPress deletes each meta row; sync_from_native upserted NULL for each and brought the row back (512 orphan rows on dev36). With no native value it now only clears the column on an existing row - Verify: tests/live/run.php resync (25/25, entity deletes in dual_write and shadow_read leave no flat row); mut.php T8 flat_row NO-ROW; integration 516 - PR: PR-057b
This commit is contained in:
@@ -110,3 +110,29 @@ foreach ( array( 'dual_write', 'shadow_read' ) as $tmdo_live_mode ) {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
TMDO_Live::test(
|
||||
'deleting an entity leaves no flat row behind (dual_write and shadow_read)',
|
||||
static function () {
|
||||
require_once ABSPATH . 'wp-admin/includes/user.php';
|
||||
$deleters = array(
|
||||
'user' => static fn( int $id ) => wp_delete_user( $id ),
|
||||
'post' => static fn( int $id ) => wp_delete_post( $id, true ),
|
||||
'term' => static fn( int $id ) => wp_delete_term( $id, 'hp_listing_category' ),
|
||||
'comment' => static fn( int $id ) => wp_delete_comment( $id, true ),
|
||||
);
|
||||
foreach ( array( 'dual_write', 'shadow_read' ) as $mode ) {
|
||||
foreach ( tmdo_live_resync_cases() as $label => $case ) {
|
||||
list( $type, $key, $make, $pt ) = $case;
|
||||
TMDO_Live_Fixtures::field( $type, $key, $pt );
|
||||
TMDO_Live_Fixtures::use_modes( array( $type => $mode ) );
|
||||
$id = $make();
|
||||
update_metadata( $type, $id, $key, '41' );
|
||||
|
||||
$deleters[ $type ]( $id );
|
||||
|
||||
tmdo_live_assert_same( 'NO-ROW', TMDO_Live_Fixtures::flat( $type, $id, $key, $pt ), "{$mode} {$label}: flat row after delete" );
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user