From b47c350b56ec5a168641a6b330786fee95229eee Mon Sep 17 00:00:00 2001 From: Boulder Sprinters Date: Mon, 6 Nov 2006 16:22:02 +0000 Subject: [PATCH] [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 --- django/db/backends/oracle/introspection.py | 21 +++++++++++++++++++-- 1 file 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): """