[Bucardo-general] Possible areas for Bucardo modernization

Jon Jensen jon at endpoint.com
Thu Oct 22 05:04:46 UTC 2020


Bucardo developers,

I have been working on adding large object support for Bucardo, and along 
the way I made some notes of things we might want to discuss to keep the 
project alive and kicking, as a good goat should. 🐐

In no particular order:

Should we boost the minimum required Perl version? It's still at 5.8.3. It 
seems crazy not to be able to use the // operator that was introduced in 
5.10 almost 13 years ago. The current oldest supported Perl version is 
5.30, or in the LTS Linux distros, 5.16.3 in CentOS 7 (after CentOS 6 goes 
EOL next month). Not a big deal to work around missing // of course, but 
seems like a new major Bucardo release might be as good a time as any.

Should we remove Drizzle support, since the Drizzle project is long dead?

There are some workarounds for DBD::Pg < 2.18.1 that can go away once we 
require at least that version. It was released in May 2011, so seems like 
that could be done now.

The FAQ still uses the old terminology multi-master, master-slave: 
https://bucardo.org/Bucardo/FAQ.html - Any objection to replacing that?

Are there any TODO comments we can get rid of in the code? Some have been 
there forever. If they should stay, that's fine, just looking for the case 
where time has made some no longer needed.

A little code question: Around line 7081 of Bucardo.pm this "binarycols" 
array seems unused, and bytea data is converted to base64, so is this 
needed?

> ## This is used to bind_param these as binary during inserts and updates
> push @{$g->{binarycols}}, $colinfo->{$colname}{order};

Finally, old Postgres version support:

I was going to suggest we consider increasing the minimum Postgres version 
supported, but perhaps this is an area where we should be very 
conservative because a major use case for Bucardo is for upgrades, and old 
database that have been neglected is where it really shines and the latest 
Postgres features are not available.

But for the sake of discussion I saw:

* workaround for clock_timestamp() not existing until 8.2

* array_agg reimplemented for < 8.4

* a few checks for 8.3, 9.0, 9.2

Yet maybe we should leave most of those alone.

Please let me know if any of this resonates!

Thanks,
Jon


-- 
Jon Jensen
End Point Corporation
https://www.endpoint.com/


More information about the Bucardo-general mailing list