SQLite 3.51.3 с исправлСниСм Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ поврСТдСния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ WAL

SQLite 3.51.3 с исправлСниСм Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ поврСТдСния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ WAL

13-Π³ΠΎ ΠΌΠ°Ρ€Ρ‚Π° состоялся ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ выпуск 3.51.3 ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ встраиваСмой Π‘Π£Π‘Π” SQLite. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° языкС C ΠΈ распространяСтся ΠΊΠ°ΠΊ общСствСнноС достояниС (public domain).

Π’ связи с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости, связанными с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½ΠΎΠ²Ρ‹ΠΌΠΈ функциями, вСрсия 3.52.0 (Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠ°Ρ 6-Π³ΠΎ ΠΌΠ°Ρ€Ρ‚Π°) Π±Ρ‹Π»Π° ΠΎΡ‚ΠΎΠ·Π²Π°Π½Π°.

Бписок ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ вСрсии 3.51.3:

  • 3-Π³ΠΎ ΠΌΠ°Ρ€Ρ‚Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² SQLite (Dan) ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» ΠΈ устранил ΠΎΡˆΠΈΠ±ΠΊΡƒ, которая Π² Ρ€Π΅Π΄ΠΊΠΈΡ… случаях ΠΌΠΎΠ³Π»Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ названная Β«WAL-reset bugΒ»:
    • Π­Ρ‚Π° ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ WAL, Ссли ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Ρƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ Π΄Π²Π° ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… ΠΈΠ»ΠΈ процСссах, ΠΈ Ссли эти Π΄Π²Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запись ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.
    • Ошибка связана с ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠΌ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ Тёстких Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ограничСниях. Π’ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… условиях эксплуатации ΠΎΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ воспроизвСсти эту ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² СстСствСнных условиях, ΠΈ ΠΈΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² SQLite ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ тСстирования, которая Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ создаСт условия для возникновСния ошибки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна.
    • Ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π°:
      1. Одно соСдинСниС выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. Π­Ρ‚Π° пСрвая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π² Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всё содСрТимоС Ρ„Π°ΠΉΠ»Π° WAL ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ привСсти Ρ„Π°ΠΉΠ» WAL Π² состояниС, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ.
      2. Π‘Ρ€Π°Π·Ρƒ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ запускаСтся вторая.
      3. Пока запускаСтся вторая ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈΠ· шага 2, Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… фиксируСт Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, которая сбрасываСт Ρ„Π°ΠΉΠ» WAL ΠΈ записываСт Π½ΠΎΠ²ΠΎΠ΅ содСрТимоС Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Π°ΠΉΠ»Π° WAL.
      4. Из-Π·Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ вторая ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈΠ· шага 2 Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» WAL Π±Ρ‹Π» ΡΠ±Ρ€ΠΎΡˆΠ΅Π½ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ фиксации Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π° шагС 3. Вторая ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° устанавливаСт Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ индСкса WAL. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π° WAL ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° зафиксирована Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅, хотя Π½Π° самом Π΄Π΅Π»Π΅ это Π½Π΅ Ρ‚Π°ΠΊ.
      5. Ѐиксация Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ количСства страниц Π² Ρ„Π°ΠΉΠ»Π΅ WAL, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ количСство страниц, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠ΅Π΅ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈΠ· шага 1.
      6. ПозТС, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ°, ΠΎΠ½Π° пропускаСт всю ΠΈΠ»ΠΈ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, записанной Π½Π° этапС 3. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, части Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ с этапа 3 Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² Ρ„Π°ΠΉΠ» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ Ρ„Π°ΠΉΠ» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… поврСТдаСтся.
    • Ошибка, вСроятно, присутствуСт Π²ΠΎ всСх вСрсиях SQLite, начиная с 3.7.0 (21.07.2010) ΠΈ заканчивая 3.51.2. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ исправлСния для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсий: 3.44.6 ΠΈ 3.50.7.
  • Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ исправлСния.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