diff --git a/lib/chirp-workflow/core/src/db/pg_nats.rs b/lib/chirp-workflow/core/src/db/pg_nats.rs index 4620bf3157..390b958e65 100644 --- a/lib/chirp-workflow/core/src/db/pg_nats.rs +++ b/lib/chirp-workflow/core/src/db/pg_nats.rs @@ -951,7 +951,8 @@ impl Database for DatabasePgNats { SET forgotten = TRUE WHERE workflow_id = $1 AND - loop_location = $2 + loop_location = $2 AND + forgotten = FALSE RETURNING 1 ), forget_signal_events AS ( @@ -959,7 +960,8 @@ impl Database for DatabasePgNats { SET forgotten = TRUE WHERE workflow_id = $1 AND - loop_location = $2 + loop_location = $2 AND + forgotten = FALSE RETURNING 1 ), forget_sub_workflow_events AS ( @@ -967,7 +969,8 @@ impl Database for DatabasePgNats { SET forgotten = TRUE WHERE workflow_id = $1 AND - loop_location = $2 + loop_location = $2 AND + forgotten = FALSE RETURNING 1 ), forget_signal_send_events AS ( @@ -975,7 +978,8 @@ impl Database for DatabasePgNats { SET forgotten = TRUE WHERE workflow_id = $1 AND - loop_location = $2 + loop_location = $2 AND + forgotten = FALSE RETURNING 1 ), forget_message_send_events AS ( @@ -983,7 +987,8 @@ impl Database for DatabasePgNats { SET forgotten = TRUE WHERE workflow_id = $1 AND - loop_location = $2 + loop_location = $2 AND + forgotten = FALSE RETURNING 1 ), forget_loop_events AS ( @@ -991,7 +996,8 @@ impl Database for DatabasePgNats { SET forgotten = TRUE WHERE workflow_id = $1 AND - loop_location = $2 + loop_location = $2 AND + forgotten = FALSE RETURNING 1 ) SELECT 1 diff --git a/svc/pkg/workflow/db/workflow/migrations/20240809230231_fix_loop_idx.down.sql b/svc/pkg/workflow/db/workflow/migrations/20240809230231_fix_loop_idx.down.sql new file mode 100644 index 0000000000..e69de29bb2 diff --git a/svc/pkg/workflow/db/workflow/migrations/20240809230231_fix_loop_idx.up.sql b/svc/pkg/workflow/db/workflow/migrations/20240809230231_fix_loop_idx.up.sql new file mode 100644 index 0000000000..ecb3949457 --- /dev/null +++ b/svc/pkg/workflow/db/workflow/migrations/20240809230231_fix_loop_idx.up.sql @@ -0,0 +1,30 @@ +CREATE INDEX idx_workflow_loop_events_loop_location2 +ON workflow_loop_events (workflow_id, loop_location) +WHERE forgotten = FALSE; + +CREATE INDEX idx_workflow_activity_events_loop_location2 +ON workflow_activity_events (workflow_id, loop_location) +WHERE forgotten = FALSE; + +CREATE INDEX idx_workflow_signal_events_loop_location2 +ON workflow_signal_events (workflow_id, loop_location) +WHERE forgotten = FALSE; + +CREATE INDEX idx_workflow_sub_workflow_events_loop_location2 +ON workflow_sub_workflow_events (workflow_id, loop_location) +WHERE forgotten = FALSE; + +CREATE INDEX idx_workflow_signal_send_events_loop_location2 +ON workflow_signal_send_events (workflow_id, loop_location) +WHERE forgotten = FALSE; + +CREATE INDEX idx_workflow_message_send_events_loop_location2 +ON workflow_message_send_events (workflow_id, loop_location) +WHERE forgotten = FALSE; + +DROP INDEX workflow_loop_events@idx_workflow_loop_events_loop_location; +DROP INDEX workflow_activity_events@idx_workflow_activity_events_loop_location; +DROP INDEX workflow_signal_events@idx_workflow_signal_events_loop_location; +DROP INDEX workflow_sub_workflow_events@idx_workflow_sub_workflow_events_loop_location; +DROP INDEX workflow_signal_send_events@idx_workflow_signal_send_events_loop_location; +DROP INDEX workflow_message_send_events@idx_workflow_message_send_events_loop_location;