| 11 Jan 2022 |
@grahamc:nixos.org | but again a LIKE is actually fine if it is a suffix only like, ie: LIKE "/nix/store/xxxx%" | 00:59:37 |
@grahamc:nixos.org | luckily nix store paths are very predictable, so this could be detected | 00:59:55 |
@ius:nltrix.net | Yeah, but you'd want to support searching for yah9mf7x2ycalb28gg9ximh49g0akkrn as well ideally | 01:00:05 |
@grahamc:nixos.org | yeah, exactly | 01:00:21 |
@grahamc:nixos.org | so we could identify it contains a Nix store path's hash and prefix it with /nix/store/ and append a % | 01:00:34 |
@ius:nltrix.net | So which made me wonder, wouldn't it help to extract the hash using a regex, and match using equals, so you can use the HASH index? | 01:00:47 |
@grahamc:nixos.org | my experiments on using a btree index and a like can produce good results is ~10-20ms | 01:01:11 |
@ius:nltrix.net | Then you don't even need a LIKE. Unless there's a great reason for LIKE's on the full path. | 01:01:12 |
@grahamc:nixos.org | a hash index might be good | 01:01:32 |
@ius:nltrix.net | Right | 01:03:10 |
@ius:nltrix.net | Only drawback of scrapping the LIKE is that you can't search the path for a name | 01:03:42 |
@grahamc:nixos.org | right, though the name is part of the nixname field already | 01:06:07 |
@ius:nltrix.net | Yeah, was about to suggest that as well | 01:06:35 |
@grahamc:nixos.org | in general the search could be much faster and better | 01:06:36 |
@grahamc:nixos.org | and without even a massive amount of work | 01:06:48 |
@ius:nltrix.net | I wouldn't mind spending a few hours, but oh boy perl. | 01:07:01 |
@grahamc:nixos.org | :) | 01:07:28 |
@grahamc:nixos.org | I like to see PRs come with a lot of tests, which typically pushes the Perl from yucky Perl to tolerable | 01:07:59 |
@grahamc:nixos.org | imho | 01:08:01 |
@ius:nltrix.net | Are there any samples/excepts of the database anywhere? The builds/buildoutputs table in particular I guess | 01:10:06 |
@ius:nltrix.net | I wanted to give debugging it a shot (though writing anything but SQL might not be my forte) | 01:11:10 |
@grahamc:nixos.org | well ... I can try and get you an export, but it is quite large. are you on github? | 01:12:24 |
@ius:nltrix.net | Sure, same nickname. | 01:12:40 |
@grahamc:nixos.org | mind if I DM? | 01:13:07 |
@ius:nltrix.net | not at all | 01:13:15 |
@ius:nltrix.net | btw, while digging in I noticed something else | 01:14:13 |
@ius:nltrix.net | $ rg IndexBuildOutputsOnPath
upgrade-12.sql
1:create index IndexBuildOutputsOnPath on BuildOutputs(path);
| 01:14:28 |
@ius:nltrix.net | That index doesn't seem to be part of hydra.sql.. | 01:15:21 |
@ius:nltrix.net | (which I assume is the full up-to-date schema) | 01:15:35 |
@grahamc:nixos.org | yeah, it should be | 01:17:54 |