Skip to content

sql, jobs: stop queuing schema change jobs for in-txn schema changes#58888

Merged
craig[bot] merged 1 commit intocockroachdb:masterfrom
postamar:45985
Jan 14, 2021
Merged

sql, jobs: stop queuing schema change jobs for in-txn schema changes#58888
craig[bot] merged 1 commit intocockroachdb:masterfrom
postamar:45985

Conversation

@postamar
Copy link
Copy Markdown

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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
Author

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

@postamar
Copy link
Copy Markdown
Author

bors r+

@craig
Copy link
Copy Markdown
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