PostgreSQL рдХреЗ рд╕рд╛рде Django рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рддрд╛рд▓рд┐рдХрд╛

рдирдорд╕реНрдХрд╛рд░ред
рдпрджрд┐ рдЖрдк Django + PostgreSQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рд╡рд┐рд╖рдп рд╣реИ рдХрд┐ рдорд╣реАрдиреЗ рдореЗрдВ рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╡рд┐рднрд╛рдЬрди (рд╡рд┐рднрд╛рдЬрди) рдХреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЬрд▓реНрджреА рдФрд░ рджрд░реНрдж рд░рд╣рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХрдИ рдЕрдиреНрдп рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдУрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред

рдЖрдк рдпрд╣ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рднрд╛рдЬрди рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ , рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ ред

рддреЛ, Django рдкрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдФрд░ рдПрдХ рдореЙрдбрд▓ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрдврд╝рдирд╛ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рд╕рдордп рдЕрд╡рдзрд┐ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╣ рд╣рдореЗрд╢рд╛ рдЬреНрдЮрд╛рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд┐рднрд╛рдЬрди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЧрддрд┐ рджреЗрдЧрд╛ред

рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рддреЛ рдЪрд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдбреЙрдХреНрд╕ рдкрдврд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдХреИрд╕реЗ рдЖрдЬрд╝рдорд╛рдпрд╛ рдЬрд╛рдП, рдФрд░ рдлрд┐рд░ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреНрдпрд╛ рд╣реИред рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:
  1. рд╣рдо syncdb рдХреЛ syncdb рддрд╛рдХрд┐ рд╣рдо рд╡рд┐рднрд╛рдЬрди рдХрдорд╛рдВрдб рдЬреЛрдбрд╝ рд╕рдХреЗрдВред
  2. рд╣рдо рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдерд╛рдкрд┐рдд рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ, рд╕реЗрдХреНрд╢рди рдмрдирд╛рдПрдВрдЧреЗ, рдЙрди рдкрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВрдЧреЗ, рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЯреНрд░рд┐рдЧрд░ рдЬреЛрдбрд╝реЗрдВрдЧреЗред
  3. рд╣рдо рдЕрдВрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рдореЙрдбрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
 pip install git+https://github.com/podshumok/django-post-syncdb-hooks 

рдФрд░ рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:
 INSTALLED APPS = ( # ... 'post_syncdb_hooks', 'post_syncdb_hooks.partitioning', 'your.app', # ... ) 

рдЪрд▓реЛ рд╡рд╣рд╛рдБ рдПрдХ рдореЙрдбрд▓ рд╣реИ yourapp/models.py :
 from django.db import models class MyModel(models.Model): date_created = models.DateTimeField() my_data = models.IntegerField(db_index=True) 

рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬреЛрдбрд╝реЗрдВ: рдЖрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ yourapp/sql/post_syncdb-hook.postgresql_psycopg2.sql (рдЖрдк рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рд╛рд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):
 SELECT month_partition_creation( date_trunc('MONTH', NOW())::date, date_trunc('MONTH', NOW() + INTERVAL '1 year' )::date, 'yourapp_mymodel', 'date_created'); 

syncdb :
 ./manage.py syncdb 
... рдФрд░ рд╕реЗрдХреНрд╢рди рдмрдиреЗ рд╣реИрдВред

рдпрджрд┐ рдпрд╣ рдкрд╣рд▓рд╛ syncdb , рддреЛ рдмрдирд╛рдП рдЧрдП рдЦрдВрдбреЛрдВ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ syncdb рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЦреИрд░, рдЖрдзрд╛рд░ рдЕрдм рддреИрдпрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди Django рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐, рд╕рдВрд╕реНрдХрд░рдг 1.3 рдХреЗ рд╕рд╛рде, Django рд╕рдореНрдорд┐рд▓рд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХреА id рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП RETURNING... рдХреЛ рдЬреЛрдбрд╝рдХрд░ PostgreSQL рдХреЗ рд▓рд┐рдП INSERT INTO рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЬрд┐рд╕ рд╡рд┐рднрд╛рдЬрди рд╡рд┐рдзрд┐ рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рд╣рдо рдореЛрдЯреЗ рддреМрд░ рдкрд░ Django рдХреЛ рдХрд╣реАрдВ рднреА RETURNING рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 from django.db import connections, DEFAULT_DB_ALIAS connections[DEFAULT_DB_ALIAS].features.can_return_id_from_insert = False 

рдФрд░ рд╣рдо рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рд╕рд╛рде RETURNING рдЙрдкрдпреЛрдЧ рди рд╣реЛ:
 from post_syncdb_hooks.partitioning import to_partition class MyModel(models.Model): "..." #... @to_partition def save(self, *args, **kwargs): return super(MyModel, self).save(*args, **kwargs) 

рддреЛ, рдмреЗрд╕ рддреИрдпрд╛рд░ рд╣реИ, Django рддреИрдпрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдо рддреИрдпрд╛рд░ рд╣реИрдВ? рддрд╛рдХрд┐ рдкрдврд╝рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЗ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреЛрд▓ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рди рдХрд░реЗрдВ, рд╣рдореЗрдВ QuerySet рдХреЛ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд╛рдЬрди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, date_created ):
 qs = MyModel.objects.filter(date_created__lte=..., date_created__gt=...) 

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕рд╛рд░реНрдердХ рд╣реИ рдХрд┐ рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ count() рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ paginator рдореЗрдВ paginator рдРрд╕рд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред

