View Issue Details

IDProjectCategoryView StatusLast Update
0002809SAS.ПланетаБаг / Bugpublic08-09-2015 15:26
ReporterTolik Assigned Tozed  
PrioritynormalSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
PlatformWindowsOS7OS VersionUltimate
Product Version.Nightly 
Target Version150915Fixed in Version150915 
Summary0002809: Метки в SQLite3: не сохраняется выбор категорий при выходе
DescriptionSAS.Planet.Nightly.150905.9015.7z
Метки в SQLite3.
После перезапуска САС всегда выбрана куча разных категорий, одна и та же куча, непонятно, почему именно эта.
Steps To ReproduceСм. скриншоты.
1. Использую метки в SML (26 МБ), выбираю одну категорию, делаю экспорт всей базы в файл test1.db3
2. Добавляю эту базу
3. Переключаюсь на неё - выбраны все метки
4. Выбираю одну категорию
5. После выхода и входа выбрано много категорий.
Additional InformationЕсли переключиться в SML и обратно в SQLite3 - выбраны те же самые категории, как на 5-м скриншоте.
TagsNo tags attached.
Attached Files
2015-09-06_190740.png (17,465 bytes)   
2015-09-06_190740.png (17,465 bytes)   
2015-09-06_190827.png (7,861 bytes)   
2015-09-06_190827.png (7,861 bytes)   
2015-09-06_190846.png (14,904 bytes)   
2015-09-06_190846.png (14,904 bytes)   
2015-09-06_190857.png (17,315 bytes)   
2015-09-06_190857.png (17,315 bytes)   
2015-09-06_190938.png (14,924 bytes)   
2015-09-06_190938.png (14,924 bytes)   

Activities

Papazol

06-09-2015 16:54

reporter   ~0016416

Подтверждаю. Выбор отображаемых меток программа делает сама по непонятному алгоритму.

zed

06-09-2015 18:00

manager   ~0016417

Только при экспорте? Если базу создавать и заполнять вручную, проблем нет?

Tolik

06-09-2015 19:07

manager   ~0016418

Last edited: 06-09-2015 19:12

Ну, если добавить пару категорий, то нормально.
Если добавить пару десятков - не знаю.
Наверно, баг в экспорте.

zed

07-09-2015 06:50

manager   ~0016419

Предлагаю сразу после экспорта, заглянуть в БД при помощи какой-нибудь внешней утилиты. Смотреть надо в таблицу CategoryView - там в колонке cvVisible будут булевые значения 0 - категория не видна, 1 - видна. Если категория в таблице отсутствует, то она видна по-умолчанию, т.е. пользователь ешё ни разу не изменял видимость этой категории вручную.

Соответственно, после импорта, эта таблица должна быть пустой. После отключения видимости у всех категорий, таблица заполнится категориями и в колонке cvVisible будет 0. Если какую-то категорию сделать видимой, там станет 1.

Если в БД всё именно так, значит проблема где-то в кэшировании на стороне SAS.

P.S. Таблицу CategoryView или её содержимое можно смело удалять вручную - она будет создана автоматически при новом запуске SAS.

zed

07-09-2015 06:57

manager   ~0016420

Я выполняю все шаги описанные в "Шаги по воспроизведению" и у меня не воспроизводится. Может быть есть какая-то зависимость от количества категорий в корневой категории?

Papazol

07-09-2015 07:37

reporter   ~0016421

Для ускорения процесса хорошо бы ссылку на внешнюю утилиту.

zed

07-09-2015 07:44

manager   ~0016422

SQLiteStudio

Papazol

07-09-2015 08:17

reporter   ~0016423

Last edited: 07-09-2015 08:23

