#34456 closed Uncategorized (invalid)
Add a way to set allow_cascade=True in _fixture_teardown()
| Reported by: | Howard Cox | Owned by: | nobody |
|---|---|---|---|
| Component: | Testing framework | Version: | 4.2 |
| Severity: | Normal | Keywords: | |
| Cc: | Tom Carrick | Triage Stage: | Unreviewed |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
We use https://github.com/schlunsen/django-timescaledb as our database backend and ran into a problem with some of our tests for django migrations on tables using timescale compression.
I [wrote up our problem on django-timescaledb back in October (https://github.com/schlunsen/django-timescaledb/issues/40) but it essentially boils down to:
django.test.testcases.TransactionTestCase._fixture_teardown()callsdjango.db.backends.postgresql.operations.sql_flush()and truncates every table at the end of tests.- In timescaledb, compressed hypertables create "chunks" as tables with a subset of the hypertable's data.
- Because we have foreign keys in some of our hypertables, the chunk tables also get that foreign-key rule.
- Those chunk tables are transparent to Django, and so are not in the list to be truncated.
- And so, the truncation fails, because the chunk tables still reference some of the data being truncated.
The easiest solution seems to be to allow _fixture_teardown() to opt-in to setting allow_cascade=True when truncating.
We're happy to submit a PR if this proposal gets accepted.
Change History (4)
comment:1 by , 3 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 3 years ago
| Resolution: | → needsinfo |
|---|---|
| Status: | new → closed |
comment:3 by , 3 years ago
| Resolution: | needsinfo → invalid |
|---|
comment:4 by , 3 years ago
That's fair, it's been abandoned anyway so we're considering forking it, so can just change it.
As far as I'm aware, it's an issue in
timescaledb, they could overrideops.sql_flush()and add flushing "chunks".