{"action":"created","issue":{"url":"https://api.github.com/repos/apache/spark/issues/10377","labels_url":"https://api.github.com/repos/apache/spark/issues/10377/labels{/name}","comments_url":"https://api.github.com/repos/apache/spark/issues/10377/comments","events_url":"https://api.github.com/repos/apache/spark/issues/10377/events","html_url":"https://github.com/apache/spark/pull/10377","id":122935983,"number":10377,"title":"[SPARK-12218] Fixes ORC conjunction predicate push down","user":{"login":"liancheng","id":230655,"avatar_url":"https://avatars.githubusercontent.com/u/230655?v=3","gravatar_id":"","url":"https://api.github.com/users/liancheng","html_url":"https://github.com/liancheng","followers_url":"https://api.github.com/users/liancheng/followers","following_url":"https://api.github.com/users/liancheng/following{/other_user}","gists_url":"https://api.github.com/users/liancheng/gists{/gist_id}","starred_url":"https://api.github.com/users/liancheng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/liancheng/subscriptions","organizations_url":"https://api.github.com/users/liancheng/orgs","repos_url":"https://api.github.com/users/liancheng/repos","events_url":"https://api.github.com/users/liancheng/events{/privacy}","received_events_url":"https://api.github.com/users/liancheng/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2015-12-18T11:53:05Z","updated_at":"2015-12-19T02:38:53Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/apache/spark/pulls/10377","html_url":"https://github.com/apache/spark/pull/10377","diff_url":"https://github.com/apache/spark/pull/10377.diff","patch_url":"https://github.com/apache/spark/pull/10377.patch"},"body":"This PR is a follow-up of PR #10362.\r\n\r\nTwo major changes:\r\n\r\n1.  The fix introduced in #10362 is OK for Parquet, but may disable ORC PPD in many cases\r\n\r\n    PR #10362 stops converting an `AND` predicate if any branch is inconvertible.  On the other hand, `OrcFilters` combines all filters into a single big conjunction first and then tries to convert it into ORC `SearchArgument`.  This means, if any filter is inconvertible, no filters can be pushed down.  This PR fixes this issue by finding out all convertible filters first before doing the actual conversion.\r\n\r\n    The reason behind the current implementation is mostly due to the limitation of ORC `SearchArgument` builder, which is documented in this PR in detail.\r\n\r\n1.  Copied the `AND` predicate fix for ORC from #10362 to avoid merge conflict.\r\n\r\nSame as #10362, this PR targets master (2.0.0-SNAPSHOT), branch-1.6, and branch-1.5."},"comment":{"url":"https://api.github.com/repos/apache/spark/issues/comments/165937445","html_url":"https://github.com/apache/spark/pull/10377#issuecomment-165937445","issue_url":"https://api.github.com/repos/apache/spark/issues/10377","id":165937445,"user":{"login":"SparkQA","id":8108735,"avatar_url":"https://avatars.githubusercontent.com/u/8108735?v=3","gravatar_id":"","url":"https://api.github.com/users/SparkQA","html_url":"https://github.com/SparkQA","followers_url":"https://api.github.com/users/SparkQA/followers","following_url":"https://api.github.com/users/SparkQA/following{/other_user}","gists_url":"https://api.github.com/users/SparkQA/gists{/gist_id}","starred_url":"https://api.github.com/users/SparkQA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SparkQA/subscriptions","organizations_url":"https://api.github.com/users/SparkQA/orgs","repos_url":"https://api.github.com/users/SparkQA/repos","events_url":"https://api.github.com/users/SparkQA/events{/privacy}","received_events_url":"https://api.github.com/users/SparkQA/received_events","type":"User","site_admin":false},"created_at":"2015-12-19T02:38:53Z","updated_at":"2015-12-19T02:38:53Z","body":"**[Test build #48042 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/48042/consoleFull)** for PR 10377 at commit [`e5913d2`](https://github.com/apache/spark/commit/e5913d25244597c0be2458d0a23d2e2f3f2f3a78).\n * This patch passes all tests.\n * This patch merges cleanly.\n * This patch adds no public classes."}}