Ну в общем, так. Открыв БД сразу после экспорта, видим у всех категорий cvVisible=1. Потом в SASPlanet'е убираем/ставим галки на нужных категориях (я оставил видимыми две). Закрываем SASPlanet'у. Studio показывает, что у всех категорий cvVisible=0, а у двух (они в таблице последние) - 1. К сожалению, непонятно, какие именно категории имеют 1. Затем открываем SASPlanet'у. Вылезают кучи меток, которые не были отмечены галками. Если бы программа считывала видимость меток из БД, то показывала бы те две, у которых 1.

Непонятно, почему в таблице Category содержится (в моём случае) 35 категорий (они полностью соответствуют исходному списку из sml), а в таблице CategoryView только 20.

zed

07-09-2015 08:21

manager   ~0016424

>Открыв БД сразу после экспорта, видим у всех категорий cvVisible=1
Странно, у меня таблица сразу после экспорта пустая.

>К сожалению, непонятно, какие именно категории имеют 1.
В колонке cvCategory записаны id категорий, по которым их можно найти в таблице Category.

>Если бы программа считывала видимость меток из БД, то показывала бы те две, у которых 1.
Ок, надо смотреть. Плохо, что оно ещё и не всегда воспроизводится.

Papazol

07-09-2015 08:24

reporter   ~0016425

Количество категорий в двух таблицах разное...

zed

07-09-2015 08:30

manager   ~0016426

В CategoryView содержатся записи только для тех категорий, которым вручную была изменена видимость. Как я уже писал, если категории в этой таблице нету, то она видима по дефолту. И теперь становится вдвойне непонятно: выходит что при экспорте некоторые категории таки попадают в эту таблицу, хотя не должны.

После экспорта все категории должны быть видимы, поскольку видимость категории (и метки) завязана на конкретного пользователя. А при импорте из sml никакой информации о юзере не передаётся, потому и устанавлявается видимость всех меток/категорий вне зависимости от того в каком они были состоянии в исходном sml.

Papazol

07-09-2015 08:42

reporter   ~0016427

> выходит что при экспорте некоторые категории таки попадают в эту таблицу, хотя не должны

Это не так, потому что при экспорте я выбирал "Экспорт всех меток и категорий". Все они и экспортировались.
Разве установка/снятие галки "Все" не приводит к изменению видимости вручную? Изначально видимы действительно все, но если пару раз ткнуть "Все", галки со всех снимаются, следовательно, происходит изменение состояния для всех, и это должно записываться в БД.

zed

07-09-2015 13:13

manager   ~0016431

>Это не так
Что-то я не понял. Вы же написали: "Открыв БД сразу после экспорта, видим у всех категорий cvVisible=1".

zed

07-09-2015 14:20

manager   ~0016432

Last edited: 07-09-2015 14:29

Ок, Tolik, Papazol воспроизведите баг на своей стороне вот на этом exe: https://yadi.sk/d/dwwQyaxsivVVB и пришлите мне все логи (появятся текстовые файлы в корне с программой).

Papazol

07-09-2015 17:07

reporter   ~0016433

У меня получилось два лога. Они в архиве.

Насчёт "Это не так". Действительно, если при экспорте выбрать все метки (независимо от видимости), то не должно быть таких, которые экспортировались, хотя не должны были. Все были должны. И, если исходить из обозначенной логики процесса, в данном случае всё происходит правильно. Неправильно начинает быть потом, когда мы вручную пытаемся установить видимость нужных нам меток.

PS Два лога - это не всё. Получил ещё третий. Первый - сразу после экспорта БД. Программу закрыл, затем снова открыл. Подключил БД SQLite. Все метки отмечены как видимые (это правильно). Убрал галки со всех и установил на две, которые нужны. Программу закрыл. Появился второй лог. Снова открыл программу. В списке меток отмечено не две, а значительно больше (но не все). Закрыл программу. Появился третий лог. Логи в архиве Логи.zip.

zed

07-09-2015 20:43

manager   ~0016434

Да, логи помогли - нашёл баг в методе TMarkCategoryDbImplORMHelper.SetAllCategoriesVisibleSQL. Завтра исправлю.

