summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoulder Sprinters <boulder-sprinters@djangoproject.com>2006-11-06 16:22:02 +0000
committerBoulder Sprinters <boulder-sprinters@djangoproject.com>2006-11-06 16:22:02 +0000
commitb47c350b56ec5a168641a6b330786fee95229eee (patch)
tree82177cfa121a935f4f26b7bca32af6aa9501c60a
parent53222ce9a1a5e56b07286ab317392f41b9c792f1 (diff)
[boulder-oracle-sprint] Oracle "inspectdb" runs, thanks to Mitchell Smith for the hairy SQL needed
git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@4023 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/db/backends/oracle/introspection.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/django/db/backends/oracle/introspection.py b/django/db/backends/oracle/introspection.py
index d8adf29966..e556228555 100644
--- a/django/db/backends/oracle/introspection.py
+++ b/django/db/backends/oracle/introspection.py
@@ -24,8 +24,25 @@ def get_relations(cursor, table_name):
"""
Returns a dictionary of {field_index: (field_index_other_table, other_table)}
representing all relationships to the given table. Indexes are 0-based.
- """
- raise NotImplementedError
+ """
+ cursor.execute("""
+SELECT ta.column_id - 1, tb.table_name, tb.column_id - 1
+FROM user_constraints, USER_CONS_COLUMNS ca, USER_CONS_COLUMNS cb,
+user_tab_cols ta, user_tab_cols tb
+WHERE user_constraints.table_name = %s AND
+ ta.table_name = %s AND
+ ta.column_name = ca.column_name AND
+ ca.table_name = %s AND
+ user_constraints.constraint_name = ca.constraint_name AND
+ user_constraints.r_constraint_name = cb.constraint_name AND
+ cb.table_name = tb.table_name AND
+ cb.column_name = tb.column_name AND
+ ca.position = cb.position""", [table_name, table_name, table_name])
+
+ relations = {}
+ for row in cursor.fetchall():
+ relations[row[0]] = (row[2], row[1])
+ return relations
def get_indexes(cursor, table_name):
"""