{"action":"created","issue":{"url":"https://api.github.com/repos/linkedin/gobblin/issues/1074","repository_url":"https://api.github.com/repos/linkedin/gobblin","labels_url":"https://api.github.com/repos/linkedin/gobblin/issues/1074/labels{/name}","comments_url":"https://api.github.com/repos/linkedin/gobblin/issues/1074/comments","events_url":"https://api.github.com/repos/linkedin/gobblin/issues/1074/events","html_url":"https://github.com/linkedin/gobblin/pull/1074","id":162829420,"number":1074,"title":"Oracle Source/Extractor","user":{"login":"bjvanov","id":4194981,"avatar_url":"https://avatars.githubusercontent.com/u/4194981?v=3","gravatar_id":"","url":"https://api.github.com/users/bjvanov","html_url":"https://github.com/bjvanov","followers_url":"https://api.github.com/users/bjvanov/followers","following_url":"https://api.github.com/users/bjvanov/following{/other_user}","gists_url":"https://api.github.com/users/bjvanov/gists{/gist_id}","starred_url":"https://api.github.com/users/bjvanov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bjvanov/subscriptions","organizations_url":"https://api.github.com/users/bjvanov/orgs","repos_url":"https://api.github.com/users/bjvanov/repos","events_url":"https://api.github.com/users/bjvanov/events{/privacy}","received_events_url":"https://api.github.com/users/bjvanov/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":36,"created_at":"2016-06-29T02:42:40Z","updated_at":"2016-10-06T20:45:49Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/linkedin/gobblin/pulls/1074","html_url":"https://github.com/linkedin/gobblin/pull/1074","diff_url":"https://github.com/linkedin/gobblin/pull/1074.diff","patch_url":"https://github.com/linkedin/gobblin/pull/1074.patch"},"body":"Created OracleSource.java and OracleExtractor.java with heavy inspiration from MySqlSource.java and MySqlExtractor.java.\r\n\r\nThe classes are largely the same as the MySql ones with the exception of getSchemaMetadata() which needed to be modified to account for Oracle reserved words such as format and comment. Also timestamp formats had to be slightly refactored.\r\n\r\nFurther different strategies for handling primitive values like booleans in Oracle needed to be accounted for. This resulted in overriding getSchema(). The only difference is that Oracle treats booleans as varchar2(1). I created a simple casting utility castToBoolean() which I added to SqlQueryUtils.java.\r\n\r\nSince getSchema requires use of the private static final Gson factory from JDBCExtractor. I created a getter for access. It is accessed in OracleExtractor's getSchema() method like so: this.getGson()\r\n\r\nI am able to successfully complete table_append and table_full jobs using this new source and extractor. I did a clean assemble, and it did not break the build. I believe I stayed consistent with documentation and coding format.\r\n\r\nPlease consider my pull request, and let me know if I need to change anything.\r\n\r\nThanks!\r\nBrian Vanover\r\n\r\nP.S. One thing is that in order to use the Oracle source and extractor, ojdbc6.jar must be added as a dependency. I simply copied the jar into goblin-dist/lib, but it may be worthwhile to add it as a dependency. I just wasn't sure how to modify the build scripts to include it. "},"comment":{"url":"https://api.github.com/repos/linkedin/gobblin/issues/comments/252083364","html_url":"https://github.com/linkedin/gobblin/pull/1074#issuecomment-252083364","issue_url":"https://api.github.com/repos/linkedin/gobblin/issues/1074","id":252083364,"user":{"login":"jinhyukchang","id":14986757,"avatar_url":"https://avatars.githubusercontent.com/u/14986757?v=3","gravatar_id":"","url":"https://api.github.com/users/jinhyukchang","html_url":"https://github.com/jinhyukchang","followers_url":"https://api.github.com/users/jinhyukchang/followers","following_url":"https://api.github.com/users/jinhyukchang/following{/other_user}","gists_url":"https://api.github.com/users/jinhyukchang/gists{/gist_id}","starred_url":"https://api.github.com/users/jinhyukchang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jinhyukchang/subscriptions","organizations_url":"https://api.github.com/users/jinhyukchang/orgs","repos_url":"https://api.github.com/users/jinhyukchang/repos","events_url":"https://api.github.com/users/jinhyukchang/events{/privacy}","received_events_url":"https://api.github.com/users/jinhyukchang/received_events","type":"User","site_admin":false},"created_at":"2016-10-06T20:45:49Z","updated_at":"2016-10-06T20:45:49Z","body":"@lbendig It's fine with me. Let me test it out with my use case. Thanks!"}}
{"actor":{"display_login":"jinhyukchang"}}