"Тепленькая пошла" - 3.22.0.18"Тепленькая пошла" - 3.22.0.19https://cloud.mail.ru/public/9znr/ZJ6ULE9aR+ поддержка объекта BinaryDatа в 1С++ и типа BLOB sqlite3
тип поля BLOB из базы sqlite3 автоматически преобразуется в объект 1С++ BinaryDatа
объект 1С++ BinaryDatа может быть записан в базу sqlite3 методом Запрос.УстановитьПараметр("@blob",bindata);
+ улучшено сообщение при ошибке в методе УстановитьПараметр
вместо "Ошибка установки sql-параметра @val - Неизвестный тип значения"
будет выводится "Ошибка установки sql-параметра @val - Неизвестный тип значения: ИндексированнаяТаблица"
3.22.0.19
- исправлена глупая ошибка определения длины блоба
+ sqlite3_mod_compress_3.22.0.zip (функции compress(t) и uncompress(t))
sqlite3_mod_zipfle почти побежден, но еще сопротивляется - этот модуль коррелирует с изменениями выше.Побежден.
В процессе был найден забавный баг, который в sqlite исправили очень оперативно.
http://www.sqlite.org/src/info/cf78a88279942461The SQLite Zipfile Module https://sqlite.org/zipfile.htmlВиртуальная таблица ZipfileПодключение и работа с архивами zip. Упаковка/Распаковка только deflate, нет поддержки огромных файлов и томов... и т.д и т.п. см ссылку выше.
В режиме виртуальной таблицы поддерживаются стандартные запросы SELECT,INSERT,DELETE,UPDATE
Поля таблицы:name - имя файла
mode - битмаска (S_IFDIR 0040000,S_IFREG 0100000,S_IFLNK 0120000) ни на что особо не влияет...
mtime - таймштамп, перевод в читаемую дату: datetime(mtime, 'unixepoch')
sz - размер объекта
rawdata - сырые данные
data - распакованные данные
method - метод сжатия, 0-нет сжатия, 8-данные упакованы deflate
Загрузка расширения в sqliteSELECT load_extension("sqlite3_mod_zipfile","sqlite3_zipfile_init");
Запрос из файла zip в режиме "только чтение", без создания виртуальной таблицы.
SELECT * from zipfile('e:\b\sqlite_extensions\sqlite3_mod_zipfile\zipfile.zip');
Создание виртуальной таблицыCREATE VIRTUAL TABLE temp.zip USING zipfile('e:\b\sqlite_extensions\sqlite3_mod_zipfile\zipfile.zip');
Запрос из виртуальной таблицыSELECT * from temp.zip;
Создание каталогаINSERT INTO temp.zip (name,data) VALUES ('dirname',NULL);
Создание каталога и файлаINSERT INTO temp.zip (name,data) VALUES ('/dir2/file2.txt','data');
Примечания:- если имена файлов в кодировке DOS, они перекодируются как CP_OEMCP->CP_UTF8
оригинальный модуль перекодировку не делает
- при DELETE и UPDATE учитывается кодировка DOS
оригинальный модуль это не учитывает
- при INSERT и UPDATE имена файлов записываются в UTF-8
оригинальное поведение не изменено, архиваторы уже давно UTF-8 понимают
но если имя файла было в кодировке DOS, оно будет изменено на UTF-8
- 7zip версии 9.20 открывает архив нормально,
версии 7zip выше 9.20 ничего не видят, но если
открыть файл через меню как "Открыть архив/#:e" то данные видно.
у TCMD, WinRar, менеджера работы с архивами Windows такой проблемы нет
метод UnZip у BinaryData тоже работает с таким архивом
- собрано gcc, зависимостей от 1с 7.7 или 1sqlite нет т.е. можно подгружать и в консольную версию и т.п.