Thread: [SQL-CVS] [ sqlobject-Patches-1458380 ] Let admin create tables with no foreign keys first
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: SourceForge.net <no...@so...> - 2006-03-25 18:08:33
|
Patches item #1458380, was opened at 2006-03-25 19:08 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540674&aid=1458380&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Dennis Brakhane (dennis) Assigned to: Nobody/Anonymous (nobody) Summary: Let admin create tables with no foreign keys first Initial Comment: Suppose I have the following model: class A(SQLObject): foo = StringCol() b = ForeignKey("B") class B(SQLObject): bar = StringCol() If I now let sqlobject-admin create the tables for me, the order in with these are created is not defined. If table A is created before table B, PostgreSQL will fail: CREATE TABLE a ( id SERIAL PRIMARY KEY, foo TEXT, b_id INT, CONSTRAINT b_id_exists FOREIGN KEY (b_id) REFERENCES b (id) ) Fails with "Relation >b< does not exist" So, I've patched manager/command.py to create tables in the order of classes with fewest foreign keys created first. This might not catch all cases, but it "works for me(TM)" Patch is attached ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540674&aid=1458380&group_id=74338 |
From: SourceForge.net <no...@so...> - 2006-03-27 14:32:18
|
Patches item #1458380, was opened at 2006-03-25 21:08 Message generated for change (Comment added) made by phd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540674&aid=1458380&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open >Resolution: Invalid Priority: 5 Submitted By: Dennis Brakhane (dennis) Assigned to: Nobody/Anonymous (nobody) Summary: Let admin create tables with no foreign keys first Initial Comment: Suppose I have the following model: class A(SQLObject): foo = StringCol() b = ForeignKey("B") class B(SQLObject): bar = StringCol() If I now let sqlobject-admin create the tables for me, the order in with these are created is not defined. If table A is created before table B, PostgreSQL will fail: CREATE TABLE a ( id SERIAL PRIMARY KEY, foo TEXT, b_id INT, CONSTRAINT b_id_exists FOREIGN KEY (b_id) REFERENCES b (id) ) Fails with "Relation >b< does not exist" So, I've patched manager/command.py to create tables in the order of classes with fewest foreign keys created first. This might not catch all cases, but it "works for me(TM)" Patch is attached ---------------------------------------------------------------------- >Comment By: Oleg Broytmann (phd) Date: 2006-03-27 18:32 Message: Logged In: YES user_id=4799 .createTable() in the trunk has got a feature - it can delay creating foreign keys and instead return SQL query to create them later. So one can create all tables, collects these delayed SQL queries and run them later, when all tables are in place. Look in the FAQ: http://svn.colorstudy.com/SQLObject/docs/FAQ.txt , question "Mutually referencing tables". I think I'd be better to use this feature instead of unreliable "fewest foreign keys". Would you mind recreating your patch? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540674&aid=1458380&group_id=74338 |
From: SourceForge.net <no...@so...> - 2006-03-27 15:47:57
|
Patches item #1458380, was opened at 2006-03-25 19:08 Message generated for change (Comment added) made by dennis You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540674&aid=1458380&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: Invalid Priority: 5 Submitted By: Dennis Brakhane (dennis) Assigned to: Nobody/Anonymous (nobody) Summary: Let admin create tables with no foreign keys first Initial Comment: Suppose I have the following model: class A(SQLObject): foo = StringCol() b = ForeignKey("B") class B(SQLObject): bar = StringCol() If I now let sqlobject-admin create the tables for me, the order in with these are created is not defined. If table A is created before table B, PostgreSQL will fail: CREATE TABLE a ( id SERIAL PRIMARY KEY, foo TEXT, b_id INT, CONSTRAINT b_id_exists FOREIGN KEY (b_id) REFERENCES b (id) ) Fails with "Relation >b< does not exist" So, I've patched manager/command.py to create tables in the order of classes with fewest foreign keys created first. This might not catch all cases, but it "works for me(TM)" Patch is attached ---------------------------------------------------------------------- >Comment By: Dennis Brakhane (dennis) Date: 2006-03-27 17:47 Message: Logged In: YES user_id=26932 > I think I'd be better to use this feature instead of > unreliable "fewest foreign keys". Would you mind > recreating your patch? Erm... What exactly should I recreate? It seems like manager.py already has this functionality built-in. I'm using TurboGears svn and didn't realize the external reference to SQLObject's SVN was to the "0.7-bugfix" branch and not the trunk. So I think the bug is already fixed. ---------------------------------------------------------------------- Comment By: Oleg Broytmann (phd) Date: 2006-03-27 16:32 Message: Logged In: YES user_id=4799 .createTable() in the trunk has got a feature - it can delay creating foreign keys and instead return SQL query to create them later. So one can create all tables, collects these delayed SQL queries and run them later, when all tables are in place. Look in the FAQ: http://svn.colorstudy.com/SQLObject/docs/FAQ.txt , question "Mutually referencing tables". I think I'd be better to use this feature instead of unreliable "fewest foreign keys". Would you mind recreating your patch? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540674&aid=1458380&group_id=74338 |
From: SourceForge.net <no...@so...> - 2006-03-28 12:19:05
|
Patches item #1458380, was opened at 2006-03-25 21:08 Message generated for change (Comment added) made by phd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540674&aid=1458380&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Closed >Resolution: Fixed Priority: 5 Submitted By: Dennis Brakhane (dennis) Assigned to: Nobody/Anonymous (nobody) Summary: Let admin create tables with no foreign keys first Initial Comment: Suppose I have the following model: class A(SQLObject): foo = StringCol() b = ForeignKey("B") class B(SQLObject): bar = StringCol() If I now let sqlobject-admin create the tables for me, the order in with these are created is not defined. If table A is created before table B, PostgreSQL will fail: CREATE TABLE a ( id SERIAL PRIMARY KEY, foo TEXT, b_id INT, CONSTRAINT b_id_exists FOREIGN KEY (b_id) REFERENCES b (id) ) Fails with "Relation >b< does not exist" So, I've patched manager/command.py to create tables in the order of classes with fewest foreign keys created first. This might not catch all cases, but it "works for me(TM)" Patch is attached ---------------------------------------------------------------------- >Comment By: Oleg Broytmann (phd) Date: 2006-03-28 16:19 Message: Logged In: YES user_id=4799 Ok, then. ---------------------------------------------------------------------- Comment By: Dennis Brakhane (dennis) Date: 2006-03-27 19:47 Message: Logged In: YES user_id=26932 > I think I'd be better to use this feature instead of > unreliable "fewest foreign keys". Would you mind > recreating your patch? Erm... What exactly should I recreate? It seems like manager.py already has this functionality built-in. I'm using TurboGears svn and didn't realize the external reference to SQLObject's SVN was to the "0.7-bugfix" branch and not the trunk. So I think the bug is already fixed. ---------------------------------------------------------------------- Comment By: Oleg Broytmann (phd) Date: 2006-03-27 18:32 Message: Logged In: YES user_id=4799 .createTable() in the trunk has got a feature - it can delay creating foreign keys and instead return SQL query to create them later. So one can create all tables, collects these delayed SQL queries and run them later, when all tables are in place. Look in the FAQ: http://svn.colorstudy.com/SQLObject/docs/FAQ.txt , question "Mutually referencing tables". I think I'd be better to use this feature instead of unreliable "fewest foreign keys". Would you mind recreating your patch? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540674&aid=1458380&group_id=74338 |