From f59bb4a65e47867e4dbddd37bfeb9638fff8ecbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D1=80=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Wed, 20 Apr 2016 17:34:34 +0300 Subject: [PATCH 1/3] Added optional initial parameters --session-param for setting other variables like "vacuum_cost_delay", for mange resource consumption --- lib/PgToolkit/Registry/Compactor.pm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/PgToolkit/Registry/Compactor.pm b/lib/PgToolkit/Registry/Compactor.pm index 1986161..fca3151 100644 --- a/lib/PgToolkit/Registry/Compactor.pm +++ b/lib/PgToolkit/Registry/Compactor.pm @@ -156,6 +156,16 @@ sub get_database_adapter { user => $options->get(name => 'user'), dbname => $arg_hash{'dbname'}); + my $default_session_params = { + 'lc_messages' => '\'C\'', + 'synchronous_commit' => 'off', + 'session_replication_role' => 'replica', + 'statement_timeout' => '\'0\'' + }; + + my $ops_session_params = $options->get(name => 'session-param'); + my $session_params = { %$default_session_params, %$ops_session_params }; + my %param_hash = ( password => ( $options->get(name => 'password') or @@ -167,11 +177,7 @@ sub get_database_adapter { ($ENV{'HOME'} and -r $ENV{'HOME'}.'/.pgpass') ? $ENV{'HOME'}.'/.pgpass' : undef), %hpud_hash)), - set_hash => { - 'lc_messages' => '\'C\'', - 'synchronous_commit' => 'off', - 'session_replication_role' => 'replica', - 'statement_timeout' => '\'0\''}, + set_hash => $session_params, %hpud_hash); my $constructor_list = [ @@ -254,6 +260,7 @@ sub get_options { 'min-page-count|x:i' => 10, 'min-free-percent|y:i' => 20, 'progress-report-period|z:i' => 60, + 'session-param|b:s%' => {}, # misc 'quiet|q' => 0, 'verbosity|v:s' => 'notice'}, From 8df4c6d2462bf71b601c376bcabf35c8d63fa510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D1=80=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Wed, 20 Apr 2016 18:03:21 +0300 Subject: [PATCH 2/3] fatpack --- fatpack/pgcompact | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/fatpack/pgcompact b/fatpack/pgcompact index 3f82eeb..bf0176c 100755 --- a/fatpack/pgcompact +++ b/fatpack/pgcompact @@ -4811,6 +4811,16 @@ $fatpacked{"PgToolkit/Registry/Compactor.pm"} = '#line '.(1+__LINE__).' "'.__FIL user => $options->get(name => 'user'), dbname => $arg_hash{'dbname'}); + my $default_session_params = { + 'lc_messages' => '\'C\'', + 'synchronous_commit' => 'off', + 'session_replication_role' => 'replica', + 'statement_timeout' => '\'0\'' + }; + + my $ops_session_params = $options->get(name => 'session-param'); + my $session_params = { %$default_session_params, %$ops_session_params }; + my %param_hash = ( password => ( $options->get(name => 'password') or @@ -4822,11 +4832,7 @@ $fatpacked{"PgToolkit/Registry/Compactor.pm"} = '#line '.(1+__LINE__).' "'.__FIL ($ENV{'HOME'} and -r $ENV{'HOME'}.'/.pgpass') ? $ENV{'HOME'}.'/.pgpass' : undef), %hpud_hash)), - set_hash => { - 'lc_messages' => '\'C\'', - 'synchronous_commit' => 'off', - 'session_replication_role' => 'replica', - 'statement_timeout' => '\'0\''}, + set_hash => $session_params, %hpud_hash); my $constructor_list = [ @@ -4909,6 +4915,7 @@ $fatpacked{"PgToolkit/Registry/Compactor.pm"} = '#line '.(1+__LINE__).' "'.__FIL 'min-page-count|x:i' => 10, 'min-free-percent|y:i' => 20, 'progress-report-period|z:i' => 60, + 'session-param|b:s%' => {}, # misc 'quiet|q' => 0, 'verbosity|v:s' => 'notice'}, @@ -5242,15 +5249,17 @@ no strict 'refs'; if ($] < 5.008) { *{"${class}::INC"} = sub { - if (my $fat = $_[0]{$_[1]}) { - return sub { - return 0 unless length $fat; - $fat =~ s/^([^\n]*\n?)//; - $_ = $1; - return 1; - }; - } - return; + if (my $fat = $_[0]{$_[1]}) { + my $pos = 0; + my $last = length $fat; + return (sub { + return 0 if $pos == $last; + my $next = (1 + index $fat, "\n", $pos) || $last; + $_ .= substr $fat, $pos, $next - $pos; + $pos = $next; + return 1; + }); + } }; } From a30afa86806252c5ab9c3d13e051d9217908ea64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D1=80=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=9C?= =?UTF-8?q?=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Thu, 28 Apr 2016 11:49:38 +0300 Subject: [PATCH 3/3] Refactor variable's name --- fatpack/pgcompact | 8 ++++---- lib/PgToolkit/Registry/Compactor.pm | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/fatpack/pgcompact b/fatpack/pgcompact index bf0176c..da3b210 100755 --- a/fatpack/pgcompact +++ b/fatpack/pgcompact @@ -4811,15 +4811,15 @@ $fatpacked{"PgToolkit/Registry/Compactor.pm"} = '#line '.(1+__LINE__).' "'.__FIL user => $options->get(name => 'user'), dbname => $arg_hash{'dbname'}); - my $default_session_params = { + my $hard_session_params = { 'lc_messages' => '\'C\'', 'synchronous_commit' => 'off', 'session_replication_role' => 'replica', 'statement_timeout' => '\'0\'' }; - my $ops_session_params = $options->get(name => 'session-param'); - my $session_params = { %$default_session_params, %$ops_session_params }; + my $custom_session_params = $options->get(name => 'custom-session-param'); + my $session_params = { %$custom_session_params, %$hard_session_params }; my %param_hash = ( password => ( @@ -4915,7 +4915,7 @@ $fatpacked{"PgToolkit/Registry/Compactor.pm"} = '#line '.(1+__LINE__).' "'.__FIL 'min-page-count|x:i' => 10, 'min-free-percent|y:i' => 20, 'progress-report-period|z:i' => 60, - 'session-param|b:s%' => {}, + 'custom-session-param|b:s%' => {}, # misc 'quiet|q' => 0, 'verbosity|v:s' => 'notice'}, diff --git a/lib/PgToolkit/Registry/Compactor.pm b/lib/PgToolkit/Registry/Compactor.pm index fca3151..17c05f6 100644 --- a/lib/PgToolkit/Registry/Compactor.pm +++ b/lib/PgToolkit/Registry/Compactor.pm @@ -156,15 +156,15 @@ sub get_database_adapter { user => $options->get(name => 'user'), dbname => $arg_hash{'dbname'}); - my $default_session_params = { + my $hard_session_params = { 'lc_messages' => '\'C\'', 'synchronous_commit' => 'off', 'session_replication_role' => 'replica', 'statement_timeout' => '\'0\'' }; - my $ops_session_params = $options->get(name => 'session-param'); - my $session_params = { %$default_session_params, %$ops_session_params }; + my $custom_session_params = $options->get(name => 'custom-session-param'); + my $session_params = { %$custom_session_params, %$hard_session_params }; my %param_hash = ( password => ( @@ -260,7 +260,7 @@ sub get_options { 'min-page-count|x:i' => 10, 'min-free-percent|y:i' => 20, 'progress-report-period|z:i' => 60, - 'session-param|b:s%' => {}, + 'custom-session-param|b:s%' => {}, # misc 'quiet|q' => 0, 'verbosity|v:s' => 'notice'},