[PROPOSAL] VACUUM Progress Checker.

Started by Rahila Syedalmost 11 years ago222 messageshackers
Jump to latest
#1Rahila Syed
rahilasyed90@gmail.com

Hello Hackers,

Following is a proposal for feature to calculate VACUUM progress.

Use Case : Measuring progress of long running VACUUMs to help DBAs make
informed decision
whether to continue running VACUUM or abort it.

Design:

A shared preload library to store progress information from different
backends running VACUUM, calculate remaining time for each and display
progress in the
in the form a view.

VACUUM needs to be instrumented with a hook to collect progress
information (pages vacuumed/scanned) periodically.

The patch attached implements a new hook to store vacuumed_pages and
scanned_pages count at the end of each page scanned by VACUUM.

This information is stored in a shared memory structure.

In addition to measuring progress this function using hook also calculates
remaining time for VACUUM.

The frequency of collecting progress information can be reduced by
appending delays in between hook function calls.

Also, a GUC parameter

log_vacuum_min_duration can be used.

This will cause VACUUM progress to be calculated only if VACUUM runs more
than specified milliseconds.

A value of zero calculates VACUUM progress for each page processed. -1
disables logging.

Progress calculation :

percent_complete = scanned_pages * 100 / total_pages_to_be_scanned;

remaining_time = elapsed_time * (total_pages_to_be_scanned - scanned_pages)
/ scanned_pages;

Shared memory struct:

typedef struct PgStat_VacuumStats

{

Oid databaseoid;

Oid tableoid;

Int32 vacuumed_pages;

Int32 total_pages;

Int32 scanned_pages;

double elapsed_time;

double remaining_time;

} PgStat_VacuumStats[max_connections];

Reporting :

A view named 'pg_maintenance_progress' can be created using the values in
the struct above.

pg_stat_maintenance can be called from any other backend and will display
progress of

each running VACUUM.

Other uses of hook in VACUUM:

Cost of VACUUM in terms of pages hit , missed and dirtied same as
autovacuum can be collected using this hook.

Autovacuum does it at the end of VACUUM for each table. It can be done
while VACUUM on a table is in progress.
This can be helpful to track manual VACUUMs also not just autovacuum.

Read/Write(I/O) rates can be computed on the lines of autovacuum.
Read rate patterns can be used to help tuning future vacuum on the
table(like shared buffers tuning)
Other resource usages can also be collected using progress checker hook.

Attached patch is POC patch of progress calculation for a single backend.

Also attached is a brief snapshot of the output log.

Attachments:

