Skip to content

Commit e88c189

Browse files
committed
fix: add constraints for github_repo_prs table
this enables an "early exit" optimization which will tell the `vtab` library to avoid a full table scan in certain cases when a WHERE and ORDER BY clause are used
1 parent e54da56 commit e88c189

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

extensions/internal/github/repo_prs.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -317,9 +317,15 @@ var prCols = []vtab.Column{
317317
{Name: "changed_files", Type: "INT"},
318318
{Name: "closed", Type: "BOOLEAN"},
319319
{Name: "closed_at", Type: "DATETIME"},
320-
{Name: "comment_count", Type: "INT", OrderBy: vtab.ASC | vtab.DESC},
320+
{Name: "comment_count", Type: "INT", OrderBy: vtab.ASC | vtab.DESC, Filters: []*vtab.ColumnFilter{
321+
{Op: sqlite.INDEX_CONSTRAINT_GT}, {Op: sqlite.INDEX_CONSTRAINT_GE},
322+
{Op: sqlite.INDEX_CONSTRAINT_LT}, {Op: sqlite.INDEX_CONSTRAINT_LE},
323+
}},
321324
{Name: "commit_count", Type: "INT"},
322-
{Name: "created_at", Type: "DATETIME", OrderBy: vtab.ASC | vtab.DESC},
325+
{Name: "created_at", Type: "DATETIME", OrderBy: vtab.ASC | vtab.DESC, Filters: []*vtab.ColumnFilter{
326+
{Op: sqlite.INDEX_CONSTRAINT_GT}, {Op: sqlite.INDEX_CONSTRAINT_GE},
327+
{Op: sqlite.INDEX_CONSTRAINT_LT}, {Op: sqlite.INDEX_CONSTRAINT_LE},
328+
}},
323329
{Name: "created_via_email", Type: "BOOLEAN"},
324330
{Name: "database_id", Type: "INT"},
325331
{Name: "deletions", Type: "INT"},
@@ -342,7 +348,10 @@ var prCols = []vtab.Column{
342348
{Name: "review_decision", Type: "TEXT"},
343349
{Name: "state", Type: "TEXT"},
344350
{Name: "title", Type: "TEXT"},
345-
{Name: "updated_at", Type: "DATETIME", OrderBy: vtab.ASC | vtab.DESC},
351+
{Name: "updated_at", Type: "DATETIME", OrderBy: vtab.ASC | vtab.DESC, Filters: []*vtab.ColumnFilter{
352+
{Op: sqlite.INDEX_CONSTRAINT_GT}, {Op: sqlite.INDEX_CONSTRAINT_GE},
353+
{Op: sqlite.INDEX_CONSTRAINT_LT}, {Op: sqlite.INDEX_CONSTRAINT_LE},
354+
}},
346355
{Name: "url", Type: "TEXT"},
347356
}
348357

0 commit comments

Comments
 (0)