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: fix crash when planning stats collection on virtual col with UDT #123926

Merged
merged 1 commit into from
May 13, 2024

Commits on May 13, 2024

  1. sql: fix crash when planning stats collection on virtual col with UDT

    CREATE STATISTICS executes in multiple layers: the "outer" layer is a
    normal execution of the CREATE STATISTICS statement. During this
    execution, we create, start, and await a CreateStats job. The
    CreateStats job in turn starts an "inner" layer which uses a separate
    internal transaction to plan and execute distributed statistics
    collection.
    
    Within the inner layer, we were using the job's planner (JobExecContext)
    to plan distributed stats collection. This planner has no associated
    transaction. If it weren't for user-defined types, this would be fine,
    but user-defined types must be resolved using a transaction.
    
    We had a hack in place to set the evalCtx.Txn to the internal
    transaction in order to execute collection on normal columns with
    user-defined type. But this hack did not work for virtual computed
    columns with user-defined type, because type-checking their expressions
    uses more facilites of the planner than just the evalCtx. (Specifically
    the schemaResolver.)
    
    So, instead of setting the evalCtx.Txn, we create a new "inner" planner
    that is associated with the internal transaction of the inner
    layer. This works for all columns with user-defined type.
    
    Fixes: cockroachdb#123821
    
    Release note (bug fix): Fix a crash introduced in v23.2.5 and
    v24.1.0-beta.2 that could occur when planning statistics collection on a
    table with a virtual computed column using a user-defined type when the
    newly-introduced cluster setting
    `sql.stats.virtual_computed_columns.enabled` is set to true. (The setting
    was introduced in v23.2.4 and v24.1.0-alpha.1.)
    michae2 committed May 13, 2024
    Configuration menu
    Copy the full SHA
    568c525 View commit details
    Browse the repository at this point in the history