Caizhi Weng created FLINK-27629: ----------------------------------- Summary: Table Store throws NullPointerException when pushing down NotEqual predicate to a column consisting of nulls Key: FLINK-27629 URL: https://issues.apache.org/jira/browse/FLINK-27629 Project: Flink Issue Type: Bug Components: Table Store Affects Versions: table-store-0.2.0 Reporter: Caizhi Weng
Run the following Flink SQL to reproduce this issue. {code} Flink SQL> create table S ( a double ) with ( 'path' = '/tmp/store' ); [INFO] Execute statement succeed. Flink SQL> insert into S values (cast(null as double)), (cast(null as double)); [INFO] Submitting SQL update statement to the cluster... [INFO] SQL update statement has been successfully submitted to the cluster: Job ID: edb2ce383c00b2f635759dee70add73d Flink SQL> select * from S where a <> 1; [ERROR] Could not execute SQL statement. Reason: java.util.concurrent.ExecutionException: java.lang.NullPointerException {code} The exception stack is {code} Caused by: java.lang.NullPointerException at java.lang.Double.compareTo(Double.java:978) ~[?:1.8.0_151] at java.lang.Double.compareTo(Double.java:49) ~[?:1.8.0_151] at org.apache.flink.table.store.file.predicate.Literal.compareValueTo(Literal.java:60) ~[flink-table-store-dist-0.2-SNAPSHOT.jar:0.2-SNAPSHOT] at org.apache.flink.table.store.file.predicate.NotEqual.test(NotEqual.java:50) ~[flink-table-store-dist-0.2-SNAPSHOT.jar:0.2-SNAPSHOT] at org.apache.flink.table.store.file.operation.FileStoreScanImpl.filterManifestEntry(FileStoreScanImpl.java:287) ~[flink-table-store-dist-0.2-SNAPSHOT.jar:0.2-SNAPSHOT] at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174) ~[?:1.8.0_151] at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1380) ~[?:1.8.0_151] at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) ~[?:1.8.0_151] at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:270) ~[?:1.8.0_151] at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[?:1.8.0_151] at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1380) ~[?:1.8.0_151] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_151] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_151] at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:747) ~[?:1.8.0_151] at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:721) ~[?:1.8.0_151] at java.util.stream.AbstractTask.compute(AbstractTask.java:316) ~[?:1.8.0_151] at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731) ~[?:1.8.0_151] at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_151] at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:401) ~[?:1.8.0_151] at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:734) ~[?:1.8.0_151] at java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:714) ~[?:1.8.0_151] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233) ~[?:1.8.0_151] at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[?:1.8.0_151] at org.apache.flink.table.store.file.operation.FileStoreScanImpl.lambda$plan$3(FileStoreScanImpl.java:221) ~[flink-table-store-dist-0.2-SNAPSHOT.jar:0.2-SNAPSHOT] at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424) ~[?:1.8.0_151] at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_151] at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[?:1.8.0_151] at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) ~[?:1.8.0_151] at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) ~[?:1.8.0_151] {code} -- This message was sent by Atlassian Jira (v8.20.7#820007)