sql: fix data race in ResolvableFunctionReference#45919
Closed
jordanlewis wants to merge 1 commit intocockroachdb:masterfrom
Closed
sql: fix data race in ResolvableFunctionReference#45919jordanlewis wants to merge 1 commit intocockroachdb:masterfrom
jordanlewis wants to merge 1 commit intocockroachdb:masterfrom
Conversation
Member
otan
reviewed
Mar 10, 2020
Contributor
otan
left a comment
There was a problem hiding this comment.
o_o interest set of test failures. Wonder if help relies on resolved fns
Previously, ResolvableFunctionReference was the site of a data race in which statements like SHOW QUERIES, which need to format an AST concurrently with query planning and running, raced with the query planner which as a side effect of planning mutates ResolvableFunctionReference. Ideally, ResolvableFunctionReference would be immutable like a good little AST node. This commit separates ResolvableFunctionReference into two fields, one immutable (the UnresolvedName that it starts with from the parser) and one mutable (the resolved function itself). The formatter only reads the immutable part, so the planner is free to mutate the resolved part as it wishes. Release note: None
b120cd6 to
7316e7a
Compare
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Previously, ResolvableFunctionReference was the site of a data race in
which statements like SHOW QUERIES, which need to format an AST
concurrently with query planning and running, raced with the query
planner which as a side effect of planning mutates
ResolvableFunctionReference. Ideally, ResolvableFunctionReference would
be immutable like a good little AST node.
This commit separates ResolvableFunctionReference into two fields, one
immutable (the UnresolvedName that it starts with from the parser) and
one mutable (the resolved function itself). The formatter only reads the
immutable part, so the planner is free to mutate the resolved part as it
wishes.
Fixes #28033
@RaduBerinde I wonder if we could change things up a bit during planning to get rid of this problem entirely, but I think this is a good fix for now.
Release note: None