<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/lib/database-private.h, branch 0.23.6</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=0.23.6</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=0.23.6'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2016-06-05T11:32:17Z</updated>
<entry>
<title>Use https instead of http where possible</title>
<updated>2016-06-05T11:32:17Z</updated>
<author>
<name>Daniel Kahn Gillmor</name>
<email>dkg@fifthhorseman.net</email>
</author>
<published>2016-06-02T16:26:14Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=6a833a6e83865f6999707cc30768d07e1351c2cb'/>
<id>urn:sha1:6a833a6e83865f6999707cc30768d07e1351c2cb</id>
<content type='text'>
Many of the external links found in the notmuch source can be resolved
using https instead of http.  This changeset addresses as many as i
could find, without touching the e-mail corpus or expected outputs
found in tests.
</content>
</entry>
<entry>
<title>lib: add support for named queries</title>
<updated>2016-05-25T10:40:44Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2016-03-22T10:54:54Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=b9bf3f44eacd42ce53885c79f9dad8d82c76f13d'/>
<id>urn:sha1:b9bf3f44eacd42ce53885c79f9dad8d82c76f13d</id>
<content type='text'>
This relies on the optional presense of xapian field processors, and the
library config API.
</content>
</entry>
<entry>
<title>lib: make a global constant for query parser flags</title>
<updated>2016-05-25T10:40:44Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2016-03-22T10:54:53Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=30caaf52b022be5f0f695f3088286fb56e82c782'/>
<id>urn:sha1:30caaf52b022be5f0f695f3088286fb56e82c782</id>
<content type='text'>
It's already kindof gross that this is hardcoded in two different
places. We will also need these later in field processors calling back
into the query parser.
</content>
</entry>
<entry>
<title>lib: optionally support single argument date: queries</title>
<updated>2016-05-08T11:17:07Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2016-03-22T10:54:44Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=bbf6069252d31e6693ee99cce8bf4f9fab47e360'/>
<id>urn:sha1:bbf6069252d31e6693ee99cce8bf4f9fab47e360</id>
<content type='text'>
This relies on the FieldProcessor API, which is only present in xapian
&gt;= 1.3.
</content>
</entry>
<entry>
<title>lib: Add "lastmod:" queries for filtering by last modification</title>
<updated>2015-08-14T16:23:49Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2014-10-13T06:20:03Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=cb08a2ee019e52dc29ba393d139fce8d7282c632'/>
<id>urn:sha1:cb08a2ee019e52dc29ba393d139fce8d7282c632</id>
<content type='text'>
The implementation is essentially the same as the date range search
prior to Jani's fancy date parser.
</content>
</entry>
<entry>
<title>lib: API to retrieve database revision and UUID</title>
<updated>2015-08-13T21:52:51Z</updated>
<author>
<name>Austin Clements</name>
<email>aclements@csail.mit.edu</email>
</author>
<published>2014-10-13T06:20:02Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=98ee460eaa98f1428aecf03dd39fcf314e6f62c0'/>
<id>urn:sha1:98ee460eaa98f1428aecf03dd39fcf314e6f62c0</id>
<content type='text'>
This exposes the committed database revision to library users along
with a UUID that can be used to detect when revision numbers are no
longer comparable (e.g., because the database has been replaced).
</content>
</entry>
<entry>
<title>lib: Add per-message last modification tracking</title>
<updated>2015-08-13T21:52:51Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2014-10-13T06:20:01Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=7f57b747b95eece465d10fd0acba20cc3dd868f1'/>
<id>urn:sha1:7f57b747b95eece465d10fd0acba20cc3dd868f1</id>
<content type='text'>
This adds a new document value that stores the revision of the last
modification to message metadata, where the revision number increases
monotonically with each database commit.

An alternative would be to store the wall-clock time of the last
modification of each message.  In principle this is simpler and has
the advantage that any process can determine the current timestamp
without support from libnotmuch.  However, even assuming a computer's
clock never goes backward and ignoring clock skew in networked
environments, this has a fatal flaw.  Xapian uses (optimistic)
snapshot isolation, which means reads can be concurrent with writes.
Given this, consider the following time line with a write and two read
transactions:

   write  |-X-A--------------|
   read 1       |---B---|
   read 2                      |---|

The write transaction modifies message X and records the wall-clock
time of the modification at A.  The writer hangs around for a while
and later commits its change.  Read 1 is concurrent with the write, so
it doesn't see the change to X.  It does some query and records the
wall-clock time of its results at B.  Transaction read 2 later starts
after the write commits and queries for changes since wall-clock time
B (say the reads are performing an incremental backup).  Even though
read 1 could not see the change to X, read 2 is told (correctly) that
X has not changed since B, the time of the last read.  In fact, X
changed before wall-clock time A, but the change was not visible until
*after* wall-clock time B, so read 2 misses the change to X.

This is tricky to solve in full-blown snapshot isolation, but because
Xapian serializes writes, we can use a simple, monotonically
increasing database revision number.  Furthermore, maintaining this
revision number requires no more IO than a wall-clock time solution
because Xapian already maintains statistics on the upper (and lower)
bound of each value stream.
</content>
</entry>
<entry>
<title>lib: add a log function with output to a string in notmuch_database_t</title>
<updated>2015-03-28T23:34:15Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2014-12-26T08:01:01Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=b53e1a2da720e9a0efd815b92f0a54dc2f644ffc'/>
<id>urn:sha1:b53e1a2da720e9a0efd815b92f0a54dc2f644ffc</id>
<content type='text'>
In principle in the future this could do something fancier than
asprintf.
</content>
</entry>
<entry>
<title>Add the NOTMUCH_FEATURE_INDEXED_MIMETYPES database feature</title>
<updated>2015-01-24T15:47:47Z</updated>
<author>
<name>Todd</name>
<email>todd@electricoding.com</email>
</author>
<published>2015-01-22T23:43:37Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=0de999aab5bd4cd44bc4ea76fd1d25172bd839ae'/>
<id>urn:sha1:0de999aab5bd4cd44bc4ea76fd1d25172bd839ae</id>
<content type='text'>
This feature will exist in all newly created databases, but there is
no upgrade provided for it.  If this flag exists, it indicates that
the database was created after the indexed MIME-types feature was
added.
</content>
</entry>
<entry>
<title>lib: Enable ghost messages feature</title>
<updated>2014-10-25T17:31:27Z</updated>
<author>
<name>Austin Clements</name>
<email>amdragon@mit.edu</email>
</author>
<published>2014-10-23T12:30:39Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=ee476f1e7616fa53c492b8077b55af35662eec82'/>
<id>urn:sha1:ee476f1e7616fa53c492b8077b55af35662eec82</id>
<content type='text'>
This fixes the broken thread order test.
</content>
</entry>
</feed>
