SASGIS - SAS.Планета
View Issue Details
0003298SAS.Планета[All Projects] Багpublic18-11-2017 18:3720-11-2017 18:23
rass 
zed 
normaltweakalways
resolvedfixed 
Windows7Professional
.Nightly 
181221181221 
0003298: Зависание при поиске Метки
Начиная с версии SAS.Planet.Nightly.171008.9712
При поиске через панель Поиск некоторой метки происходит зависание программы.
При том, что в предыдущей версии SAS.Planet.Nightly.170930.9710
эта метка находится. Но также замечаю, что в панели отображения поиска не все метки отображаются в соответствии с критерием поиска.

Метки хранятся в базе db3.

Предполагаю, но могу ошибаться, так как не знаю как устроен поиск, что
в программах до версии 171008.9712 не все метки отображались в панели поиска
из-за большого количества меток у меня (их более 70 тыс). А поиск в по БД идет в пределах, скажем так, 30 тыс строк.

ну а версиях программы начиная с 171008.9712 идет просто зависание.

Не знаю как даже это все описать словами.



No tags attached.
jpg 19-11-2017 21-39-41.jpg (456,881) 19-11-2017 19:47
http://www.sasgis.org/mantis/file_download.php?file_id=2196&type=bug
jpg 20-11-2017 15-21-49.jpg (33,299) 20-11-2017 13:23
http://www.sasgis.org/mantis/file_download.php?file_id=2197&type=bug
jpg
Issue History
18-11-2017 18:37rassNew Issue
19-11-2017 19:30zedNote Added: 0018193
19-11-2017 19:47rassNote Added: 0018194
19-11-2017 19:47rassFile Added: 19-11-2017 21-39-41.jpg
19-11-2017 19:48rassNote Edited: 0018194bug_revision_view_page.php?bugnote_id=18194#r7248
19-11-2017 19:49rassNote Edited: 0018194bug_revision_view_page.php?bugnote_id=18194#r7249
19-11-2017 19:50rassNote Edited: 0018194bug_revision_view_page.php?bugnote_id=18194#r7250
19-11-2017 19:51rassNote Edited: 0018194bug_revision_view_page.php?bugnote_id=18194#r7251
19-11-2017 20:01zedNote Added: 0018195
20-11-2017 07:49vdemidovStatusnew => feedback
20-11-2017 10:31rassNote Added: 0018197
20-11-2017 10:31rassStatusfeedback => new
20-11-2017 10:32rassNote Edited: 0018197bug_revision_view_page.php?bugnote_id=18197#r7253
20-11-2017 10:33rassNote Edited: 0018197bug_revision_view_page.php?bugnote_id=18197#r7254
20-11-2017 10:33rassNote Edited: 0018197bug_revision_view_page.php?bugnote_id=18197#r7255
20-11-2017 10:40zedNote Added: 0018198
20-11-2017 10:41zedNote Edited: 0018198bug_revision_view_page.php?bugnote_id=18198#r7257
20-11-2017 10:43vdemidovStatusnew => feedback
20-11-2017 13:23rassFile Added: 20-11-2017 15-21-49.jpg
20-11-2017 13:32rassNote Added: 0018199
20-11-2017 13:32rassStatusfeedback => new
20-11-2017 13:34rassNote Edited: 0018199bug_revision_view_page.php?bugnote_id=18199#r7259
20-11-2017 13:40zedNote Added: 0018200
20-11-2017 13:46rassNote Edited: 0018199bug_revision_view_page.php?bugnote_id=18199#r7260
20-11-2017 13:52rassNote Added: 0018201
20-11-2017 13:52rassNote Edited: 0018199bug_revision_view_page.php?bugnote_id=18199#r7261
20-11-2017 13:57zedNote Added: 0018202
20-11-2017 14:13rassNote Added: 0018203
20-11-2017 15:25zedNote Added: 0018204
20-11-2017 15:26zedAssigned To => zed
20-11-2017 15:26zedStatusnew => assigned
20-11-2017 15:26zedTarget Version => 181221
20-11-2017 15:26zedNote Edited: 0018204bug_revision_view_page.php?bugnote_id=18204#r7263
20-11-2017 15:41rassNote Added: 0018205
20-11-2017 18:23zedStatusassigned => resolved
20-11-2017 18:23zedFixed in Version => 181221
20-11-2017 18:23zedResolutionopen => fixed

Notes
(0018193)
zed   
19-11-2017 19:30   
Как раз 2017-10-08 обновлялся компонент, через который у нас сделана работа с метками (mORMot) и библиотека SQLite. В самом SAS ничего в плане меток не менялось уже очень давно. Видимо, какой-то баг вылез или в компоненте или в библиотеке. Обновил и то и то до актуального состояния, тестируйте следующую ночнушку. Если проблема не уйдёт, будем копать глубже.

