Выпуск Π‘Π£Π‘Π” SQLite 3.45

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· SQLite 3.45, лСгковСсной Π‘Π£Π‘Π”, ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½ΠΎΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Код SQLite распространяСтся ΠΊΠ°ΠΊ общСствСнноС достояниС (public domain), Ρ‚.Π΅. ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΈ Π±Π΅Π·Π²ΠΎΠ·ΠΌΠ΅Π·Π΄Π½ΠΎ Π² Π»ΡŽΠ±Ρ‹Ρ… цСлях. Π€ΠΈΠ½Π°Π½ΡΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² SQLite осущСствляСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ созданный консорциум, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ входят Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠ°ΠΊ Bentley, Bloomberg, Expensify ΠΈ Navigation Data Standard.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния:

  • ВсС SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ JSON пСрСписаны ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π΅Ρ€Π΅Π²Π° Ρ€Π°Π·Π±ΠΎΡ€Π° JSONB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сСриализируСтся ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Π‘Π” для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΏΡ€ΠΈ использовании Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ JSON. НовыС вСрсии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… JSON, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ JSONB вмСсто тСкстового. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ json_valid() Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ маску, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ JSON (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ 0x04 ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ·Π½Π°Π½ Π±Π»ΠΎΠ± JSONB, ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ 0x01 тСкстовый JSON Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ RFC-8259, Π° ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ 0x05 ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°).
  • Π’ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ FTS5, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡƒΡŽ для полнотСкстового поиска, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция tokendata, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнныС Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹.
  • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° оптимизация SQLITE_DIRECT_OVERFLOW_READ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ overflow-страницы, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… большС стандартного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° страницы b-tree, Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, минуя кэш. Для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈ сборкС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ «-DSQLITE_DIRECT_OVERFLOW_READ=0».
  • Π’ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ запросов ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ (transitive constraint) ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ индСксов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π½Π°Π½Ρ‹ низкокачСствСнными ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ANALYZE.
  • Π’ интСрфСйсС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ содСрТимого Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8 Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ автоматичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ использования CLI-интСрфСйса ΠΏΡ€ΠΈ воспроизвСдСнии скриптов «.dump» ΠΈ внСсСниС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² настройки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ «.dbconfig defensive off» ΠΈ «.dbconfig dqs_dll on».
  • Π’ опрСдСляСмыС Π½Π° сторонС прилоТСния SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ свойство SQLITE_RESULT_SUBTYPE, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sqlite3_result_subtype() для инспСктирования ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π² ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… сборках SQLite Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° вСдСния ΠΆΡƒΡ€Π½Π°Π»Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ — WAL2 («PRAGMA journal_mode = wal2»), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π²Π° wal-Ρ„Π°ΠΉΠ»Π° ( «database-wal» ΠΈ «database-wal2») вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ. ΠŸΡ€ΠΈ записи Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘Π”, выполняСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ wal-Ρ„Π°ΠΉΠ». Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ wal-Ρ„Π°ΠΉΠ» достигнСт достаточно большого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, осущСствляСтся ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° запись Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ». ПослС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ wal-Ρ„Π°ΠΉΠ», ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ становится доступСн для фиксации ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (checkpoint) ΠΈ пСрСзаписи. БоотвСтствСнно, ΠΊΠΎΠ³Π΄Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ wal-Ρ„Π°ΠΉΠ» достигаСт большого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, осущСствляСтся ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ Ρ‚.ΠΏ., Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с Π½Π΅ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ разрастаниСм wal-Ρ„Π°ΠΉΠ»Π° Π² ситуациях, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ»Π³ΠΎ Π½Π΅ фиксируСтся транзакция ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы чтСния.

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