Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add check for dropped chunk on update #2806

Merged
merged 1 commit into from
Jan 13, 2021

Conversation

mkindahl
Copy link
Contributor

@mkindahl mkindahl commented Jan 12, 2021

If drop_chunks has been executed on a hypertable that has a
continuous aggregate defined, the chunks will be removed and marked as
dropped in _timescaledb_catalog.chunk but the lines will not be
removed. This will cause problems for the update script since it is
missing a check to only process chunks that are not dropped and will
try to cast the chunk name into a REGCLASS for a table that does not
exist.

This commit fixes this by adding a check that the chunk is not dropped
and also fixes the update test to not count dropped chunks when
comparing with the chunk index since the chunk index does not count
dropped chunks.

Fixes #2791

@codecov
Copy link

codecov bot commented Jan 12, 2021

Codecov Report

Merging #2806 (f66eac3) into master (2bef612) will increase coverage by 0.11%.
The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #2806      +/-   ##
==========================================
+ Coverage   90.10%   90.22%   +0.11%     
==========================================
  Files         212      212              
  Lines       34670    34620      -50     
==========================================
- Hits        31240    31236       -4     
+ Misses       3430     3384      -46     
Impacted Files Coverage Δ
src/loader/bgw_message_queue.c 84.51% <0.00%> (-2.59%) ⬇️
src/import/planner.c 70.30% <0.00%> (+11.12%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2bef612...f66eac3. Read the comment docs.

@mkindahl mkindahl force-pushed the update_drop_chunk_problem branch 6 times, most recently from 0def106 to d3bcc57 Compare January 13, 2021 10:54
If `drop_chunks` has been executed on a hypertable that has a
continuous aggregate defined, the chunks will be removed and marked as
dropped in `_timescaledb_catalog.chunk` but the lines will not be
removed. This will cause problems for the update script since it is
missing a check to only process chunks that are not dropped and will
try to cast the chunk name into a `REGCLASS` for a table that does not
exist.

This commit fixes this by adding a check that the chunk is not dropped
and also fixes the update test to not count dropped chunks when
comparing with the chunk index since the chunk index does not count
dropped chunks.

Fixes timescale#2791
@mkindahl mkindahl changed the title Add test for drop_chunks for extension update Add check for dropped chunk on update Jan 13, 2021
@mkindahl mkindahl marked this pull request as ready for review January 13, 2021 11:12
@mkindahl mkindahl requested a review from a team as a code owner January 13, 2021 11:12
@mkindahl mkindahl requested review from k-rus, svenklemm and gayyappan and removed request for a team January 13, 2021 11:12
@mkindahl mkindahl self-assigned this Jan 13, 2021
INSERT INTO drop_test
SELECT
time,
(random() * 3 + 1)::int,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we set seed somewhere for that? if not maybe it makes sense to do that before this test case

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just using this data to generate chunks, so only the number of rows is important.

@mkindahl mkindahl merged commit 51745b3 into timescale:master Jan 13, 2021
@mkindahl mkindahl deleted the update_drop_chunk_problem branch January 13, 2021 12:34
svenklemm added a commit to svenklemm/timescaledb that referenced this pull request Jan 27, 2021
This maintenance release contains bugfixes since the 2.0.0 release. We deem it
high priority for upgrading.

In particular the fixes contained in this maintenance release address issues
in continuous aggregates, compression, JOINs with hypertables and when
upgrading from previous versions.

**Bugfixes**
* timescale#2772 Always validate existing database and extension
* timescale#2780 Fix config enum entries for remote data fetcher
* timescale#2806 Add check for dropped chunk on update
* timescale#2828 Improve cagg watermark caching
* timescale#2842 Do not mark job as started when seting next_start field
* timescale#2845 Fix continuous aggregate privileges during upgrade
* timescale#2860 Fix projection in ChunkAppend nodes
* timescale#2861 Remove compression stat update from update script

**Thanks**
* @sgorsh for reporting an issue when using pgAdmin on windows
* @brian-from-quantrocket for reporting an issue with extension update and dropped chunks
* @PhilippJust for reporting an issue with add_job and initial_start
* @alex88 for reporting an issue with joined hypertables
@svenklemm svenklemm mentioned this pull request Jan 27, 2021
svenklemm added a commit to svenklemm/timescaledb that referenced this pull request Jan 27, 2021
This maintenance release contains bugfixes since the 2.0.0 release. We deem it
high priority for upgrading.

In particular the fixes contained in this maintenance release address issues
in continuous aggregates, compression, JOINs with hypertables and when
upgrading from previous versions.

**Bugfixes**
* timescale#2772 Always validate existing database and extension
* timescale#2780 Fix config enum entries for remote data fetcher
* timescale#2806 Add check for dropped chunk on update
* timescale#2828 Improve cagg watermark caching
* timescale#2842 Do not mark job as started when seting next_start field
* timescale#2845 Fix continuous aggregate privileges during upgrade
* timescale#2851 Fix nested loop joins that involve compressed chunks
* timescale#2860 Fix projection in ChunkAppend nodes
* timescale#2861 Remove compression stat update from update script
* timescale#2865 Apply volatile function quals at decompresschunk node

**Thanks**
* @alex88 for reporting an issue with joined hypertables
* @brian-from-quantrocket for reporting an issue with extension update and dropped chunks
* @dhodyn for reporting an issue when joining compressed chunks
* @PhilippJust for reporting an issue with add_job and initial_start
* @sgorsh for reporting an issue when using pgAdmin on windows
svenklemm added a commit to svenklemm/timescaledb that referenced this pull request Jan 27, 2021
This maintenance release contains bugfixes since the 2.0.0 release. We deem it
high priority for upgrading.

In particular the fixes contained in this maintenance release address issues
in continuous aggregates, compression, JOINs with hypertables and when
upgrading from previous versions.

**Bugfixes**
* timescale#2772 Always validate existing database and extension
* timescale#2780 Fix config enum entries for remote data fetcher
* timescale#2806 Add check for dropped chunk on update
* timescale#2828 Improve cagg watermark caching
* timescale#2842 Do not mark job as started when seting next_start field
* timescale#2845 Fix continuous aggregate privileges during upgrade
* timescale#2851 Fix nested loop joins that involve compressed chunks
* timescale#2860 Fix projection in ChunkAppend nodes
* timescale#2861 Remove compression stat update from update script
* timescale#2865 Apply volatile function quals at decompresschunk node

**Thanks**
* @alex88 for reporting an issue with joined hypertables
* @brian-from-quantrocket for reporting an issue with extension update and dropped chunks
* @dhodyn for reporting an issue when joining compressed chunks
* @PhilippJust for reporting an issue with add_job and initial_start
* @sgorsh for reporting an issue when using pgAdmin on windows
svenklemm added a commit to svenklemm/timescaledb that referenced this pull request Jan 27, 2021
This maintenance release contains bugfixes since the 2.0.0 release. We deem it
high priority for upgrading.

In particular the fixes contained in this maintenance release address issues
in continuous aggregates, compression, JOINs with hypertables and when
upgrading from previous versions.

**Bugfixes**
* timescale#2772 Always validate existing database and extension
* timescale#2780 Fix config enum entries for remote data fetcher
* timescale#2806 Add check for dropped chunk on update
* timescale#2828 Improve cagg watermark caching
* timescale#2842 Do not mark job as started when seting next_start field
* timescale#2845 Fix continuous aggregate privileges during upgrade
* timescale#2851 Fix nested loop joins that involve compressed chunks
* timescale#2860 Fix projection in ChunkAppend nodes
* timescale#2861 Remove compression stat update from update script
* timescale#2865 Apply volatile function quals at decompresschunk node

**Thanks**
* @alex88 for reporting an issue with joined hypertables
* @brian-from-quantrocket for reporting an issue with extension update and dropped chunks
* @dhodyn for reporting an issue when joining compressed chunks
* @PhilippJust for reporting an issue with add_job and initial_start
* @sgorsh for reporting an issue when using pgAdmin on windows
svenklemm added a commit to svenklemm/timescaledb that referenced this pull request Jan 27, 2021
This maintenance release contains bugfixes since the 2.0.0 release. We deem it
high priority for upgrading.

In particular the fixes contained in this maintenance release address issues
in continuous aggregates, compression, JOINs with hypertables and when
upgrading from previous versions.

**Bugfixes**
* timescale#2772 Always validate existing database and extension
* timescale#2780 Fix config enum entries for remote data fetcher
* timescale#2806 Add check for dropped chunk on update
* timescale#2828 Improve cagg watermark caching
* timescale#2842 Do not mark job as started when seting next_start field
* timescale#2845 Fix continuous aggregate privileges during upgrade
* timescale#2851 Fix nested loop joins that involve compressed chunks
* timescale#2860 Fix projection in ChunkAppend nodes
* timescale#2861 Remove compression stat update from update script
* timescale#2865 Apply volatile function quals at decompresschunk node

**Thanks**
* @alex88 for reporting an issue with joined hypertables
* @brian-from-quantrocket for reporting an issue with extension update and dropped chunks
* @dhodyn for reporting an issue when joining compressed chunks
* @PhilippJust for reporting an issue with add_job and initial_start
* @sgorsh for reporting an issue when using pgAdmin on windows
svenklemm added a commit to svenklemm/timescaledb that referenced this pull request Jan 28, 2021
This maintenance release contains bugfixes since the 2.0.0 release. We deem it
high priority for upgrading.

In particular the fixes contained in this maintenance release address issues
in continuous aggregates, compression, JOINs with hypertables and when
upgrading from previous versions.

**Bugfixes**
* timescale#2772 Always validate existing database and extension
* timescale#2780 Fix config enum entries for remote data fetcher
* timescale#2806 Add check for dropped chunk on update
* timescale#2828 Improve cagg watermark caching
* timescale#2842 Do not mark job as started when setting next_start field
* timescale#2845 Fix continuous aggregate privileges during upgrade
* timescale#2851 Fix nested loop joins that involve compressed chunks
* timescale#2860 Fix projection in ChunkAppend nodes
* timescale#2861 Remove compression stat update from update script
* timescale#2865 Apply volatile function quals at decompresschunk node
* timescale#2866 Avoid partitionwise planning of partialize_agg
* timescale#2868 Fix corruption in gapfill plan
* timescale#2874 Fix partitionwise agg crash due to uninitialized memory

**Thanks**
* @alex88 for reporting an issue with joined hypertables
* @brian-from-quantrocket for reporting an issue with extension update and dropped chunks
* @dhodyn for reporting an issue when joining compressed chunks
* @markatosi for reporting a segfault with partitionwise aggregates enabled
* @PhilippJust for reporting an issue with add_job and initial_start
* @sgorsh for reporting an issue when using pgAdmin on windows
* @WarriorOfWire for reporting the bug with gapfill queries not being
  able to find pathkey item to sort
svenklemm added a commit to svenklemm/timescaledb that referenced this pull request Jan 28, 2021
This maintenance release contains bugfixes since the 2.0.0 release. We deem it
high priority for upgrading.

In particular the fixes contained in this maintenance release address issues
in continuous aggregates, compression, JOINs with hypertables and when
upgrading from previous versions.

**Bugfixes**
* timescale#2772 Always validate existing database and extension
* timescale#2780 Fix config enum entries for remote data fetcher
* timescale#2806 Add check for dropped chunk on update
* timescale#2828 Improve cagg watermark caching
* timescale#2842 Do not mark job as started when setting next_start field
* timescale#2845 Fix continuous aggregate privileges during upgrade
* timescale#2851 Fix nested loop joins that involve compressed chunks
* timescale#2860 Fix projection in ChunkAppend nodes
* timescale#2861 Remove compression stat update from update script
* timescale#2865 Apply volatile function quals at decompresschunk node
* timescale#2866 Avoid partitionwise planning of partialize_agg
* timescale#2868 Fix corruption in gapfill plan
* timescale#2874 Fix partitionwise agg crash due to uninitialized memory

**Thanks**
* @alex88 for reporting an issue with joined hypertables
* @brian-from-quantrocket for reporting an issue with extension update and dropped chunks
* @dhodyn for reporting an issue when joining compressed chunks
* @markatosi for reporting a segfault with partitionwise aggregates enabled
* @PhilippJust for reporting an issue with add_job and initial_start
* @sgorsh for reporting an issue when using pgAdmin on windows
* @WarriorOfWire for reporting the bug with gapfill queries not being
  able to find pathkey item to sort
svenklemm added a commit to svenklemm/timescaledb that referenced this pull request Jan 28, 2021
This maintenance release contains bugfixes since the 2.0.0 release. We deem it
high priority for upgrading.

In particular the fixes contained in this maintenance release address issues
in continuous aggregates, compression, JOINs with hypertables and when
upgrading from previous versions.

**Bugfixes**
* timescale#2772 Always validate existing database and extension
* timescale#2780 Fix config enum entries for remote data fetcher
* timescale#2806 Add check for dropped chunk on update
* timescale#2828 Improve cagg watermark caching
* timescale#2842 Do not mark job as started when setting next_start field
* timescale#2845 Fix continuous aggregate privileges during upgrade
* timescale#2851 Fix nested loop joins that involve compressed chunks
* timescale#2860 Fix projection in ChunkAppend nodes
* timescale#2861 Remove compression stat update from update script
* timescale#2865 Apply volatile function quals at decompresschunk node
* timescale#2866 Avoid partitionwise planning of partialize_agg
* timescale#2868 Fix corruption in gapfill plan
* timescale#2874 Fix partitionwise agg crash due to uninitialized memory

**Thanks**
* @alex88 for reporting an issue with joined hypertables
* @brian-from-quantrocket for reporting an issue with extension update and dropped chunks
* @dhodyn for reporting an issue when joining compressed chunks
* @markatosi for reporting a segfault with partitionwise aggregates enabled
* @PhilippJust for reporting an issue with add_job and initial_start
* @sgorsh for reporting an issue when using pgAdmin on windows
* @WarriorOfWire for reporting the bug with gapfill queries not being
  able to find pathkey item to sort
svenklemm added a commit that referenced this pull request Jan 28, 2021
This maintenance release contains bugfixes since the 2.0.0 release. We deem it
high priority for upgrading.

In particular the fixes contained in this maintenance release address issues
in continuous aggregates, compression, JOINs with hypertables and when
upgrading from previous versions.

**Bugfixes**
* #2772 Always validate existing database and extension
* #2780 Fix config enum entries for remote data fetcher
* #2806 Add check for dropped chunk on update
* #2828 Improve cagg watermark caching
* #2842 Do not mark job as started when setting next_start field
* #2845 Fix continuous aggregate privileges during upgrade
* #2851 Fix nested loop joins that involve compressed chunks
* #2860 Fix projection in ChunkAppend nodes
* #2861 Remove compression stat update from update script
* #2865 Apply volatile function quals at decompresschunk node
* #2866 Avoid partitionwise planning of partialize_agg
* #2868 Fix corruption in gapfill plan
* #2874 Fix partitionwise agg crash due to uninitialized memory

**Thanks**
* @alex88 for reporting an issue with joined hypertables
* @brian-from-quantrocket for reporting an issue with extension update and dropped chunks
* @dhodyn for reporting an issue when joining compressed chunks
* @markatosi for reporting a segfault with partitionwise aggregates enabled
* @PhilippJust for reporting an issue with add_job and initial_start
* @sgorsh for reporting an issue when using pgAdmin on windows
* @WarriorOfWire for reporting the bug with gapfill queries not being
  able to find pathkey item to sort
svenklemm added a commit that referenced this pull request Jan 28, 2021
This maintenance release contains bugfixes since the 2.0.0 release. We deem it
high priority for upgrading.

In particular the fixes contained in this maintenance release address issues
in continuous aggregates, compression, JOINs with hypertables and when
upgrading from previous versions.

**Bugfixes**
* #2772 Always validate existing database and extension
* #2780 Fix config enum entries for remote data fetcher
* #2806 Add check for dropped chunk on update
* #2828 Improve cagg watermark caching
* #2838 Fix catalog repair in update script
* #2842 Do not mark job as started when setting next_start field
* #2845 Fix continuous aggregate privileges during upgrade
* #2851 Fix nested loop joins that involve compressed chunks
* #2860 Fix projection in ChunkAppend nodes
* #2861 Remove compression stat update from update script
* #2865 Apply volatile function quals at decompresschunk node
* #2866 Avoid partitionwise planning of partialize_agg
* #2868 Fix corruption in gapfill plan
* #2874 Fix partitionwise agg crash due to uninitialized memory

**Thanks**
* @alex88 for reporting an issue with joined hypertables
* @brian-from-quantrocket for reporting an issue with extension update and dropped chunks
* @dhodyn for reporting an issue when joining compressed chunks
* @markatosi for reporting a segfault with partitionwise aggregates enabled
* @PhilippJust for reporting an issue with add_job and initial_start
* @sgorsh for reporting an issue when using pgAdmin on windows
* @WarriorOfWire for reporting the bug with gapfill queries not being
  able to find pathkey item to sort
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Updating to 2.0.0 on hypertable where chunks have been dropped fails
3 participants