Comments (4)
Do you have an example? It's hard to reason about this without seeing a schema where the cascading fails.
from datajoint-matlab.
yes, deleting from reso.Align in the schemas from atlab/commons repository. But here is the minimal example of dependencies that will reproduce this:
A
B->A
C->B
D->A
D->C
If you delete from A, the algorithm will attempt to delete in sequence CDBA, which will fail because D should be deleted before C, on which it depends.
To solve this, we need to keep track of the tree depth. The tree depth is already computed in dj.Schema.tableLevels. So it's easy to fix when the cascades do not cross schema boundaries. But additional logic needs to be added or a new tree level needs to be computed for cases when the cascade crosses schema boundaries.
from datajoint-matlab.
This has been happening to me a few times recently and I've been wondering whether it's a bug in DJ or some inconsistency in my database. Good to know it's most likely not my db.
The crossing of schema boundaries should work as well in my opinion. Otherwise we need to be more explicit about the consequences and disadvantages of using multiple schemas.
from datajoint-matlab.
Additional fix in dc707af. Would be great to get some testing feedback.
from datajoint-matlab.
Related Issues (20)
- Markdown not properly rendered in FEX Toolbox description
- fetchn(tableA * tableB, 'field') does not work in 3.4.2
- del deletes some incorrect entries from downstream tables with renamed foreign keys HOT 1
- table classes on path was not recognized when deleting or populating
- error with fetchn DataJoint version 3.4.2 HOT 1
- `{}` is not supported in attribute comments HOT 1
- bool and boolean is not supported in 3.4.1 HOT 1
- Parallelize file transfer for external blobs HOT 1
- bug with del() HOT 6
- Occasional fwrite errors using file-based stores
- fetching 'KEY' error HOT 2
- discovering existing tables across python/matlab HOT 5
- Empty matrices are converted to NULL HOT 2
- syncDef missing [nullable] & comment properties HOT 2
- Officially use the `+` operator for unions
- SSL Connection error HOT 3
- Schema name must start with lower case HOT 2
- Allow strings as well as char HOT 2
- MATLAB hangs and ramps up CPU usage if user closes the password Diagloue Box
- Allow pasting when logging into a database
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from datajoint-matlab.