It's just as bad an idea now as it was then.
Databases are about data after all. Why not have a rich way to describe it?
- a 64-bit float
- a 64-bit int
everything else can be emulated in code from there and you can play all the encoding games you want to save space when you don't have to use it. This covers 99.999% of the use cases you reasonably see.
From there, I would argue, you should also have:
- a bit and byte
- 32-bit ints
- 32-bit float
- 128-bit int (once you add UUIDs you might as well make them full numerics citizens).
If I were doing a modern database, I'd have the kitchen sink as a type full numerics from 8 to 128 bit both signed and unsigned int and all supported hardware float sizes. I'd probably even have a 512-bit AVX type just to see what people would use it for.
64 bit is nicer than 32 bit, but it's scarcely more necessary than 128 bit numbers.
like I said. read NEED as in you can certainly hobble around without it (pick an appropriate offset and read your 53 bits in relation to it), but like a fracture in a leg, it's still considered broken.
If you want a good timestamp you probably want a timespec, and that won't fit in 64 bits anyway.
I don't see why it's easy to make 128+ bit types be composite, but you can't have 64 bit types be composite.
Your database driver can take care of how the bits are packed on the wire. It really shouldn't be a big concern.
After dealing with JavaScript and Lua, I am ready to call this a complete anti-pattern. To be a good language, it must support at least one size each of machine floats and ints. To be really good, it should be possible for me to choose any size of machine-supported floats and ints. To be great, it should also support rationals, fixed-point and complex numbers out of the box.
Giving me floats but not ints just doesn't cut it. It works, in a kind of shoddy way, but … it's tasteless.
If you don't provide me with bitwise operations (earlier versions of Lua, I'm looking at you), then you don't get to call yourself a real language.
For a database, though, I suppose one could always store integers as their string representation. But please, no language ever do this again ever.