Am 05.09.20 um 12:32 schrieb Sergei Golubchik:
On Sep 05, Reindl Harald wrote:
well, why in the world was a clear structure replaced with some json-like crap?
for a couple of reasons. every new release was adding more columns to mysql.user, and mysql_upgrade was getting more and more complex trying to convert all possible intermediate table structures into the latest. and the privilege code was doing the same, as it should work without mysql_upgrade, so it was guessing and adapting to all intermediate numbers of columns. Not always correctly, the latest bug here is MDEV-23201.
and how does json crap magically solve the issue?
with a json we'll never need to run mysql_upgrade on mysql.user and mysql.global_priv ever. I hope :)
yeah, throwing away structure to not need to update structure in the future - my god send an asteroid making and end to the human race :-)
a second reason - mysql.user can only have one auth plugin per user, while 10.4 supports multiple alternative authentications.
besides, it doesn't matter whether the structure is clear or json-like crap, privilege tables are internal matter of the server, users can but aren't supposed to look inside, there is no guarantee that the structure will be stable or readable. changing privilege tables directly is fragile and is not recommended since 2000.
but it worked - cleaner and quicker than crafting special queries you mostly need only once or twice per year one reason going back to 10.3 as long as possible period