On Wed, 17 Mar 2021 at 10:36 +0300, I wrote to you:
NA>>>> Я считаю, что поведение sqpack, когда упакованная база начинает NA>>>> нумерацию BaseMsgNum снова с 1цы не корректное. AF>>> Не согласен. NA>> Хорошо, а объясни тогда зачем нужен BaseMsgNum? AF> Ты сам ответил на этот вопрос ниже.
Ради интереса провёл эксперимент. Сделал тестовую базу с некоторым количеством сообщений. Встал на первое сообщение, посмотрел заголовки:
MessageNumber: 1 BaseMsgNum: 1
Удалил первое сообщение, посмотрел заголовки:
MessageNumber: 2 BaseMsgNum: 1
Это потому что физически удалённое сообщение ещё в базе.
Сделал feutil pack -quick, встал на первое сообщение, посмотрел заголовки:
MessageNumver: 2 BaseMsgNum: 2
Как и ожидалось, физически первое сообщение было удалено, а BaseMsgNum стал 2.
Снова удалил первое сообщение, сделал feutil pack -quick -renumbeer, посмотрел заголовки:
MessageNumber: 1 BaseMsgNum: 1
Теперь удаляю второе сообщение, встаю на первое, смотрю заголовки:
MessageNumber: 1 BaseMsgNum: 1
Смотрю заголовки второго сообщения:
MessageNumber: 3 BaseMsgNum: 1
Таким образом у нас получилась дырка, и если физически удалить второе сообщение в процессе упаковки, вся логика сломается к чертям. Ради интереса пакую feutil pack -quick (без -renumber), встаю на второе сообщение, смотрю заголовки:
MessageNumber: 2 BaseMsgNum: 1
Перенумерация всё равно случилась, что, в общем, было ожидаемо.
Так что всё работает именно так, как я и понял из стандарта. BaseMsgNum всегда равен наименьшему абсолютному номеру сообщения в базе, а абсолютные номера сообщений не могут быть не последовательными. И если в sqpack отключить сброс BaseMsgNum не меняя остальной логики, получится лажа.