Skip to content
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

Merged
merged 1 commit into from
Jan 14, 2021

Conversation

postamar
Copy link
Contributor

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.

@cockroach-teamcity
Copy link
Member

This change is Reviewable

@postamar postamar marked this pull request as ready for review January 12, 2021 22:41
@postamar postamar requested a review from a team January 12, 2021 22:41
Copy link
Contributor

@ajwerner ajwerner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

Reviewed 2 of 2 files at r1.
Reviewable status: :shipit: 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.
Copy link
Contributor Author

@postamar postamar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: :shipit: 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.

@postamar
Copy link
Contributor Author

CI failed due to an unrelated test failure for which there is already an issue open: #58989

@postamar
Copy link
Contributor Author

bors r+

@craig
Copy link
Contributor

craig bot commented Jan 14, 2021

Build succeeded:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

sql, jobs: schema change jobs are erroneously queued for in-txn schema changes
3 participants