i am asking this, because so far i am considering both 
table/foregn-key graph and mapper/relation graph same, thus applying 
the mincut for the table/foregnkey (which sets fkey.use_alter=True) 
also to the other (which sets respective relation.post_update=True).

And in 99% of cases, this works. 
Exceptions become some 3 level concrete-inheritances. i know concrete 
inheriting of relations is broken (not inherited at all), but it does 
work if u re-add the relation again, with proper tables, foregn_keys, 
remote_side etc inside. 

Which sort-of makes the relation a different relation - the base one 
can have some characteristics different from the inheriting one (e.g. 
post_update, lazy etc).

And now cutting the graph-edges as of the foreignkey on the inheriting 
mapper does not work because the obj-dependency graph does not make 
difference between a concrete mapper and non-concrete mapper, and is 
always assuming the link to be through the base mapper, and the 
relation there is not a post_update (in the example).

or something of sorts.

So the question really is: should i mincut the relation-graph with 
post_update's in a different way than the foregnkeys/use_alters of 
the underlying tables, or is this something to fix in the 
dependency-graph building for concrete inheritances.

there is one example in ticket 452.

bye
svil

> hallo.
>
> AFAI understand from the source, in the graph used for topology
> sorting in session.flush(), the nodes are representing the objects'
> mappers. (and not the tables as in metadata.create_all() ).
>
> Also, mappers which inherit from others, are replaced by their
> bases/roots.
>
> Edges in the graph are the relations between the mappers, and
> post_update=True is considered as cut (i.e. is not an edge).
> And then, the graph of relations is checked for cycles.
>
> So if i want to run an automatical mincut algo, it should be over a
> graph, having root mappers as nodes and all relations as edges.
>
> i am right?
>
> ciao
> svil
>
> btw, in topological.py: QueueDependencySorter.sort(),
> the _find_cycles() call is duplicated.
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to