1{ stdenv, lib, fetchFromGitHub, postgresql, boost182, nixosTests }:
2
3stdenv.mkDerivation (finalAttrs: {
4 pname = "apache_datasketches";
5 version = "1.6.0";
6
7 srcs = [
8 ( fetchFromGitHub {
9 name = "datasketches-postgresql";
10 owner = "apache";
11 repo = "datasketches-postgresql";
12 rev = "refs/tags/${finalAttrs.version}";
13 hash = "sha256-sz94fIe7nyWhjiw8FAm6ZzVpB0sAK5YxUrtbaZt/guA=";
14 })
15 ( fetchFromGitHub {
16 name = "datasketches-cpp";
17 owner = "apache";
18 repo = "datasketches-cpp";
19 rev = "refs/tags/4.1.0";
20 hash = "sha256-vPoFzRxOXlEAiiHH9M5S6255ahzaKsGNYS0cdHwrRYw=";
21 })
22 ];
23 sourceRoot = "datasketches-postgresql";
24
25 buildInputs = [ postgresql boost182 ];
26
27 patchPhase = ''
28 runHook prePatch
29 cp -r ../datasketches-cpp .
30 runHook postPatch
31 '';
32
33 installPhase = ''
34 runHook preInstall
35 install -D -m 644 ./datasketches.so -t $out/lib/
36 cat \
37 sql/datasketches_cpc_sketch.sql \
38 sql/datasketches_kll_float_sketch.sql \
39 sql/datasketches_kll_double_sketch.sql \
40 sql/datasketches_theta_sketch.sql \
41 sql/datasketches_frequent_strings_sketch.sql \
42 sql/datasketches_hll_sketch.sql \
43 sql/datasketches_aod_sketch.sql \
44 sql/datasketches_req_float_sketch.sql \
45 sql/datasketches_quantiles_double_sketch.sql \
46 > sql/datasketches--${finalAttrs.version}.sql
47 install -D -m 644 ./datasketches.control -t $out/share/postgresql/extension
48 install -D -m 644 \
49 ./sql/datasketches--${finalAttrs.version}.sql \
50 ./sql/datasketches--1.3.0--1.4.0.sql \
51 ./sql/datasketches--1.4.0--1.5.0.sql \
52 ./sql/datasketches--1.5.0--1.6.0.sql \
53 -t $out/share/postgresql/extension
54 runHook postInstall
55 '';
56
57 passthru.tests.apache_datasketches = nixosTests.apache_datasketches;
58
59 meta = {
60 description = "PostgreSQL extension providing approximate algorithms for distinct item counts, quantile estimation and frequent items detection";
61 longDescription = ''
62 apache_datasketches is an extension to support approximate algorithms on PostgreSQL. The implementation
63 is based on the Apache Datasketches CPP library, and provides support for HyperLogLog,
64 Compressed Probabilistic Counting, KLL, Frequent strings, and Theta sketches.
65 '';
66 homepage = "https://datasketches.apache.org/";
67 platforms = postgresql.meta.platforms;
68 license = lib.licenses.asl20;
69 maintainers = with lib.maintainers; [ mmusnjak ];
70 };
71})