Opened 6 years ago

Last modified 3 years ago

#29722 closed New feature

Improve introspection for special table and view types in PostgreSQL — at Initial Version

Reported by: Nick Pope Owned by: nobody
Component: Database layer (models, ORM) Version: dev
Severity: Normal Keywords: postgresql, introspection, inspectdb, views, partitions
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Looking at the documentation for pg_class there are the following types that we might be interested in introspecting for generation of models:

  • r — ordinary table — obviously this is already supported.
  • v — views — support was implemented in #29004.
  • f — foreign table — being addressed by #29719.
  • m — materialized views — could be handled much like #29004, mapping m to v.
  • p — partitioned table — could be handled mapping p to t, but gets more complicated, read on below...

For partitioned tables, we are unlikely to want to generate models for all of the individual partitions, although this could be supported with an --include-partitions flag.

From this link we can see an example of output for partitioned tables:

 relid |      relname       | relsize | relispartition | relkind
-------+--------------------+---------+----------------+---------
 16410 | population         |       0 | f              | p
 16417 | population_s       |    8192 | t              | r
 16424 | population_t       |       0 | t              | p
 16431 | population_t_10_20 |    8192 | t              | r
 16445 | population_t_20_30 |    8192 | t              | r

On PostgreSQL 10+ we need to filter on NOT relispartition to ignore all of the partitions and only include the parent (which is the table that is usually interacted with).

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top