MySQL 5.1 bigint túlcsordulás lekezelése

Sziasztok,

MySQL doksiból az jön le nekem, hogy v5.5.5-től kezdve tud hibát dobni a db integer túlcsordulásnál:

"As of MySQL 5.5.5, overflow during numeric expression evaluation results in an error. For example, the largest signed BIGINT value is 9223372036854775807, so the following expression produces an error:

mysql> SELECT 9223372036854775807 + 1;
ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807 + 1)'"

Viszont nálam 5.1.x van, és BIGINT-nél ez a kifejezés:

select cast(9223372036854775807 + 1 as signed);

Ezt adja:

-9223372036854775808

Vagyis túlcsordul mindenféle kivétel és hibaüzenet nélkül. Jól sejtem hogy ez 5.1.x-en semmilyen trükkel nem lekezelhető?

Előre is köszi!

Hozzászólások

Létezhet esetleg belső mód vagy kapcsoló amivel lehetne warning-ot generálni integer túlcsordulásnál vajon?

SELECT @eredmeny = mezo2 + 1 FROM t1 LIMIT 1;
IF (@eredmeny <= mezo2)
ROLLBACK;
ENDIF;

Komolyra fordítva: mivel most már van, ez azt jelenti, hogy eddig nem volt. Sajnos.

Nekem is ez a sejtésem.

A kódod sajnos nem jó, én is így akartam megoldani, de ugye olyan is előfordulhat, hogy nagy számmal szorzok, ekkor lehet hogy a bemenet kisebb volt, de mivel többször túlcsordul, ezért a végeredmény megjósolhatatlan, vagy kisebb - vagy nagyobb - össze vissza.