И да, у нас на результаты поиска стоит ограничение в 100 штук. Сам поиск у меня выполняется чуть ли не мгновенно, а вот вывод результатов в гуй сильно тормозит. К моменту, когда на экране появляется боковая панель, поиск уже закончен, а бегущие несколько секунд строчки в той панели, ни что иное, как не оптимизированный вывод результатов на экран.
(0018194)
rass   
19-11-2017 19:47   
(edited on: 19-11-2017 19:51)
Все же решил, что грех на моей стороне, и он выплыл в версии 2017-10-08, после обновления компонента работы с БД.
Перелопатил всю БД, поудалял ненужные строки в таблицах в соответствии с вновь созданной db3 в Sas как образец.
Импортировал переработанную БД уже в версию SAS.Planet.Nightly.171117.9729.
Вроде бы поиск работает и программа не зависает.
И хотелось бы узнать структуру БД.
Какие таблицы за что отвечают (см. приложенный рис.)?

(0018195)
zed   
19-11-2017 20:01   
Названия вроде "говорящие". Вот тут есть комментарии (каждый класс - таблица в БД): u_MarkSystemORMModel.pas. Для RTree и FTS, SQLite создаёт ещё несколько служебных таблиц (все, что с нижним подчёркиванием в названии).

Ночная версия собралась, протестируйте уже и её.
(0018197)
rass   
20-11-2017 10:31   
(edited on: 20-11-2017 10:33)
Спасибо за описание компонентов таблиц БД. Кое-какие моменты стали ясные.
Какая последняя ночная сборка? 2017-11-17? Да, я как раз в предыдущем сообщении писал, что тестировал свою БД на ней. Переработанная БД меток работает как надо. А исходная БД работала до версии 2017-10-08, но в тоже время не отражала все метки отвечающая поисковой строке, но и не подвисала программу при поиске их.

Вероятно, в исходной БД Меток, где-то была нарушена структура, или, еще более вероятнее, были какие-то символы в названии или описании меток, которые при прежней sqlite3.dll просто прерывали дальнейший поиск, что приводило к не отображению всех искомых меток, а в новой sqlite3.dll - приводит к зависанию.

БД формировалась многие годы, разными способами - импортами разных kml и других источников меток, перемещение и слияние категорий меток и другие действия. Поэтому и накопился бардак в структуре самой БД.

Инцидент можно закрыть.

(0018198)
zed   
20-11-2017 10:40   
(edited on: 20-11-2017 10:41)
Текущая ночнушка: 171119.9729. Крайнюю версию всегда можно посмотреть здесь. Там же можно и подписаться на e-mail уведомления о выходе новой сборки (требуется регистрация на том сайте).

Я так понимаю, у вас бэкапа неработающей БД не сохранилось?

(0018199)
rass   
20-11-2017 13:32   
(edited on: 20-11-2017 13:52)
Отчего же, все сохранилось.
Вырезка исходной БД(кривой) https://yadi.sk/d/UqATOEQA3Prv9z
Для примера Рис.2 (исходные координаты рисунка N55.710442° E37.760010°)
поиск по этой БД в версии 171117.9729:
метку 12115 - находит
6569 - находит эту метку и еще одну в другом месте
3816 - изображенные на рисунке две метки не находит, находит третью, где-то в далеке
2059 и 3235 - зависает

(0018200)
zed   
20-11-2017 13:40   
Т.е. и 171119.9729 на ней зависает? Тогда, если пришлёте мне эту БД, могу попробовать выяснить, что там так глючит. Залейте её куда-нибудь на обменник, а мне ссылку на [email protected] пришлите.

БД внешними инструментами никак не изменяли? Всё только через SAS?
(0018201)
rass   
20-11-2017 13:52   
ссылку на БД дал выше.
проверил в версии 171119, результат такой же, как описано выше.
БД в каких либо SQL редакторах ранее не правил.
все делал средствами SAS: либо вносил, либо экспортировал доступными к экспорту форматами.
(0018202)
zed   
20-11-2017 13:57   
Скачал БД и на 2059 удалось воспроизвести зависание. Буду смотреть.
(0018203)
rass   
20-11-2017 14:13   
Спасибо.
Как я понимаю дело не в самой метке 2059, а пути перебора по БД к этой метке.
(0018204)
zed   
20-11-2017 15:25   
(edited on: 20-11-2017 15:26)
Да, дело не в метках и даже не в БД. Нашёл 2 бага в коде. Один в коде mORMot, который приводил к зависанию. Второй, в моём коде, который приводил к тому, что некоторые метки не находились, хотя в БД они были.

Подождём, когда в mORMot пофиксят баг (сегодня-завтра) и проблему можно будет считать решённой.

(0018205)
rass   
20-11-2017 15:41   
Супер! Спасибо!