← Back to all posts

PipelineDB 0.9.3

PipelineDB 0.9.3 is here, download it now!

Merged PostgreSQL 9.5.3

Our last upstream merge was with PostgreSQL 9.5.0. Since then there have been 3 minor releases, so we decided to include all changes made in those releases into PipelineDB. The most significant change is support for 128-bit integers in the code base. See the issue here on PostgreSQL's mailing list. Some numeric aggregate functions involving large integers were using NumericAggState as their transition states which is quite a large structure and arithmetic operations on its numeric representation can be slow. If your platform supports __int128_t, you should see 2.5x-4x performance improvement for sum(int8), avg(int8), var_*(int2), var_*(int4), stdev_*(int2) and stdev_*(int4).

pipeline_query Catalog Changes

We made some changes to the pipeline_query catalog table, mainly that we no longer store the query name in it and instead store a reference to its row in the pg_class catalog table. This should make supporting ALTER on continuous views much easier. Unfortunately, catalog changes require you to initialize your data directory again using pipeline-init.

Floating Point Values For step_factor

step_factor can now be specified as a floating point number between 0 and 50, as opposed to an integer between 1 and 50. You must specify float values as a string though, for example:

CREATE CONTINUOUS VIEW v WITH (max_age = '1 day', step_factor = '0.5') AS SELECT count(*) FROM stream;

Server Binary Renamed

We've renamed the server binary from pipeline-server to pipelinedb. If you were using the pipeline-ctl utility to manage your PipelineDB server, this shouldn't affect you. If you were interacting with the pipeline-server binary directly, please change it to pipelinedb.

Stability & Other Improvements

  • There was a pretty major file descriptor leak in 0.9.2 which is fixed in this release.
  • set_agg could sometimes report garbage values because it's aggregate state wasn't being initialized correctly; the issue is fixed now.
  • Shared memory queues we use to pass messages between processes needed memory fences to avoid overflow issues under high concurrent inserts.
  • pipeline_stream_insert can now be used as a regular trigger function.