OK, rather than implementing a roman numeral interface, are you able to
try patching with these 2 diffs :

Syslog some detail from estring :

--- estring-orig    2016-09-16 15:30:53.719083773 -0400
+++ estring.cpp    2016-09-16 15:31:22.560537709 -0400
@@ -8,7 +8,7 @@
 #include <stdio.h>
 // strlen
 #include <string.h>
-
+#include <syslog.h>
 
 /*! \class EStringData estring.h
 
@@ -437,6 +437,7 @@
 
 void EString::appendNumber( int n, int base )
 {
+syslog(LOG_USER | LOG_DEBUG, "In void EString::appendNumber( int n
(%d), int base (%d) )\n", n, base);
     if ( n < 0 ) {
         append( '-' );
         n = -n;
@@ -446,6 +447,7 @@
 
 void EString::appendNumber( uint n, int base )
 {
+syslog(LOG_USER | LOG_DEBUG, "In void EString::appendNumber( uint n
(%u), int base (%d) )\n", n, base);
 
     EString s( fromNumber( n, base ) );
 
@@ -946,6 +948,7 @@
 
 EString EString::fromNumber( int64 n, uint base )
 {
+syslog(LOG_USER | LOG_DEBUG, "In void EString::fromNumber( int64 n
(%lld), uint base (%u) )\n", n, base);
     EString r;
     r.appendNumber( n, base );
     return r;
@@ -961,6 +964,7 @@
 
 void EString::appendNumber( int64 n, uint base )
 {
+syslog(LOG_USER | LOG_DEBUG, "In void EString::appendNumber( int64 n
(%lld), uint base (%u) )\n", n, base);
     int64 top = 1;
     while ( top * base <= n )
         top = base * top;


And then to add some detail in the imap process :


--- fetch-orig    2016-09-16 15:35:39.369493459 -0400
+++ fetch.cpp    2016-09-18 13:30:01.502632438 -0400
@@ -31,7 +31,7 @@
 #include "map.h"
 #include "utf.h"
 
-
+#include <syslog.h>
 
 static const char * legalAnnotationAttributes[] = {
     "value",
@@ -186,6 +186,9 @@
          ( c->state() == Command::Blocked ||
            c->state() == Command::Finished ||
            c->state() == Command::Executing ) ) {
+syslog(LOG_USER | LOG_DEBUG, "modseq limit inserted is %lld", limit);
+EString theString = fn(limit);
+syslog(LOG_USER | LOG_DEBUG, "fn( %lld ) responds with %s", limit,
theString.cstr());
         log( EString("Inserting flag update for modseq>") + fn( limit ) +
              " and UIDs " + set.set() + " before " +
              c->tag() + " " + c->name() );
@@ -194,6 +197,9 @@
             setGroup( c->group() );
     }
     else {
+syslog(LOG_USER | LOG_DEBUG, "modseq limit appended is %lld", limit);
+EString theString = fn(limit);
+syslog(LOG_USER | LOG_DEBUG, "fn( %lld ) responds with %s", limit,
theString.cstr());
         log( "Appending flag update for modseq>" + fn( limit ) +
              " and UIDs " + set.set() );
         i->commands()->append( this );

This will throw a fair bit of extra syslog entries, especially on a busy
server; if you can do this on something handling only your problematic
connection, that will be best as there will be more signal to noise. 
Once you capture the syslog data, I recommend putting the code back the
way it was for now.

Send the syslog lines from this patch (both good and bad results); I'm
curious what values are behind the issue (sometimes things pop out).  It
will at least give something to try and reproduce with.


Thanks

Jim





On 16/09/2016 16:56, Tom Ivar Helbekkmo wrote:
> No, it seems to be exactly when my MUA asks aox for messages in a
> mailbox newer than a specified message, that aox erroneously formats
> that message number as 'V' in its query to pgsql.  Now, if PostgreSQL
> would accept Roman numerals, I guess I wouldn't see an error message...
>

Reply via email to