]> Sergey Matveev's repositories - btrtrc.git/commitdiff
sqlite storage: Working recursive CTE for excess data
authorMatt Joiner <anacrolix@gmail.com>
Fri, 23 Oct 2020 00:03:42 +0000 (11:03 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Fri, 23 Oct 2020 00:03:42 +0000 (11:03 +1100)
storage/sqlite/sql [new file with mode: 0644]

diff --git a/storage/sqlite/sql b/storage/sqlite/sql
new file mode 100644 (file)
index 0000000..a6f4bdc
--- /dev/null
@@ -0,0 +1,11 @@
+with recursive excess(
+       usage_with,
+       last_used,
+       blob_rowid,
+       data_length
+) as (
+       select * from (select (select sum(length(data)) from blob), last_used, rowid, length(data) from blob order by last_used, rowid limit 1)
+       union all
+       select usage_with-data_length, blob.last_used, blob.rowid, length(data) from excess join blob
+               on blob.rowid=(select rowid from blob where (last_used, rowid) > (excess.last_used, blob_rowid))
+) select * from excess limit 10;