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

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

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

  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π² числах раздСлитСля «_» для Π±ΠΎΠ»Π΅Π΅ наглядного прСдставлСния числовых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1_234_567).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° SQL-функция json_pretty() для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON, ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ c использованиСм выдСлСния Π±Π»ΠΎΠΊΠΎΠ² отступами.
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ возмоТности ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ «PRAGMA optimize», Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Π‘Π” ΠΈ всСх схСм Π΄Π°Π½Π½Ρ‹Ρ… для достиТСния Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ запросов. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ автоматичСски примСняСмый Π»ΠΈΠΌΠΈΡ‚ Π½Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·Π° Π‘Π”, ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ слишком большоС врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π‘Π”. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая битовая маска «PRAGMA optimize(0x10000)» для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π²ΠΎ всСх Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ автоматичСский ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ записи sqlite_stat1.
  • Π’ SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ strftime() Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° подстановок %G, %g, %U ΠΈ %V.
  • Π’ SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Ρ‚Π°ΠΌΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ceiling ΠΈ floor для управлСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹Ρ… Π΄Π°Ρ‚, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ опСрациях сдвига Π΄Π°Ρ‚ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ число мСсяцСв ΠΈΠ»ΠΈ Π»Π΅Ρ‚. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² utc ΠΈ localtime, Ссли SQLite ΠΈΠΌΠ΅Π΅Ρ‚ свСдСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ врСмя ΡƒΠΆΠ΅ Π² прСдставлСнии UTC ΠΈΠ»ΠΈ localtime.
  • ВнСсСны ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ запросов. Для Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ INSERT, содСрТащих тысячи Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² сСкции VALUES, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° оптимизация «VALUES-as-coroutine», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Π΄Π²Π° Ρ€Π°Π·Π° ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Π±ΠΎΡ€ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π² Π΄Π²Π° Ρ€Π°Π·Π° ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти. Для запросов Π²ΠΈΠ΄Π° «SELECT count(DISTINCT col) FROM …» Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ индСксов, Π΄Π°ΠΆΠ΅ Ссли Ρ€Π°Π·ΠΌΠ΅Ρ€ записСй Π² индСксС Π½Π΅ мСньшС, Ρ‡Π΅ΠΌ записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° опрСдСлСния ситуаций, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ константы. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ push-down для Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ WHERE, содСрТащих нСсвязанныС подзапросы.
  • ИзмСнСна Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ пСрСполнСния стСка — ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти для стСка парсСр Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ пытаСтся Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ· ΠΊΡƒΡ‡ΠΈ, вмСсто Π²Ρ‹Π²ΠΎΠ΄Π° ошибки «parser stack overflow».
  • Π’ JSON Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… символов Π² строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°Ρ… JSON5. ИзмСнСна Π»ΠΎΠ³ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² «->» ΠΈ «->>», ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡ€Π°Π²ΠΎΠΉ части строковый ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹ (ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с PostgreSQL Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ строка).
  • Π’ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ DEFAULT Π² столбцах Ρ‚Π°Π±Π»ΠΈΡ† Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ².

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