Skip to content

Commit 48bf15f

Browse files
authored
Merge pull request github#12291 from github/calumgrant/slow-predicates
Slow predicates query
2 parents 11ea8e0 + d48938d commit 48bf15f

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

ql/ql/src/codeql_ql/StructuredLogs.qll

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,8 @@ module KindPredicatesLog {
241241

242242
AppearsAs getAppearsAs() { result = this.getObject("appearsAs") }
243243

244+
int getMillis() { result = this.getNumber("millis") }
245+
244246
predicate hasCompletionTime(
245247
int year, string month, int day, int hours, int minute, int second, int millisecond
246248
) {
@@ -261,6 +263,12 @@ module KindPredicatesLog {
261263
float getCompletionTime() { result = stringToTimestamp(this.getCompletionTimeString()) }
262264

263265
float getResultSize() { result = this.getFloat("resultSize") }
266+
267+
override string toString() {
268+
if exists(this.getPredicateName())
269+
then result = this.getPredicateName()
270+
else result = "<Summary event>"
271+
}
264272
}
265273

266274
class SentinelEmpty extends SummaryEvent {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* Shows a list of the "slow" predicates by wallclock time.
3+
*/
4+
5+
import ql
6+
import codeql_ql.StructuredLogs
7+
8+
int predicateRank(KindPredicatesLog::SummaryEvent evt) {
9+
evt =
10+
rank[result](KindPredicatesLog::SummaryEvent y, int m | m = y.getMillis() | y order by m desc)
11+
}
12+
13+
from KindPredicatesLog::SummaryEvent evt
14+
where predicateRank(evt) < 50
15+
select evt, evt.getMillis() as time order by time desc

0 commit comments

Comments
 (0)