If Database::freeResult() is always useless in MySQL, then why don't we just make it a no-op?
It's useless in the sense that it does the same thing as unset(), except that it leaves a valid resource behind, which will give an error when you try to use it for anything. In theory there could be callers that use it for something important. We could replace them with unset() but then you'd still get an error when the variable is next used.