Hacker News new | ask | show | jobs
by zepolen 1815 days ago
This is legit the biggest wtf I've read today, this is an over 20 year old enterprise db...
2 comments

What's really weird is the Stockholm syndrome of the Oracle users: They are proud of these limitations. I've heard all of these:

* Boolean: You don't really need it, just use 0/1 or Y/N (or J/N or O/N or whatever NLS equivalent of Y/N you want). You might have to implement a few different mappers for the same data type, so what?

* Strings: Semantically, a null string and an empty string are the same. You should be grateful the database works this way. All other DBs are wrong (you hear this a lot in Oracle land).

* Dates: Oh, just ignore the time if you don't want it. What do you mean, time zones? Add the correct offset in your software, you lazy XXX. BTW, we migrated to a server with another time zone, hope this doesn't impact you?

Now there are things that oracle is good at, mainly being trustworthy and scalable with your data, especially in clustered environments. But postgress is slowly but surely eating Oracle's niche here, and mysql has demonstrated customers will tolerate anything for lower costs. So their main value proposition today is that they are Enterprise Class, and all the big boys run Oracle so either join the club or get laughed at by the big boys.

Clarification for the Dates thing: You implement a date as a datetime where time=00:00:00. BUT a timezone mismatch between application and DB means today 00:00:00 might change into yesterday 23:00:00 so everybody who claims you can 'just' ignore the time is subtly wrong.

I had a lot of fun troubleshooting an issue where a country was invaded in WW2 so it joined the German time, but its neighboring country was not. Hence, only in part of WW2 and only in summertime the time zones between these countries differ. Server was of course installed in the neighboring country and then delivered without altering the time zone because who cares about something that subtle. Turns out everybody born in these specific half years had their birthday shifted by one day.

Had a CTO before insisting on tinyints instead of bools because you can have "third behaviour modes".

I wish I remembered the logic behind that, but it was essentially akin to extending feature flags.

There are better date/time data types in Oracle, and the implicit nullability of empty strings is great in practice, but these goddamn booleans annoy me to no end. You can use them in sprocs just fine, but a boolean column? No, that's too hard for Oracle to implement.
From personal memory at least 33 years old.

I was horrified how bad it was compared to Sybase back then.