@simon_brooke @kevingranade @vashti i would imagine this depends on the runtime? This only works if your language is very object-y, since bigints are handled through indirection, and you'd need to tag the difference between the pointers and integers.
And I don't think the overhead is a question of catching overflows, it's dealing with all the conditions, now you would have an if-statement at least at every reciever from the DB. (unless integers are already indirected in that lanaguage, in which case there is dynamic dispatch overhead for every arithmetic operation)
And BigInt support is software land, not hardware, which means you can't re-use registers and such, but have to cycle them in and out of memory, which I would presume to have a pretty decent overhead in compute time and memory bus (the actual bottleneck in modern computing).
Or at least that's what I'd figure, I'm not a professional or anything so I'd love to hear your thoughts.