Greg Rahn created SPARK-9182:
--------------------------------

             Summary: filters (where clause) on DataFrames are not pass through 
to jdbc source
                 Key: SPARK-9182
                 URL: https://issues.apache.org/jira/browse/SPARK-9182
             Project: Spark
          Issue Type: Bug
    Affects Versions: 1.4.1
            Reporter: Greg Rahn


When running all of these API calls, the only one that passes the filter 
through to the backend jdbc source is equality.  All filters in these commands 
should be able to be passed through to the jdbc database source.

{code}
val url="jdbc:postgresql:grahn"
val prop = new java.util.Properties
val emp = sqlContext.read.jdbc(url, "emp", prop)

emp.filter(emp("sal") === 5000).show()
emp.filter(emp("sal") < 5000).show()
emp.filter("sal = 3000").show()
emp.filter("sal > 2500").show()
emp.filter("sal >= 2500").show()
emp.filter("sal < 2500").show()
emp.filter("sal <= 2500").show()
emp.filter("sal != 3000").show()
emp.filter("sal between 3000 and 5000").show()
emp.filter("ename in ('SCOTT','BLAKE')").show()
{code}

We see from the PostgreSQL query log the following is run, and see that only 
equality predicates are passed through.
{code}
LOG:  execute <unnamed>: SET extra_float_digits = 3
LOG:  execute <unnamed>: SELECT 
"empno","ename","job","mgr","hiredate","sal","comm","deptno" FROM emp WHERE sal 
= 5000
LOG:  execute <unnamed>: SET extra_float_digits = 3
LOG:  execute <unnamed>: SELECT 
"empno","ename","job","mgr","hiredate","sal","comm","deptno" FROM emp
LOG:  execute <unnamed>: SET extra_float_digits = 3
LOG:  execute <unnamed>: SELECT 
"empno","ename","job","mgr","hiredate","sal","comm","deptno" FROM emp WHERE sal 
= 3000
LOG:  execute <unnamed>: SET extra_float_digits = 3
LOG:  execute <unnamed>: SELECT 
"empno","ename","job","mgr","hiredate","sal","comm","deptno" FROM emp
LOG:  execute <unnamed>: SET extra_float_digits = 3
LOG:  execute <unnamed>: SELECT 
"empno","ename","job","mgr","hiredate","sal","comm","deptno" FROM emp
LOG:  execute <unnamed>: SET extra_float_digits = 3
LOG:  execute <unnamed>: SELECT 
"empno","ename","job","mgr","hiredate","sal","comm","deptno" FROM emp
LOG:  execute <unnamed>: SET extra_float_digits = 3
LOG:  execute <unnamed>: SELECT 
"empno","ename","job","mgr","hiredate","sal","comm","deptno" FROM emp
LOG:  execute <unnamed>: SET extra_float_digits = 3
LOG:  execute <unnamed>: SELECT 
"empno","ename","job","mgr","hiredate","sal","comm","deptno" FROM emp
LOG:  execute <unnamed>: SET extra_float_digits = 3
LOG:  execute <unnamed>: SELECT 
"empno","ename","job","mgr","hiredate","sal","comm","deptno" FROM emp
LOG:  execute <unnamed>: SET extra_float_digits = 3
LOG:  execute <unnamed>: SELECT 
"empno","ename","job","mgr","hiredate","sal","comm","deptno" FROM emp
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to