Re: pg_get_viewdefs() indentation considered harmful

Поиск
Список
Период
Сортировка
От Greg Stark
Тема Re: pg_get_viewdefs() indentation considered harmful
Дата
Msg-id CAM-w4HPsk8e+u+PamyjLbYHXc9_za5-_37Vsg3tN9qoCDiGb2A@mail.gmail.com
обсуждение исходный текст
Ответ на Re: pg_get_viewdefs() indentation considered harmful  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: pg_get_viewdefs() indentation considered harmful  (Greg Stark <stark@mit.edu>)
Re: pg_get_viewdefs() indentation considered harmful  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On Fri, Jan 24, 2014 at 6:54 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> pg_get_viewdefs indents each branch of the union by 8 spaces more than
>> the previous branch.
>
> I think that's because the unions are a nested binary tree so far as the
> parsetree representation goes.  We could probably teach ruleutils to
> flatten the display in common cases, but it might be a bit tricky to be
> sure we don't create any lies about unusual nestings.

That may be a worthwhile thing to do.

But it strikes me that pg_dump, at least when not doing an SQL dump,
really has no reason to ask for indentation at all. It's already
asking for non-prettyprinted output, why not make non-prettyprinted
also mean non-indented?

Also, it also seems like a reasonable safeguard that if the underlying
rule is larger than, say, 32kB or maybe 128kB you probably don't care
about indentation. That would cover all the system views except a
handful that seem to have peculiarly large pg_rewrite rules
considering their SQL definition isn't especially large:

daeqck898dvduj=> select ev_class::regclass, length(ev_action)
rewrite_len,length(pg_get_viewdef(ev_class,true)) prettyprint_len,
length(pg_get_viewdef(ev_class,false)) non_prettyprint_len from
pg_rewrite  order by 2 desc limit 20;                 ev_class                  | rewrite_len |
prettyprint_len | non_prettyprint_len
--------------------------------------------+-------------+-----------------+---------------------pg_seclabels
                    |      138565 |
 
13528 |               13758information_schema.columns                 |      126787 |
6401 |                6642information_schema.usage_privileges        |       93863 |
11653 |               11939information_schema.attributes              |       83268 |
4264 |                4417information_schema.referential_constraints |       81762 |
2527 |                2653pg_statio_all_tables                       |       59617 |
1023 |                1061pg_stats                                   |       59331 |
2803 |                2899information_schema.domains                 |       54611 |
3206 |                3320information_schema.element_types           |       53049 |
5608 |                5762information_schema.routines                |       52333 |
7852 |                8089information_schema.column_privileges       |       49229 |
3883 |                3954pg_indexes                                 |       46717 |458 |
486information_schema.check_constraints      |       42132 |
 
1375 |                1443information_schema.tables                  |       37458 |
2122 |                2212pg_stat_all_indexes                        |       35426 |508 |
528pg_statio_all_indexes                     |       35412 |490 |
512information_schema.table_constraints      |       31882 |
 
3098 |                3231information_schema.column_udt_usage        |       31731 |
1034 |                1090information_schema.parameters              |       30497 |
3640 |                3750pg_stat_all_tables                         |       27193 |
1367 |                1387
(20 rows)



-- 
greg



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Greg Stark
Дата:
Сообщение: Recovery inconsistencies, standby much larger than primary
Следующее
От: Greg Stark
Дата:
Сообщение: Re: pg_get_viewdefs() indentation considered harmful