Merged in mat/fix-simultaneous-chunk-creation-bug (pull request #138)

Fix bug with simultaneous chunk creation.

Approved-by: Olof Rensfelt <olof@iobeam.com>
Approved-by: RobAtticus NA <rob.kiefer@gmail.com>
Approved-by: ci-vast
This commit is contained in:
Matvey Arye 2017-03-24 16:31:11 +00:00
commit d13f1e86db
2 changed files with 9 additions and 0 deletions

View File

@ -194,6 +194,8 @@ CREATE TABLE IF NOT EXISTS _timescaledb_catalog.chunk (
UNIQUE (partition_id, end_time),
CHECK (start_time <= end_time)
);
CREATE UNIQUE INDEX ON _timescaledb_catalog.chunk (partition_id) WHERE start_time IS NULL;
CREATE UNIQUE INDEX ON _timescaledb_catalog.chunk (partition_id) WHERE end_time IS NULL;
CREATE INDEX ON _timescaledb_catalog.chunk(partition_id, start_time, end_time);
SELECT pg_catalog.pg_extension_config_dump('_timescaledb_catalog.chunk', '');
SELECT pg_catalog.pg_extension_config_dump(pg_get_serial_sequence('_timescaledb_catalog.chunk','id'), '');

View File

@ -91,6 +91,13 @@ DECLARE
chunk_row _timescaledb_catalog.chunk;
partition_row _timescaledb_catalog.partition;
BEGIN
--get lock: prevents simultaneous creation of multiple chunks for same partition.
SELECT *
INTO partition_row
FROM _timescaledb_catalog.partition
WHERE id = partition_id
FOR UPDATE;
--recheck:
chunk_row := _timescaledb_internal.get_chunk(partition_id, time_point);