zed

08-09-2015 15:04

manager   ~0016435

Тестируйте: https://yadi.sk/d/a6nRjIlhiww6p

Tolik

08-09-2015 15:22

manager   ~0016436

Проблема решена, спасибо.

Tolik

08-09-2015 15:24

manager   ~0016437

Также ушла проблема, что после перезапуска нет ни одной базы.

zed

08-09-2015 15:25

manager   ~0016438

>Также ушла проблема, что после перезапуска нет ни одной базы.
Не трогал, так что она скорее всего спряталась, а не ушла :)

Issue History

Date Modified Username Field Change
06-09-2015 16:18 Tolik New Issue
06-09-2015 16:19 Tolik File Added: 2015-09-06_190740.png
06-09-2015 16:20 Tolik File Added: 2015-09-06_190827.png
06-09-2015 16:20 Tolik File Added: 2015-09-06_190846.png
06-09-2015 16:20 Tolik File Added: 2015-09-06_190857.png
06-09-2015 16:21 Tolik File Added: 2015-09-06_190938.png
06-09-2015 16:23 Tolik Additional Information Updated
06-09-2015 16:26 Tolik Steps to Reproduce Updated
06-09-2015 16:28 Tolik Summary Метки в mysql: не сохраняется выбор категорий при выходе => Метки в SQLite3: не сохраняется выбор категорий при выходе
06-09-2015 16:28 Tolik Description Updated
06-09-2015 16:28 Tolik Additional Information Updated
06-09-2015 16:54 Papazol Note Added: 0016416
06-09-2015 18:00 zed Note Added: 0016417
06-09-2015 19:07 Tolik Note Added: 0016418
06-09-2015 19:08 Tolik Note Edited: 0016418
06-09-2015 19:12 Tolik Note Edited: 0016418
07-09-2015 06:50 zed Note Added: 0016419
07-09-2015 06:57 zed Note Added: 0016420
07-09-2015 07:37 Papazol Note Added: 0016421
07-09-2015 07:44 zed Note Added: 0016422
07-09-2015 08:17 Papazol Note Added: 0016423
07-09-2015 08:21 zed Note Added: 0016424
07-09-2015 08:23 Papazol Note Edited: 0016423
07-09-2015 08:24 Papazol Note Added: 0016425
07-09-2015 08:30 zed Note Added: 0016426
07-09-2015 08:42 Papazol Note Added: 0016427
07-09-2015 13:13 zed Note Added: 0016431
07-09-2015 14:20 zed Note Added: 0016432
07-09-2015 14:29 zed Note Edited: 0016432
07-09-2015 15:02 vdemidov Target Version => 150915
07-09-2015 15:07 vdemidov Status new => feedback
07-09-2015 16:56 Papazol File Added: SASPlanet.zip
07-09-2015 17:07 Papazol Note Added: 0016433
07-09-2015 17:08 Papazol File Added: Логи.zip
07-09-2015 20:43 zed Note Added: 0016434
07-09-2015 20:43 zed Assigned To => zed
07-09-2015 20:43 zed Status feedback => assigned
08-09-2015 15:04 zed Note Added: 0016435
08-09-2015 15:04 zed Status assigned => feedback
08-09-2015 15:22 Tolik Note Added: 0016436
08-09-2015 15:22 Tolik Status feedback => assigned
08-09-2015 15:24 Tolik Note Added: 0016437
08-09-2015 15:25 zed Note Added: 0016438
08-09-2015 15:25 zed File Deleted: SASPlanet.zip
08-09-2015 15:25 zed File Deleted: Логи.zip
08-09-2015 15:26 zed Status assigned => resolved
08-09-2015 15:26 zed Fixed in Version => 150915
08-09-2015 15:26 zed Resolution open => fixed
08-08-2025 13:22 zed Category Баг => Баг / Bug