tree d6fb57ef0927267e6487292fe22d8da7ea64ddbf
parent dd69a8cdd6c98d636eabb1b69f3b80f88a7fa59f
author Daniel Dunbar <daniel_dunbar@apple.com> 1494605293 -0700
committer Daniel Dunbar <daniel_dunbar@apple.com> 1494657291 -0700

Change DB API to find constant key IDs.

 - This changes the BuildEngine <-> DB interaction to rely on first getting a
   unique (interned, effectively) ID for all keys.

 - That change allows us to then change the BuildEngine-level result to store
   dependencies in terms of key IDs, instead of expanded rules. This results in
   dramatically reduced memory usage, but also since this matches the underlying
   database schema it allows for much more efficient loading of the result
   dependencies.

 - In particular, this eliminates several joins from the database
   implementation.

 - There is potentially more we could do here to eliminate the ancillary key
   table entirely and simply make the results themselves serve as the canonical
   identifier for a rule, but that requires a little more work.

 - This is good for a 35% speedup on null builds of large build graphs.

 - This is a reapplication of 27a4a5d9 with a change to fix the concurrent
   access to the SQLite database (https://bugs.swift.org/browse/SR-4876)

 - <rdar://problem/32139612> Change RuleResult to store key IDs
