-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
sql, jobs: stop queuing schema change jobs for in-txn schema changes #58888
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed 2 of 2 files at r1.
Reviewable status: complete! 1 of 0 LGTMs obtained (waiting on @postamar)
pkg/sql/logictest/testdata/logic_test/alter_table, line 1508 at r1 (raw file):
query I SELECT count(*) FROM [SHOW JOBS] WHERE job_type = 'SCHEMA CHANGE' AND description LIKE 'ALTER TABLE test.public.t45985 %'
This is potentially brittle because these strings might change. What about:
SELECT count(descriptor_id)
FROM (
SELECT json_array_elements_text(
crdb_internal.pb_to_json(
'cockroach.sql.jobs.jobspb.Payload',
payload
)->'descriptorIds'
)::INT8 AS descriptor_id
FROM system.jobs
)
WHERE descriptor_id = ('test.public.t45985'::REGCLASS)::INT8;
Creating a table and changing its schema within a transaction would cause a schema change job to be queued. Such jobs are not necessary and don't do anything. This patch prevents them from being queued in the first place. Fixes cockroachdb#45985. Release note (sql change): Creating a table and changing its schema within a transaction no longer schedules a schema change job.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewable status: complete! 0 of 0 LGTMs obtained (and 1 stale) (waiting on @ajwerner)
pkg/sql/logictest/testdata/logic_test/alter_table, line 1508 at r1 (raw file):
Previously, ajwerner wrote…
This is potentially brittle because these strings might change. What about:
SELECT count(descriptor_id) FROM ( SELECT json_array_elements_text( crdb_internal.pb_to_json( 'cockroach.sql.jobs.jobspb.Payload', payload )->'descriptorIds' )::INT8 AS descriptor_id FROM system.jobs ) WHERE descriptor_id = ('test.public.t45985'::REGCLASS)::INT8;
Done.
CI failed due to an unrelated test failure for which there is already an issue open: #58989 |
bors r+ |
Build succeeded: |
Creating a table and changing its schema within a transaction would
cause a schema change job to be queued. Such jobs are not necessary and
don't do anything. This patch prevents them from being queued in the
first place.
Fixes #45985.
Release note (sql change): Creating a table and changing its schema
within a transaction no longer schedules a schema change job.