Opened 8 years ago

Closed 8 years ago

#5086 closed (fixed)

testing on postgres_psycopg2 tries to truncate tsearch2 tables

Reported by: shaunc <shaun@…> Owned by: adrian
Component: Database layer (models, ORM) Version: master
Severity: Keywords:
Cc: shaun@… Triage Stage: Unreviewed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description

I'm using tsearch2 together with django. Tsearch2 adds some special tables to the template database which are automatically created in each new database. So they don't get mixed up or deleted, I leave the user as "postgres" -- not owned by the user that django connects via.

This works fine... except that during testing the (django) test cases "truncate" all tables including the tsearch2 tables. These tables shouldn't be truncated, and (since django is not the owner to prevent just this sort of thing) the command fails.

I have solved in patch by having django.db.backends.postgresql_psychopg2.introspection.get_table_list return by default only tables that are owned by the current_user. I think this is a reasonable default in general, because other tables are likely to be not the concern of django anyway.

  • Shaun Cutts

Attachments (1)

owned-tables-only.patch (1.3 KB) - added by shaunc <shaun@…> 8 years ago.
patch of ...introspection.get_table_list, returning by default only tables owned by current user

Download all attachments as: .zip

Change History (4)

Changed 8 years ago by shaunc <shaun@…>

patch of ...introspection.get_table_list, returning by default only tables owned by current user

comment:1 Changed 8 years ago by Yuri Baburov <burchik@…>

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Summary changed from testing on postgres_psychopg2 tries to truncate tsearch2 tables to testing on postgres_psycopg2 tries to truncate tsearch2 tables

Thanks! And what if my tsearch2 tables are owned by the same user like anything else?

comment:2 Changed 8 years ago by adrian

I agree that Django should not be truncating -- or even *touching* -- the tsearch2 tables. But I would even go as far as to say that Django should not touch *any* tables that it doesn't know about, regardless of which user account the table was created under.

I will change this so that Django doesn't touch tables that aren't defined in models.

comment:3 Changed 8 years ago by adrian

  • Resolution set to fixed
  • Status changed from new to closed

(In [6013]) Fixed #5086 -- The 'flush' and 'sqlflush' management commands no longer touch tables that Django is not aware of (tables that are not in INSTALLED_APPS and/or do not have associated models. Thanks for bringing this up, shaun@…

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