<feed xmlns='http://www.w3.org/2005/Atom'>
<title>WebStat analyser/src/sql, branch webstat-0.7.1</title>
<subtitle>WebStat web site access analyser</subtitle>
<id>http://git.randomdan.homeip.net/repo/webstat/atom?h=webstat-0.7.1</id>
<link rel='self' href='http://git.randomdan.homeip.net/repo/webstat/atom?h=webstat-0.7.1'/>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/'/>
<updated>2026-07-04T19:19:34Z</updated>
<entry>
<title>Insert uninsirtable lines using the hostnameId recorded in the bad_lines table</title>
<updated>2026-07-04T19:19:34Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-07-04T19:19:34Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=870aa90c005f77a73445f5c39f9fd9bbb7604fe8'/>
<id>urn:sha1:870aa90c005f77a73445f5c39f9fd9bbb7604fe8</id>
<content type='text'>
Includes the same fix from the previous commit which stops caching
entities until the inserts are complete.
Updates storeLogLine to take an insert command with the hostnameId
already bound.
</content>
</entry>
<entry>
<title>Include extra details when storing unparsable and uninsertable lines.</title>
<updated>2026-07-04T18:36:30Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-07-04T11:11:38Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=61e106fe6a15f76b73125682e91d5c17ee875be2'/>
<id>urn:sha1:61e106fe6a15f76b73125682e91d5c17ee875be2</id>
<content type='text'>
Now includes the hostnameId, timestamp and optionally error message.
Updates idx_entities_retryinsert to account for details not being NULL.
Also fixes the issue where the entities inserted and rollback would
still be recorded in the entity cache if the access log insert failed.
This would have lead to PK violations later on.
</content>
</entry>
<entry>
<title>Fix uniqueness of entities</title>
<updated>2026-06-29T08:33:57Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-06-29T08:33:57Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=26eda4262fa99888e254e9c19b40c04b2a29a75c'/>
<id>urn:sha1:26eda4262fa99888e254e9c19b40c04b2a29a75c</id>
<content type='text'>
Should be unique for value and type, they're not just strings, they can
be different things with the same value... Albeit rarely.
</content>
</entry>
<entry>
<title>Select uninsertable is for update</title>
<updated>2026-06-08T22:36:01Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-06-08T22:36:01Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=856527b65e3c4807cf2bfb9d0e495d9712d56a90'/>
<id>urn:sha1:856527b65e3c4807cf2bfb9d0e495d9712d56a90</id>
<content type='text'>
This prevents other instances acting on the same rows in parallel,
potentially duplicating the rows and effort.
</content>
</entry>
<entry>
<title>Don't order rows when purging</title>
<updated>2026-06-08T10:27:49Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-06-08T10:27:49Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=aa8f64a3e140e74a1f8d0074b606dd1f8560ad0a'/>
<id>urn:sha1:aa8f64a3e140e74a1f8d0074b606dd1f8560ad0a</id>
<content type='text'>
The need to purge rows in request_time order is not necessary (all rows
will be deleted at some point in the process anyway) and is otherwise
extremely expensive. Removing the order by clause is a roughly 300x
speed up.
</content>
</entry>
<entry>
<title>Run the retry uninsertable process batched</title>
<updated>2026-05-18T23:36:50Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-05-18T23:36:50Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=b298237a297cb70640c85c016b702a35ecafd9b9'/>
<id>urn:sha1:b298237a297cb70640c85c016b702a35ecafd9b9</id>
<content type='text'>
Standard sized batch in a transaction, ordered by entity id.
Includes early exit if terminated.
</content>
</entry>
<entry>
<title>Add job to retry insertion of log lines which had previously failed</title>
<updated>2026-05-18T19:43:51Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-05-18T19:43:51Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=e1a6654bd5e284842ffbc3b93bd390f3bad7a187'/>
<id>urn:sha1:e1a6654bd5e284842ffbc3b93bd390f3bad7a187</id>
<content type='text'>
Entities are reparsed and reinserted, removed on success.
Failure to parse updates the entity type to UnparsableLine.
Failure to insert again updates the detail with the reason.
</content>
</entry>
<entry>
<title>Only call entity insert handler if detail is null</title>
<updated>2026-05-05T11:24:11Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-05-05T11:24:11Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=200c3636b600ac2f997316612f1b1321112496cd'/>
<id>urn:sha1:200c3636b600ac2f997316612f1b1321112496cd</id>
<content type='text'>
Improves handling of entity inserts where the entity already exists and
already has detail; does not call the onInsert handler. This avoids
repeatedly fetching UA detail every time the UA is first seen by a
process.
</content>
</entry>
<entry>
<title>Add BRIN index to access_log.request_time and improve purge</title>
<updated>2026-04-23T09:11:13Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-04-23T09:11:13Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=7c59f2b66284b5b561c5368a0c834640ae0e611e'/>
<id>urn:sha1:7c59f2b66284b5b561c5368a0c834640ae0e611e</id>
<content type='text'>
Purge is now fully request_time based and not hacked around id ranges.
</content>
</entry>
<entry>
<title>Replace use of crc32 for entity id</title>
<updated>2026-04-15T11:05:20Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-04-15T11:03:21Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=5b2166496e5f3ff2c4276e0b5b28f109c70673d5'/>
<id>urn:sha1:5b2166496e5f3ff2c4276e0b5b28f109c70673d5</id>
<content type='text'>
Entity value is MD5 hashed same as DB unique key, but the id itself is
now taken from the DB primary key which is sequence generated.
</content>
</entry>
</feed>
