We have reverted to version 4.1.17 for now due to the flood of messages printed to the debug.log. I’ll copy below the wave messages printed there for a specific timestamp. I’m not sure what is initiating each wave of messages — it’s not every second but every few minutes. Possibly they’re printed to the debug.log each time the plugin is triggered by a visitor clicking a site URL… I don’t know.
[15-May-2026 03:19:55 UTC] WordPress database error Table '░░░░░░.wp░░░_abj404_view_build' doesn't exist for query SET STATEMENT max_statement_time=296 FOR
/* ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/02_insert.sql BEGIN ----- */
/* S2: bulk-load every row from the live redirects table into the build
buffer, with status_for_view, type_for_view (constant-per-status),
final_dest, code, disabled, timestamp, engine, score, and fd_int
(CAST(final_dest AS UNSIGNED)) computed inline. dest_for_view and
published_status start at the column defaults and are filled in
per-type by the next stages.
The shared build buffer holds ALL redirects (both active and trashed,
both redirect statuses and captured statuses). Per-tab status filter,
disabled filter, score-range filter, and search filter are all applied
at READ time against the served view_done table.
Resumable batching: this fragment is invoked once per batch by
stageInsertRedirectsBatched(). 0 is MAX(id) of the build
buffer at batch start (0 on first batch), and 2000 caps how
many rows the batch copies. ORDER BY id ASC is required so MAX(id)
advances strictly, which lets the next batch resume cleanly without
ever inserting duplicates and without needing INSERT IGNORE. / INSERT INTO wp_siddur_abj404_view_build (id, url, status, status_for_view, type, type_for_view, final_dest, code, disabled, timestamp, engine, score, fd_int) SELECT id, url, status, CASE WHEN status = 1 THEN 'Manual' WHEN status = 2 THEN 'Automatic' WHEN status = 6 THEN 'Regex' ELSE 'Unknown' END, type, CASE WHEN type = 4 THEN 'External' WHEN type = 2 THEN 'Category' WHEN type = 3 THEN 'Tag' WHEN type = 5 THEN 'Home' WHEN type = 0 THEN 'Special' ELSE '' END, final_dest, code, disabled, timestamp, engine, score, / fd_int: numeric form of final_dest for the per-type UPDATE-JOINs in
S4 (wp_posts.ID) and S5 (wp_terms.term_id). Non-numeric final_dest
(external URLs, empty for HOME/404-displayed) becomes 0, which
matches the legacy CAST behavior under non-strict sql_mode. The
REGEXP guard avoids strict-mode CAST errors in MySQL 8+ defaults. */
CAST(IF(final_dest REGEXP '^[0-9]+$', final_dest, '0') AS UNSIGNED)
FROM wp_siddur_abj404_redirects
WHERE id > 0
ORDER BY id ASC
LIMIT 2000
/* ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/02_insert.sql END ----- / made by do_action_ref_array('abj404_rebuildViewDone'), WP_Hook->do_action, WP_Hook->apply_filters, abj404_rebuildViewDoneListener, ABJ_404_Solution_DataAccess->rebuildViewDoneInBackground, ABJ_404_Solution_DataAccess->runStagedBuildOnce, ABJ_404_Solution_DataAccess->runTimedViewBuildStage, ABJ_404_Solution_DataAccess->{closure:ABJ_404_Solution_DataAccess_ViewQueriesStagedTrait::runStagedBuildOnce():1300}, ABJ_404_Solution_DataAccess->stageInsertRedirectsBatched, ABJ_404_Solution_DataAccess->runInsertBatch, ABJ_404_Solution_DataAccess->runStagedSqlFile, ABJ_404_Solution_DataAccess->queryAndGetResults [15-May-2026 03:19:55 UTC] WordPress database error Table '░░░░░░.wp░░░_abj404_view_build' doesn't exist for query SET STATEMENT max_statement_time=296 FOR
/ ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/03_index_fd.sql BEGIN ----- */
/* S3: indexes used by the per-type UPDATE-JOINs in S4 (POST), S5 (CAT/TAG),
S6 (HOME), S7 (EXTERNAL), S8 (404 displayed). Composite is added because
MySQL/MariaDB usually pick one index per table reference per join step
(no index merge by default), and every per-type UPDATE combines a
WHERE type = X predicate with a fd_int = ... join key. */
ALTER TABLE wp_siddur_abj404_view_build
ADD INDEX idx_fd_int (fd_int),
ADD INDEX idx_type (type),
ADD INDEX idx_type_fd_int (type, fd_int)
/* ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/03_index_fd.sql END ----- / made by do_action_ref_array('abj404_rebuildViewDone'), WP_Hook->do_action, WP_Hook->apply_filters, abj404_rebuildViewDoneListener, ABJ_404_Solution_DataAccess->rebuildViewDoneInBackground, ABJ_404_Solution_DataAccess->runStagedBuildOnce, ABJ_404_Solution_DataAccess->runNonBatchedStageWithKillStreakEscape, ABJ_404_Solution_DataAccess->runTimedViewBuildStage, ABJ_404_Solution_DataAccess->{closure:ABJ_404_Solution_DataAccess_ViewQueriesStagedTrait::runStagedBuildOnce():1325}, ABJ_404_Solution_DataAccess->stageAddPreJoinIndexes, ABJ_404_Solution_DataAccess->runStagedSqlFileTolerantOfDuplicateKey, ABJ_404_Solution_DataAccess->runStagedSqlFile, ABJ_404_Solution_DataAccess->queryAndGetResults [15-May-2026 03:19:55 UTC] WordPress database error Table '░░░░░░.wp░░░_abj404_view_build' doesn't exist for query SET STATEMENT max_statement_time=296 FOR
/ ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/06_update_home.sql BEGIN ----- */
/* S6: HOME-typed redirects show the site's blogname as their destination.
wp_options.option_name is a UNIQUE index in WP core, so this scalar
subquery reads exactly one row regardless of multisite shape. Missing
blogname yields '' for dest_for_view (acceptable degraded path). */
UPDATE wp_siddur_abj404_view_build
SET
dest_for_view = COALESCE((
SELECT option_value FROM wp_siddur_options
WHERE option_name = 'blogname' LIMIT 1), ''),
published_status = 1
WHERE type = 5
/* ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/06_update_home.sql END ----- / made by do_action_ref_array('abj404_rebuildViewDone'), WP_Hook->do_action, WP_Hook->apply_filters, abj404_rebuildViewDoneListener, ABJ_404_Solution_DataAccess->rebuildViewDoneInBackground, ABJ_404_Solution_DataAccess->runStagedBuildOnce, ABJ_404_Solution_DataAccess->runTimedViewBuildStage, ABJ_404_Solution_DataAccess->{closure:ABJ_404_Solution_DataAccess_ViewQueriesStagedTrait::runStagedBuildOnce():1362}, ABJ_404_Solution_DataAccess->stageUpdateHome, ABJ_404_Solution_DataAccess->runStagedSqlFile, ABJ_404_Solution_DataAccess->queryAndGetResults [15-May-2026 03:19:55 UTC] WordPress database error Table '░░░░░░.wp░░░_abj404_view_build' doesn't exist for query SET STATEMENT max_statement_time=296 FOR
/ ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/07_update_external.sql BEGIN ----- */
/* S7: EXTERNAL redirects display the destination URL itself. */
UPDATE wp_siddur_abj404_view_build
SET
dest_for_view = final_dest,
published_status = 1
WHERE type = 4
/* ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/07_update_external.sql END ----- / made by do_action_ref_array('abj404_rebuildViewDone'), WP_Hook->do_action, WP_Hook->apply_filters, abj404_rebuildViewDoneListener, ABJ_404_Solution_DataAccess->rebuildViewDoneInBackground, ABJ_404_Solution_DataAccess->runStagedBuildOnce, ABJ_404_Solution_DataAccess->runTimedViewBuildStage, ABJ_404_Solution_DataAccess->{closure:ABJ_404_Solution_DataAccess_ViewQueriesStagedTrait::runStagedBuildOnce():1375}, ABJ_404_Solution_DataAccess->stageUpdateExternal, ABJ_404_Solution_DataAccess->runStagedSqlFile, ABJ_404_Solution_DataAccess->queryAndGetResults [15-May-2026 03:19:55 UTC] WordPress database error Table '░░░░░░.wp░░░_abj404_view_build' doesn't exist for query SET STATEMENT max_statement_time=296 FOR
/ ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/08_update_special.sql BEGIN ----- */
/* S8: 404-displayed redirects use a fixed translated label as their
destination. Captured 404 rows also fall in this branch (status =
captured/ignored/later, type = 404_displayed). */
UPDATE wp_siddur_abj404_view_build
SET
dest_for_view = '(404 page)',
published_status = 1
WHERE type = 0
/* ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/08_update_special.sql END ----- / made by do_action_ref_array('abj404_rebuildViewDone'), WP_Hook->do_action, WP_Hook->apply_filters, abj404_rebuildViewDoneListener, ABJ_404_Solution_DataAccess->rebuildViewDoneInBackground, ABJ_404_Solution_DataAccess->runStagedBuildOnce, ABJ_404_Solution_DataAccess->runTimedViewBuildStage, ABJ_404_Solution_DataAccess->{closure:ABJ_404_Solution_DataAccess_ViewQueriesStagedTrait::runStagedBuildOnce():1388}, ABJ_404_Solution_DataAccess->stageUpdateSpecial, ABJ_404_Solution_DataAccess->runStagedSqlFile, ABJ_404_Solution_DataAccess->queryAndGetResults [15-May-2026 03:19:55 UTC] WordPress database error Table '░░░░░░.wp░░░_abj404_view_build' doesn't exist for query SET STATEMENT max_statement_time=296 FOR
/ ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/09_update_hits.sql BEGIN ----- */
/* S9c: LEFT JOIN the indexed S9 temporary aggregate onto the build buffer
so the rendered table can sort/show logshits and last_used. Skipped
entirely (orchestrator never reaches S9) when wp_abj404_logs_hits does
not exist.
The preceding temporary aggregate is defensive: the rebuild pipeline already
produces one row per canonical_url via GROUP BY, but the table schema
does not enforce UNIQUE on requested_url, so a corrupted/partial
rebuild could leave duplicates. SUM/MAX on every group keeps the JOIN
deterministic regardless. */
UPDATE wp_siddur_abj404_view_build t
LEFT JOIN wp_siddur_abj404_view_build_hits h
ON h.requested_url =
(CONVERT(CONCAT('/', TRIM(BOTH '/' FROM t.url)) USING utf8mb4) COLLATE utf8mb4_bin)
SET
t.logshits = h.logshits,
t.logsid = h.logsid,
t.last_used = h.last_used
/* ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/09_update_hits.sql END ----- / made by do_action_ref_array('abj404_rebuildViewDone'), WP_Hook->do_action, WP_Hook->apply_filters, abj404_rebuildViewDoneListener, ABJ_404_Solution_DataAccess->rebuildViewDoneInBackground, ABJ_404_Solution_DataAccess->runStagedBuildOnce, ABJ_404_Solution_DataAccess->runNonBatchedStageWithKillStreakEscape, ABJ_404_Solution_DataAccess->runTimedViewBuildStage, ABJ_404_Solution_DataAccess->{closure:ABJ_404_Solution_DataAccess_ViewQueriesStagedTrait::runStagedBuildOnce():1411}, ABJ_404_Solution_DataAccess->stageUpdateHits, ABJ_404_Solution_DataAccess->runStagedSqlFile, ABJ_404_Solution_DataAccess->queryAndGetResults [15-May-2026 03:19:55 UTC] WordPress database error Table '░░░░░░.wp░░░_abj404_view_build' doesn't exist for query SET STATEMENT max_statement_time=296 FOR
/ ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/10_index_sort.sql BEGIN ----- */
/* S10: indexes used by the read query against the served view_done table.
Read filters: status IN (…), disabled = ?, optional score-range,
optional filterText LIKE composite. Read sorts: published_status ASC
primary, then user-chosen orderby column (url/status/type/code/score/
timestamp/logshits/last_used/final_dest), then url ASC, then id.
The composite indexes lead with published_status because that is the
first ORDER BY key. Trailing column makes the (sort + LIMIT 0,25) shape
plan-friendly: the planner reads directly off the index in order
without filesort. status_disabled covers the WHERE filter. */
ALTER TABLE wp_siddur_abj404_view_build
ADD INDEX idx_status_disabled (status, disabled),
ADD INDEX idx_pub_url (published_status, url(190)),
ADD INDEX idx_pub_status (published_status, status),
ADD INDEX idx_pub_type (published_status, type),
ADD INDEX idx_pub_code (published_status, code),
ADD INDEX idx_pub_score (published_status, score),
ADD INDEX idx_pub_timestamp (published_status, timestamp),
ADD INDEX idx_pub_logshits (published_status, logshits),
ADD INDEX idx_pub_last_used (published_status, last_used),
ADD INDEX idx_pub_dest (published_status, final_dest(190))
/* ------------------ /░░░/░░░/░░░/░░░/wp-content/plugins/404-solution/includes/sql/getRedirectsForViewStaged/10_index_sort.sql END ----- */
made by do_action_ref_array('abj404_rebuildViewDone'), WP_Hook->do_action, WP_Hook->apply_filters, abj404_rebuildViewDoneListener, ABJ_404_Solution_DataAccess->rebuildViewDoneInBackground, ABJ_404_Solution_DataAccess->runStagedBuildOnce, ABJ_404_Solution_DataAccess->runNonBatchedStageWithKillStreakEscape, ABJ_404_Solution_DataAccess->runTimedViewBuildStage, ABJ_404_Solution_DataAccess->{closure:ABJ_404_Solution_DataAccess_ViewQueriesStagedTrait::runStagedBuildOnce():1442}, ABJ_404_Solution_DataAccess->stageAddSortIndexes, ABJ_404_Solution_DataAccess->runStagedSqlFileTolerantOfDuplicateKey, ABJ_404_Solution_DataAccess->runStagedSqlFile, ABJ_404_Solution_DataAccess->queryAndGetResults
[15-May-2026 03:19:55 UTC] WordPress database error Table '░░░░░░.wp░░░_abj404_view_build' doesn't exist for query SET STATEMENT max_statement_time=60 FOR RENAME TABLE wp_siddur_abj404_view_done TO wp_siddur_abj404_view_deleteme, wp_siddur_abj404_view_build TO wp_siddur_abj404_view_done made by do_action_ref_array('abj404_rebuildViewDone'), WP_Hook->do_action, WP_Hook->apply_filters, abj404_rebuildViewDoneListener, ABJ_404_Solution_DataAccess->rebuildViewDoneInBackground, ABJ_404_Solution_DataAccess->runStagedBuildOnce, ABJ_404_Solution_DataAccess->runTimedViewBuildStage, ABJ_404_Solution_DataAccess->{closure:ABJ_404_Solution_DataAccess_ViewQueriesStagedTrait::runStagedBuildOnce():1455}, ABJ_404_Solution_DataAccess->stageRenameSwap, ABJ_404_Solution_DataAccess->queryAndGetResults
-
This reply was modified 2 weeks, 2 days ago by
Aharon.