Polygon - работа с файлами SQLite3

Здесь можно обсудить ваш любимый плагин.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Polygon - работа с файлами SQLite3

Post by Shmuel »

Latest post of the previous page:

Обработка luafar_init.lua включается/выключается в make-файле, это просто, но мне не понятно, как вы там сможете указать путь, с которого берётся sqlite3.dll. С помощью FFI что ли будете её заранее подгружать?
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Polygon - работа с файлами SQLite3

Post by Ariman »

fps wrote: Fri 06 Apr, 2018 17:34 А нельзя ли добавить возможность держать sqlite3.dll в папке плагина?
+1. Как то не очень держать зависимости плагина в папке Far-а.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Polygon - работа с файлами SQLite3

Post by Shmuel »

Ariman wrote: Sun 08 Apr, 2018 10:57 Как то не очень держать зависимости плагина в папке Far-а.
Вот бы ещё кто-то объяснил, чем это плохо.
Например, зависимости плагина LuaMacro лежат в папке Фара, и никто не жалуется.
Просто мне не понятно, какая выгода в том, что sqlite3.dll (которая в любом случае не будет поставляться с плагином), будет лежать в папке плагина, а не в папке Фара.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Polygon - работа с файлами SQLite3

Post by DrKnS »

Shmuel, LuaMacro не очень подходящий пример, т.к. входит в дистрибутив.
Для "сторонних" плагинов раскладывание зависимостей в неожиданные места может быть неудобно тем, что о них же ещё надо помнить - поставил, поигрался, удалил, а мусор остался.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Polygon - работа с файлами SQLite3

Post by Shmuel »

Выложил версию 0.4.2, которая поддерживает работу sqlite3.dll из папки плагина (из прежних мест тоже работает).
Всем спасибо, убедили.
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Polygon - работа с файлами SQLite3

Post by tstr »

Shmuel» да, по ffi.load("sqlite3") и так работало… ;)

хотел поэкспериментировать с подгрузкой расширений sqlite и посмотреть кто-как ищет модули/библиотеки.
захожу в базу сабжем, жму Ф6, ввожу
SELECT load_extension('mod_spatialite.dll', 'sqlite3_modspatialite_init');
получаю

Code: Select all

╔═════════ Polygon ═════════╗
║  Error reading database   ║
║ Error: [1] not authorized ║
╟───────────────────────────╢
║           {OK}            ║
╚═══════════════════════════╝
полные пути в первом параметре ситуацию не меняют.
в плагине SQLiteDB ситуация аналогична.
расширение лежит тутже, в папке с базой в которую вхожу.
но по мониторингу файлов видно что до загрузки расширения и зависимостей файлов дело вообще не доходит.

если тутже в папке запускаю sqlite3.exe - расширение грузится как ожидалось.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Polygon - работа с файлами SQLite3

Post by Shmuel »

tstr, в документации SQLite (https://www.sqlite.org/loadext.html) сказано, что по умолчанию загрузка расширений запрещена из соображений безопасности, а в утилите шелла (sqlite3.exe) разрешена.

В коде мне удалось загрузить это расширение, а как это сделать через F6 (и вообще всю тему расширений), буду изучать.
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Polygon - работа с файлами SQLite3

Post by tstr »

ясно,
спасибо и удачи!
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Polygon - работа с файлами SQLite3

Post by Shmuel »

Почитал про расширения, склоняюсь к тому, чтобы они были по умолчанию разрешены в плагине, наподобие как это сделано в sqlite3.exe.
Сначала думал это сделать опцией, но поскольку плагин поддерживает "пользовательские модули" (пока не документировано), а в них можно что угодно разрешать или запрещать и вообще делать с базами что угодно, то в такой опции, вроде бы, нет смысла.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Polygon - работа с файлами SQLite3

Post by Shmuel »

tstr, для расширений сделана опция в диалоге конфигурации. Само расширение должно быть, например, на PATH.
При выполнении команды SELECT load_extension(.....) - если нет окошка с ошибкой - значит загрузилось.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Polygon - работа с файлами SQLite3

Post by HaRT »

Спасибо за плагин!
Пара пожеланий:
1. Формат SQL при экспорте таблицы — т.е. по сути SQL-дамп таблицы (т.е. код, который можно использовать, чтобы воссоздать таблицу с её нынешними данными). Некоторые реляционные СУБД предоставляют такую возможность из коробки.
2. Чтобы в выводилась также причина (или хотя бы код ошибки) — чтобы можно было понять, она corrupted, locked или ещё что…
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Polygon - работа с файлами SQLite3

Post by Shmuel »

HaRT, посмотрю, что можно сделать, но это не будет сегодня-завтра.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Polygon - работа с файлами SQLite3

Post by 2useven10 »

HaRT wrote: Tue 04 Sep, 2018 16:02 Некоторые реляционные СУБД предоставляют такую возможность из коробки.
sqlite3 base.db .dump
или это надо делать обязательно из плагина?
Last edited by 2useven10 on Tue 04 Sep, 2018 16:30, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Polygon - работа с файлами SQLite3

Post by HaRT »

Shmuel wrote: Tue 04 Sep, 2018 16:09 посмотрю, что можно сделать
Спасибо
2useven10 wrote: Tue 04 Sep, 2018 16:30 это надо делать обязательно из плагина?
Так ведь хочется дамп не всей базы, а только выбранных в панели таблиц.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Polygon - работа с файлами SQLite3

Post by Shmuel »

По поводу сообщения о невозможности открыть БД - ситуация такая:
Если подсунуть даже совсем левый файл, например в формате jpeg, то функция sqlite3_open_v2() благополучно возвращает SQLITE_OK и создаёт хэндл на открытую базу данных. Чтобы это побороть, плагин (за кадром) пытается читать таблицу sqlite_master и возвращает вышеприведенную ошибку, если не получается. Поэтому сообщение вот такое, не конкретное.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Polygon - работа с файлами SQLite3

Post by HaRT »

Shmuel wrote: Thu 06 Sep, 2018 20:14 возвращает вышеприведенную ошибку, если не получается
Но остаётся вопрос: можем ли мы различить невалидную и залоченную базу. Казалось бы, невалидная не должна даже читаться, а залоченность должно быть возможно как-то проверить…
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Обсуждение плагинов”