On Fri, 21 Jul 2023 at 02:59, Ivan Panchenko <w...@mail.ru> wrote: > > Friday, 14 July 2023, 23:27 +03:00 от Tom Lane <t...@sss.pgh.pa.us>: > > =?UTF-8?B?SXZhbiBQYW5jaGVua28=?= <w...@mail.ru> writes: > > Четверг, 6 июля 2023, 14:48 +03:00 от Peter Eisentraut < > > pe...@eisentraut.org >: > >> If the transform deals with a built-in type, then they should just be > >> added to the respective pl extension directly. > > > The new extension bytea_plperl can be easily moved into plperl now, but > > what should be do with the existing ones, namely jsonb_plperl and > > bool_plperl ? > > If we leave them where they are, it would be hard to explain why some > > transforms are inside plperl while other ones live separately. If we move > > them into plperl also, wouldn’t it break some compatibility? > > It's kind of a mess, indeed. But I think we could make plperl 1.1 > contain the additional transforms and just tell people they have > to drop the obsolete extensions before they upgrade to 1.1. > Fortunately, it doesn't look like functions using a transform > have any hard dependency on the transform, so "drop extension > jsonb_plperl" followed by "alter extension plperl update" should > work without cascading to all your plperl functions. > > Having said that, we'd still be in the position of having to > explain why some transforms are packaged with plperl and others > not. The distinction between built-in and contrib types might > be obvious to us hackers, but I bet a lot of users see it as > pretty artificial. So maybe the existing packaging design is > fine and we should just look for a way to reduce the code > duplication. > > The code duplication between different transforms is not in C code, but > mostly in copy-pasted Makefile, *.control, *.sql and meson-build. These files > could be generated from some universal templates. But, keeping in mind > Windows compatibility and presence of three build system, this hardly looks > like a simplification. > Probably at present time it would be better to keep the existing code > duplication until plperl 1.1. > Nevertheless, dealing with code duplication is a wider task than the bytea > transform, so let me suggest to keep this extension in the present form. If > we decide what to do with the duplication, it would be another patch. > > The mesonified and rebased version of the transform patch is attached.
The patch needs to be rebased as these changes are not required anymore: diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index 9e05eb91b1..ec0a3f8097 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -43,7 +43,7 @@ my $contrib_extralibs = { 'libpq_pipeline' => ['ws2_32.lib'] }; my $contrib_extraincludes = {}; my $contrib_extrasource = {}; my @contrib_excludes = ( - 'bool_plperl', 'commit_ts', + 'bool_plperl', 'bytea_plperl', 'commit_ts', 'hstore_plperl', 'hstore_plpython', 'intagg', 'jsonb_plperl', 'jsonb_plpython', 'ltree_plpython', @@ -791,6 +791,9 @@ sub mkvcbuild my $bool_plperl = AddTransformModule( 'bool_plperl', 'contrib/bool_plperl', 'plperl', 'src/pl/plperl'); + my $bytea_plperl = AddTransformModule( + 'bytea_plperl', 'contrib/bytea_plperl', + 'plperl', 'src/pl/plperl'); Regards, Vignesh