Commit graph

1880 commits

Author SHA1 Message Date
Mario Rodas 3bb23bd81a postgresqlPackages.plv8: 3.1.4 -> 3.1.5 2023-04-05 04:20:00 +00:00
ajs124 d59c85209d
Merge pull request #223752 from Izorkin/update-mariadb-galera
mariadb-galera: 26.4.13 -> 26.4.14
2023-04-03 13:12:33 +02:00
Mario Rodas c937feb1a1
Merge pull request #219826 from noctarius/master
Fixed TimescaleDB License Information
2023-04-01 09:19:04 -05:00
Izorkin fb14301291
mariadb-galera: 26.4.13 -> 26.4.14 2023-04-01 16:55:37 +03:00
Mario Rodas 079209be0e postgresqlPackages.pgrouting: 3.4.2 -> 3.5.0
https://github.com/pgRouting/pgrouting/releases/tag/v3.5.0
2023-03-31 04:20:00 +00:00
Sandro c2ae278eb8
Merge pull request #221851 from Ma27/postgresql-jit-support
postgresql: implement opt-in JIT support
2023-03-29 13:29:30 +02:00
Maximilian Bosch 9f2b4357c1
postgresql: save rebuilds of existing packages
...by using `+ lib.optionalString ...` rather than a substitution. That
way the phases don't have additional trailing white-spaces in the
non-JIT case which cause rebuilds.
2023-03-29 08:39:47 +02:00
Maximilian Bosch a5a715bb24
postgresql_jit: fix darwin build
So, patchelf works on ELF files and these don't exist on Darwin. I'm not
aware of any other way to eliminate all references of the executable's
body while preserving library paths in the header. This still works, the
only problem is that darwin has a dependency on llvm.dev, so it's
runtime closure is larger.
2023-03-29 08:39:47 +02:00
Maximilian Bosch 43dbeae02d
postgresql: pass through JIT-enabled variant of non-JIT postgres and vice versa
This is useful if your postgresql version is dependant on
`system.stateVersion` and not pinned down manually. Then it's not
necessary to find out which version exactly is in use and define
`package` manually, but just stay with what NixOS provides as default:

    $ nix-instantiate -A postgresql
    /nix/store/82fzmb77mz2b787dgj7mn4a8i4f6l6sn-postgresql-14.7.drv
    $ nix-instantiate -A postgresql_jit
    /nix/store/qsjkb72fcrrfpsszrwbsi9q9wgp39m50-postgresql-14.7.drv
    $ nix-instantiate -A postgresql.withJIT
    /nix/store/qsjkb72fcrrfpsszrwbsi9q9wgp39m50-postgresql-14.7.drv
    $ nix-instantiate -A postgresql.withJIT.withoutJIT
    /nix/store/82fzmb77mz2b787dgj7mn4a8i4f6l6sn-postgresql-14.7.drv

I.e. you can use postgresql with JIT (for complex queries only[1]) like
this:

    services.postgresql = {
      enable = true;
      enableJIT = true;
    };

Performing a new override instead of re-using the `_jit`-variants for
that has the nice property that overlays for the original package apply
to the JIT-enabled variant, i.e.

    with import ./. {
      overlays = [
        (self: super: {
          postgresql = super.postgresql.overrideAttrs (_: { fnord = "snens"; });
        })
      ];
    };
    postgresql.withJIT.fnord

still gives the string `snens` whereas `postgresql_jit` doesn't have the
attribute `fnord` in its derivation.

[1] https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-JIT-ABOVE-COST
2023-03-29 08:39:46 +02:00
Maximilian Bosch 2282fa73a1
postgresql: implement opt-in JIT support
Closes #150801

Note: I decided against resuming directly on #150801 because the
conflict was too big (and resolving it seemed too error-prone to me).
Also the `this`-refactoring could be done in an easier manner, i.e. by
exposing JIT attributes with the correct configuration. More on that
below.

This patch creates variants of the `postgresql*`-packages with JIT[1]
support. Please note that a lot of the work was derived from previous
patches filed by other contributors, namely dasJ, andir and abbradar,
hence the co-authored-by tags below.

Effectively, the following things have changed:

