diff options
author | Rob Austein <sra@hactrn.net> | 2013-10-04 20:22:57 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2013-10-04 20:22:57 +0000 |
commit | 61f96d6a1941e86163007b674b5190edb20da2bf (patch) | |
tree | c49a3c58eb8b8b43c1a96b7b562b997d657a87de /scripts | |
parent | 58437f9f507bb7c31976ebec7fd859a41482f85c (diff) |
Depth markers.
svn path=/trunk/; revision=5544
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/rcynic-lta | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/scripts/rcynic-lta b/scripts/rcynic-lta index 64a007d8..6f5c7423 100755 --- a/scripts/rcynic-lta +++ b/scripts/rcynic-lta @@ -378,6 +378,7 @@ class RPDB(object): der BLOB NOT NULL, fn2 TEXT NOT NULL CHECK (fn2 IN ('cer', 'crl', 'mft', 'roa', 'gbr')), + depth INTEGER, subject INTEGER REFERENCES keyname(id) ON DELETE RESTRICT @@ -489,7 +490,27 @@ class RPDB(object): (rowid, uri)) if spinner: - sys.stderr.write("\r= %d objects in %s, committing..." % (nobj, rpki.sundial.now() - start)) + sys.stderr.write("\r= %d objects in %s.\n" % (nobj, rpki.sundial.now() - start)) + + self.cur.execute("UPDATE object SET depth = 0 WHERE subject = issuer") + + for depth in xrange(500): + self.cur.execute("SELECT COUNT(*) FROM object WHERE depth IS NULL") + if self.cur.fetchone()[0] == 0: + break + if spinner: + sys.stderr.write("\rSetting depth markers %d..." % (depth + 1)) + self.cur.execute(""" + UPDATE object SET depth = ? + WHERE issuer IN (SELECT subject FROM object WHERE depth = ?) + """, + (depth + 1, depth)) + else: + if spinner: + sys.stderr.write("\rGiving up on depth markers after reaching absurd depth %s") + + if spinner: + sys.stderr.write("\nCommitting...") self.db.commit() |