Skip to content

Commit ccd6fd1

Browse files
committed
jobs,sql: Use new crdb_internal.system_jobs index for SHOW CHANGEFEED JOBs
Epic: None Release note: None
1 parent b3c3440 commit ccd6fd1

File tree

1 file changed

+35
-39
lines changed

1 file changed

+35
-39
lines changed

pkg/sql/delegate/show_changefeed_jobs.go

Lines changed: 35 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -23,59 +23,53 @@ func (d *delegator) delegateShowChangefeedJobs(n *tree.ShowChangefeedJobs) (tree
2323
// Note: changefeed_details may contain sensitive credentials in sink_uri. This information is redacted when marshaling
2424
// to JSON in ChangefeedDetails.MarshalJSONPB.
2525
const (
26-
// In 23.1, we can use the job_type column to filter jobs.
27-
queryTarget23_1 = `
28-
crdb_internal.system_jobs
29-
WHERE job_type = 'CHANGEFEED'
30-
`
3126
baseSelectClause = `
3227
WITH payload AS (
33-
SELECT
34-
id,
28+
SELECT
29+
id,
3530
crdb_internal.pb_to_json(
36-
'cockroach.sql.jobs.jobspb.Payload',
31+
'cockroach.sql.jobs.jobspb.Payload',
3732
payload, false, true
38-
)->'changefeed' AS changefeed_details
39-
FROM
40-
%s
41-
)
42-
SELECT
43-
job_id,
44-
description,
45-
user_name,
46-
status,
47-
running_status,
48-
created,
49-
started,
50-
finished,
51-
modified,
52-
high_water_timestamp,
53-
error,
33+
)->'changefeed' AS changefeed_details
34+
FROM
35+
crdb_internal.system_jobs
36+
WHERE job_type = 'CHANGEFEED'%s
37+
)
38+
SELECT
39+
job_id,
40+
description,
41+
user_name,
42+
status,
43+
running_status,
44+
created,
45+
started,
46+
finished,
47+
modified,
48+
high_water_timestamp,
49+
error,
5450
replace(
55-
changefeed_details->>'sink_uri',
51+
changefeed_details->>'sink_uri',
5652
'\u0026', '&'
57-
) AS sink_uri,
53+
) AS sink_uri,
5854
ARRAY (
59-
SELECT
55+
SELECT
6056
concat(
61-
database_name, '.', schema_name, '.',
57+
database_name, '.', schema_name, '.',
6258
name
63-
)
64-
FROM
65-
crdb_internal.tables
66-
WHERE
59+
)
60+
FROM
61+
crdb_internal.tables
62+
WHERE
6763
table_id = ANY (descriptor_ids)
68-
) AS full_table_names,
64+
) AS full_table_names,
6965
changefeed_details->'opts'->>'topics' AS topics,
70-
COALESCE(changefeed_details->'opts'->>'format','json') AS format
71-
FROM
72-
crdb_internal.jobs
66+
COALESCE(changefeed_details->'opts'->>'format','json') AS format
67+
FROM
68+
crdb_internal.jobs
7369
INNER JOIN payload ON id = job_id`
7470
)
7571

76-
selectClause := fmt.Sprintf(baseSelectClause, queryTarget23_1)
77-
78-
var whereClause, orderbyClause string
72+
var whereClause, innerWhereClause, orderbyClause string
7973
if n.Jobs == nil {
8074
// The query intends to present:
8175
// - first all the running jobs sorted in order of start time,
@@ -87,8 +81,10 @@ FROM
8781
} else {
8882
// Limit the jobs displayed to the select statement in n.Jobs.
8983
whereClause = fmt.Sprintf(`WHERE job_id in (%s)`, n.Jobs.String())
84+
innerWhereClause = fmt.Sprintf(` AND id in (%s)`, n.Jobs.String())
9085
}
9186

87+
selectClause := fmt.Sprintf(baseSelectClause, innerWhereClause)
9288
sqlStmt := fmt.Sprintf("%s %s %s", selectClause, whereClause, orderbyClause)
9389

9490
return d.parse(sqlStmt)

0 commit comments

Comments
 (0)