re-uploading work

This commit is contained in:
2026-02-04 17:46:30 -06:00
commit 3b14c65998
1388 changed files with 381262 additions and 0 deletions

View File

@@ -0,0 +1,97 @@
-- Migration: Consolidate workflow_task_execution into execution table
-- Description: Adds workflow_task JSONB column to execution table and migrates data from workflow_task_execution
-- Version: 20260127212500
-- ============================================================================
-- STEP 1: Add workflow_task column to execution table
-- ============================================================================
ALTER TABLE execution ADD COLUMN workflow_task JSONB;
COMMENT ON COLUMN execution.workflow_task IS 'Workflow task metadata (only populated for workflow task executions)';
-- ============================================================================
-- STEP 2: Migrate existing workflow_task_execution data to execution.workflow_task
-- ============================================================================
-- Update execution records with workflow task metadata
UPDATE execution e
SET workflow_task = jsonb_build_object(
'workflow_execution', wte.workflow_execution,
'task_name', wte.task_name,
'task_index', wte.task_index,
'task_batch', wte.task_batch,
'retry_count', wte.retry_count,
'max_retries', wte.max_retries,
'next_retry_at', to_char(wte.next_retry_at, 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"'),
'timeout_seconds', wte.timeout_seconds,
'timed_out', wte.timed_out,
'duration_ms', wte.duration_ms,
'started_at', to_char(wte.started_at, 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"'),
'completed_at', to_char(wte.completed_at, 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"')
)
FROM workflow_task_execution wte
WHERE e.id = wte.execution;
-- ============================================================================
-- STEP 3: Create indexes for efficient JSONB queries
-- ============================================================================
-- General GIN index for JSONB operations
CREATE INDEX idx_execution_workflow_task_gin ON execution USING GIN (workflow_task)
WHERE workflow_task IS NOT NULL;
-- Specific index for workflow_execution lookups (most common query)
CREATE INDEX idx_execution_workflow_execution ON execution ((workflow_task->>'workflow_execution'))
WHERE workflow_task IS NOT NULL;
-- Index for task name lookups
CREATE INDEX idx_execution_task_name ON execution ((workflow_task->>'task_name'))
WHERE workflow_task IS NOT NULL;
-- Index for retry queries (using text comparison to avoid IMMUTABLE issue)
CREATE INDEX idx_execution_pending_retries ON execution ((workflow_task->>'next_retry_at'))
WHERE workflow_task IS NOT NULL
AND workflow_task->>'next_retry_at' IS NOT NULL;
-- Index for timeout queries
CREATE INDEX idx_execution_timed_out ON execution ((workflow_task->>'timed_out'))
WHERE workflow_task IS NOT NULL;
-- Index for workflow task status queries (combined with execution status)
CREATE INDEX idx_execution_workflow_status ON execution (status, (workflow_task->>'workflow_execution'))
WHERE workflow_task IS NOT NULL;
-- ============================================================================
-- STEP 4: Drop the workflow_task_execution table
-- ============================================================================
-- Drop the old table (this will cascade delete any dependent objects)
DROP TABLE IF EXISTS workflow_task_execution CASCADE;
-- ============================================================================
-- STEP 5: Update comments and documentation
-- ============================================================================
COMMENT ON INDEX idx_execution_workflow_task_gin IS 'GIN index for general JSONB queries on workflow_task';
COMMENT ON INDEX idx_execution_workflow_execution IS 'Index for finding tasks by workflow execution ID';
COMMENT ON INDEX idx_execution_task_name IS 'Index for finding tasks by name';
COMMENT ON INDEX idx_execution_pending_retries IS 'Index for finding tasks pending retry';
COMMENT ON INDEX idx_execution_timed_out IS 'Index for finding timed out tasks';
COMMENT ON INDEX idx_execution_workflow_status IS 'Index for workflow task status queries';
-- ============================================================================
-- VERIFICATION QUERIES (for manual testing)
-- ============================================================================
-- Verify migration: Count workflow task executions
-- SELECT COUNT(*) FROM execution WHERE workflow_task IS NOT NULL;
-- Verify indexes exist
-- SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'execution' AND indexname LIKE '%workflow%';
-- Test workflow task queries
-- SELECT * FROM execution WHERE workflow_task->>'workflow_execution' = '1';
-- SELECT * FROM execution WHERE workflow_task->>'task_name' = 'example_task';
-- SELECT * FROM execution WHERE (workflow_task->>'timed_out')::boolean = true;