Menu

#115 WHERE N NOT BETWEEN 1 AND 100 incorrect for NULL values

None
closed
None
5
2015-06-22
2015-05-15
No

CsvJdbc incorrectly includes NULL values when NOT is used in WHERE clause.

For example, in PostgreSQL I have a simple table with the third
record having value NULL:

demo=> select * from product;
 listprice
-----------
        10
        30

(3 rows)

The following two SQL queries do not include the NULL value:

demo=> select count(*) from product where listprice between 1 and 100;
 count
-------
     2
(1 row)

demo=> select count(*) from product where listprice not between 1 and 100;
 count
-------
     0
(1 row)

When I run the same SQL queries in CsvJdbdc I get 2 and 1. The NULL value is being counted and this is wrong.

Discussion

  • Simon Chenery

    Simon Chenery - 2015-05-15

    Originally reported in CsvJdbc Discussion topic col NOT BETWEEN limit1 AND limit2 not giving correct results

     
  • Simon Chenery

    Simon Chenery - 2015-05-16

    Fixed handling of SQL NULL values in NOT, AND, OR conditions.

    Added unit test TestSqlParser.testParsingWhereComparisonsNull.

    Files changed:
    src/main/java/org/relique/jdbc/csv/AndExpression.java
    src/main/java/org/relique/jdbc/csv/BetweenExpression.java
    src/main/java/org/relique/jdbc/csv/CsvResultSet.java
    src/main/java/org/relique/jdbc/csv/InExpression.java
    src/main/java/org/relique/jdbc/csv/IsNullExpression.java
    src/main/java/org/relique/jdbc/csv/LikeExpression.java
    src/main/java/org/relique/jdbc/csv/LogicalExpression.java
    src/main/java/org/relique/jdbc/csv/NotExpression.java
    src/main/java/org/relique/jdbc/csv/OrExpression.java
    src/main/java/org/relique/jdbc/csv/ParsedExpression.java
    src/main/java/org/relique/jdbc/csv/RelopExpression.java
    src/main/java/org/relique/jdbc/csv/SearchedCaseExpression.java
    src/test/java/org/relique/jdbc/csv/TestSqlParser.java

     
  • Simon Chenery

    Simon Chenery - 2015-05-16
    • status: open --> pending
    • Group: -->
     
  • Simon Chenery

    Simon Chenery - 2015-06-22

    Included in CsvJdbc version 1.0-25.

     
  • Simon Chenery

    Simon Chenery - 2015-06-22
    • status: pending --> closed