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

rowexec: close all ValueGenerators in the project set processor #86964

Merged
merged 1 commit into from
Aug 26, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -412,3 +412,18 @@ CREATE TABLE sc2.t (
rowid INT8 NOT VISIBLE NOT NULL DEFAULT unique_rowid(),
CONSTRAINT t_pkey PRIMARY KEY (rowid ASC)
);

# Regression test for not closing the ValueGenerators when they are recreated
# multiple times (#85418).
statement ok
CREATE DATABASE db_85418_1;
USE db_85418_1;
CREATE TABLE t_85418_1();
CREATE TABLE t_85418_2();
CREATE DATABASE db_85418_2;
USE db_85418_2;
CREATE TABLE t_85418_1();
CREATE TABLE t_85418_2();
CREATE TABLE dbs_85418(db STRING);
INSERT INTO dbs_85418 VALUES ('db_85418_1'), ('db_85418_2');
SELECT crdb_internal.show_create_all_tables(db) FROM dbs_85418;
7 changes: 7 additions & 0 deletions pkg/sql/rowexec/project_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,13 @@ func (ps *projectSetProcessor) nextInputRow() (
if fn := ps.funcs[i]; fn != nil {
// A set-generating function. Prepare its ValueGenerator.

// First, make sure to close its ValueGenerator from the previous
// input row (if it exists).
if ps.gens[i] != nil {
ps.gens[i].Close(ps.Ctx)
ps.gens[i] = nil
}

// Set ExprHelper.row so that we can use it as an IndexedVarContainer.
ps.exprHelpers[i].Row = row

Expand Down