apache / apache/datafusion

Numeric overflow should result in query error

Offen
#17,539 6 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @EeshanBembi Auf GitHub ansehen
bug
Vorherrschende Sprache
Rust
Sterne
9.3k
Forks
2.4k
Ø Merge
3 T. 11 Std.
Gemergte PRs (30 T.)
362

Beschreibung

### 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_

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.