{"action":"created","issue":{"url":"https://api.github.com/repos/pushtorefresh/storio/issues/731","repository_url":"https://api.github.com/repos/pushtorefresh/storio","labels_url":"https://api.github.com/repos/pushtorefresh/storio/issues/731/labels{/name}","comments_url":"https://api.github.com/repos/pushtorefresh/storio/issues/731/comments","events_url":"https://api.github.com/repos/pushtorefresh/storio/issues/731/events","html_url":"https://github.com/pushtorefresh/storio/issues/731","id":194437344,"number":731,"title":"Wrong get result","user":{"login":"S1owaway","id":15713564,"avatar_url":"https://avatars.githubusercontent.com/u/15713564?v=3","gravatar_id":"","url":"https://api.github.com/users/S1owaway","html_url":"https://github.com/S1owaway","followers_url":"https://api.github.com/users/S1owaway/followers","following_url":"https://api.github.com/users/S1owaway/following{/other_user}","gists_url":"https://api.github.com/users/S1owaway/gists{/gist_id}","starred_url":"https://api.github.com/users/S1owaway/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/S1owaway/subscriptions","organizations_url":"https://api.github.com/users/S1owaway/orgs","repos_url":"https://api.github.com/users/S1owaway/repos","events_url":"https://api.github.com/users/S1owaway/events{/privacy}","received_events_url":"https://api.github.com/users/S1owaway/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-12-08T20:33:47Z","updated_at":"2016-12-09T12:36:10Z","closed_at":null,"body":"such a case:\r\n1. Get something from the database (the table 'Accounts' for example)\r\n2. Alert table (add new column) using the following: \r\n\r\n> .executeSQL()\r\n>                 .withQuery(\r\n>                         RawQuery.builder()\r\n>                                 .query(\"ALTER TABLE Accounts ADD COLUMN Account5 INTEGER DEFAULT 0\")\r\n>                                 .build())\r\n>                 .prepare();\r\n\r\n3. The next get query anywhere in the application returns wrong result (returns data without new column). But the following query in the database gives the correct result.\r\n\r\nManipulations with observesTables()/affectsTables() did not yield results. However, when I open the database using SQLiteBrowser after \"ALTER TABLE...\" I see that the column really added. A feeling that StorIO did't know about the changes in the table and gives first result incorrect."},"comment":{"url":"https://api.github.com/repos/pushtorefresh/storio/issues/comments/266003893","html_url":"https://github.com/pushtorefresh/storio/issues/731#issuecomment-266003893","issue_url":"https://api.github.com/repos/pushtorefresh/storio/issues/731","id":266003893,"user":{"login":"S1owaway","id":15713564,"avatar_url":"https://avatars.githubusercontent.com/u/15713564?v=3","gravatar_id":"","url":"https://api.github.com/users/S1owaway","html_url":"https://github.com/S1owaway","followers_url":"https://api.github.com/users/S1owaway/followers","following_url":"https://api.github.com/users/S1owaway/following{/other_user}","gists_url":"https://api.github.com/users/S1owaway/gists{/gist_id}","starred_url":"https://api.github.com/users/S1owaway/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/S1owaway/subscriptions","organizations_url":"https://api.github.com/users/S1owaway/orgs","repos_url":"https://api.github.com/users/S1owaway/repos","events_url":"https://api.github.com/users/S1owaway/events{/privacy}","received_events_url":"https://api.github.com/users/S1owaway/received_events","type":"User","site_admin":false},"created_at":"2016-12-09T12:36:10Z","updated_at":"2016-12-09T12:36:10Z","body":"Спасибо за ответ. Поведение в представленном вами примере понятно и логично. А вот поведение StorIO непонятно. Либо это бага, либо фича такая интересная. Обидно, так как библиотека уже вплотную используется в немаленьком проекте. Неужели придется переезжать на что нибудь другое.\r\nОпишу еще раз проблему, возможно меня не так поняли.\r\nЕсть таблица, например с 4мя столбцами, первые 2 статические, остальные динамические, и пока добавлено 2 динамических - account1 и account2. Я делаю get запрос и получаю данные по account1 и account2. Потом я на другом экране добавляю account3 (посредством ALERT TABLE add column...) и делаю еще раз get запрос. Вижу выгруженные данные по account1 и account2, хотя ожидаю увидеть теперь и account3. Затем опять делаю get запрос следом за предыдущим, и вот со второго раза получаю уже полную картину с account1 account2 account3. Такое поведение крайне неудобно, потому что запрос данных сразу после ALERT TABLE завязан на бизнес логику. Пока наделал костылей, чтобы после ALERT TABLE фейково вызывался get запрос (andThen(getData().asSingle().toCompletable())) и никуда ничего не возвращал, а следующий get запрос, который вызывает бизнес-логика - давал уже верный результат. Но обнаружил другую проблему. После ALERT TABLE мне не всегда необходимо сделать именно тот get запрос который я делал до ALERT TABLE. Допустим, сначала я вызвал getData(), потом в каком нибудь другом месте приложения я вызвал getDataOrderedByDate(), потом добавил колонку (ALERT TABLE), а после добавления колонки опять пытаюсь взять данные, но оба метода дадут неправильный результат при первом запросе, и только при втором дадут правильный. Выливается это в то, что я при реализации логики ALERT TABLE должен в andThen фейково вызывать все виды getData в DAO для данной таблицы, чтобы следующий запрос который реально понадобится был верный.\r\nОписал очень подробно, надеюсь в этом можно будет разобраться. Спасибо"}}
{"actor":{"display_login":"S1owaway"}}