@@ -792,28 +792,28 @@ FROM (
792792 WHERE status IN ` + jobs .NonTerminalStatusTupleString + `
793793)
794794WHERE ((pl->'migration')->'clusterVersion') = $1::JSONB`
795+ // postJobInfoQuery avoids the crdb_internal.system_jobs table
796+ // to avoid expensive full scans.
795797 postJobInfoTableQuery = `
796- WITH latestpayload AS (
797- SELECT job_id, value FROM system.job_info AS payload
798- WHERE info_key = 'legacy_payload'
799- ORDER BY written DESC
798+ WITH
799+ running_migration_jobs AS (
800+ SELECT id, status
801+ FROM system.jobs
802+ WHERE status IN ` + jobs .NonTerminalStatusTupleString + `
803+ AND job_type = 'MIGRATION'
804+ ),
805+ payloads AS (
806+ SELECT job_id, value
807+ FROM system.job_info AS payload
808+ WHERE info_key = 'legacy_payload'
809+ AND job_id IN (SELECT id FROM running_migration_jobs)
810+ ORDER BY written DESC
800811)
801- SELECT id, status
802- FROM (
803- SELECT
804- distinct(id),
805- status,
806- crdb_internal.pb_to_json(
807- 'cockroach.sql.jobs.jobspb.Payload',
808- payload.value,
809- false -- emit_defaults
810- ) AS pl
811- FROM system.jobs AS j
812- INNER JOIN latestpayload AS payload ON j.id = payload.job_id
813- WHERE j.status IN ` + jobs .NonTerminalStatusTupleString + `
814- AND j.job_type = 'MIGRATION'
815- )
816- WHERE ((pl->'migration')->'clusterVersion') = $1::JSONB`
812+ SELECT id, status FROM (
813+ SELECT id, status, crdb_internal.pb_to_json('cockroach.sql.jobs.jobspb.Payload', payloads.value, false) AS pl
814+ FROM running_migration_jobs AS j
815+ INNER JOIN payloads ON j.id = payloads.job_id
816+ ) WHERE ((pl->'migration')->'clusterVersion') = $1::JSONB`
817817)
818818
819819func (m * Manager ) getRunningMigrationJob (
0 commit comments