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

Здесь можно обсудить ваш любимый плагин.
Ariman
Posts: 1201
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

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

Post by Ariman » Sun 08 Apr, 2018 10:57

Latest post of the previous page:

fps wrote:
Fri 06 Apr, 2018 17:34
А нельзя ли добавить возможность держать sqlite3.dll в папке плагина?
+1. Как то не очень держать зависимости плагина в папке Far-а.

Shmuel
Posts: 5524
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 179 times

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

Post by Shmuel » Sun 08 Apr, 2018 11:08

Ariman wrote:
Sun 08 Apr, 2018 10:57
Как то не очень держать зависимости плагина в папке Far-а.
Вот бы ещё кто-то объяснил, чем это плохо.
Например, зависимости плагина LuaMacro лежат в папке Фара, и никто не жалуется.
Просто мне не понятно, какая выгода в том, что sqlite3.dll (которая в любом случае не будет поставляться с плагином), будет лежать в папке плагина, а не в папке Фара.

User avatar
DrKnS
Posts: 4914
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 161 times

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

Post by DrKnS » Sun 08 Apr, 2018 12:10

Shmuel, LuaMacro не очень подходящий пример, т.к. входит в дистрибутив.
Для "сторонних" плагинов раскладывание зависимостей в неожиданные места может быть неудобно тем, что о них же ещё надо помнить - поставил, поигрался, удалил, а мусор остался.

Shmuel
Posts: 5524
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 179 times

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

Post by Shmuel » Sun 08 Apr, 2018 12:35

Выложил версию 0.4.2, которая поддерживает работу sqlite3.dll из папки плагина (из прежних мест тоже работает).
Всем спасибо, убедили.

tstr
Posts: 521
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 7 times
Been thanked: 6 times

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

Post by tstr » Sun 08 Apr, 2018 14:36

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: 5524
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 179 times

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

Post by Shmuel » Sun 08 Apr, 2018 16:25

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

В коде мне удалось загрузить это расширение, а как это сделать через F6 (и вообще всю тему расширений), буду изучать.

tstr
Posts: 521
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 7 times
Been thanked: 6 times

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

Post by tstr » Sun 08 Apr, 2018 17:15

ясно,
спасибо и удачи!

Shmuel
Posts: 5524
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 179 times

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

Post by Shmuel » Mon 09 Apr, 2018 08:35

Почитал про расширения, склоняюсь к тому, чтобы они были по умолчанию разрешены в плагине, наподобие как это сделано в sqlite3.exe.
Сначала думал это сделать опцией, но поскольку плагин поддерживает "пользовательские модули" (пока не документировано), а в них можно что угодно разрешать или запрещать и вообще делать с базами что угодно, то в такой опции, вроде бы, нет смысла.

Shmuel
Posts: 5524
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 179 times

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

Post by Shmuel » Tue 10 Apr, 2018 15:35

tstr, для расширений сделана опция в диалоге конфигурации. Само расширение должно быть, например, на PATH.
При выполнении команды SELECT load_extension(.....) - если нет окошка с ошибкой - значит загрузилось.

User avatar
HaRT
Moderator
Posts: 8470
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 74 times
Been thanked: 135 times

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

Post by HaRT » Tue 04 Sep, 2018 16:02

Спасибо за плагин!
Пара пожеланий:
1. Формат SQL при экспорте таблицы — т.е. по сути SQL-дамп таблицы (т.е. код, который можно использовать, чтобы воссоздать таблицу с её нынешними данными). Некоторые реляционные СУБД предоставляют такую возможность из коробки.
2. Чтобы в выводилась также причина (или хотя бы код ошибки) — чтобы можно было понять, она corrupted, locked или ещё что…
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5524
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 179 times

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

Post by Shmuel » Tue 04 Sep, 2018 16:09

HaRT, посмотрю, что можно сделать, но это не будет сегодня-завтра.

2useven10
Posts: 3556
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 3 times
Been thanked: 138 times

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

Post by 2useven10 » Tue 04 Sep, 2018 16:30

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: 8470
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 74 times
Been thanked: 135 times

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

Post by HaRT » Tue 04 Sep, 2018 16:44

Shmuel wrote:
Tue 04 Sep, 2018 16:09
посмотрю, что можно сделать
Спасибо
2useven10 wrote:
Tue 04 Sep, 2018 16:30
это надо делать обязательно из плагина?
Так ведь хочется дамп не всей базы, а только выбранных в панели таблиц.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5524
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 179 times

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

Post by Shmuel » Thu 06 Sep, 2018 20:14

По поводу сообщения о невозможности открыть БД - ситуация такая:
Если подсунуть даже совсем левый файл, например в формате jpeg, то функция sqlite3_open_v2() благополучно возвращает SQLITE_OK и создаёт хэндл на открытую базу данных. Чтобы это побороть, плагин (за кадром) пытается читать таблицу sqlite_master и возвращает вышеприведенную ошибку, если не получается. Поэтому сообщение вот такое, не конкретное.

User avatar
HaRT
Moderator
Posts: 8470
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 74 times
Been thanked: 135 times

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

Post by HaRT » Thu 06 Sep, 2018 20:24

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

Shmuel
Posts: 5524
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 179 times

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

Post by Shmuel » Thu 06 Sep, 2018 20:28

Насчёт залоченности - это надо экспериментировать. Это должен быть редкий случай, так как нормально SQLite допускает одновременное открытие и работу с базой нескольких пользователей.

User avatar
HaRT
Moderator
Posts: 8470
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 74 times
Been thanked: 135 times

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

Post by HaRT » Thu 06 Sep, 2018 20:49

Shmuel wrote:
Thu 06 Sep, 2018 20:28
должен быть редкий случай
В самом деле, не знаю, как мне удалось напороться на ту ошибку. Наверно, и впрямь не слишком практически значимая ситуация.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

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