Package: postgresql-11
Version: 11~rc1-1

On most official platforms, postgresql-11 Depends on llvm70, used for
Just-in-Time Compilation:
https://www.postgresql.org/docs/current/jit.html

However, this has led to a 170% increase in package size - from ~5MB to
~13.5MB - due primarily to precompiled bitcode:
https://packages.debian.org/sid/postgresql-11#pdownload
Installed size almost doubles.

Then there's the runtime library, libllvm7, which is unlikely to be
installed (unlike libllvm3.9, which libstdc++6 relies on). It's another
~12.5MB, and expands to ~50-70MB.

You shouldn't have to install 100MB+ before you can use PostgreSQL.
Likewise, a ~400% increase in footprint is excessive for an optimization
with relatively small and variable benefits.

PostgreSQL does not seem to *require* these files, even if built
--with-jit. See:
https://github.com/postgres/postgres/blob/master/src/backend/jit/jit.c#L55
provider_init() checks the appropriate path and merely emits a log entry
once at DEBUG1 level if the provider isn't present (the same thing it does
if it is).

To me, it makes sense to place the default bitcode and llvmjit.so into a
separate binary package (postgresql-11-llvm?), depending on postgresql-11
and libllvm70, and make that package an enhance, suggests or *maybe*
recommends of postgresql-11 on platforms supporting it - rather than the
hard dependency it is currently.

The developers clearly had this in mind; they went out of their way to
provide "shared library separation":
https://github.com/postgres/postgres/blob/master/src/backend/jit/README

They even anticipated the use of Debian's optional dependencies:
https://www.postgresql.org/message-id/20180130220830.c6pn6j5lrdbbw7wu%40alap3.anarazel.de
> With things like apt recommends and such I don't think this is a huge
> problem.  It'll be installed by default unless somebody is on a space
> constrained system and doesn't want that...

[I disagree that it should be installed by default, but it's a more
reasonable viewpoint than "must be installed"]

Don't get me wrong: JIT is a cool feature. I just think administrators
should be able to decide whether to install it, given the impact it has on
disk usage (and potentially memory usage, etc). Optional extension binary
packages also contain bitcode, but I don't suggest changing that, as the
size impact is far less.

Best regards,
-- 
Laurence "GreenReaper" Parry
https://www.greenreaper.co.uk/

Reply via email to