{"action":"created","issue":{"url":"https://api.github.com/repos/elixir-lang/ecto/issues/669","labels_url":"https://api.github.com/repos/elixir-lang/ecto/issues/669/labels{/name}","comments_url":"https://api.github.com/repos/elixir-lang/ecto/issues/669/comments","events_url":"https://api.github.com/repos/elixir-lang/ecto/issues/669/events","html_url":"https://github.com/elixir-lang/ecto/pull/669","id":88709322,"number":669,"title":"[WIP] Separate transaction handling and support custom pools","user":{"login":"fishcakez","id":2001229,"avatar_url":"https://avatars.githubusercontent.com/u/2001229?v=3","gravatar_id":"","url":"https://api.github.com/users/fishcakez","html_url":"https://github.com/fishcakez","followers_url":"https://api.github.com/users/fishcakez/followers","following_url":"https://api.github.com/users/fishcakez/following{/other_user}","gists_url":"https://api.github.com/users/fishcakez/gists{/gist_id}","starred_url":"https://api.github.com/users/fishcakez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fishcakez/subscriptions","organizations_url":"https://api.github.com/users/fishcakez/orgs","repos_url":"https://api.github.com/users/fishcakez/repos","events_url":"https://api.github.com/users/fishcakez/events{/privacy}","received_events_url":"https://api.github.com/users/fishcakez/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":16,"created_at":"2015-06-16T12:15:08Z","updated_at":"2015-06-25T21:56:54Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/elixir-lang/ecto/pulls/669","html_url":"https://github.com/elixir-lang/ecto/pull/669","diff_url":"https://github.com/elixir-lang/ecto/pull/669.diff","patch_url":"https://github.com/elixir-lang/ecto/pull/669.patch"},"body":"Work in progress branch to allow custom pools (i.e. other than `poolboy`).\r\n\r\nFirstly all `poolboy` usage is abstracted out of `Ecto.Adapters.SQL` to `Ecto.Adapters.Poolboy` so that other adapters can make use of it and the pdict usage is in this module to clean up `Ecto.Adapters.SQL`. The re factor allowed an optimisation where the final log in a transaction or simple query was always moved outside the `poolboy` transaction in some cases (I don't think this was always the case previously).\r\n\r\nSecondly the transaction handling that can be abstracted out of the `Ecto.Adapters.Poolboy` is moved to `Ecto.Adapters.Pool.Transaction` so that other pools can make use of it and don't have to reimplement the pdict dance. This change also allows custom pools for SQL adapters.\r\n\r\nThirdly an optimisation is done to `Ecto.Adapters.Poolboy.Worker` (previously `Ecto.Adapters.Worker`) where a call is turned into a cast as it does not need to be synchronous."},"comment":{"url":"https://api.github.com/repos/elixir-lang/ecto/issues/comments/115411456","html_url":"https://github.com/elixir-lang/ecto/pull/669#issuecomment-115411456","issue_url":"https://api.github.com/repos/elixir-lang/ecto/issues/669","id":115411456,"user":{"login":"fishcakez","id":2001229,"avatar_url":"https://avatars.githubusercontent.com/u/2001229?v=3","gravatar_id":"","url":"https://api.github.com/users/fishcakez","html_url":"https://github.com/fishcakez","followers_url":"https://api.github.com/users/fishcakez/followers","following_url":"https://api.github.com/users/fishcakez/following{/other_user}","gists_url":"https://api.github.com/users/fishcakez/gists{/gist_id}","starred_url":"https://api.github.com/users/fishcakez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fishcakez/subscriptions","organizations_url":"https://api.github.com/users/fishcakez/orgs","repos_url":"https://api.github.com/users/fishcakez/repos","events_url":"https://api.github.com/users/fishcakez/events{/privacy}","received_events_url":"https://api.github.com/users/fishcakez/received_events","type":"User","site_admin":false},"created_at":"2015-06-25T21:56:54Z","updated_at":"2015-06-25T21:56:54Z","body":"Updated"}}