* For JIT variants an LLVM-backed stdenv with clang is now used as
  suggested by dasJ[2]. We need LLVM and CLang[3] anyways to build the
  JIT-part, so no need to mix this up with GCC's stdenv. Also, using the
  `dev`-output of LLVM and clang's stdenv for building (and adding llvm
  libs as build-inputs) seems more cross friendly to me (which will
  become useful when cross-building for JIT-variants will actually be
  supported).

* Plugins inherit the build flags from the Makefiles in
  `$out/lib/pgxs/src` (e.g. `-Werror=unguarded-availability-new`). Since
  some of the flags are clang-specific (and stem from the use of the
  CLang stdenv) and don't work on gcc, the stdenv of `pkgs.postgresql`
  is passed to the plugins. I.e., plugins for non-JIT variants are built
  with a gcc stdenv on Linux and plugins for JIT variants with a clang
  stdenv.

  Since `plv8` hard-codes `gcc` as `$CC` in its Makefile[4], I marked it
  as broken for JIT-variants of postgresql only.

* Added a test-matrix to confirm that JIT works fine on each
  `pkgs.postgresql_*_jit` (thanks Andi for the original test in
  #124804!).

* For each postgresql version, a new attribute
  `postgresql_<version>_jit` (and a corresponding
  `postgresqlPackages<version>JitPackages`) are now exposed for better
  discoverability and prebuilt artifacts in the binary cache.

* In #150801 the `this`-argument was replaced by an internal recursion.
  I decided against this approach because it'd blow up the diff even
  more which makes the readability way harder and also harder to revert
  this if necessary.

  Instead, it is made sure that `this` always points to the correct
  variant of `postgresql` and re-using that in an additional
  `.override {}`-expression is trivial because the JIT-variant is
  exposed in `all-packages.nix`.

* I think the changes are sufficiently big to actually add myself as
  maintainer here.

* Added `libxcrypt` to `buildInputs` for versions <v13. While
  building things with an LLVM stdenv, these versions complained that
  the extern `crypt()` symbol can't be found. Not sure what this is
  exactly about, but since we want to switch to libxcrypt for `crypt()`
  usage anyways[5] I decided to add it. For >=13 it's not relevant
  anymore anyways[6].

* JIT support doesn't work with cross-compilation. It is attempted to
  build LLVM-bytecode (`%.bc` is the corresponding `make(1)`-rule) for
  each sub-directory in `backend/` for the JIT apparently, but with a
  $(CLANG) that can produce binaries for the build, not the host-platform.

  I managed to get a cross-build with JIT support working with
  `depsBuildBuild = [ llvmPackages.clang ] ++ buildInputs`, but
  considering that the resulting LLVM IR isn't platform-independent this
  doesn't give you much. In fact, I tried to test the result in a VM-test,
  but as soon as JIT was used to optimize a query, postgres would
  coredump with `Illegal instruction`.

A common concern of the original approach - with llvm as build input -
was the massive increase of closure size. With the new approach of using
the LLVM stdenv directly and patching out references to the clang drv in
`$out` the effective closure size changes are:

    $ nix path-info -Sh $(nix-build -A postgresql_14)
    /nix/store/kssxxqycwa3c7kmwmykwxqvspxxa6r1w-postgresql-14.7	306.4M
    $ nix path-info -Sh $(nix-build -A postgresql_14_jit)
    /nix/store/xc7qmgqrn4h5yr4vmdwy56gs4bmja9ym-postgresql-14.7	689.2M

Most of the increase in closure-size stems from the `lib`-output of
LLVM

    $ nix path-info -Sh /nix/store/5r97sbs5j6mw7qnbg8nhnq1gad9973ap-llvm-11.1.0-lib
    /nix/store/5r97sbs5j6mw7qnbg8nhnq1gad9973ap-llvm-11.1.0-lib	349.8M

which is why this shouldn't be enabled by default.

While this is quite much because of LLVM, it's still a massive
improvement over the simple approach of adding llvm/clang as
build-inputs and building with `--with-llvm`:

    $ nix path-info -Sh $(nix-build -E '
	with import ./. {};
	postgresql.overrideAttrs ({ configureFlags ? [], buildInputs ? [], ... }: {
	  configureFlags = configureFlags ++ [ "--with-llvm" ];
	  buildInputs = buildInputs ++ [ llvm clang ];
	})' -j0)
    /nix/store/i3bd2r21c6c3428xb4gavjnplfqxn27p-postgresql-14.7	  1.6G

Co-authored-by: Andreas Rammhold <andreas@rammhold.de>
Co-authored-by: Janne Heß <janne@hess.ooo>
Co-authored-by: Nikolay Amiantov <ab@fmap.me>

[1] https://www.postgresql.org/docs/current/jit-reason.html
[2] https://github.com/NixOS/nixpkgs/pull/124804#issuecomment-864616931
    & https://github.com/NixOS/nixpkgs/pull/150801#issuecomment-1467868321
[3] This fails with the following error otherwise:
    ```
    configure: error: clang not found, but required when compiling --with-llvm, specify with CLANG=
    ```
[4] https://github.com/plv8/plv8/blob/v3.1.5/Makefile#L14
[5] https://github.com/NixOS/nixpkgs/pull/181764
[6] c45643d618
2023-03-29 08:39:46 +02:00
Yureka f8cbc3c281 tree-wide: convert rust with git deps to importCargoLock 2023-03-26 01:52:04 +01:00
Christoph Engelbert (noctarius) 4f7f469c82
timescaledb: Fixed the licensing for the timescaledb package to be split into TSL (Timescale Community License) and Apache 2.0 components.
TimescaleDB provides two types of licenses, Apache 2.0 and Timescale Community License (TSL), with different feature sets. While all the code is in the same repository, the build
system can build both versions depending on the build parameters set in.

Co-authored-by: Emily Lange <git@indeednotjames.com>
2023-03-24 11:12:12 +01:00
Mario Rodas 9a2e14a323
Merge pull request #222453 from marsam/update-pgvector
postgresqlPackages.pgvector: 0.4.0 -> 0.4.1
2023-03-22 02:39:59 -05:00
Mario Rodas b63385ad1f
Merge pull request #222434 from SuperSandro2000/SuperSandro2000-patch-1
postgresqlPackages.pg_repack: use clickable homepage
2023-03-21 20:49:48 -05:00
Sandro ffe1c9dc0f
postgresqlPackages.pg_repack: use clickable homepage 2023-03-22 00:03:59 +01:00
ajs124 2b387af207
Merge pull request #221343 from helsinki-systems/upd/proxysql
proxysql: 2.5.0 -> 2.5.1
2023-03-21 11:58:22 +01:00
Mario Rodas 8a449b274a postgresqlPackages.pgvector: 0.4.0 -> 0.4.1 2023-03-21 04:20:00 +00:00
ajs124 5b5e4182cb proxysql: 2.5.0 -> 2.5.1
https://github.com/sysown/proxysql/releases/tag/v2.5.1
2023-03-15 17:39:35 +01:00
Mario Rodas 81c6568482 postgresqlPackages.plpgsql_check: 2.3.0 -> 2.3.3
https://github.com/okbob/plpgsql_check/releases/tag/v2.3.3
2023-03-14 04:20:00 +00:00
Mario Rodas dae678ad8f
Merge pull request #186276 from typetetris/feature/add-timescaledb-toolkit
timescaledb_toolkit: init at 1.14.0
2023-03-11 06:50:54 -05:00
Mario Rodas 7e29e1b2c2 postgresqlPackages.timescaledb: 2.10.0 -> 2.10.1 2023-03-07 04:20:00 +00:00
Mario Rodas 70fd8b9fb8
Merge pull request #219423 from marsam/update-pg_ivm
postgresqlPackages.pg_ivm: 1.5 -> 1.5.1
2023-03-05 07:32:06 -05:00
Mario Rodas 12d836730a postgresqlPackages.pg_ivm: 1.5 -> 1.5.1
https://github.com/sraoss/pg_ivm/releases/tag/v1.5.1
2023-03-03 04:20:00 +00:00
github-actions[bot] 2384cd723b
Merge master into staging-next 2023-02-24 12:01:20 +00:00
1000101 c3aaa8fb5e
postgresqlPackages.timescaledb: 2.9.3 -> 2.10.0 (#217529) 2023-02-24 06:57:13 -05:00
Alyssa Ross 52c286ee5b
Merge remote-tracking branch 'origin/master' into staging-next
Conflicts:
	pkgs/development/libraries/pmdk/default.nix
2023-02-23 13:51:34 +00:00
Artturin 3251013cc1 treewide: env.NIX_CFLAGS_COMPILE use toString on result of optionals
env values must be strings
2023-02-22 21:23:05 +02:00
Artturin f9fdf2d402 treewide: move NIX_CFLAGS_COMPILE to the env attrset
with structuredAttrs lists will be bash arrays which cannot be exported
which will be a issue with some patches and some wrappers like cc-wrapper

this makes it clearer that NIX_CFLAGS_COMPILE must be a string as lists
in env cause a eval failure
2023-02-22 21:23:04 +02:00
github-actions[bot] fd8dd0c966
Merge master into staging-next 2023-02-21 18:01:08 +00:00
ajs124 d8687b3788
Merge pull request #216697 from helsinki-systems/mariadb_1111
mariadb_1011: init at 10.11.2
2023-02-21 14:01:10 +01:00
github-actions[bot] 54adb1d4b1
Merge master into staging-next 2023-02-18 06:01:29 +00:00
Mario Rodas d48c8e181e
Merge pull request #216790 from marsam/update-pg_ivm
postgresqlPackages.pg_ivm: 1.4 -> 1.5
2023-02-17 19:35:53 -05:00
github-actions[bot] 1c50878b7b
Merge master into staging-next 2023-02-17 18:01:15 +00:00
Mostly Void b89976519b
rqlite: init at 7.6.1 (#187962)
* rqlite: init at 7.6.1

* Update pkgs/servers/sql/rqlite/default.nix

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>

---------

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
2023-02-17 13:52:34 +01:00
Mario Rodas 62ad474f0f postgresqlPackages.pg_ivm: 1.4 -> 1.5
https://github.com/sraoss/pg_ivm/releases/tag/v1.5
2023-02-17 04:20:00 +00:00
ajs124 351e8a51c4 mariadb_1011: init at 10.11.2
https://mariadb.org/mariadb-10-11-2-ga-now-available/
new LTS release!
2023-02-16 22:24:07 +01:00
ajs124 32e59366db mariadb: add more precise EOLs + link 2023-02-16 22:18:35 +01:00
github-actions[bot] 164a7e44c7
Merge master into staging-next 2023-02-16 18:01:12 +00:00
ajs124 ac43674f72
Merge pull request #215323 from helsinki-systems/upd/mariadb
mariadb: 2023-02-06 updates
2023-02-16 18:40:33 +01:00
ajs124 a3982d44a9
Merge pull request #215334 from superherointj/pkg-mariadb-remove-flag-withEmbedded
mariadb: unlink withNuma from withEmbedded
2023-02-15 16:33:15 +01:00
Eric Wolf 9dc7a05a85 cargo-pgx/timescaledb_toolkit: add nixos test 2023-02-13 10:58:26 +01:00
Eric Wolf 4e189d769b timescaledb-toolkit: init at 1.14.0 2023-02-13 10:58:26 +01:00
github-actions[bot] ec17e92f67
Merge staging-next into staging 2023-02-12 16:03:16 +00:00
github-actions[bot] 87f957b5e2
Merge master into staging-next 2023-02-12 16:02:45 +00:00
Mario Rodas 7fcab962d0 postgresqlPackages.pg_cron: 1.4.2 -> 1.5.1
https://github.com/citusdata/pg_cron/releases/tag/v1.5.0
https://github.com/citusdata/pg_cron/releases/tag/v1.5.1
2023-02-11 04:20:00 +00:00
Vladimír Čunát 13e8ec1f2d
Merge branch 'staging-next' into staging 2023-02-10 13:46:44 +01:00
ajs124 940b7d4ee1 postgresql_15: 15.1 -> 15.2
https://www.postgresql.org/docs/release/15.2/
2023-02-09 19:24:02 +01:00
ajs124 894c6a5756 postgresql_14: 14.6 -> 14.7
https://www.postgresql.org/docs/release/14.7/
2023-02-09 19:23:49 +01:00
ajs124 b908126eaa postgresql_13: 13.9 -> 13.10
https://www.postgresql.org/docs/release/13.10/
2023-02-09 19:23:29 +01:00
ajs124 0304c27c11 postgresql_12: 12.13 -> 12.14
https://www.postgresql.org/docs/release/12.14/
2023-02-09 19:23:14 +01:00