Skip to content

Commit 5eda1bc

Browse files
authored
Fix task queries + add indexes. (dart-lang#9474)
1 parent f371bfc commit 5eda1bc

8 files changed

Lines changed: 57 additions & 5 deletions

File tree

app/lib/database/migration.g.dart

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/lib/database/schema.g.dart

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/lib/database/schema.task.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
part of 'schema.dart';
66

77
@PrimaryKey(['runtimeVersion', 'package'])
8+
@Index(name: 'currentFinished', fields: ['runtimeVersion', 'finished'])
9+
@Index(name: 'currentPendingAt', fields: ['runtimeVersion', 'pendingAt'])
10+
@Index(
11+
name: 'currentDependencyChanged',
12+
fields: ['runtimeVersion', 'lastDependencyChanged'],
13+
)
814
abstract final class Task extends Row {
915
/// Runtime version this [Task] belongs to.
1016
String get runtimeVersion;
@@ -32,6 +38,7 @@ abstract final class Task extends Row {
3238
onDelete: .cascade,
3339
onUpdate: .cascade,
3440
)
41+
@Index(name: 'currentDependency', fields: ['runtimeVersion', 'dependency'])
3542
abstract final class TaskDependency extends Row {
3643
String get runtimeVersion;
3744
String get package;

app/lib/task/backend.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,11 @@ class TaskBackend {
303303
// list tasks with dependency updated >= since
304304
final list = await _database.withRetry(
305305
(db) => db.tasks
306-
.where((t) => t.lastDependencyChanged >= since.asExpr)
306+
.where(
307+
(t) =>
308+
t.runtimeVersion.equalsValue(runtimeVersion) &
309+
(t.lastDependencyChanged >= since.asExpr),
310+
)
307311
.select((t) => (t.package, t.lastDependencyChanged))
308312
.stream()
309313
.map((e) => (name: e.$1, updated: e.$2))
@@ -1347,7 +1351,11 @@ extension TaskDatabaseExt on Database<PrimarySchema> {
13471351
DateTime since,
13481352
) {
13491353
return tasks
1350-
.where((task) => task.finished >= since.asExpr)
1354+
.where(
1355+
(task) =>
1356+
task.runtimeVersion.equalsValue(runtimeVersion) &
1357+
(task.finished >= since.asExpr),
1358+
)
13511359
.orderBy((task) => [(task.finished, Order.descending)])
13521360
.select((task) => (task.package, task.finished))
13531361
.stream()
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
-- Create index "task_dependencies_idx_current_dependency" to table: "task_dependencies"
2+
CREATE INDEX "task_dependencies_idx_current_dependency" ON "task_dependencies" ("runtime_version", "dependency");
3+
4+
-- Create index "tasks_idx_current_dependency_changed" to table: "tasks"
5+
CREATE INDEX "tasks_idx_current_dependency_changed" ON "tasks" ("runtime_version", "last_dependency_changed");
6+
7+
-- Create index "tasks_idx_current_finished" to table: "tasks"
8+
CREATE INDEX "tasks_idx_current_finished" ON "tasks" ("runtime_version", "finished");
9+
10+
-- Create index "tasks_idx_current_pending_at" to table: "tasks"
11+
CREATE INDEX "tasks_idx_current_pending_at" ON "tasks" ("runtime_version", "pending_at");

app/migrations/sha256sum.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
edfd3d977ef308147b29a609c48f3913608e4888d073479995bdb8b37a643806 000001_task.sql
2+
2bc197ecebfa5cc1511ec252141e177880e824b4e939e76e2128106a256ab791 000002_task_index.sql

app/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ dependencies:
4444
shelf_router: ^1.1.0
4545
stack_trace: ^1.10.0
4646
stream_transform: ^2.0.0
47-
typed_sql: ^0.1.12
47+
typed_sql: ^0.1.13
4848
watcher: ^1.0.0
4949
yaml: ^3.1.0
5050
# pana version to be pinned

pubspec.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -925,10 +925,10 @@ packages:
925925
dependency: transitive
926926
description:
927927
name: typed_sql
928-
sha256: "5686003f20defaf5dc01b308bdff63837ee6129e450b9ea9fab507db96f40600"
928+
sha256: "9f6cbb8313c35f645da9d593bef78c6e5e225452a5c0e53252840fccf70a4779"
929929
url: "https://pub.dev"
930930
source: hosted
931-
version: "0.1.12"
931+
version: "0.1.13"
932932
ulid:
933933
dependency: transitive
934934
description:

0 commit comments

Comments
 (0)