apache / apache/datafusion

Numeric overflow should result in query error

Đang mở
#17,539 6 bình luận 0 reaction 1 người được giao Được @EeshanBembi nhận Xem trên GitHub
bug
Ngôn ngữ chính
Rust
Star
9.3k
Fork
2.4k
Merge trung bình
3 ngày 11 giờ
Pull request đã merge (30 ngày)
360

Mô tả

### Describe the bug

In programming languages it's rather typical that numeric overflows are not a runtime error.

In SQL, it's rather typical that numeric overflows are identified during query execution and are treated as an error.

DataFusion is a SQL engine and therefore should report overflows as query errors. Continuing execution after overflows happened is a correctness issue (query results a wrong result).

### To Reproduce

```shell
cargo run --bin datafusion-cli -- --command "SELECT 10000000000 * 10000000000;"
```

```
datafusion main$ cargo run --bin datafusion-cli -- --command "SELECT 10000000000 * 10000000000;"
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.17s
Running `target/debug/datafusion-cli --command 'SELECT 10000000000 * 10000000000;'`
DataFusion CLI v50.0.0
+-----------------------------------------+
| Int64(10000000000) * Int64(10000000000) |
+-----------------------------------------+
| 7766279631452241920 |
+-----------------------------------------+
```

### Expected behavior

### PostgreSQL

```
postgres=# SELECT 10000000000 * 10000000000;
ERROR: bigint out of range
```

### Trino
```
trino> SELECT 10000000000 * 10000000000;
Query 20250912_093345_00000_kgiyz failed: bigint multiplication overflow: 10000000000 * 10000000000
```

### Snowflake
```
SELECT 10000000000 * 10000000000 * 10000000000 * 10000000000;
-- Number out of representable range: type FIXED[SB16](38,0){not null}, value 1e+40
```

### Additional context

_No response_

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.