#29719: command inspectdb run against postgres' foreign data wrapper (fdw) fails to list the foreign tables -------------------------------------+------------------------------------- Reporter: Luke | Owner: Luke Type: Bug | Status: assigned Component: Database | Version: 2.1 layer (models, ORM) | Keywords: Severity: Normal | postgres,fdw,foreign data wrapper Triage Stage: | Has patch: 1 Unreviewed | Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 1 UI/UX: 0 | -------------------------------------+------------------------------------- When running the "inspectdb" command against a postgres database with foreign data wrapper (fdw) tables, these foreign tables aren't listed.
The bug arises here line#41 of db/backends/postgresql/introspection.py {{{ SELECT c.relname, c.relkind FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r', 'v') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND pg_catalog.pg_table_is_visible(c.oid)""") }}} pg_class.relkind stores foreign tables as "F" , so the condition "c.relkind in ('r','v')" is never met . The query must be rewritten as {{{ SELECT c.relname, c.relkind FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r', 'v', 't') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND pg_catalog.pg_table_is_visible(c.oid)""") }}} and on line#50 {{{ return [TableInfo(row[0], {'r': 't', 'v': 'v', 'f': 't'}.get(row[1])) for row in cursor.fetchall() if row[0] not in self.ignored_tables] }}} in order to map the 'f' to a table -- Ticket URL: <https://code.djangoproject.com/ticket/29719> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/056.8382b21572efd4394d18f57b10d350d9%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.