The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск СУБД SQLite 3.36

19.06.2021 12:59

Опубликован релиз SQLite 3.36, легковесной СУБД, оформленной в виде подключаемой библиотеки. Код SQLite распространяется как общественное достояние (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум, в который входят такие компании, как Adobe, Oracle, Mozilla, Bentley и Bloomberg.

Основные изменения:

  • Вывод команды "EXPLAIN QUERY PLAN" сделан более простым для восприятия.
  • Обеспечена генерация ошибки при попытках доступа к идентификатору строки (rowid) в представлении (VIEW) или подзапросе. Для возвращения возможности доступа к rowid для представлений предусмотрена сборочная опция "-DSQLITE_ALLOW_ROWID_IN_VIEW"
  • Включены по умолчанию интерфейсы sqlite3_deserialize() и sqlite3_serialize(). Для отключения предусмотрена сборочная опция "-DSQLITE_OMIT_DESERIALIZE"
  • В VFS "memdb" разрешено совместное использование хранимой в памяти БД в разных соединениях к одному процессу, если имя БД начинается с "/".
  • Отменена появившаяся в прошлом выпуске оптимизация "EXISTS-to-IN", которая замедляла некоторые запросы.
  • Оптимизация объединения проверки констант адаптирована для работы с запросами без слияния (join).
  • В CLI включено расширение REGEXP.


  1. Главная ссылка к новости (https://www.sqlite.org/release...)
  2. OpenNews: Выпуск СУБД SQLite 3.35
  3. OpenNews: Выпуск rqlite 6.0, распределённой отказоустойчивой СУБД на основе SQLite
  4. OpenNews: Проект DuckDB развивает вариант SQLite для аналитических запросов
  5. OpenNews: Уязвимость в SQLite, позволяющая удалённо атаковать Chrome через WebSQL
  6. OpenNews: Доступен Dqlite 1.0, распределённый вариант SQLite от компании Canonical
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/55354-sqlite
Ключевые слова: sqlite
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (31) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 13:10, 19/06/2021 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –5 +/
     

     ....ответы скрыты (5)

  • 1.2, Аноним (2), 13:20, 19/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >> Обеспечена генерация ошибки при попытках доступа к идентификатору строки (rowid) в представлении (VIEW) или подзапросе. Для возвращения возможности доступа к rowid для представлений предусмотрена сборочная опцмия "-DSQLITE_ALLOW_ROWID_IN_VIEW"

    А почему?

     
     
  • 2.8, x3who (?), 15:04, 19/06/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Перевод не очень удачный. У вьюх и поздапросов не может быть своих ROWIDов, поэтому обращаться к ним - плохая примета. Но, поскольку у корпорастов принято всё делать в трансанальном стиле, то для них оставили лазейку с опцией SQLITE_ALLOW_ROWID_IN_VIEW при включении которой они будут получать значение -1 (кажется).
     
     
  • 3.14, Аноним (-), 17:32, 19/06/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ну в корпорастных как ты изволил выразиться базах вполне себе можно писать во вьюхи, что тут такого плохого. Если отношение не биективно, но тебе просто не даст писать
     
  • 3.19, Михрютка (ok), 22:19, 19/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >>> У вьюх и поздапросов не может быть своих ROWIDов

    товарищ, у вас гибернатор разморозился.

    1) нет причин, по которым single table view не может иметь rowid
    2) rtfm://"updatable join view"

     
     
  • 4.23, x3who (?), 01:41, 20/06/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > 1) нет причин, по которым single table view не может иметь rowid

    Нет, запись в таблице может иметь rowid, и такое вполне себе работает в сабжевой версии:

    create table test(i integer primary key, s text);

    create view vtest as select rowid as 'rowid', i, s from test;

    > 2) rtfm://"updatable join view"

    The 'O' in "SQLite" stands for "Oracle". Вы, товарищ, многого ждёте от встраиваемой БД.
    В SQLite вьюхи тупо не апдейтятся [1]. Но можно повесить триггер, который будет делать инсерт или апдейт соответствующей или вообще другой таблицы. Только вью не узнает что там в результате изменилось. Например продолжим издеваться над vtest созданным выше:

    create trigger TTestInsert instead of insert on vtest begin insert into test values (new.i, 'LOL!'); end;

    create trigger TTestUpdate instead of update on vtest begin update test set i=new.i, s='BWOGHAGHA' where i=old.i and s=old.s; end;

    insert into vtest(s) values('x') returning *;
    <null> | <null> | x

    select * from vtest;
    22 |22 | LOL!

    update vtest set s='y' returning *;
    <null> | 22 | y

    select * from vtest;
    22 | 22 | BWOGHAGHA

    Вот как-то примерно так.


    Список литературы:

    [1] https://sqlite.org/omitted.html

     
     
  • 5.24, x3who (?), 02:15, 20/06/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну и до кучи проверил в постгресе пункт (1)
    Если явно не включать в текст запроса во вьюхе oid - то и в Pg заселектить его из вьюхи не получится, ровно как в SQLite:

    create table test(i serial primary key, s text) with oids;
    create view vtest as select * from test;

    insert into vtest(s) values ('a') returning *; -- works
    insert into vtest(s) values ('b') returning oid,*; -- failing
    insert into  test(s) values ('c') returning oid,*; -- works

    select oid, ctid, i, s from test;  -- works
    select oid, i, s from vtest; -- failing

    В Оракле проверять лень..

     

  • 1.12, Аноним (12), 16:44, 19/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Используют для разработки, кстати, fossil, а не git
     
     
  • 2.13, Аноним (-), 17:31, 19/06/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    наверное потому что Рич написал fossil тоже
     
     
  • 3.20, Михрютка (ok), 22:23, 19/06/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>>потому что Рич написал fossil

    господи и он фидошник штоль?

     
  • 2.15, Аноним (15), 17:42, 19/06/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Лишь бы не rust
     
     
  • 3.17, Аноним (17), 18:16, 19/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Почему?
     
     
  • 4.21, Туши пукан (?), 22:24, 19/06/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Rust его и многих других впопеннетчиц в детстве гнобил 🤣 Детские-с травмы, сэр!
     
  • 3.35, пох. (?), 12:54, 24/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Чувак, они tcl используют, настолько немодные. Хруст им не грозит еще лет сорок.
     

  • 1.16, Аноним (17), 18:15, 19/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Хорошая СУБД
     
  • 1.18, Lex (??), 19:06, 19/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Все-таки, неплохая БД.
    На днях ее как раз поминал, когда потребовалось вытащить часть файлов из бэкапа яблочно устройства.. а там они - в каталогах с именами с 00 по ff, вместо имен файлов - хеши и без каких-либо расширений. Притом, все вперемешку от фоток и заметок и до смс'ок, контактов, закладок и приложений. Сопоставления между именами в резервной копии, реальным именем, адресом и к чему относится - в многомегабайтной БД.

    Слава б.-гу, что, если где и попадаются встраиваемые бд, то это скорее всего "оно" и его запросто можно расковырять весьма обширным инструментарием, а то и скрипты какие-нибудь набросать по быстрому.

     
  • 1.22, Аноним (22), 23:40, 19/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Чем оно лучше firebird?
     
     
  • 2.26, Аноним (2), 08:31, 20/06/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    чем firebird ))
     
  • 2.31, Егор (??), 22:37, 20/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Удобвством интеграции в проект. Никаких пакетов и зависимостей. Один файл с исходным кодом на C и заголовочный, и sqlite используется в программе.
     

  • 1.25, acroobat (??), 06:41, 20/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Чем Dqlite не угодил?
     
     
  • 2.27, Аноним (2), 08:31, 20/06/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    какой-то неведомый труп студента
     

  • 1.28, kai3341 (ok), 17:40, 20/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я снова упёрся рогом в отсутствие явных секвенсов =/

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

    Причём печаль в том, что автоинкремент фактически реализует функционал секвенса. В SQLite есть всё, чтобы реализовать явные секвенсы. Но их нет.

     
     
  • 2.29, Аноним (29), 18:25, 20/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    У тебя в языке нет мьютекса или переменных?
     
  • 2.32, Егор (??), 22:44, 20/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ты странный. sqlite не предназначен для параллельной модификации данных. Поэтому и генераторы уникальных последовательностей не нужны.
     
     
  • 3.37, kai3341 (ok), 22:34, 04/07/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты странный. sqlite не предназначен для параллельной модификации данных. Поэтому и генераторы
    > уникальных последовательностей не нужны.

    сгенерируйте мне уникальную последовательность для НЕ первичного ключа? Например, для связи many-to-many?

     

  • 1.30, iZEN (ok), 19:23, 20/06/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Embarcadero сделала InterBase 2020, в том числе для Android. Зачем что-то ещё?
     
     
  • 2.33, муу (?), 03:28, 21/06/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    дед, ты опять таблетки выпить забыл?
     
  • 2.34, Аноним (34), 12:24, 21/06/2021 [^] [^^] [^^^] [ответить]  
  • +/
    проприетарный какашок.

    а сабж давно под ведройдом работает...

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру