{"action":"opened","issue":{"url":"https://api.github.com/repos/edgedb/edgedb/issues/310","repository_url":"https://api.github.com/repos/edgedb/edgedb","labels_url":"https://api.github.com/repos/edgedb/edgedb/issues/310/labels{/name}","comments_url":"https://api.github.com/repos/edgedb/edgedb/issues/310/comments","events_url":"https://api.github.com/repos/edgedb/edgedb/issues/310/events","html_url":"https://github.com/edgedb/edgedb/issues/310","id":379275240,"node_id":"MDU6SXNzdWUzNzkyNzUyNDA=","number":310,"title":"Add `VOLATILE` keyword","user":{"login":"vpetrovykh","id":508466,"node_id":"MDQ6VXNlcjUwODQ2Ng==","avatar_url":"https://avatars0.githubusercontent.com/u/508466?v=4","gravatar_id":"","url":"https://api.github.com/users/vpetrovykh","html_url":"https://github.com/vpetrovykh","followers_url":"https://api.github.com/users/vpetrovykh/followers","following_url":"https://api.github.com/users/vpetrovykh/following{/other_user}","gists_url":"https://api.github.com/users/vpetrovykh/gists{/gist_id}","starred_url":"https://api.github.com/users/vpetrovykh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vpetrovykh/subscriptions","organizations_url":"https://api.github.com/users/vpetrovykh/orgs","repos_url":"https://api.github.com/users/vpetrovykh/repos","events_url":"https://api.github.com/users/vpetrovykh/events{/privacy}","received_events_url":"https://api.github.com/users/vpetrovykh/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-11-09T18:37:36Z","updated_at":"2018-11-09T18:37:36Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"Currently we have no way of distinguishing volatile from stable functions. This is problematic both in terms of optimizations that the backend can make as well as human reasoning about queries.\r\n\r\nThe archetypal example is `random`:\r\n```\r\nSELECT Foo {\r\n    bar,\r\n    r := random()\r\n};\r\n```\r\nIs the above any different from the following in terms of date it gets and why?\r\n```\r\nSELECT (\r\n    bar := Foo.bar,\r\n    r := random()\r\n);\r\n```\r\n\r\nWhat happens when a user-defined function is used in place of `random`? "}}
{"actor":{"display_login":"vpetrovykh"}}