{"action":"created","issue":{"url":"https://api.github.com/repos/dallasbeek/Dapper.Database/issues/15","repository_url":"https://api.github.com/repos/dallasbeek/Dapper.Database","labels_url":"https://api.github.com/repos/dallasbeek/Dapper.Database/issues/15/labels{/name}","comments_url":"https://api.github.com/repos/dallasbeek/Dapper.Database/issues/15/comments","events_url":"https://api.github.com/repos/dallasbeek/Dapper.Database/issues/15/events","html_url":"https://github.com/dallasbeek/Dapper.Database/pull/15","id":358675672,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE0MzU0NDM2","number":15,"title":"Separate Oracle 11g / 12c support","user":{"login":"cdonnellytx","id":183046,"node_id":"MDQ6VXNlcjE4MzA0Ng==","avatar_url":"https://avatars0.githubusercontent.com/u/183046?v=4","gravatar_id":"","url":"https://api.github.com/users/cdonnellytx","html_url":"https://github.com/cdonnellytx","followers_url":"https://api.github.com/users/cdonnellytx/followers","following_url":"https://api.github.com/users/cdonnellytx/following{/other_user}","gists_url":"https://api.github.com/users/cdonnellytx/gists{/gist_id}","starred_url":"https://api.github.com/users/cdonnellytx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cdonnellytx/subscriptions","organizations_url":"https://api.github.com/users/cdonnellytx/orgs","repos_url":"https://api.github.com/users/cdonnellytx/repos","events_url":"https://api.github.com/users/cdonnellytx/events{/privacy}","received_events_url":"https://api.github.com/users/cdonnellytx/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-09-10T15:28:24Z","updated_at":"2018-09-11T14:53:05Z","closed_at":"2018-09-10T22:06:04Z","author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/dallasbeek/Dapper.Database/pulls/15","html_url":"https://github.com/dallasbeek/Dapper.Database/pull/15","diff_url":"https://github.com/dallasbeek/Dapper.Database/pull/15.diff","patch_url":"https://github.com/dallasbeek/Dapper.Database/pull/15.patch"},"body":"I subclassed the `OracleAdapter` to create one with explicit 11g support (`Oracle11gAdapter`).  When it is used, it works with an 11g or later database, albeit with some minor penalties against 12c or later (versus using the base class, which is optimized for 12c).\r\n\r\nBehavior differences:\r\n\r\n* INSERT and UPDATE are PL/SQL blocks designed to get around the difference in binary protocol between the 11.2 and 12.1 databases that the Managed drivers cannot handle.   (The PL/SQL portion of the protocol appears to be handled, and all tests pass regardless of run order.)\r\n* Pagination in 12c is now done via [12c pagination syntax](http://www.oaktable.net/content/oracle-12c-sql-%E2%80%93-%E2%80%9Ctop-n%E2%80%9D-queries-and-pagination), while 11g still uses the wrapper + `ROW_NUMBER()` technique.\r\n\r\nAlso note that I opted to _not_ change how adapter lookup works, but rather recommend using `SqlMapperExtensions.AddSqlAdapter` to set the Oracle adapter to the 11g adapter by hand for when it is necessary.  We should document this somewhere, but I'm not sure where.\r\n\r\nHaving said that, I did modify the test cases to use the 11g adapter if 11g is detected on start, and I verified that the tests use the appropriate adapter based on the version of the test database.\r\n\r\n# Other changes\r\n\r\nThis branch also includes:\r\n\r\n* Modifications to pagination to pass in `parameters`.  Oracle lets you bind the pagination variables in both 11g and 12c, so it makes sense to do so (otherwise you risk filling your shared pool with permutations of caching queries).  ~~While I did not modify any other implementations, I presume other databases support binds here as well, and we should look at implementing them in the near future.~~ **Update**: I modified all but Firebird to use binds (as I can't test Firebird, and its SQL was different.)\r\n* #13 Correcting spelling of \"scalar\"\r\n* Some minor test fixes to make the sync/async tests consistent (and ensure they are consistent -- I had several bugs I thought were caused by async only to find out I didn't apply certain fixes to async.)\r\n* Changed to use the [Xunit.SkippableFact](https://www.nuget.org/packages/Xunit.SkippableFact/) NuGet package.  "},"comment":{"url":"https://api.github.com/repos/dallasbeek/Dapper.Database/issues/comments/420302696","html_url":"https://github.com/dallasbeek/Dapper.Database/pull/15#issuecomment-420302696","issue_url":"https://api.github.com/repos/dallasbeek/Dapper.Database/issues/15","id":420302696,"node_id":"MDEyOklzc3VlQ29tbWVudDQyMDMwMjY5Ng==","user":{"login":"cdonnellytx","id":183046,"node_id":"MDQ6VXNlcjE4MzA0Ng==","avatar_url":"https://avatars0.githubusercontent.com/u/183046?v=4","gravatar_id":"","url":"https://api.github.com/users/cdonnellytx","html_url":"https://github.com/cdonnellytx","followers_url":"https://api.github.com/users/cdonnellytx/followers","following_url":"https://api.github.com/users/cdonnellytx/following{/other_user}","gists_url":"https://api.github.com/users/cdonnellytx/gists{/gist_id}","starred_url":"https://api.github.com/users/cdonnellytx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cdonnellytx/subscriptions","organizations_url":"https://api.github.com/users/cdonnellytx/orgs","repos_url":"https://api.github.com/users/cdonnellytx/repos","events_url":"https://api.github.com/users/cdonnellytx/events{/privacy}","received_events_url":"https://api.github.com/users/cdonnellytx/received_events","type":"User","site_admin":false},"created_at":"2018-09-11T14:53:05Z","updated_at":"2018-09-11T14:53:05Z","author_association":"NONE","body":"Oracle 10g and 11.1 have been desupported for years, and ODP.NET versions are only certified for supported releases.  Given that it has issues with 11.2 -- which _is_ supported -- I'd bet there's other differences in the TNS protocol that would make it not work.  Having said that, the SQL in the \"11g\" adapter there should work with 9i and above.\r\n\r\nAdditionally, that's why I only put the explicit switch in the test library -- I'm making a fairly large assumption anyone actively developing on this won't with 10.2 or earlier.  If you want to, though, just parse out the first int and make sure it's less than 12..."}}
{"actor":{"display_login":"cdonnellytx"}}