parallel: --sqlmaster +DBURL works with different commands.

This commit is contained in:
Ole Tange 2017-01-13 15:47:13 +01:00
parent 84f4a855a5
commit 0d9812ddb4

View file

@ -1259,7 +1259,7 @@ sub check_invalid_option_combinations {
sub init_globals {
# Defaults:
$Global::version = 20170101;
$Global::version = 20170111;
$Global::progname = 'parallel';
$Global::infinity = 2**31;
$Global::debug = 0;
@ -9197,12 +9197,44 @@ sub replaced {
# for each arg:
# replace replacement strings with replacement in the word value
# push to replace word value
$perl_expressions_as_re ||=
join("|", map {s/^-?\d+//; "\Q$_\E"} keys %{$self->{'replacecount'}});
for my $arg (@$argref) {
my $val = $word;
# Replace {= perl expr =} with value for each arg
$val =~ s{\257<(-?\d+)?($perl_expressions_as_re)\257>}
if($opt::sqlworker) {
$perl_expressions_as_re =
join("|", map {s/^-?\d+//; "\Q$_\E"} keys %{$self->{'replacecount'}});
for my $arg (@$argref) {
my $val = $word;
# Replace {= perl expr =} with value for each arg
$val =~ s{\257<(-?\d+)?($perl_expressions_as_re)\257>}
{
if($1) {
# Positional replace
# Find the relevant arg and replace it
($argref->[$1 > 0 ? $1-1 : $n+$1] ? # If defined: replace
$argref->[$1 > 0 ? $1-1 : $n+$1]->
replace($2,$quote_arg,$self)
: "");
} else {
# Normal replace
$normal_replace ||= 1;
($arg ? $arg->replace($2,$quote_arg,$self) : "");
}
}gxe;
if($quote) {
CORE::push(@{$replace{::shell_quote_scalar($word)}},
::shell_quote_scalar($val));
} else {
CORE::push(@{$replace{$word}}, $val);
}
# No normal replacements => only run once
$normal_replace or last;
}
} else {
$perl_expressions_as_re ||=
join("|", map {s/^-?\d+//; "\Q$_\E"} keys %{$self->{'replacecount'}});
for my $arg (@$argref) {
my $val = $word;
# Replace {= perl expr =} with value for each arg
$val =~ s{\257<(-?\d+)?($perl_expressions_as_re)\257>}
{
if($1) {
# Positional replace
@ -9217,14 +9249,15 @@ sub replaced {
($arg ? $arg->replace($2,$quote_arg,$self) : "");
}
}goxe;
if($quote) {
CORE::push(@{$replace{::shell_quote_scalar($word)}},
::shell_quote_scalar($val));
} else {
CORE::push(@{$replace{$word}}, $val);
if($quote) {
CORE::push(@{$replace{::shell_quote_scalar($word)}},
::shell_quote_scalar($val));
} else {
CORE::push(@{$replace{$word}}, $val);
}
# No normal replacements => only run once
$normal_replace or last;
}
# No normal replacements => only run once
$normal_replace or last;
}
}
*Arg::arg = [];