On Dec 14, 2010, at 3:58 AM, Mr.Rech wrote:

> Hi everybody,
> yesterday I was try to copy a table via SA when I noticed a strange
> behaviour that I think is a bug.
> 
> Here it is a summary of my issue: what I'm trying to do is to copy a
> list of tables from one schema to another (my backend is Postgresql,
> but it only marginally matters), and from the docs seems that
> table_obj.tometadata(meta, schema='new_schema') is the way to go.
> 
> However running my code I got an unexpected error complaining about
> some unneeded constraints. It turned out one of my tables has a
> boolean column, and when copying it the CheckConstraint() on it is
> passed down to the DLL even if Postgresql supports boolean type
> natively.
> 
> Reading the SA source code for .tometadata() method I noticed that it
> calls the CheckConstraint.copy() method and the latter doesn't respect
> self._create_rule attribute when returning a copy of the constraint
> itself. I think this is a bug, but maybe I'm wrong. I've also searched
> the bug reports but without success. Can anyone conferm this? As a
> temporary fix is there any other way to copy tables from one schema to
> another?

The _create_rule is backend-agnostic and should be copied along with a 
Constraint, so if that fixes the issue then its pretty likely that's your bug.  
 The most effort free workaround for the moment would be to use 
create_constraint=False on your Boolean type.    If you're looking for more 
effort then you'd iterate through table.constraints to find the 
CheckConstraint, copy the _create_rule over to the other one.

And I'd like to congratulate you on achieving a special day in SQLAlchemy 
history, ticket # 2000 !   which has been added for this issue.   It also 
includes a patch that fixes the bug if you want to just patch for now.  
http://www.sqlalchemy.org/trac/ticket/2000




> 
> Thanks,
> Andrea
> 
> -- 
> 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.
> 

-- 
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