LINUX.ORG.RU

SQLite 3.53.0

 , ,


0

3

9-го апреля состоялся выпуск 3.53.0 компактной кроссплатформенной встраиваемой СУБД SQLite. Код проекта написан на языке C и распространяется как общественное достояние (public domain).

Изменения:

  • Исправлена ошибка WAL-reset database corruption bug. См. предыдущую новость SQLite 3.51.3 с исправлением возможного повреждения базы данных в режиме WAL.
  • Добавлена библиотека форматирования результатов SQL-запросов Query Result Formatter (QRF) для обеспечения удобства чтения на экране с шрифтом фиксированной ширины.
  • Добавлен метод format к интерфейсу TCL для доступа к QRF из TCL.
    • QRF теперь используется в консольной утилите sqlite для форматирования результатов запросов, что улучшило их отображение.
  • Новые возможности языка SQL:
    • Улучшены возможности команды ALTER TABLE для обеспечения возможности добавления и удаления ограничений NOT NULL и CHECK.
    • Оператор REINDEX EXPRESSIONS выполняет переиндексацию индексов выражений. Полезно для восстановления устаревших индексов выражений.
    • Теперь триггеры TEMP могут изменять и/или запрашивать данные из таблиц основной схемы.
    • Улучшена команда VACUUM INTO: в случае использования в качестве адреса назначения имени файла в формате URI, содержащего параметр запроса reserve=N (где N — число от 0 до 255), объем резервирования для создаваемой копии базы данных устанавливается равным N.
  • Добавлены новые функции SQL:
  • Обновления в консольной утилите:
    • Значительные улучшения команды .mode.
    • Благодаря расширению QRF улучшено форматирование результатов. Например, числа теперь выравниваются вправо по умолчанию в режиме табличного вывода.
    • По умолчанию QRF теперь используется при интерактивном использовании консольной утилиты для отображения результатов запросов в блоках, сформированных с помощью символов Unicode рисования блоков, что повысило читаемость. Устаревший формат вывода используется при пакетном выполнении команд для обеспечения совместимости.
    • Одиночные (не заключенные в кавычки) точки с запятой в конце команд с точкой игнорируются без предупреждения.  Это возможная несовместимость!
    • Исправлены команды .testcase и .check. Теперь они действительно работают и используются в скриптах, входящих в стандартный набор тестов SQLite, входящих в исходные коды.
    • Аргументы командной строки, которые соответствуют шаблонам *.sql или *.txt и представляют собой имена непустых файлов, считываются и интерпретируются как скрипты, содержащие SQL-операторы и/или [команды с точкой]((https://sqlite.org/cli.html#dotcmd).
    • Теперь в качестве аргумента команды .timer можно указать once для срабатывания таймера только при выполнении следующего SQL-запроса.
    • Новый параметр --timeout S команды .progress приводит к прерыванию выполнения SQL-запросов по истечении S секунд.
    • Команда .indexes изменена так, что аргумент PATTERN теперь сопоставляется с именем индекса, а не с именем индексируемой таблицы (благодаря чему аргумент PATTERN стал действительно полезным). Кроме того, в команду .indexes было добавлено несколько новых опций.
  • Улучшения в C API:
  • Улучшения планировщика запросов:
    • Для EXCEPT, INTERSECT и UNION всегда используется алгоритм сортировки и слияния, так как он почти всегда работает быстрее, чем использование хеш-таблиц.
    • Улучшения в механизме выбора порядка join при выполнении больших многосторонних соединений в звездообразной схеме.
    • Усовершенствована оптимизация преобразования EXISTS в JOIN так, чтобы вставляемые условия JOIN не обязательно находились во внутренних циклах, при условии, что все зависимости для циклов преобразования EXISTS в JOIN находятся во внешних циклах.
    • Усовершенствована оптимизация omit-noop-join так, что она может опускать цепочку соединений, не влияющих на результат.
    • Оптимизация запросов, использующих GROUP BY e1 ORDER BY e2, где e1 и e2 идентичны, за исключением порядка сортировки ASC/DESC, с помощью одного индекса.
    • Оптимизация оператора DISTINCT в виртуальных таблицах в тех случаях, когда набор результатов запроса не полностью соответствует условию ORDER BY.
  • В расширение сеанса добавлены новые интерфейсы, позволяющие приложению добавлять изменения по одному в объект sqlite3_changegroup:
  • Улучшения в преобразовании чисел с плавающей запятой ↔ текст.
    • Код полностью переписан для улучшения производительности.
    • Теперь по умолчанию округление производится до 17 значащих цифр вместо 15, как это было во всех предыдущих версиях. При необходимости это значение можно изменить с помощью функции sqlite3_db_config с опцией SQLITE_DBCONFIG_FP_DIGITS (см. там пункт 6g выше).
  • Добавлена возможность самовосстановления индекса для решения проблемы устаревших индексов выражений.
  • В консольную утилиту sqlite3_rsync добавлена опция -p|--port.
  • Прекращена поддержка Windows RT.
  • JavaScript/WASM
    • Добавлена VFS opfs-wl, функционально идентичная opfs, но использующая для блокировок Web Locks, что позволяет обеспечить более справедливое распределение блокировок, чем в протоколе opfs. opfs-wl требует наличия функции Atomics.waitAsync(), поэтому для его работы требуются более новые версии браузеров, чем для opfs.

>>> Подробности на sqlite.org

★★★★★

Проверено: CrX ()
Последнее исправление: dataman (всего исправлений: 2)
Ответ на: комментарий от lesopilorama

а тут чё…

Повторяю для особо тупых: SQLite - это важный инфраструктурный компонент многих проектов. Настолько многих, что невозможно точно назвать их число. И всё это должно работать с сохранением совместимости и безопасности.

Поэтому отцы-диктаторы принимают патчи только при соответствующем уровне качества кода и прохождении всех тестов.

liksys ★★★★
()
Ответ на: комментарий от lesopilorama

Оно не совсем opensource – например свой патч или фичу туда запостить крайне невозможно-тяжело.

И это замечательно. Никто не сможет запушить в SQLite какой-нибудь «CoC», «переписанную на бИзаПастНаМ расте критическую функцию», замену в тексте «master» и «slave» на какое-то невменяемое говно или там «проверку возраста».

Когда все мамкины «инноваторы» идут на йух со своими «инновациями» и не имеют возможности испоганить отличную вещь - это отлично и прекрасно. Если бы весь опенсорс был таким как SQLite/Fossil - Linux/GNU был бы идеальной системой.

Stanson ★★★★★
()
Ответ на: комментарий от lesopilorama

«В огороде бузина, а к Киеве - дядька»...

(Не)возможность публикации там патчей «или фичу туда запостить» никак не влияет на относимость софта к «open source»... «Исходники» доступны де?! Всё, это - «open source»!..

RTFM же... :)

Somebody ★★★★
()
Ответ на: комментарий от CrX

Форкни и кайфуй сколько хочешь, вместе со всеми единомышлениками. Уверен, они оба будут очень рады.

Такая тoлпа??..

Somebody ★★★★
()

SQLite моя любимая база, она в 99% закрывает все потребности не зависимо от платформы и задачи. И возможно она офигенная столько лет спустя именно потому, что разработчики не реализуют маловостребованные хотелки.

MikFoxi
()
Ответ на: комментарий от lesopilorama

Сами себе противоречите. Если вам критически нужно пропихнуть в SQLite какую-то фичу, без которой до этого SQLite десятилетиями работал и имеет больше запущенных экземпляров в самых разных юзкейсах на планете, чем все остальные СУБД вместе взятые, то с подавляющей вероятностью это будет лютейшее ультраненужно. Сейчас SQLite это практически полный набор всего самого необходимого для встраиваемой СУБД c SQL.

Playermet
()
Ответ на: комментарий от MikFoxi

Гойтварят щё duckdb в части нонешнего приложения sqlITE чудесатей

qulinxao3 ★☆
()
Ответ на: комментарий от liksys

Несмотря на неоднократные просьбы, ни на один отвергнутый патч человек ссылок так и не предъявил, зато начал кривляться.

Поэтому вторую страницу я таки зачистил, кое-что вместе с ответами. Первую оставил, дабы в следующий раз было понятно, с кем спорим.

hobbit ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.