Re: Multixid hindsight design - Mailing list pgsql-hackers
From | Craig Ringer |
---|---|
Subject | Re: Multixid hindsight design |
Date | |
Msg-id | CAMsr+YGZJYkKVDKZWZ2gq26DnYYWTwForAf10BxROPkj2q6sTQ@mail.gmail.com Whole thread Raw |
In response to | Re: Multixid hindsight design (Robert Haas <robertmhaas@gmail.com>) |
Responses |
Re: Multixid hindsight design
|
List | pgsql-hackers |
On 10 November 2015 at 02:26, Robert Haas <robertmhaas@gmail.com> wrote: >> I'd like to see, say, python and the 'unittest' module added, and >> to see acceptance of tests using psycopg2 to stream and decode WAL >> from a slot. > > I actually kind of hate this sort of thing. For what it's worth, I don't actually like it either. However, I suspect that the current restricted tools are a significant impediment to test tooling and infrastructure improvement. > Now I'm not dead set against changing anything at all here, but I want > to point out that we just added the TAP framework and already there > are proposals (like Kevin's snapshot too old patch) to require DBD::Pg > for some tests, which a lot of people aren't going to have The alternative seems to be driving psql -qAtz as a coprocess over a pipeline as a poor man's database driver. I really doubt that's any kind of improvement when it comes to the complexity of maintaining tests, fixing them when they break, etc. I'd rather just write tests in C against libpq despite the verbosity, annoyance of maintaining them, etc. Part of why I'm somewhat interested in seeing python and psycopg2 added is that I'd personally quite like to see widely used client drivers covered by the buildfarm to some extent specifically to see if we break them. Though really, it'd make sense to add the most important drivers like psqlODBC and PgJDBC first if doing that.... and that'd be a whole new barrel of fun. > and I know > you and probably a few other people would like python, which is fair > enough, but other people are going to want other things, and pretty > soon we we end up with a situation - if we're not already there - > where for a developer or packager to get a machine to the point where > it runs "all the tests" is a major undertaking. That's the bit I find odd, I guess. It's *trivial* to add DBD::Pg on any remotely sane host. Similarly Python and psycopg2. One package each, or a very simple compile. It's nothing in comparison to setting up to building our documentation... or getting pretty much any of the basic libraries in place on Windows. (However, the streaming replication support for psycopg2 hasn't landed in mainline yet, so you can't just grab it from PGDG repos). Adding more tools does not make the existing ones easier, of course, so that's not really an argument in favour. I just suspect the cost of adding them is being somewhat overblown. That said ... I don't maintain a 1990s-era MIPS box, an old ARM 6, or whatever. It's a pity in a way that the Java toolchain and build process is so heavy, because otherwise it'd make sense to just use Java and PgJDBC. PgJDBC development happens closer to core Pg than most drivers, within the main Pg community. It's also crucial for PostgreSQL's success, with huge adoption and a lot of people relying on it. JUnit is one of the least awful test frameworks I've worked with. Java is widely understood and relatively easy to follow even if you don't know it well. Unfortunately I see around zero chance of getting a JVM, maven or ant, and a bajillion libraries onto buildfarm members. > Accepting more tools also increases the breadth of knowledge expected > of committers and patch authors. That's the real problem IMO. The cognitive and knowledge load. It's exactly the same reason why I just explained to someone else (the not-UTF32 network run by the secret gov't conspiracy/aliens dude, as it turns out) why the codebase requires English identifiers, variable names, comments, etc. While I'd argue that the cost of adding Python localized to some tests is lower than the cost of adding (say) code in Russian to a contrib, it's not zero. So I guess I've already argued against myself in another form. Still, the alternative seems to be writing new bespoke tools on top of libpq. Need something to analyse and decode a WAL stream? Write it in C on top of libpq, add it to the test infrastructure. Probably write new tests as plugins in C, too, or use an embedded Perl runtime, or XS. Or concoct yet another custom language / test description, like isolationtester, for the purpose. Those tools aren't much easier to get rid of, once added, than new languages etc are. Eventually it'd be good to be able to actually test things like streaming replication in an automated manner. We're going to hit the limitations of 'do some stuff and diff the output files' pretty quickly there. Adding a new scripting language isn't exactly going to fix that though. > Similarly with testing frameworks > - except those are even worse, because nobody's saying that any of the > stuff we have now will ever go away. Yeah. I guess that's the issue, isn't it. When something gets added we're generally stuck with it forever. We still have PL/TCL! Even if it were desirable (and ignoring the horrific backpatching pain that'd result), nobody's going to leap up and volunteer to rewrite all the Perl like the Windows build system so we could remove Perl. It's there essentially forever. The concern that if we added python+psycopg2 we'd be stuck with it too is more than valid. Drat. -- Craig Ringer http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training & Services
pgsql-hackers by date: