meh. I'll fine dealing with it. I have a container somewhere that can load two versions. Is there anything that really challenges PostegreSQL and MySQL/MiriaDB/variants in the FOSS relational database world right now?
@djsumdog when i finally bothered to clean by /boot i had kernel ver 4 somethings in there and obviously every single ver 5 kernel i bothered to download and compile
@mk@djsumdog Postgres changes the binary format between major releases.
The idea is that you don't migrate between major releases compulsively. It's not like opensshd, it's a language runtime with a large amount of data attached. You're supposed to be conservative about migrating.
Yea some of that might be unnecessary. I'm working on another post about migrating to ZFS.
I have another server I'm building out and it's got an older AMD chip in it. With ZFS I could clone my volume, chroot into it, unemerge a ton of stuff I didn't need, and then emerge and empty tree after swithcing --march=native to x86_64 (don't forget the initrd! 😅). Then I just zfs send it to another machine, use ebibootmgr to setup ZFSBootMenu and I booted the clone.
> so what? every developer has to deal with this..write migration scripts and ship it with your upgrades..this is NOT a user problem.
No, no, the on-disk format of the data. You don't do a "migration script" for a filesystem, you release the new version of the filesystem and then everyone copies their shit over.
> yeah..people stop fucking upgrading and run decades old software..really great strategie.
Previous versions are still supported and get updates. This isn't a browser. What you are saying is bad. You don't auto-migrate a 10TB database.
> why would you waste developer time like that? this is even more retarded.
It's designed to be fast and have zero downtime. You don't buy an M1 Abrams to drive to the store then complain about the gas mileage and the roads cracking beneath it.
Flippant; the question was intended to get you to think instead of internet-arguing. The old versions are maintained, they have bug fixes, security patches. Same with the kernel: http://kernel.org/ still maintains 5.4, can you guess why?
@djsumdog based zfs chad i do snapshots of my / before every update and it saves my ass but for your AMD chip it would be faster to spin it up from a brand new stage3 imo
You're not on a different version of ZFS. The version of ZFS hasn't changed in forever. You're adding new feature flags. Some of those flags will break compatibility when you upgrade the pool. That's why it's a manual process.
High availability is the default expectation for a database. Your local dev box is the exception. When you have large postgres servers (multiple TB), you need logical replications to your new replica set, promotion and failover. Postgres's core data model is not at all like a file system version feature flag update.
It's not some "enterprise" feature. I've done it on clusters as small as 4 nodes. It's what happens behind the scenes on those fancy "cloud" instances.
@mk@djsumdog Do you know how bug-riddled "support N versions of the same on-disk format" is going to be? Do you know how Postgres even works? Do you know the difference between v12 and v13? Do you have to support any extensions? Do you use any? Do you know how to port an extension that supports one version to a new version?
This is real work real people have to do or shit breaks: your minor inconvenience is nothing.
Go ask on the Postgres mailing list: https://www.postgresql.org/list/ . Tell them that you're angry it's a mailing list instead of Discord, too, see how that goes over.
i bet that the majority of them don't have any of your high-availabilty enterprise problems and just want it to fucking work without extra support hours.
My entire career has been spent either working at or running that type of company.
> i bet that the majority of them don't have any of your high-availabilty enterprise problems
Literally every company I have ever worked at cares about this. Any hacker that gives a damn about his work cares about zero downtime. Maybe it doesn't matter in .de if your shit is broken but it sure as hell does here.
@roland@djsumdog@mk It's not like the RDB or anything, semantics change, the APIs that extensions use change. There are plenty of community-developed scripts for simple upgrades of small clusters. FSE (not "enterprise") is 611GB on disk. When I did the upgrade to 16.2, it took a while: these upgrades have to be done deliberately. It's not quite as bad as Python 2 to Python 3 but it's closer to that than updating to a new version of some random application. The closer you get to the base levels of the system, the more careful you have to be, and for most uses of a database (the uses for which Postgres is designed), data loss and downtime are unacceptable, some query that was fast suddenly gets slow, you can't have that. And how do you even do that across distros? Maybe his distro should provide that script; Debian does if I recall correctly, but he's shoving everything into Docker containers, and Docker containers tend to offload the heavy storage stuff until they can't.
@mk@p@djsumdog I can understand you both. On one hand, software X can migrate/upgrade its file structure (e.g. "binary format") by itself by running automatically some migration/upgrade script. These scripts can be bound to version numbers (when the upgrade takes place) so the user=admin isn't bothered by it. The "in-place" migration also forces the upgrade on the user=admin.
But it seems like #PostgreSQL seem to follow an other philosophy that says that administrators are the responsible persons and it should be in their full control when the migration/upgrade should take place. So they don't want to force the upgrade on the admin's decision-making progress and let him decide whenever it takes place.
So what would be the solution? A simple script like pg_upgrade.sh that the administrator can manually run or for those people like @mk is that the installer asks "Should pg_upgrade.sh run for your automatically?" and it is done then during upgrade.
@moth_ball@djsumdog@mk It is difficult to get across things like "This is different, there are reasons it is different, stop crying long enough to figure out how I/O works."
The big problem is that Ubertuber doesn't ship with the BSD fortunes so that wisdom and understanding are dumped on you when you log in:
> When someone says "I want a programming language in which I need only say what I wish done," give him a lollipop.
@RedTechEngineer@djsumdog@mk@roland I don't even write much Python and I am certain that I have a bunch of shit that would break if I ditched Python 2.
Really? I don't think I've written any Python 2 in at least 5 years. The package isn't even available anymore in most Linux distros. Pretty much every major library has been updated by now.
If you still have Python2 scripts 2to3 usually gets you 99% of the way there.
@roland@djsumdog@mk@RedTechEngineer Unlikely; if it was 1:1 then it wouldn't require porting to begin with. You could maybe have a bot attempt it, but the bot would have to decipher what the original author *meant* to do rather than what they actually did.
For example, Python 3 changed how strings were handled. Probably in most cases this is trivial, but sometimes when reading the code, a machine wouldn't be able to tell if it was intended to handle ASCII or UTF-8 or binary data. And that's one semantic change: a lot of libraries went away, so how do you automate that? Just dump the library code into the middle of the file, or select a new API? Can you automate the process of translating a web2py application into a Django one? A lot of these things you can't really automate: you need to make decisions about what to do, which requires you to understand why the code exists.
@roland@djsumdog@p@mk > It takes time to port #python2 code to #python3 style. That's why there was a 6 year deprecation notice put out 11 years ago. It's been EOL for 5 years. 😭
@roland@djsumdog@mk@RedTechEngineer Well, Python 3 was a big change. All of my Ruby 1.8(!!) code still works in 3.4, most PHP stuff is the same, but in Python's case, it's got less to do with code, it's a coordination effort: lift the world without moving it.
Jython, for example, is still only compatible with Python 2.7. People that use Jython still have to write 2.7 code: if you want your Python code to talk to Scala, you have to write code that works on Python 2. So you write a library that bridges some code written in Java with some code written in Python and then someone else's Scala depends on it, you can't just wave a wand.
@RedTechEngineer@mk@p@djsumdog Ops ... Slow lazy developers again. :frown: Hey devs, port your damn software! Even my software started with PHP 4 (!) and runs on PHP 8 now. Yes, runs. But with deprecated stuff like array() instead of [] and still with closing PHP tag ?>. Shame on me! 😂
@ins0mniak@RedTechEngineer@djsumdog@mk This dude replaced the Dis VM with Lua in Inferno in order to make it possible to supplement Inferno with Lua nodes: https://github.com/jvburnes/node9 . There's also a Lua port to Plan 9 (though I suspect luaposix does not work), but it took a little tweaking to make it compile. (I didn't go past "Hello, World!", I just use awk and rc for scripts on Plan 9.)
Yea, I was guessing you were talking about old simple, one task scripts. I did have to port some Python2 to 3 on a few projects. Some of it wasn't that bad, but there were some things that took a while.
I commend the efforts of the BeautifulSoup4 devs who had to deal with the entire SGML parser being removed.
The 90% number was hyperbolic. It does spit out what it can't auto fix, and I just hoped the process had gotten better now that most libraries/frameworks have been ported over. I haven't had to do any py2->3 porting in years either. 😋
I bet Python 2 is probably still embedded in GIS programs too. ArcGIS was using VisualBaisc for Applications (VBA, a VB6 bastard stepchild) in 2012, and had added Python 2 support. Most of the professors refused to move from VBA to Python.
> Yea, I was guessing you were talking about old simple, one task scripts.
I used to write those in Ruby unless I had a reason; nowadays they're in awk unless I have a reason (e.g., JSON). So I can sit down at a terminal in 1985 and be fine, ha.
> The 90% number was hyperbolic. It does spit out what it can't auto fix,
Yeah, I think, like...half the time it's easier to just put the old code on the left, an empty buffer on the right, and do a rewrite.
@ins0mniak@RedTechEngineer@djsumdog@mk When I'm not fighting the language, I like it a lot. I'm fighting it less but still some infelicities once in a while.