Как определить, есть ли страница переполнения в SQLite? - PullRequest
0 голосов
/ 11 февраля 2019

Я просматриваю файл базы данных SQLite, как описано в спецификациях формата файла, но я не совсем понимаю ту часть, где мы должны определить, будет ли указатель на страницу переполнения в заголовке ячейки.,Как описано здесь https://www.sqlite.org/fileformat.html раздел 1.6. Вся полезная нагрузка будет помещаться на странице, если p

Я пытаюсь прочитать таблицу sqlite_master на корневой странице прямо сейчас, и первая ячейка начинается с байта 3164. Первая переменная декодируется в 929, что является размером полезной нагрузки.Размер заголовка ячейки составляет 3 байта, включая размер полезной нагрузки, что в сумме составляет 4096 байтов.Но что если бы у меня был ap> 929?

Из приведенного описания любая полезная нагрузка, которая меньше (размер страницы - зарезервированное пространство - 35), должна умещаться на странице.Скажем, у меня есть страница размером 4 КБ с 0 зарезервированными байтовыми пространствами, тогда X равен 4096 - 35 = 4061. Что произойдет, если у меня будет размер полезной нагрузки 4000 байтов с тем же смещением 3164 для того места, где начинается ячейка?Или этот сценарий невозможен из-за того, как SQLite настраивает свои страницы?Я просто немного озадачен тем, что формула игнорирует, как фактическая ячейка может начинаться в конце страницы, поэтому не следует ли нам также учитывать смещение в формуле?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...