рдЕрдм рд╕рдм рд▓реЛрдЧ рддреИрдпрд╛рд░ рд╣реИрдВред рд╡рд╣ рд╕рдм рд╣реИред

post_syncdb_hooks рдмрд╛рд░реЗ рдореЗрдВ рд╣реБрдб

post_syncdb_hooks рдореЗрдВ management.py рд╢рд╛рдорд┐рд▓ management.py , рдЬреЛ рд░рд┐рд╕реАрд╡рд░ рдХреЛ post_syncdb рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рд░рд┐рд╕реАрд╡рд░ рдпрд╛ рд╣реБрдХ рд╕рднреА рд╕реНрдерд╛рдкрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ sql рдлрд╝реЛрд▓реНрдбрд░ рдЗрд╕ рдпрд╛ рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ post_syncdb-hook.sql рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╣реИ, рддреЛ рдХреЛрдИ post_syncdb-hook.sql рдпрд╛ post_syncdb-hook.(backend).sql рдЬреЛ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред

post_syncdb_hooks.partitioning рдореЗрдВ рдРрд╕реА SQL рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИред рдЗрд╕рдореЗрдВ, рд╣рдо рдПрдХ SQL рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЪрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ: рдкреНрд░рд╛рд░рдВрдн рджрд┐рдирд╛рдВрдХ, рд╕рдорд╛рдкреНрддрд┐ рджрд┐рдирд╛рдВрдХ, рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо рдФрд░ рдлрд╝реАрд▓реНрдб рдирд╛рдоред рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЪрдпрдирд┐рдд рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрднрд╛рдЧ рдЪреБрдиреЗ рдЧрдП рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рд╛рд░рдВрдн рддрд┐рдерд┐ рд╕реЗ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА INSERT INTO рдФрд░ рдЕрдиреБрднрд╛рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрд░рд┐рдЧрд░ (рдпрджрд┐ рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдорд┐рдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред

рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реБрдб

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдмрд╛рдК рдФрд░ рдХрдард┐рди рдерд╛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред рдЬрдм рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП SQL рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рд╡рд┐рднрд╛рдЬрд┐рдд рдпреЛрдЬрдирд╛ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ - рдХреЙрдкреА-рдкреЗрд╕реНрдЯред рд▓реЗрдХрд┐рди рдЬрдм Django рдЯреЗрдмрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдЗрдВрдбреЗрдХреНрд╕ рди рдмрдирд╛рдПрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реА рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛ рдмрдЪрд╛рдПрдВред рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: рдЬрд┐рдУрдЧреЛ рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ (рд╡реЗ рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реЛрдВрдЧреЗ), рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдХреЙрдкреА рдХрд░реВрдВрдЧрд╛ред

рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдпрд╣ рддрдп рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред

psql рдореЗрдВ -E рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдЖрдВрддрд░рд┐рдХ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди SQL рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рддреЛ рд╡рд╣
 sudo -u postgres psql -E db 
 db=# \di ********* QUERY ********** SELECT n.nspname as "Schema", c.relname as "Name", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as "Type", pg_catalog.pg_get_userbyid(c.relowner) as "Owner", c2.relname as "Table" FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace LEFT JOIN pg_catalog.pg_index i ON i.indexrelid = c.oid LEFT JOIN pg_catalog.pg_class c2 ON i.indrelid = c2.oid WHERE c.relkind IN ('i','') AND n.nspname <> 'pg_catalog' AND n.nspname <> 'information_schema' AND n.nspname !~ '^pg_toast' AND pg_catalog.pg_table_is_visible(c.oid) ORDER BY 1,2; ************************** db=# 

рдереЛрдбрд╝реА рд╕реА рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдФрд░ рдЯреЗрдмрд▓ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реМрдВрдкреЗ рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдореБрдХрд╛рдмрд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕реЗ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреБрдЫ рдХрд┐рдпрд╛ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
рдореИрдВ рдЖрдкрд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдЧрд┐рддреБрдм рдореЗрдВ рдкрд╛рдИ рдЧрдИ рдХрдорд┐рдпреЛрдВ рдХреЛ рднреА рд╕реБрдзрд╛рд░рдиреЗ рдФрд░ рд╕реБрдзрд╛рд░ рдХреЗ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред

Source: https://habr.com/ru/post/In179873/


All Articles