vacuum_progress_estimate.patchapplication/octet-stream; name=vacuum_progress_estimate.patchDownload+168-3
VAcuum_progress_report.PNGimage/png; name=VAcuum_progress_report.PNGDownload+6-0
#2Pavel Stehule
pavel.stehule@gmail.com
In reply to: Rahila Syed (#1)
Re: [PROPOSAL] VACUUM Progress Checker.

Hi

2015-06-30 9:37 GMT+02:00 Rahila Syed <rahilasyed90@gmail.com>:

Hello Hackers,

Following is a proposal for feature to calculate VACUUM progress.

interesting idea - I like to see it integrated to core.

Use Case : Measuring progress of long running VACUUMs to help DBAs make
informed decision
whether to continue running VACUUM or abort it.

Design:

A shared preload library to store progress information from different
backends running VACUUM, calculate remaining time for each and display
progress in the
in the form a view.

probably similar idea can be used for REINDEX, CREATE INDEX, COPY TO
statements

I though about the possibilities of progress visualization - and one
possibility is one or two special column in pg_stat_activity table - this
info can be interesting for VACUUM started by autovacuum too.

Regards

Pavel

Show quoted text

VACUUM needs to be instrumented with a hook to collect progress
information (pages vacuumed/scanned) periodically.

The patch attached implements a new hook to store vacuumed_pages and
scanned_pages count at the end of each page scanned by VACUUM.

This information is stored in a shared memory structure.

In addition to measuring progress this function using hook also calculates
remaining time for VACUUM.

The frequency of collecting progress information can be reduced by
appending delays in between hook function calls.

Also, a GUC parameter

log_vacuum_min_duration can be used.

This will cause VACUUM progress to be calculated only if VACUUM runs more
than specified milliseconds.

A value of zero calculates VACUUM progress for each page processed. -1
disables logging.

Progress calculation :

percent_complete = scanned_pages * 100 / total_pages_to_be_scanned;

remaining_time = elapsed_time * (total_pages_to_be_scanned -
scanned_pages) / scanned_pages;

Shared memory struct:

typedef struct PgStat_VacuumStats

{

Oid databaseoid;

Oid tableoid;

Int32 vacuumed_pages;

Int32 total_pages;

Int32 scanned_pages;

double elapsed_time;

double remaining_time;

} PgStat_VacuumStats[max_connections];

Reporting :

A view named 'pg_maintenance_progress' can be created using the values in
the struct above.

pg_stat_maintenance can be called from any other backend and will display
progress of

each running VACUUM.

Other uses of hook in VACUUM:

Cost of VACUUM in terms of pages hit , missed and dirtied same as
autovacuum can be collected using this hook.

Autovacuum does it at the end of VACUUM for each table. It can be done
while VACUUM on a table is in progress.
This can be helpful to track manual VACUUMs also not just autovacuum.

Read/Write(I/O) rates can be computed on the lines of autovacuum.
Read rate patterns can be used to help tuning future vacuum on the
table(like shared buffers tuning)
Other resource usages can also be collected using progress checker hook.

Attached patch is POC patch of progress calculation for a single backend.

Also attached is a brief snapshot of the output log.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#3Thomas Munro
thomas.munro@gmail.com
In reply to: Rahila Syed (#1)
Re: [PROPOSAL] VACUUM Progress Checker.

On Tue, Jun 30, 2015 at 7:37 PM, Rahila Syed <rahilasyed90@gmail.com> wrote:

Hello Hackers,

Following is a proposal for feature to calculate VACUUM progress.

Use Case : Measuring progress of long running VACUUMs to help DBAs make
informed decision
whether to continue running VACUUM or abort it.

+1

I was thinking recently that it would be very cool to see some
estimation of the progress of VACUUM and CLUSTER in a view similar to
pg_stat_activity, or the ps title.

--
Thomas Munro
http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#4dinesh kumar
dineshkumar02@gmail.com
In reply to: Rahila Syed (#1)
Re: [PROPOSAL] VACUUM Progress Checker.

On Tue, Jun 30, 2015 at 1:07 PM, Rahila Syed <rahilasyed90@gmail.com> wrote:

Hello Hackers,

Following is a proposal for feature to calculate VACUUM progress.

Use Case : Measuring progress of long running VACUUMs to help DBAs make
informed decision
whether to continue running VACUUM or abort it.

+1

I am excited to know how the progress works in when any of the statement
got blocked during locks. Rather displaying the stats in the LOG, shall we
have this in a pg_stat_vacuum_activity[ New catalog for all auto-vacuum
stats].

Best Regards,
Dinesh
manojadinesh.blogspot.com

Design:

Show quoted text

A shared preload library to store progress information from different
backends running VACUUM, calculate remaining time for each and display
progress in the
in the form a view.

VACUUM needs to be instrumented with a hook to collect progress
information (pages vacuumed/scanned) periodically.

The patch attached implements a new hook to store vacuumed_pages and
scanned_pages count at the end of each page scanned by VACUUM.

This information is stored in a shared memory structure.

In addition to measuring progress this function using hook also calculates
remaining time for VACUUM.

The frequency of collecting progress information can be reduced by
appending delays in between hook function calls.

Also, a GUC parameter

log_vacuum_min_duration can be used.

This will cause VACUUM progress to be calculated only if VACUUM runs more
than specified milliseconds.

A value of zero calculates VACUUM progress for each page processed. -1
disables logging.

Progress calculation :

percent_complete = scanned_pages * 100 / total_pages_to_be_scanned;

remaining_time = elapsed_time * (total_pages_to_be_scanned -
scanned_pages) / scanned_pages;

Shared memory struct:

typedef struct PgStat_VacuumStats

{

Oid databaseoid;

Oid tableoid;

Int32 vacuumed_pages;

Int32 total_pages;

Int32 scanned_pages;

double elapsed_time;

double remaining_time;

} PgStat_VacuumStats[max_connections];

Reporting :

A view named 'pg_maintenance_progress' can be created using the values in
the struct above.

pg_stat_maintenance can be called from any other backend and will display
progress of

each running VACUUM.

Other uses of hook in VACUUM:

Cost of VACUUM in terms of pages hit , missed and dirtied same as
autovacuum can be collected using this hook.

Autovacuum does it at the end of VACUUM for each table. It can be done
while VACUUM on a table is in progress.
This can be helpful to track manual VACUUMs also not just autovacuum.

Read/Write(I/O) rates can be computed on the lines of autovacuum.
Read rate patterns can be used to help tuning future vacuum on the
table(like shared buffers tuning)
Other resource usages can also be collected using progress checker hook.

Attached patch is POC patch of progress calculation for a single backend.

Also attached is a brief snapshot of the output log.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#5Simon Riggs
simon@2ndQuadrant.com
In reply to: Pavel Stehule (#2)
Re: [PROPOSAL] VACUUM Progress Checker.

On 30 June 2015 at 08:52, Pavel Stehule <pavel.stehule@gmail.com> wrote:

I though about the possibilities of progress visualization - and one
possibility is one or two special column in pg_stat_activity table - this
info can be interesting for VACUUM started by autovacuum too.

Yes, I suggest just a single column on pg_stat_activity called pct_complete

trace_completion_interval = 5s (default)

Every interval, we report the current % complete for any operation that
supports it. We just show NULL if the current operation has not reported
anything or never will.

We do this for VACUUM first, then we can begin adding other operations as
we work out how (for that operation).

--
Simon Riggs http://www.2ndQuadrant.com/
<http://www.2ndquadrant.com/&gt;
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#6Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Rahila Syed (#1)
Re: [PROPOSAL] VACUUM Progress Checker.

On 2015-06-30 PM 04:37, Rahila Syed wrote:

Design:

A shared preload library to store progress information from different
backends running VACUUM, calculate remaining time for each and display
progress in the
in the form a view.

[...]

Reporting :

A view named 'pg_maintenance_progress' can be created using the values in
the struct above.

pg_stat_maintenance can be called from any other backend and will display
progress of

+1

Just to clarify, the attached patch does not implement the view or the shared
memory initialization part yet, right? I understand your intention to get
comments on proposed hooks and shared memory structure(s) at this point. By
the way, how does a regular send stats to background stats collector approach
compares to the proposed hooks+shmem approach?

Thanks,
Amit

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#7Thom Brown
thom@linux.com
In reply to: Rahila Syed (#1)
Re: [PROPOSAL] VACUUM Progress Checker.

On 30 June 2015 at 08:37, Rahila Syed <rahilasyed90@gmail.com> wrote:

Hello Hackers,

Following is a proposal for feature to calculate VACUUM progress.

Use Case : Measuring progress of long running VACUUMs to help DBAs make
informed decision
whether to continue running VACUUM or abort it.

Design:

A shared preload library to store progress information from different
backends running VACUUM, calculate remaining time for each and display
progress in the
in the form a view.

VACUUM needs to be instrumented with a hook to collect progress
information (pages vacuumed/scanned) periodically.

The patch attached implements a new hook to store vacuumed_pages and
scanned_pages count at the end of each page scanned by VACUUM.

This information is stored in a shared memory structure.

In addition to measuring progress this function using hook also calculates
remaining time for VACUUM.

The frequency of collecting progress information can be reduced by
appending delays in between hook function calls.

Also, a GUC parameter

log_vacuum_min_duration can be used.

This will cause VACUUM progress to be calculated only if VACUUM runs more
than specified milliseconds.

A value of zero calculates VACUUM progress for each page processed. -1
disables logging.

Progress calculation :

percent_complete = scanned_pages * 100 / total_pages_to_be_scanned;

remaining_time = elapsed_time * (total_pages_to_be_scanned -
scanned_pages) / scanned_pages;

Shared memory struct:

typedef struct PgStat_VacuumStats

{

Oid databaseoid;

Oid tableoid;

Int32 vacuumed_pages;

Int32 total_pages;

Int32 scanned_pages;

double elapsed_time;

double remaining_time;

} PgStat_VacuumStats[max_connections];

Reporting :

A view named 'pg_maintenance_progress' can be created using the values in
the struct above.

pg_stat_maintenance can be called from any other backend and will display
progress of

each running VACUUM.

Other uses of hook in VACUUM:

Cost of VACUUM in terms of pages hit , missed and dirtied same as
autovacuum can be collected using this hook.

Autovacuum does it at the end of VACUUM for each table. It can be done
while VACUUM on a table is in progress.
This can be helpful to track manual VACUUMs also not just autovacuum.

Read/Write(I/O) rates can be computed on the lines of autovacuum.
Read rate patterns can be used to help tuning future vacuum on the
table(like shared buffers tuning)
Other resource usages can also be collected using progress checker hook.

Attached patch is POC patch of progress calculation for a single backend.

Also attached is a brief snapshot of the output log.

@@ -559,7 +567,9 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
* following blocks.
*/
if (next_not_all_visible_block - blkno > SKIP_PAGES_THRESHOLD)
+ {
skipping_all_visible_blocks = true;
+ }

There's no need to add those curly braces, or to subsequent if blocks.

Also, is this patch taking the visibility map into account for its
calculations?

--
Thom

#8Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Thom Brown (#7)
Re: [PROPOSAL] VACUUM Progress Checker.

Hello,

There's no need to add those curly braces, or to subsequent if blocks

Yes, those are added by mistake.

Also, is this patch taking the visibility map into account for its calculations?

Yes, it subtracts skippable/all-visible pages from total pages to be scanned.
For each page processed by lazy_scan_heap, if number of all visible pages ahead exceeds the threshold, it is subtracted from
the ‘total pages to be scanned’ count.

The all visible pages are accounted for incrementally during the execution of VACUUM and not before starting the process.

Thank you,
Rahila Syed

From: pgsql-hackers-owner@postgresql.org [mailto:pgsql-hackers-owner@postgresql.org] On Behalf Of Thom Brown
Sent: Tuesday, June 30, 2015 2:20 PM
To: Rahila Syed
Cc: PostgreSQL-development
Subject: Re: [HACKERS] [PROPOSAL] VACUUM Progress Checker.

On 30 June 2015 at 08:37, Rahila Syed <rahilasyed90@gmail.com<mailto:rahilasyed90@gmail.com>> wrote:
Hello Hackers,

Following is a proposal for feature to calculate VACUUM progress.

Use Case : Measuring progress of long running VACUUMs to help DBAs make informed decision
whether to continue running VACUUM or abort it.

Design:

A shared preload library to store progress information from different backends running VACUUM, calculate remaining time for each and display progress in the
in the form a view.

VACUUM needs to be instrumented with a hook to collect progress information (pages vacuumed/scanned) periodically.
The patch attached implements a new hook to store vacuumed_pages and scanned_pages count at the end of each page scanned by VACUUM.
This information is stored in a shared memory structure.
In addition to measuring progress this function using hook also calculates remaining time for VACUUM.

The frequency of collecting progress information can be reduced by appending delays in between hook function calls.
Also, a GUC parameter
log_vacuum_min_duration can be used.
This will cause VACUUM progress to be calculated only if VACUUM runs more than specified milliseconds.
A value of zero calculates VACUUM progress for each page processed. -1 disables logging.

Progress calculation :

percent_complete = scanned_pages * 100 / total_pages_to_be_scanned;

remaining_time = elapsed_time * (total_pages_to_be_scanned - scanned_pages) / scanned_pages;

Shared memory struct:

typedef struct PgStat_VacuumStats

{

Oid databaseoid;

Oid tableoid;

Int32 vacuumed_pages;

Int32 total_pages;

Int32 scanned_pages;

double elapsed_time;

double remaining_time;

} PgStat_VacuumStats[max_connections];

Reporting :
A view named 'pg_maintenance_progress' can be created using the values in the struct above.
pg_stat_maintenance can be called from any other backend and will display progress of
each running VACUUM.

Other uses of hook in VACUUM:

Cost of VACUUM in terms of pages hit , missed and dirtied same as autovacuum can be collected using this hook.
Autovacuum does it at the end of VACUUM for each table. It can be done while VACUUM on a table is in progress.
This can be helpful to track manual VACUUMs also not just autovacuum.

Read/Write(I/O) rates can be computed on the lines of autovacuum.
Read rate patterns can be used to help tuning future vacuum on the table(like shared buffers tuning)
Other resource usages can also be collected using progress checker hook.

Attached patch is POC patch of progress calculation for a single backend.
Also attached is a brief snapshot of the output log.

@@ -559,7 +567,9 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
* following blocks.
*/
if (next_not_all_visible_block - blkno > SKIP_PAGES_THRESHOLD)
+ {
skipping_all_visible_blocks = true;
+ }
There's no need to add those curly braces, or to subsequent if blocks.
Also, is this patch taking the visibility map into account for its calculations?

--
Thom

______________________________________________________________________
Disclaimer: This email and any attachments are sent in strictest confidence
for the sole use of the addressee and may contain legally privileged,
confidential, and proprietary data. If you are not the intended recipient,
please advise the sender by replying promptly to this email and then delete
and destroy this email and any attachments without any further use, copying
or forwarding.

#9Rahila Syed
rahilasyed90@gmail.com
In reply to: Simon Riggs (#5)
Re: [PROPOSAL] VACUUM Progress Checker.

Hello,

Thank you for suggestions.

Yes, I suggest just a single column on pg_stat_activity called pct_complete

Reporting remaining time also can be crucial to make decisions regarding
continuing or aborting VACUUM.
The same has been suggested in the thread below,

/messages/by-id/13072.1284826206@sss.pgh.pa.us

trace_completion_interval = 5s (default)

Every interval, we report the current % complete for any operation that

supports it. We just show NULL if the current operation has not reported
anything or never will.

We do this for VACUUM first, then we can begin adding other operations as

we work out how (for that operation).

Thank you for explaining. This design seems good to me except, adding more
than one columns(percent_complete, remaining_time) if required to
pg_stat_activity can be less user intuitive than having a separate view for
VACUUM.

-Rahila Syed

On Tue, Jun 30, 2015 at 2:02 PM, Simon Riggs <simon@2ndquadrant.com> wrote:

Show quoted text

On 30 June 2015 at 08:52, Pavel Stehule <pavel.stehule@gmail.com> wrote:

I though about the possibilities of progress visualization - and one
possibility is one or two special column in pg_stat_activity table - this
info can be interesting for VACUUM started by autovacuum too.

Yes, I suggest just a single column on pg_stat_activity called pct_complete

trace_completion_interval = 5s (default)

Every interval, we report the current % complete for any operation that
supports it. We just show NULL if the current operation has not reported
anything or never will.

We do this for VACUUM first, then we can begin adding other operations as
we work out how (for that operation).

--
Simon Riggs http://www.2ndQuadrant.com/
<http://www.2ndquadrant.com/&gt;
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#10Rahila Syed
rahilasyed90@gmail.com
In reply to: Pavel Stehule (#2)
Re: [PROPOSAL] VACUUM Progress Checker.

Hello,

I though about the possibilities of progress visualization - and one

possibility is one or two special column in pg_stat_activity table - this
info can be interesting for VACUUM >started by autovacuum too.

Thank you for suggestion. The design with hooks and a separate view was
mainly to keep most of the code outside core as the feature proposed is
specific to VACUUM command. Also, having a separate view can give more
flexibility in terms of displaying various progress parameters.

FWIW ,there was resistance to include columns in pg_stat_activity earlier
in the following thread,
/messages/by-id/AANLkTi=TcuMA38oGUKX9p5WVPpY+M3L0XUp7=PLT+LCT@mail.gmail.com

Thank you,
Rahila Syed

On Tue, Jun 30, 2015 at 1:22 PM, Pavel Stehule <pavel.stehule@gmail.com>
wrote:

Show quoted text

Hi

2015-06-30 9:37 GMT+02:00 Rahila Syed <rahilasyed90@gmail.com>:

Hello Hackers,

Following is a proposal for feature to calculate VACUUM progress.

interesting idea - I like to see it integrated to core.

Use Case : Measuring progress of long running VACUUMs to help DBAs make
informed decision
whether to continue running VACUUM or abort it.

Design:

A shared preload library to store progress information from different
backends running VACUUM, calculate remaining time for each and display
progress in the
in the form a view.

probably similar idea can be used for REINDEX, CREATE INDEX, COPY TO
statements

I though about the possibilities of progress visualization - and one
possibility is one or two special column in pg_stat_activity table - this
info can be interesting for VACUUM started by autovacuum too.

Regards

Pavel

VACUUM needs to be instrumented with a hook to collect progress
information (pages vacuumed/scanned) periodically.

The patch attached implements a new hook to store vacuumed_pages and
scanned_pages count at the end of each page scanned by VACUUM.

This information is stored in a shared memory structure.

In addition to measuring progress this function using hook also
calculates remaining time for VACUUM.

The frequency of collecting progress information can be reduced by
appending delays in between hook function calls.

Also, a GUC parameter

log_vacuum_min_duration can be used.

This will cause VACUUM progress to be calculated only if VACUUM runs more
than specified milliseconds.

A value of zero calculates VACUUM progress for each page processed. -1
disables logging.

Progress calculation :

percent_complete = scanned_pages * 100 / total_pages_to_be_scanned;

remaining_time = elapsed_time * (total_pages_to_be_scanned -
scanned_pages) / scanned_pages;

Shared memory struct:

typedef struct PgStat_VacuumStats

{

Oid databaseoid;

Oid tableoid;

Int32 vacuumed_pages;

Int32 total_pages;

Int32 scanned_pages;

double elapsed_time;

double remaining_time;

} PgStat_VacuumStats[max_connections];

Reporting :

A view named 'pg_maintenance_progress' can be created using the values
in the struct above.

pg_stat_maintenance can be called from any other backend and will display
progress of

each running VACUUM.

Other uses of hook in VACUUM:

Cost of VACUUM in terms of pages hit , missed and dirtied same as
autovacuum can be collected using this hook.

Autovacuum does it at the end of VACUUM for each table. It can be done
while VACUUM on a table is in progress.
This can be helpful to track manual VACUUMs also not just autovacuum.

Read/Write(I/O) rates can be computed on the lines of autovacuum.
Read rate patterns can be used to help tuning future vacuum on the
table(like shared buffers tuning)
Other resource usages can also be collected using progress checker hook.

Attached patch is POC patch of progress calculation for a single backend.

Also attached is a brief snapshot of the output log.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#11Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Rahila Syed (#10)
Re: [PROPOSAL] VACUUM Progress Checker.

On 2015-07-02 AM 11:41, Rahila Syed wrote:

Hello,

I though about the possibilities of progress visualization - and one

possibility is one or two special column in pg_stat_activity table - this
info can be interesting for VACUUM >started by autovacuum too.

Thank you for suggestion. The design with hooks and a separate view was
mainly to keep most of the code outside core as the feature proposed is
specific to VACUUM command. Also, having a separate view can give more
flexibility in terms of displaying various progress parameters.

Unless I am missing something, I guess you can still keep the actual code that
updates counters outside the core if you adopt an approach that Simon
suggests. Whatever the view (existing/new), any related counters would have a
valid (non-NULL) value when read off the view iff hooks are set perhaps
because you have an extension that sets them. I guess that means any operation
that "supports" progress tracking would have an extension with suitable hooks
implemented.

Of course unless I misinterpreted Simon's words.

Thanks,
Amit

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#12Sameer Thakur
samthakur74@gmail.com
In reply to: Rahila Syed (#10)
Re: [PROPOSAL] VACUUM Progress Checker.

Hello,

Thank you for suggestion. The design with hooks and a separate view was

mainly to keep most of the >code outside core as the feature proposed is
specific to VACUUM command. Also, having a separate view >can give more
flexibility in terms of displaying various progress parameters.

FWIW ,there was resistance to include columns in pg_stat_activity earlier

in the following thread,

/messages/by-id/AANLkTi=TcuMA38oGUKX9p5WVPpY+M3L0XUp7=PLT+LCT@...

Perhaps as suggested in the link, the progress could be made available via a
function call which does progress calculation "on demand". Then we do not
need a separate view, or clutter pg_stat_activity, and also has benefit of
calculating progress just when it's needed.

--
View this message in context: http://postgresql.nabble.com/PROPOSAL-VACUUM-Progress-Checker-tp5855849p5856192.html
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#13Simon Riggs
simon@2ndQuadrant.com
In reply to: Rahila Syed (#9)
Re: [PROPOSAL] VACUUM Progress Checker.

On 2 July 2015 at 03:00, Rahila Syed <rahilasyed90@gmail.com> wrote:

Yes, I suggest just a single column on pg_stat_activity called

pct_complete

Reporting remaining time also can be crucial to make decisions regarding
continuing or aborting VACUUM.
The same has been suggested in the thread below,

/messages/by-id/13072.1284826206@sss.pgh.pa.us

trace_completion_interval = 5s (default)

Every interval, we report the current % complete for any operation that

supports it. We just show NULL if the current operation has not reported
anything or never will.

We do this for VACUUM first, then we can begin adding other operations

as we work out how (for that operation).

Thank you for explaining. This design seems good to me except, adding more
than one columns(percent_complete, remaining_time)

It is attractive to have a "remaining_time" column, or a
"predicted_completion_timestamp", but those columns are prediction
calculations rather than actual progress reports. I'm interested in seeing
a report that relates to actual progress made.

Predicted total work required is also interesting, but is much less
trustworthy figure.

I think we'll need to get wider input about the user interface for this
feature.

if required to pg_stat_activity can be less user intuitive than having a
separate view for VACUUM.

I think it is a mistake to do something just for VACUUM.

Monitoring software will look at pg_stat_activity. I don't think we should
invent a separate view for progress statistics because it will cause users
to look in two places rather than just one. Reporting progress is fairly
cheap instrumentation, calculating a prediction of completion time might be
expensive.

Having said that, monitoring systems currently use a polling mechanism to
retrieve status data. They look at information published by the backend. We
don't currently have a mechanism to defer publication of expensive
monitoring information until requested by the monitoring system. If you
have a design for how that might work then say so, otherwise we need to
assume a simple workflow: the backend publishes whatever it chooses,
whenever it chooses and then that is made available via the monitoring
system via views.

Your current design completely misses the time taken to scan indexes, which
is significant.

There might be a justification to put this out of core, but measuring
progress of VACUUM wouldn't be it, IMHO.

--
Simon Riggs http://www.2ndQuadrant.com/
<http://www.2ndquadrant.com/&gt;
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#14Guillaume Lelarge
guillaume@lelarge.info
In reply to: Simon Riggs (#13)
Re: [PROPOSAL] VACUUM Progress Checker.

Le 2 juil. 2015 7:28 AM, "Simon Riggs" <simon@2ndquadrant.com> a écrit :

On 2 July 2015 at 03:00, Rahila Syed <rahilasyed90@gmail.com> wrote:

Yes, I suggest just a single column on pg_stat_activity called

pct_complete

Reporting remaining time also can be crucial to make decisions regarding

continuing or aborting VACUUM.

The same has been suggested in the thread below,

/messages/by-id/13072.1284826206@sss.pgh.pa.us

trace_completion_interval = 5s (default)

Every interval, we report the current % complete for any operation that

supports it. We just show NULL if the current operation has not reported
anything or never will.

We do this for VACUUM first, then we can begin adding other operations

as we work out how (for that operation).

Thank you for explaining. This design seems good to me except, adding

more than one columns(percent_complete, remaining_time)

It is attractive to have a "remaining_time" column, or a

"predicted_completion_timestamp", but those columns are prediction
calculations rather than actual progress reports. I'm interested in seeing
a report that relates to actual progress made.

Agreed.

Predicted total work required is also interesting, but is much less

trustworthy figure.

And it is something a client app or an extension can compute. No need to
put this in core as long as we have the actual progress.

I think we'll need to get wider input about the user interface for this

feature.

if required to pg_stat_activity can be less user intuitive than having a

separate view for VACUUM.

I think it is a mistake to do something just for VACUUM.

Monitoring software will look at pg_stat_activity. I don't think we

should invent a separate view for progress statistics because it will cause
users to look in two places rather than just one. Reporting progress is
fairly cheap instrumentation, calculating a prediction of completion time
might be expensive.

+1

Having said that, monitoring systems currently use a polling mechanism to

retrieve status data. They look at information published by the backend. We
don't currently have a mechanism to defer publication of expensive
monitoring information until requested by the monitoring system. If you
have a design for how that might work then say so, otherwise we need to
assume a simple workflow: the backend publishes whatever it chooses,
whenever it chooses and then that is made available via the monitoring
system via views.

Your current design completely misses the time taken to scan indexes,

which is significant.

There might be a justification to put this out of core, but measuring

progress of VACUUM wouldn't be it, IMHO.

Show quoted text

--
Simon Riggs http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#15Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Amit Langote (#11)
Re: [PROPOSAL] VACUUM Progress Checker.

Hello,

Unless I am missing something, I guess you can still keep the actual code that updates counters outside the core if you adopt an approach that Simon suggests.

Yes. The code to extract progress information from VACUUM and storing in shared memory can be outside core even with pg_stat_activity as a user interface.

Whatever the view (existing/new), any related counters would have a valid (non-NULL) value when read off the view iff hooks are set perhaps because you have an extension that sets them.
I guess that means any operation that "supports" progress tracking would have an extension with suitable hooks implemented.

Do you mean to say , any operation/application that want progress tracking feature will dynamically load the progress checker module which will set the hooks for progress reporting?
If yes , unless I am missing something such dynamic loading cannot happen if we use pg_stat_activity as it gets values from shared memory. Module has to be a shared_preload_library
to allocate a shared memory. So this will mean the module can be loaded only at server restart. Am I missing something?

Thank you,
Rahila Syed

______________________________________________________________________
Disclaimer: This email and any attachments are sent in strictest confidence
for the sole use of the addressee and may contain legally privileged,
confidential, and proprietary data. If you are not the intended recipient,
please advise the sender by replying promptly to this email and then delete
and destroy this email and any attachments without any further use, copying
or forwarding.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#16Tom Lane
tgl@sss.pgh.pa.us
In reply to: Syed, Rahila (#15)
Re: [PROPOSAL] VACUUM Progress Checker.

"Syed, Rahila" <Rahila.Syed@nttdata.com> writes:

Hello,

Unless I am missing something, I guess you can still keep the actual code that updates counters outside the core if you adopt an approach that Simon suggests.

Yes. The code to extract progress information from VACUUM and storing in shared memory can be outside core even with pg_stat_activity as a user interface.

Whatever the view (existing/new), any related counters would have a valid (non-NULL) value when read off the view iff hooks are set perhaps because you have an extension that sets them.
I guess that means any operation that "supports" progress tracking would have an extension with suitable hooks implemented.

Do you mean to say , any operation/application that want progress tracking feature will dynamically load the progress checker module which will set the hooks for progress reporting?
If yes , unless I am missing something such dynamic loading cannot happen if we use pg_stat_activity as it gets values from shared memory. Module has to be a shared_preload_library
to allocate a shared memory. So this will mean the module can be loaded

only at server restart. Am I missing something?

TBH, I think that designing this as a hook-based solution is adding a
whole lot of complexity for no value. The hard parts of the problem are
collecting the raw data and making the results visible to users, and
both of those require involvement of the core code. Where is the benefit
from pushing some trivial intermediate arithmetic into an external module?
If there's any at all, it's certainly not enough to justify problems such
as you mention here.

So I'd just create a "pgstat_report_percent_done()" type of interface in
pgstat.c and then teach VACUUM to call it directly.

regards, tom lane

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#17Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Syed, Rahila (#15)
Re: [PROPOSAL] VACUUM Progress Checker.

On 2015-07-02 PM 11:00, Syed, Rahila wrote:

Hello,

Unless I am missing something, I guess you can still keep the actual code that updates counters outside the core if you adopt an approach that Simon suggests.

Yes. The code to extract progress information from VACUUM and storing in shared memory can be outside core even with pg_stat_activity as a user interface.

Whatever the view (existing/new), any related counters would have a valid (non-NULL) value when read off the view iff hooks are set perhaps because you have an extension that sets them.
I guess that means any operation that "supports" progress tracking would have an extension with suitable hooks implemented.

Do you mean to say , any operation/application that want progress tracking feature will dynamically load the progress checker module which will set the hooks for progress reporting?
If yes , unless I am missing something such dynamic loading cannot happen if we use pg_stat_activity as it gets values from shared memory. Module has to be a shared_preload_library
to allocate a shared memory. So this will mean the module can be loaded only at server restart. Am I missing something?

Assuming that set of hooks per command and shared memory structure(s) is a way
to go, I meant to say that hook implementations per command would be in their
separate modules, of course loaded at the server start for shared memory). Of
those, your proposed patch has vacuum_progress, for example. And in context of
my comment above, that means the view would say NULL for commands for which
the module has not been set up in advance. IOW, between showing NULL in the
view and dynamically loading hook functions, we choose the former because I
don't know what the latter means in postgres.

Having said that, Tom's suggestion to export pgstat.c function(s) for
command(s) may be a more appealing way to go.

Thanks,
Amit

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#18Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Tom Lane (#16)
Re: [PROPOSAL] VACUUM Progress Checker.

Hello,

TBH, I think that designing this as a hook-based solution is adding a whole lot of complexity for no value. The hard parts of the problem are collecting the raw data and making the results visible to users, and both of those require involvement of the core code. Where is the benefit from pushing some trivial >intermediate arithmetic into an external module?
If there's any at all, it's certainly not enough to justify problems such as you mention here.

So I'd just create a "pgstat_report_percent_done()" type of interface in pgstat.c and then teach VACUUM to call it directly.

Thank you for suggestion. I agree that adding code in core will reduce code complexity with no additional overhead.
Going by the consensus, I will update the patch with code to collect and store progress information from vacuum in pgstat.c and
UI using pg_stat_activity view.

Thank you,
Rahila Syed

______________________________________________________________________
Disclaimer: This email and any attachments are sent in strictest confidence
for the sole use of the addressee and may contain legally privileged,
confidential, and proprietary data. If you are not the intended recipient,
please advise the sender by replying promptly to this email and then delete
and destroy this email and any attachments without any further use, copying
or forwarding.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#19Rahila Syed
rahilasyed90@gmail.com
In reply to: Syed, Rahila (#18)
Re: [PROPOSAL] VACUUM Progress Checker.

Hello,

Please find attached updated patch with an interface to calculate command
progress in pgstat.c. This interface currently implements VACUUM progress
tracking .
A column named percent_complete has been added in pg_stat_activity to
report progress.

VACUUM calls the progress calculation interface periodically at an interval
specified by pgstat_track_progress GUC in ms.
Progress calculation can be disabled by setting pgstat_track_progress as
-1.

Remaining_time for VACUUM is not included in current patch to avoid
cluttering pg_stat_activity with too many columns.
But the estimate as seen from previous implementation seems reasonable
enough to be included in progress information , may be as an exclusive view
for vacuum progress information.

GUC parameter 'pgstat_track_progress' is currently PGC_SUSET in line with
'track_activities' GUC parameter. Although IMO, pgstat_track_progress can
be made PGC_USERSET in order to provide more flexibility to any user to
enable/disable progress calculation provided progress is tracked only if
track_activities GUC parameter is enabled.

In this patch, index scans are not taken into account for progress
calculation as of now .

Thank you,
Rahila Syed.

Attachments:

Vacuum_progress_checker_v1.patchapplication/octet-stream; name=Vacuum_progress_checker_v1.patchDownload+79-8
#20Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Rahila Syed (#19)
Re: [PROPOSAL] VACUUM Progress Checker.

On 2015-07-16 AM 05:18, Rahila Syed wrote:

GUC parameter 'pgstat_track_progress' is currently PGC_SUSET in line with
'track_activities' GUC parameter.

Naming the GUC pgstat* seems a little inconsistent. It could be called,
say, track_maintenance_progress_interval/track_vacuum_progress_interval.
That way, it will look similar to existing track_* parameters:

#track_activities = on
#track_counts = on
#track_io_timing = off
#track_functions = none # none, pl, all
#track_activity_query_size = 1024 # (change requires restart)

Also, adding the new GUC to src/backend/utils/misc/postgresql.conf.sample
might be helpful.

Thanks,
Amit

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#21Fujii Masao
masao.fujii@gmail.com
In reply to: Rahila Syed (#19)
#22Thakur, Sameer
Sameer.Thakur@nttdata.com
In reply to: Simon Riggs (#13)
#23Michael Paquier
michael@paquier.xyz
In reply to: Thakur, Sameer (#22)
#24Thakur, Sameer
Sameer.Thakur@nttdata.com
In reply to: Michael Paquier (#23)
#25dinesh kumar
dineshkumar02@gmail.com
In reply to: Fujii Masao (#21)
#26Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Amit Langote (#20)
#27Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Thakur, Sameer (#24)
#28Thakur, Sameer
Sameer.Thakur@nttdata.com
In reply to: Jim Nasby (#27)
#29Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Thakur, Sameer (#28)
#30Robert Haas
robertmhaas@gmail.com
In reply to: Simon Riggs (#5)
#31Simon Riggs
simon@2ndQuadrant.com
In reply to: Robert Haas (#30)
#32Thakur, Sameer
Sameer.Thakur@nttdata.com
In reply to: Jim Nasby (#29)
#33Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Thakur, Sameer (#32)
#34Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Alvaro Herrera (#33)
#35Robert Haas
robertmhaas@gmail.com
In reply to: Simon Riggs (#31)
#36Simon Riggs
simon@2ndQuadrant.com
In reply to: Robert Haas (#35)
#37Robert Haas
robertmhaas@gmail.com
In reply to: Simon Riggs (#36)
#38Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Amit Langote (#34)
#39Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Robert Haas (#37)
#40Thakur, Sameer
Sameer.Thakur@nttdata.com
In reply to: Jim Nasby (#38)
#41Thakur, Sameer
Sameer.Thakur@nttdata.com
In reply to: Simon Riggs (#5)
#42Robert Haas
robertmhaas@gmail.com
In reply to: Jim Nasby (#39)
#43Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Robert Haas (#42)
#44Robert Haas
robertmhaas@gmail.com
In reply to: Jim Nasby (#43)
#45Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Thakur, Sameer (#41)
#46Josh Berkus
josh@agliodbs.com
In reply to: Simon Riggs (#5)
#47Mike Blackwell
mike.blackwell@rrd.com
In reply to: Josh Berkus (#46)
#48Pavel Stehule
pavel.stehule@gmail.com
In reply to: Josh Berkus (#46)
#49Rahila Syed
rahilasyed90@gmail.com
In reply to: Jim Nasby (#45)
#50Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Rahila Syed (#49)
#51Joshua D. Drake
jd@commandprompt.com
In reply to: Alvaro Herrera (#50)
#52Robert Haas
robertmhaas@gmail.com
In reply to: Alvaro Herrera (#50)
#53Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Robert Haas (#52)
#54Rahila Syed
rahilasyed90@gmail.com
In reply to: Alvaro Herrera (#50)
#55Rahila Syed
rahilasyed90@gmail.com
In reply to: Robert Haas (#37)
#56Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Rahila Syed (#55)
#57Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Masahiko Sawada (#56)
#58Simon Riggs
simon@2ndQuadrant.com
In reply to: Syed, Rahila (#57)
#59Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Simon Riggs (#58)
#60Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Masahiko Sawada (#59)
#61Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Alvaro Herrera (#60)
#62Simon Riggs
simon@2ndQuadrant.com
In reply to: Alvaro Herrera (#60)
#63Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Simon Riggs (#62)
#64Rahila Syed
rahilasyed90@gmail.com
In reply to: Masahiko Sawada (#61)
#65Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Rahila Syed (#64)
#66Robert Haas
robertmhaas@gmail.com
In reply to: Rahila Syed (#55)
#67Rahila Syed
rahilasyed90@gmail.com
In reply to: Rahila Syed (#19)
#68Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Rahila Syed (#67)
#69Thom Brown
thom@linux.com
In reply to: Syed, Rahila (#68)
#70Rahila Syed
rahilasyed90@gmail.com
In reply to: Thom Brown (#69)
#71Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Rahila Syed (#70)
#72Thom Brown
thom@linux.com
In reply to: Alvaro Herrera (#71)
#73Thom Brown
thom@linux.com
In reply to: Syed, Rahila (#68)
#74Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Thom Brown (#73)
#75Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Syed, Rahila (#74)
#76Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Masahiko Sawada (#75)
#77Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Syed, Rahila (#76)
#78Fujii Masao
masao.fujii@gmail.com
In reply to: Syed, Rahila (#76)
#79Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Masahiko Sawada (#77)
#80Robert Haas
robertmhaas@gmail.com
In reply to: Masahiko Sawada (#77)
#81Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Robert Haas (#80)
#82Fujii Masao
masao.fujii@gmail.com
In reply to: Fujii Masao (#78)
#83Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Fujii Masao (#82)
#84Robert Haas
robertmhaas@gmail.com
In reply to: Amit Langote (#83)
#85Andres Freund
andres@anarazel.de
In reply to: Syed, Rahila (#76)
#86Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Fujii Masao (#82)
#87Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Syed, Rahila (#86)
#88Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Syed, Rahila (#86)
#89Robert Haas
robertmhaas@gmail.com
In reply to: Syed, Rahila (#88)
#90Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Syed, Rahila (#88)
#91Syed, Rahila
Rahila.Syed@nttdata.com
In reply to: Alvaro Herrera (#90)
#92Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Syed, Rahila (#91)
#93Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Langote (#92)
#94Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Syed, Rahila (#91)
#95Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#94)
#96Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#94)
#97Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#96)
#98Michael Paquier
michael@paquier.xyz
In reply to: Amit Langote (#97)
#99Rahila Syed
rahilasyed90@gmail.com
In reply to: Michael Paquier (#98)
#100Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Amit Langote (#96)
#101Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Jim Nasby (#100)
#102Robert Haas
robertmhaas@gmail.com
In reply to: Amit Langote (#96)
#103Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Amit Langote (#101)
#104Robert Haas
robertmhaas@gmail.com
In reply to: Jim Nasby (#103)
#105Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Jim Nasby (#103)
#106Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#102)
#107Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Amit Langote (#105)
#108Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Jim Nasby (#107)
#109Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Amit Langote (#108)
#110Rahila Syed
rahilasyed90@gmail.com
In reply to: Jim Nasby (#109)
#111Vinayak
vinpokale@gmail.com
In reply to: Rahila Syed (#110)
#112Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Vinayak (#111)
#113Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Kyotaro Horiguchi (#112)
#114Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#112)
#115Robert Haas
robertmhaas@gmail.com
In reply to: Vinayak (#111)
#116Robert Haas
robertmhaas@gmail.com
In reply to: Kyotaro Horiguchi (#112)
#117Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Vinayak (#111)
#118Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Robert Haas (#116)
#119Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Alvaro Herrera (#117)
#120Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#119)
#121Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Langote (#120)
#122Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#121)
#123Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Langote (#122)
#124Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#123)
#125Robert Haas
robertmhaas@gmail.com
In reply to: Amit Langote (#124)
#126Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#125)
#127Michael Paquier
michael@paquier.xyz
In reply to: Robert Haas (#125)
#128Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Michael Paquier (#127)
#129Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Michael Paquier (#127)
#130Michael Paquier
michael@paquier.xyz
In reply to: Amit Langote (#129)
#131Robert Haas
robertmhaas@gmail.com
In reply to: Michael Paquier (#130)
#132Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#131)
#133Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#132)
#134Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Michael Paquier (#130)
#135Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Langote (#134)
#136Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#135)
#137Michael Paquier
michael@paquier.xyz
In reply to: Robert Haas (#133)
#138Robert Haas
robertmhaas@gmail.com
In reply to: Michael Paquier (#137)
#139Vinayak
vinpokale@gmail.com
In reply to: Robert Haas (#138)
#140Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Vinayak (#139)
#141Sudhir Lonkar-2
sudhir.lonkar@nttdata.com
In reply to: Vinayak (#139)
#142Rahila Syed
rahilasyed90@gmail.com
In reply to: Amit Langote (#140)
#143Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Rahila Syed (#142)
#144Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#143)
#145Vinayak
vinpokale@gmail.com
In reply to: Amit Langote (#144)
#146Vinayak
vinpokale@gmail.com
In reply to: Sudhir Lonkar-2 (#141)
#147Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Vinayak (#145)
#148Vinayak
vinpokale@gmail.com
In reply to: Amit Langote (#147)
#149Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Vinayak (#148)
#150Vinayak
vinpokale@gmail.com
In reply to: Amit Langote (#149)
#151Vinayak
vinpokale@gmail.com
In reply to: Vinayak (#150)
#152Robert Haas
robertmhaas@gmail.com
In reply to: Vinayak (#151)
#153Rahila Syed
rahilasyed90@gmail.com
In reply to: Robert Haas (#152)
#154Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Rahila Syed (#153)
#155Robert Haas
robertmhaas@gmail.com
In reply to: Amit Langote (#154)
#156Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#155)
#157Rahila Syed
rahilasyed90@gmail.com
In reply to: Amit Langote (#156)
#158Robert Haas
robertmhaas@gmail.com
In reply to: Rahila Syed (#157)
#159Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Rahila Syed (#157)
#160Noname
pokurev@pm.nttdata.co.jp
In reply to: Amit Langote (#147)
#161Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Noname (#160)
#162Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Amit Langote (#161)
#163Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Langote (#161)
#164Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#163)
#165Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Langote (#164)
#166Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#165)
#167Noname
pokurev@pm.nttdata.co.jp
In reply to: Amit Langote (#166)
#168Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Noname (#167)
#169Vinayak
vinpokale@gmail.com
In reply to: Amit Langote (#168)
#170大山真実
oyama.masanori.1987@gmail.com
In reply to: Vinayak (#169)
#171Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: 大山真実 (#170)
#172Robert Haas
robertmhaas@gmail.com
In reply to: Noname (#167)
#173Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#172)
#174Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#173)
#175Noname
pokurev@pm.nttdata.co.jp
In reply to: Amit Langote (#174)
#176Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Langote (#174)
#177Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#176)
#178Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Langote (#177)
#179Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#178)
#180Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#179)
#181Robert Haas
robertmhaas@gmail.com
In reply to: Kyotaro Horiguchi (#176)
#182Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#181)
#183Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Langote (#182)
#184Robert Haas
robertmhaas@gmail.com
In reply to: Amit Langote (#182)
#185Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#184)
#186Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Langote (#185)
#187Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#184)
#188Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#186)
#189Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#183)
#190Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#189)
#191Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#187)
#192Noname
pokurev@pm.nttdata.co.jp
In reply to: Amit Langote (#190)
#193Robert Haas
robertmhaas@gmail.com
In reply to: Amit Langote (#191)
#194Tomas Vondra
tomas.vondra@2ndquadrant.com
In reply to: Robert Haas (#193)
#195Noname
pokurev@pm.nttdata.co.jp
In reply to: Robert Haas (#193)
#196Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#193)
#197Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#196)
#198Noname
pokurev@pm.nttdata.co.jp
In reply to: Amit Langote (#197)
#199Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Noname (#198)
#200Noname
pokurev@pm.nttdata.co.jp
In reply to: Amit Langote (#199)
#201Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Noname (#200)
#202Robert Haas
robertmhaas@gmail.com
In reply to: Kyotaro Horiguchi (#201)
#203Robert Haas
robertmhaas@gmail.com
In reply to: Amit Langote (#199)
#204Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#203)
#205Robert Haas
robertmhaas@gmail.com
In reply to: Amit Langote (#204)
#206Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#205)
#207Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#206)
#208Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Robert Haas (#202)
#209Rahila Syed
rahilasyed90@gmail.com
In reply to: Amit Langote (#207)
#210Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Rahila Syed (#209)
#211Robert Haas
robertmhaas@gmail.com
In reply to: Amit Langote (#207)
#212Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#211)
#213Robert Haas
robertmhaas@gmail.com
In reply to: Amit Langote (#212)
#214Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#213)
#215Noname
pokurev@pm.nttdata.co.jp
In reply to: Robert Haas (#213)
#216Rahila Syed
rahilasyed90@gmail.com
In reply to: Robert Haas (#213)
#217Robert Haas
robertmhaas@gmail.com
In reply to: Rahila Syed (#216)
#218Rahila Syed
rahilasyed90@gmail.com
In reply to: Robert Haas (#217)
#219Robert Haas
robertmhaas@gmail.com
In reply to: Rahila Syed (#218)
#220Robert Haas
robertmhaas@gmail.com
In reply to: Robert Haas (#219)
#221Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Robert Haas (#219)
#222Rahila Syed
rahilasyed90@gmail.com
In reply to: Robert Haas (#220)