parallel,sql: Better CSV support.

This commit is contained in:
Ole Tange 2024-11-26 21:23:34 +01:00
parent 14089a1ff0
commit 044c2306b1
28 changed files with 2178 additions and 2091 deletions

View file

@ -4,17 +4,27 @@
Quote of the month:
"Do this with gnu parallel" is the Copilot hack of the day
-- Chase Clark @chasingmicrobes.bsky.social
GNU Parallel too. It is my map/reduce tool with built in support to retry failed jobs.
-- Dhruva @mechanicker.bsky.social
gnu parallel is my new favorite toy
-- Eytan Adar @eytan.adar.prof
ainda não inventaram palavras capazes de expressar minha gratidão aos desenvolvedores do GNU Parallel
-- @nueidris.kawaii.social
GNU parallel is awesome. Use it more often in your scripts!
-- Wade @WadeGrimshire@twitter
i rly love gnu parallel over xargs, it's basically the same but has lots of useful and well documented options. sry if u know already
-- d@nny "disc@" mc² @hipsterelectron@circumstances.run
ainda não inventaram palavras capazes de expressar minha gratidão aos desenvolvedores do GNU Parallel
-- nueidris @nueidris.kawaii.social
Und die Tage jetzt hab ich GNU parallel für mich entdeckt, auch ne nette Geschichte, gerade wenn's irgendwelche remote APIs sind.
-- Vince @dd1des.bsky.social
-- Vince @dd1des.bsky.social
gnu parallelすごい
-- たらたら@nosennyuu@twitter

View file

@ -132,6 +132,9 @@ description="An easy way to support GNU Parallel is to tip on LBRY.
$(perl -ne '/About\sGNU\sParallel/ and exit;/It\sis\savailable/..0 and print' doc/release_new_version)
"
echo
echo "Title: $title"
echo
echo "$description" | grep '<<.*>>' && echo STOP STOP STOP ||
echo "$description"
@ -272,39 +275,25 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20241122 ('Ahoo Daryaei') released
Subject: GNU Parallel 202xxx22 ('Scooter/Assad/Damaskus/South Korea/Georgien/Aleppo/<<>>') released <<[stable]>>
GNU Parallel 20241122 ('Ahoo Daryaei') has been released. It is available for download at: lbry://@GnuParallel:4
GNU Parallel 202xxx22 ('<<>>') has been released. It is available for download at: lbry://@GnuParallel:4
Quote of the month:
GNU parallel is so satisfying
-- James Coman @jcoman.bsky.social
<<>>
New in this release:
* --pipe --block works similar to --pipepart --block if --block size is negative.
<<>>
* DBURLs can be written with / instead of %2F for sqlite and CSV.
<<* No new features. This is a candidate for a stable release.>>
* Bug fixes and man page updates.
News about GNU Parallel:
* Embarrassingly GNU parallel
https://dengin.xyz/blog/2024/10/24/embarrassingly-gnu-parallel/
* GNU Parallel for Your Terminal Tasks
https://erolrecep.github.io/posts/gnuparallel_for_your_terminal_tasks/
* How to leverage GNU parallel to utilize multiple cores while running AUGUSTUS
https://lifescienceshub.wixsite.com/lifesciencehub/post/how-to-leverage-gnu-parallel-to-utilize-multiple-cores-while-running-augustus
* GNU Parallel: The Good Parts
https://diekmeier.de/posts/2024-11-17-gnu-parallel/
* Put your CPU to work with GNU Parallel
https://www.redhat.com/en/blog/gnu-parallel
<<>>
GNU Parallel - For people who live life in the parallel lane.

View file

@ -1,6 +1,6 @@
<directory name="parallel" rev="403" vrev="2" srcmd5="5859fde67057353653a861981a199093">
<entry name="Makefile" md5="d62bf3bdf277f9787ce915e6d1309317" size="1254" mtime="1727031498" />
<entry name="PKGBUILD" md5="2147d5d0557cb1d87e905ec16b855cfb" size="795" mtime="1732313409" />
<directory name="parallel" rev="405" vrev="4" srcmd5="f209576e587b84cd2326ed90ddd06b83">
<entry name="Makefile" md5="9fb8935564eeda7d61506128a9cf18b7" size="1335" mtime="1732314935" />
<entry name="PKGBUILD" md5="3515ba5e3abde0b1e5f60e0d8f8b28e1" size="849" mtime="1732314975" />
<entry name="parallel-20241122.tar.bz2" md5="37e808b62e43c87c49bb4b876cec0a8d" size="2677531" mtime="1732313409" />
<entry name="parallel-20241122.tar.bz2.sig" md5="b2b7cd40233f2da68986ef54d02128ce" size="2080" mtime="1732313410" />
<entry name="parallel.spec" md5="47eaf53b1ed3821dedd238cabccf1149" size="6224" mtime="1732313410" />

View file

@ -3,7 +3,9 @@ all: update upload monitorbuild
update:
# Update sha256sum
s=`sha256sum parallel-*.tar.bz2|field 1` perl -i -pe 's/(sha256sums=..)\w+(..)/$$1$$ENV{s}$$2/' PKGBUILD
s1=`sha256sum parallel-*.tar.bz2|field 1` \
s2=`sha256sum parallel-*.tar.bz2.sig|field 1` \
perl -i -pe 's/(sha256sums=..)\w+(...)\w+(..)/$$1$$ENV{s1}$$2$$ENV{s2}$$3/' PKGBUILD
# Update version
perl -i -pe 's/pkgver=.*/pkgver=$$ENV{YYYYMMDD}/' PKGBUILD
osc diff

View file

@ -13,8 +13,7 @@ env_parallel - export environment to GNU parallel
=head1 SYNOPSIS
B<env_parallel> [--record-env|--session|--end-session]
[options for GNU Parallel]
B<env_parallel> [--record-env|--session|--end-session] [options for GNU Parallel]
=head1 DESCRIPTION

View file

@ -2945,7 +2945,7 @@ sub check_invalid_option_combinations() {
sub init_globals() {
# Defaults:
$Global::version = 20241122;
$Global::version = 20241201;
$Global::progname = 'parallel';
$::name = "GNU Parallel";
$Global::infinity = 2**31;
@ -15124,6 +15124,10 @@ sub new($) {
::error("The DBURL ($dburl) must contain a table.");
::wait_and_exit(255);
}
if($options{'table'} =~ m:/:) {
::error("The table name ($options{'table'}) cannot contain /");
::wait_and_exit(255);
}
return bless {
'dbh' => $dbh,

View file

@ -3244,7 +3244,7 @@ Examples: B<4/>, B<12/>
The I<ssh command> to use. The I<ssh command> must be followed by a space.
Example: B</usr/bin/lsh -z >, B<autossh -C >
Example: B</usr/bin/lsh -z> , B<autossh -C>
=item Z<> I<user>

View file

@ -66,7 +66,7 @@ master_doc = 'sphinx'
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
language = "en"
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.

95
src/sql
View file

@ -597,6 +597,11 @@ if($database_driver eq "mysql" or
$database_driver eq "influxssl") {
($batch_command,$interactive_command) =
influx_commands($database_driver,%dburl);
} elsif($database_driver eq "csv") {
($batch_command,$interactive_command) =
csv_commands($database_driver,%dburl);
} else {
die("Unsupported driver: $database_driver");
}
my $err;
@ -635,8 +640,6 @@ if($dburl{'query'}) {
$batch_command = "(cat $qfile;rm $qfile; cat) | $batch_command";
}
do {
if(@ARGV) {
# SQL Commands given as arguments:
@ -746,36 +749,38 @@ sub parse_options {
sub database_driver_alias {
my $driver = shift;
my %database_driver_alias = ("mysql" => "mysql",
"mysqls" => "mysqlssl",
"mysqlssl" => "mysqlssl",
"oracle" => "oracle",
"ora" => "oracle",
"oracles" => "oraclessl",
"oras" => "oraclessl",
"oraclessl" => "oraclessl",
"orassl" => "oraclessl",
"postgresql" => "postgresql",
"pgsql" => "postgresql",
"postgres" => "postgresql",
"pg" => "postgresql",
"postgresqlssl" => "postgresqlssl",
"pgsqlssl" => "postgresqlssl",
"postgresssl" => "postgresqlssl",
"pgssl" => "postgresqlssl",
"postgresqls" => "postgresqlssl",
"pgsqls" => "postgresqlssl",
"postgress" => "postgresqlssl",
"pgs" => "postgresqlssl",
"sqlite" => "sqlite",
"sqlite2" => "sqlite",
"sqlite3" => "sqlite3",
"influx" => "influx",
"influxdb" => "influx",
"influxssl" => "influxssl",
"influxdbssl" => "influxssl",
"influxs" => "influxssl",
"influxdbs" => "influxssl",
my %database_driver_alias = (
"csv" => "csv",
"influx" => "influx",
"influxdb" => "influx",
"influxdbs" => "influxssl",
"influxdbssl" => "influxssl",
"influxs" => "influxssl",
"influxssl" => "influxssl",
"mysql" => "mysql",
"mysqls" => "mysqlssl",
"mysqlssl" => "mysqlssl",
"ora" => "oracle",
"oracle" => "oracle",
"oracles" => "oraclessl",
"oraclessl" => "oraclessl",
"oras" => "oraclessl",
"orassl" => "oraclessl",
"pg" => "postgresql",
"pgs" => "postgresqlssl",
"pgsql" => "postgresql",
"pgsqls" => "postgresqlssl",
"pgsqlssl" => "postgresqlssl",
"pgssl" => "postgresqlssl",
"postgres" => "postgresql",
"postgresql" => "postgresql",
"postgresqls" => "postgresqlssl",
"postgresqlssl" => "postgresqlssl",
"postgress" => "postgresqlssl",
"postgresssl" => "postgresqlssl",
"sqlite" => "sqlite",
"sqlite2" => "sqlite",
"sqlite3" => "sqlite3",
);
return $database_driver_alias{$driver};
}
@ -907,6 +912,30 @@ sub sqlite_commands {
return($batch_command,$interactive_command);
}
sub csv_commands {
my ($database_driver,%opt) = (@_);
my $csvsql = find_command_in_path("csvsql") ||
die ("csvsql not in path");
my $sep = defined($::opt_s) ? "-d '$::opt_s'" : "";
my $database = defined($opt{'database'}) ?
"$opt{'database'}" : "$ENV{'USER'}";
my $format = defined($::opt_json) ? "-format json" :
defined($::opt_pretty) ? "-format json -pretty" :
defined($::opt_csv) ? "-format csv" : "";
my $precision = defined($::opt_precision) ?
"-precision $::opt_precision" : "";
my $no_headers = defined($::opt_n) ? "--skip-column-names" : "";
my $ssl = "";
$batch_command =
"$csvsql $pass_through_options $no_headers $format ".
"$precision $database ".'--query "`cat`"';
$interactive_command = $batch_command;
return($batch_command,$interactive_command);
}
sub influx_commands {
my ($database_driver,%opt) = (@_);
my $influx = find_command_in_path("influx") ||
@ -1191,7 +1220,7 @@ sub parse_dburl {
)?
(?:
/
([^?]*)? # Database ($6)
([^?]*?)? # Database ($6)
)?
(?:
/?

View file

@ -129,16 +129,16 @@ servers=parallel-server1 parallel-server2 parallel-server3 parallel-server4 ${na
startvm:
sort -u ~/.ssh/*.pub vagrant/authorized_keys > vagrant/authorized_keys.
mv vagrant/authorized_keys. vagrant/authorized_keys
parallel -j0 --tag -k '${start}' ::: ${servers} &
parallel -j0 --tag -k --timeout 60 '${start}' ::: ${servers} &
stopvm:
parallel -j0 --tag -k '${stop}' ::: ${namedservers} || true
startdb:
sql oracle://SYSTEM:$$VM_ORACLE_PWD@/FREE "select 'Oracle is running' from dual;" || \
(cd vagrant-projects/OracleDatabase/23.4.0-Free && vagrant up && \
(cd vagrant-projects/OracleDatabase/23.3.0-Free && vagrant up && \
sql oracle://SYSTEM:$$VM_ORACLE_PWD@/FREE "select 'Oracle is running' from dual;")
stopdb:
cd vagrant-projects/OracleDatabase/23.4.0-Free; vagrant suspend
cd vagrant-projects/OracleDatabase/23.3.0-Free; vagrant suspend
### Distribution
installparallel: ../src/parallel

View file

@ -14,7 +14,7 @@ install_packages() {
test_pkgs="$test_pkgs autossh sshpass lsh-client lsh-utils jq"
test_pkgs="$test_pkgs libpod-simple-perl libtext-csv-perl"
test_pkgs="$test_pkgs libtest-nowarnings-perl pod2pdf"
test_pkgs="$test_pkgs xemacs21"
test_pkgs="$test_pkgs xemacs21 csvkit"
test_pkgs="$test_pkgs gawk lua5.3 clisp php-cli nodejs guile-3.0 fsharp"
test_pkgs="$test_pkgs mono-csharp-shell octave openjdk-11-jdk-headless tcl"
test_pkgs="$test_pkgs racket libevent-dev python-is-python3"

View file

@ -8,6 +8,18 @@
# Each should be taking 10-30s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_retries_lb_jl() {
echo Broken in 20240522
tmp=$(mktemp)
export tmp
parallel-20240522 --lb --jl /dev/null --timeout 0.3 --retries 5 'echo should be 5 lines >> "$tmp";sleep {}' ::: 20
cat "$tmp"
> "$tmp"
parallel --lb --jl /dev/null --timeout 0.3 --retries 5 'echo 5 lines >> "$tmp";sleep {}' ::: 20
cat "$tmp"
rm "$tmp"
}
par_--match() {
export PARALLEL=-k
echo Basic match
@ -224,22 +236,6 @@ par__round_robin_blocks() {
seq 20000000 | parallel -j8 --block 10M --round-robin --pipe wc -c | wc -l
}
par_compress_prg_fails() {
echo "### bug #41609: --compress fails"
seq 12 | parallel --compress --compress-program gzip -k seq {} 10000 | md5sum
seq 12 | parallel --compress -k seq {} 10000 | md5sum
echo '### bug #44546: If --compress-program fails: fail'
doit() {
(parallel $* --compress-program false \
echo \; sleep 1\; ls ::: /no-existing
echo $?) | tail -n1
}
export -f doit
stdout parallel --tag -k doit ::: '' --line-buffer ::: '' --tag ::: '' --files |
grep -v -- -dc
}
par_dryrun_timeout_ungroup() {
echo 'bug #51039: --dry-run --timeout 1.4m -u breaks'
seq 1000 | stdout parallel --dry-run --timeout 1.4m -u --jobs 10 echo | wc

View file

@ -86,6 +86,7 @@ par__dburl_parsing() {
}
export -f test_dburl
parallel -j1 --tag test_dburl ::: ${dburls[@]}
parallel -j1 --tag test_dburl {}/ ::: ${dburls[@]}
)
rmdir test
}
@ -142,7 +143,7 @@ par__print_in_blocks() {
perl -e 'for(1..30){print("$_\n");`sleep .3`}' |
parallel -j3 --delay 0.3 echo |
timestamp -d -d |
perl -pe 's/(.....).*/int($1*10+0.2)/e' |
perl -pe 's/(.....).*/int($1*10+0.1)/e' |
median
}
@ -176,18 +177,6 @@ par__keeporder_roundrobin() {
fi
}
par_retries_lb_jl() {
echo Broken in 20240522
tmp=$(mktemp)
export tmp
parallel-20240522 --lb --jl /dev/null --timeout 0.3 --retries 5 'echo should be 5 lines >> "$tmp";sleep {}' ::: 20
cat "$tmp"
> "$tmp"
parallel --lb --jl /dev/null --timeout 0.3 --retries 5 'echo 5 lines >> "$tmp";sleep {}' ::: 20
cat "$tmp"
rm "$tmp"
}
par_reload_slf_every_second() {
echo "### --slf should reload every second"
tmp=$(mktemp)
@ -677,7 +666,7 @@ par__test_detected_shell() {
}
export -f test_known_shell_pipe
stdout parallel -j2 --tag -k \
stdout nice parallel -j2 --tag -k \
::: test_unknown_shell test_known_shell_c test_known_shell_pipe \
::: $shells |
grep -Ev 'parallel: Warning: (Starting .* processes took|Consider adjusting)'
@ -728,101 +717,102 @@ par_max_length_len_128k() {
par__plus_dyn_repl() {
echo "Dynamic replacement strings defined by --plus"
pp="nice parallel --plus"
unset myvar
echo ${myvar:-myval}
parallel --rpl '{:-(.+)} $_ ||= $$1' echo {:-myval} ::: "$myvar"
parallel --plus echo {:-myval} ::: "$myvar"
parallel --plus echo {2:-myval} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2:-myval} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {:-myval} ::: "$myvar"
$pp echo {2:-myval} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {-2:-myval} ::: "wrong" ::: "$myvar" ::: "wrong"
myvar=abcAaBdefCdefDdef
echo ${myvar:2}
parallel --rpl '{:(\d+)} substr($_,0,$$1) = ""' echo {:2} ::: "$myvar"
parallel --plus echo {:2} ::: "$myvar"
parallel --plus echo {2:2} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2:2} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {:2} ::: "$myvar"
$pp echo {2:2} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {-2:2} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar:2:3}
parallel --rpl '{:(\d+?):(\d+?)} $_ = substr($_,$$1,$$2);' echo {:2:3} ::: "$myvar"
parallel --plus echo {:2:3} ::: "$myvar"
parallel --plus echo {2:2:3} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2:2:3} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {:2:3} ::: "$myvar"
$pp echo {2:2:3} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {-2:2:3} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${#myvar}
parallel --rpl '{#} $_ = length $_;' echo {#} ::: "$myvar"
# {#} used for job number
parallel --plus echo {#} ::: "$myvar"
$pp echo {#} ::: "$myvar"
echo ${myvar#bc}
parallel --rpl '{#(.+?)} s/^$$1//;' echo {#bc} ::: "$myvar"
parallel --plus echo {#bc} ::: "$myvar"
parallel --plus echo {2#bc} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2#bc} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {#bc} ::: "$myvar"
$pp echo {2#bc} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {-2#bc} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar#abc}
parallel --rpl '{#(.+?)} s/^$$1//;' echo {#abc} ::: "$myvar"
parallel --plus echo {#abc} ::: "$myvar"
parallel --plus echo {2#abc} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2#abc} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {#abc} ::: "$myvar"
$pp echo {2#abc} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {-2#abc} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar%de}
parallel --rpl '{%(.+?)} s/$$1$//;' echo {%de} ::: "$myvar"
parallel --plus echo {%de} ::: "$myvar"
parallel --plus echo {2%de} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2%de} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {%de} ::: "$myvar"
$pp echo {2%de} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {-2%de} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar%def}
parallel --rpl '{%(.+?)} s/$$1$//;' echo {%def} ::: "$myvar"
parallel --plus echo {%def} ::: "$myvar"
parallel --plus echo {2%def} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2%def} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {%def} ::: "$myvar"
$pp echo {2%def} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {-2%def} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar/def/ghi}
parallel --rpl '{/(.+?)/(.+?)} s/$$1/$$2/;' echo {/def/ghi} ::: "$myvar"
parallel --plus echo {/def/ghi} ::: "$myvar"
parallel --plus echo {2/def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2/def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {/def/ghi} ::: "$myvar"
$pp echo {2/def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {-2/def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar//def/ghi}
parallel --rpl '{//(.+?)/(.+?)} s/$$1/$$2/g;' echo {//def/ghi} ::: "$myvar"
parallel --plus echo {//def/ghi} ::: "$myvar"
parallel --plus echo {2//def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2//def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {//def/ghi} ::: "$myvar"
$pp echo {2//def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {-2//def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar^a}
parallel --rpl '{^(.+?)} s/^($$1)/uc($1)/e;' echo {^a} ::: "$myvar"
parallel --plus echo {^a} ::: "$myvar"
parallel --plus echo {2^a} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2^a} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {^a} ::: "$myvar"
$pp echo {2^a} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {-2^a} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar^^a}
parallel --rpl '{^^(.+?)} s/($$1)/uc($1)/eg;' echo {^^a} ::: "$myvar"
parallel --plus echo {^^a} ::: "$myvar"
parallel --plus echo {2^^a} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2^^a} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {^^a} ::: "$myvar"
$pp echo {2^^a} ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo {-2^^a} ::: "wrong" ::: "$myvar" ::: "wrong"
myvar=AbcAaAdef
echo ${myvar,A}
parallel --rpl '{,(.+?)} s/^($$1)/lc($1)/e;' echo '{,A}' ::: "$myvar"
parallel --plus echo '{,A}' ::: "$myvar"
parallel --plus echo '{2,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo '{-2,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo '{,A}' ::: "$myvar"
$pp echo '{2,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo '{-2,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar,,A}
parallel --rpl '{,,(.+?)} s/($$1)/lc($1)/eg;' echo '{,,A}' ::: "$myvar"
parallel --plus echo '{,,A}' ::: "$myvar"
parallel --plus echo '{2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo '{-2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo '{,,A}' ::: "$myvar"
$pp echo '{2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
$pp echo '{-2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
myvar=abcabcdefdef
echo $myvar ${myvar/#abc/ABC}
echo $myvar | parallel --plus echo {} {/#abc/ABC}
echo $myvar | $pp echo {} {/#abc/ABC}
echo $myvar ${myvar/%def/DEF}
echo $myvar | parallel --plus echo {} {/%def/DEF}
echo $myvar | $pp echo {} {/%def/DEF}
echo $myvar ${myvar/#abc/}
echo $myvar | parallel --plus echo {} {/#abc/}
echo $myvar | $pp echo {} {/#abc/}
echo $myvar ${myvar/%def/}
echo $myvar | parallel --plus echo {} {/%def/}
echo $myvar | $pp echo {} {/%def/}
}
par_test_ipv6_format() {
par__test_ipv6_format() {
# If not MaxStartups 100:30:1000 then this will fail
ipv4() {
ifconfig | perl -nE '/inet (\S+) / and say $1'
@ -831,7 +821,7 @@ par_test_ipv6_format() {
ifconfig | perl -nE '/inet6 ([0-9a-f:]+) .*(host|global)/ and say $1'
}
(ipv4; ipv6) |
parallel ssh -oStrictHostKeyChecking=accept-new {} true 2>/dev/null
nice parallel ssh -oStrictHostKeyChecking=accept-new {} true 2>/dev/null
echo '### Host as IPv6 address'
(
ipv6 |
@ -848,7 +838,7 @@ par_test_ipv6_format() {
# 9.9.9.9q22 => 9.9.9.9
perl -pe 's/q.*//;'
) |
parallel -j200% --argsep , parallel -S {} true ::: 1 ||
nice parallel -j200% --argsep , parallel -S {} true ::: 1 ||
echo Failed
}

View file

@ -24,80 +24,6 @@ env_underscore() {
}
env_underscore
ctrlz_should_suspend_children() {
echo 'bug #46120: Suspend should suspend (at least local) children'
echo 'it should burn 1.9 CPU seconds, but no more than that'
echo 'The 5 second sleep will make it be killed by timeout when it fgs'
run() {
cmd="$1"
sleep="$2"
error="$3"
input_source_pipe() {
echo 1 | stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" | \grep -q CPUTIME=1
}
input_source_cmdline() {
stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | \grep -q CPUTIME=1
}
# $cmd is input_source_pipe or input_source_cmdline
$cmd &
echo $cmd
sleep $sleep
kill -TSTP -$!
sleep 5
fg
echo $error $?
}
export -f run
clean() {
grep -v '\[1\]' | grep -v 'SHA256'
}
stdout bash -i -c 'run input_source_pipe 1.9 Zero=OK' | clean
stdout bash -i -c 'run input_source_cmdline 1.9 Zero=OK' | clean
echo "Control case: This should run 2.9 seconds"
stdout bash -i -c 'run input_source_cmdline 2.9 1=OK' | clean
}
ctrlz_should_suspend_children
par_totaljob_repl() {
echo '{##} bug #45841: Replacement string for total no of jobs'
parallel -k --plus echo {##} ::: {a..j};
parallel -k 'echo {= $::G++ > 3 and ($_=$Global::JobQueue->total_jobs());=}' ::: {1..10}
parallel -k -N7 --plus echo {#} {##} ::: {1..14}
parallel -k -N7 --plus echo {#} {##} ::: {1..15}
parallel -k -S 8/: -X --plus echo {#} {##} ::: {1..15}
parallel -k --plus --delay 0.01 -j 10 'sleep 2; echo {0#}/{##}:{0%}' ::: {1..5} ::: {1..4}
}
par_semaphore() {
echo '### Test if parallel invoked as sem will run parallel --semaphore'
sem --id as_sem -u -j2 'echo job1a 1; sleep 3; echo job1b 3'
sleep 0.5
sem --id as_sem -u -j2 'echo job2a 2; sleep 3; echo job2b 5'
sleep 0.5
sem --id as_sem -u -j2 'echo job3a 4; sleep 3; echo job3b 6'
sem --id as_sem --wait
echo done
}
par_more_than_9_relative_sshlogin() {
echo '### Check more than 9(relative) simultaneous sshlogins'
seq 1 11 | stdout parallel -k -j10000% -S "ssh lo" echo |
grep -v 'parallel: Warning:'
}
par_sql_CSV() {
echo '### CSV write to the right place'
rm -rf /tmp/parallel-CSV
mkdir /tmp/parallel-CSV
parallel --sqlandworker csv:///%2Ftmp%2Fparallel-CSV/OK echo ::: 'ran OK'
ls /tmp/parallel-CSV
stdout parallel --sqlandworker csv:///%2Fmust%2Ffail/fail echo ::: 1 |
perl -pe 's/\d/0/g'
}
par_hostgroup() {
echo '### --hostgroup force ncpu - 2x parallel, 6x me'
parallel --delay 0.1 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo \
@ -137,128 +63,6 @@ par_hostgroup() {
'whoami;sleep 1;true' ::: {1..6} | sort
}
par_PARALLEL_RSYNC_OPTS() {
echo '### test rsync opts'
touch parallel_rsync_opts.test
parallel --rsync-opts -rlDzRRRR -vv -S parallel@lo --trc {}.out touch {}.out ::: parallel_rsync_opts.test |
perl -nE 's/(\S+RRRR)/say $1/ge'
export PARALLEL_RSYNC_OPTS=-zzzzrldRRRR
parallel -vv -S parallel@lo --trc {}.out touch {}.out ::: parallel_rsync_opts.test |
perl -nE 's/(\S+RRRR)/say $1/ge'
rm parallel_rsync_opts.test parallel_rsync_opts.test.out
echo
}
par_retries_bug_from_2010() {
echo '### Bug with --retries'
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j+0 "hostname; false" |
wc -l
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j+1 "hostname; false" |
wc -l
seq 1 2 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j-1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j9 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j0 "hostname; false" |
wc -l
echo '### These were not affected by the bug'
seq 1 8 |
parallel --retries 2 --sshlogin 1/localhost,9/: -j-1 "hostname; false" |
wc -l
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j-1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 2/localhost,2/: -j-1 "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 2/localhost,2/: -j1 "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
seq 1 2 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
}
par_kill_hup() {
echo '### Are children killed if GNU Parallel receives HUP? There should be no sleep at the end'
parallel -j 2 -q bash -c 'sleep {} & pid=$!; wait $pid' ::: 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 &
T=$!
sleep 3.9
pstree $$
kill -HUP $T
sleep 4
pstree $$
}
par_resume_failed_k() {
echo '### bug #38299: --resume-failed -k'
tmp=$(mktemp)
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
echo try 2. Gives failing - not 0
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
echo with exit 0
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit 0 ::: 0 1 2 3 0 1
sleep 0.5
echo try 2 again. Gives empty
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
rm "$tmp"
}
par_testhalt() {
testhalt_false() {
echo '### testhalt --halt '$1;
(yes 0 | head -n 10; seq 10) |
stdout parallel -kj4 --delay 0.27 --halt $1 \
'echo job {#}; sleep {= $_=0.3*($_+1+seq()) =}; exit {}'; echo $?;
}
testhalt_true() {
echo '### testhalt --halt '$1;
(seq 10; yes 0 | head -n 10) |
stdout parallel -kj4 --delay 0.17 --halt $1 \
'echo job {#}; sleep {= $_=0.3*($_+1+seq()) =}; exit {}'; echo $?;
};
export -f testhalt_false;
export -f testhalt_true;
stdout parallel -k --delay 0.11 --tag testhalt_{4} {1},{2}={3} \
::: now soon ::: fail success done ::: 0 1 2 30% 70% ::: true false |
# Remove lines that only show up now and then
perl -ne '/Starting no more jobs./ or print'
}
par_continuous_output() {
# After the first batch, each jobs should output when it finishes.
# Old versions delayed output by $jobslots jobs
doit() {
echo "Test delayed output with '$1'"
echo "-u is optimal but hard to reach, due to non-mixing"
seq 10 |
parallel -j1 $1 --delay 1.5 -N0 echo |
parallel -j4 $1 -N0 'sleep 0.6;date' |
timestamp -dd |
perl -pe 's/(.).*/$1/'
}
export -f doit
parallel -k doit ::: '' -u
}
export -f $(compgen -A function | grep par_)
compgen -A function | G "$@" | grep par_ | sort |
# parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'

View file

@ -0,0 +1,225 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2021-2024 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# These fail regularly if run in parallel
# If they fail: Move them to race02.sh
ctrlz_should_suspend_children() {
echo 'bug #46120: Suspend should suspend (at least local) children'
echo 'it should burn 1.9 CPU seconds, but no more than that'
echo 'The 5 second sleep will make it be killed by timeout when it fgs'
run() {
cmd="$1"
sleep="$2"
error="$3"
input_source_pipe() {
echo 1 | stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" | \grep -q CPUTIME=1
}
input_source_cmdline() {
stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | \grep -q CPUTIME=1
}
# $cmd is input_source_pipe or input_source_cmdline
$cmd &
echo $cmd
sleep $sleep
kill -TSTP -$!
sleep 5
fg
echo $error $?
}
export -f run
clean() {
grep -v '\[1\]' | grep -v 'SHA256'
}
stdout bash -i -c 'run input_source_pipe 1.9 Zero=OK' | clean
stdout bash -i -c 'run input_source_cmdline 1.9 Zero=OK' | clean
echo "Control case: This should run 2.9 seconds"
stdout bash -i -c 'run input_source_cmdline 2.9 1=OK' | clean
}
ctrlz_should_suspend_children
par_totaljob_repl() {
echo '{##} bug #45841: Replacement string for total no of jobs'
parallel -k --plus echo {##} ::: {a..j};
parallel -k 'echo {= $::G++ > 3 and ($_=$Global::JobQueue->total_jobs());=}' ::: {1..10}
parallel -k -N7 --plus echo {#} {##} ::: {1..14}
parallel -k -N7 --plus echo {#} {##} ::: {1..15}
parallel -k -S 8/: -X --plus echo {#} {##} ::: {1..15}
parallel -k --plus --delay 0.01 -j 10 'sleep 2; echo {0#}/{##}:{0%}' ::: {1..5} ::: {1..4}
}
par_semaphore() {
echo '### Test if parallel invoked as sem will run parallel --semaphore'
sem --id as_sem -u -j2 'echo job1a 1; sleep 3; echo job1b 3'
sleep 0.5
sem --id as_sem -u -j2 'echo job2a 2; sleep 3; echo job2b 5'
sleep 0.5
sem --id as_sem -u -j2 'echo job3a 4; sleep 3; echo job3b 6'
sem --id as_sem --wait
echo done
}
par_more_than_9_relative_sshlogin() {
echo '### Check more than 9(relative) simultaneous sshlogins'
seq 1 11 | stdout parallel -k -j10000% -S "ssh lo" echo |
grep -v 'parallel: Warning:'
}
par_sql_CSV() {
echo '### CSV write to the right place'
rm -rf /tmp/parallel-CSV
mkdir /tmp/parallel-CSV
parallel --sqlandworker csv:///%2Ftmp%2Fparallel-CSV/OK echo ::: 'ran OK'
ls /tmp/parallel-CSV
stdout parallel --sqlandworker csv:///%2Fmust%2Ffail/fail echo ::: 1 |
perl -pe 's/\d/0/g'
}
par_PARALLEL_RSYNC_OPTS() {
echo '### test rsync opts'
touch parallel_rsync_opts.test
parallel --rsync-opts -rlDzRRRR -vv -S parallel@lo --trc {}.out touch {}.out ::: parallel_rsync_opts.test |
perl -nE 's/(\S+RRRR)/say $1/ge'
export PARALLEL_RSYNC_OPTS=-zzzzrldRRRR
parallel -vv -S parallel@lo --trc {}.out touch {}.out ::: parallel_rsync_opts.test |
perl -nE 's/(\S+RRRR)/say $1/ge'
rm parallel_rsync_opts.test parallel_rsync_opts.test.out
echo
}
par_retries_bug_from_2010() {
echo '### Bug with --retries'
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j+0 "hostname; false" |
wc -l
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j+1 "hostname; false" |
wc -l
seq 1 2 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j-1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j9 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j0 "hostname; false" |
wc -l
echo '### These were not affected by the bug'
seq 1 8 |
parallel --retries 2 --sshlogin 1/localhost,9/: -j-1 "hostname; false" |
wc -l
seq 1 8 |
parallel --retries 2 --sshlogin 8/localhost,8/: -j-1 "hostname; false" |
wc -l
seq 1 1 |
parallel --retries 2 --sshlogin 1/localhost,1/: "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 2/localhost,2/: -j-1 "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 2/localhost,2/: -j1 "hostname; false" |
wc -l
seq 1 4 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
seq 1 2 |
parallel --retries 2 --sshlogin 1/localhost,1/: -j1 "hostname; false" |
wc -l
}
par_kill_hup() {
echo '### Are children killed if GNU Parallel receives HUP? There should be no sleep at the end'
parallel -j 2 -q bash -c 'sleep {} & pid=$!; wait $pid' ::: 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 &
T=$!
sleep 3.9
pstree $$
kill -HUP $T
sleep 4
pstree $$
}
par_resume_failed_k() {
echo '### bug #38299: --resume-failed -k'
tmp=$(mktemp)
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
echo try 2. Gives failing - not 0
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
echo with exit 0
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit 0 ::: 0 1 2 3 0 1
sleep 0.5
echo try 2 again. Gives empty
parallel -k --resume-failed --joblog "$tmp" echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
rm "$tmp"
}
par_testhalt() {
testhalt_false() {
echo '### testhalt --halt '$1;
(yes 0 | head -n 10; seq 10) |
stdout parallel -kj4 --delay 0.27 --halt $1 \
'echo job {#}; sleep {= $_=0.3*($_+1+seq()) =}; exit {}'; echo $?;
}
testhalt_true() {
echo '### testhalt --halt '$1;
(seq 10; yes 0 | head -n 10) |
stdout parallel -kj4 --delay 0.17 --halt $1 \
'echo job {#}; sleep {= $_=0.3*($_+1+seq()) =}; exit {}'; echo $?;
};
export -f testhalt_false;
export -f testhalt_true;
stdout parallel -k --delay 0.11 --tag testhalt_{4} {1},{2}={3} \
::: now soon ::: fail success done ::: 0 1 2 30% 70% ::: true false |
# Remove lines that only show up now and then
perl -ne '/Starting no more jobs./ or print'
}
par_continuous_output() {
# After the first batch, each jobs should output when it finishes.
# Old versions delayed output by $jobslots jobs
doit() {
echo "Test delayed output with '$1'"
echo "-u is optimal but hard to reach, due to non-mixing"
seq 10 |
parallel -j1 $1 --delay 1.5 -N0 echo |
parallel -j4 $1 -N0 'sleep 0.6;date' |
timestamp -dd |
perl -pe 's/(.).*/$1/'
}
export -f doit
parallel -k doit ::: '' -u
}
par__compress_prg_fails() {
echo "### bug #41609: --compress fails"
seq 12 | parallel --compress --compress-program gzip -k seq {} 10000 | md5sum
seq 12 | parallel --compress -k seq {} 10000 | md5sum
echo '### bug #44546: If --compress-program fails: fail'
doit() {
(parallel $* --compress-program false \
echo \; sleep 1\; ls ::: /no-existing
echo $?) | tail -n1
}
export -f doit
stdout parallel --tag -k doit ::: '' --line-buffer ::: '' --tag ::: '' --files |
grep -v -- -dc
}
export -f $(compgen -A function | grep par_)
compgen -A function | G "$@" | grep par_ | sort |
# parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'
parallel -o --joblog /tmp/jl-`basename $0` -j1 --tag -k '{} 2>&1'

View file

@ -170,12 +170,13 @@ par_sql_joblog() {
par_no_table() {
echo 'bug #50018: --dburl without table dies'
echo should default to table USERNAME
parallel --sqlandworker $SERVERURL echo ::: OK
echo $?
parallel --sqlmaster $SERVERURL echo ::: OK
echo $?
parallel --sqlworker $SERVERURL
echo $?
parallel --sqlandworker $SERVERURL echo ::: no_output
echo $?
parallel --sqlmaster $SERVERURL echo ::: no_output
echo $?
# For p_wrapper to remove table
parallel --sqlandworker $DBURL true ::: dummy ::: dummy
}

View file

@ -60,7 +60,7 @@ INSERT INTO unittest VALUES (1,'abc');
INSERT INTO unittest VALUES (3,'def');
SELECT 'Yes it does' as 'Test reading SQL from file works';
EOF
sql $MYSQL_TEST_DBURL/sqlunittest <"$unittest"
sql $MYSQL_TEST_DBURL <"$unittest"
}
testtable() {

View file

@ -52,7 +52,8 @@ par_influx() {
sql -s . influx:///parallel 'SELECT * FROM cpu;'
sql --html influx:///parallel 'SELECT * FROM cpu;'
sql influx:///parallel 'drop database parallel'
) | perl -pe 's/\d/0/g;'
) | perl -pe 's/\d/0/g; s/sql line (\d+)./sql line 000./
'
}

View file

@ -109,10 +109,35 @@ par_showdatabases() {
par_listproc() {
echo "### Test --listproc"
sql --listproc :oraunittest |
shortest-output() {
# Initialize variables to store the shortest output and its length
shortest_output=""
shortest_length=9999999 # Start with a large number
runs=$1
shift
# Run the command more times
for i in {1..$runs}; do
# Run the command and capture the output
output=$("$@")
# Get the length of the current output
output_length=${#output}
# Check if the current output is shorter than the shortest found so far
if [[ $output_length -lt $shortest_length ]]; then
shortest_output="$output"
shortest_length=$output_length
fi
done
# Print the shortest output
echo "$shortest_output"
}
# Try 10 times: Other jobs may be running in parallel
shortest-output 10 nice sql --listproc :oraunittest |
perl -ne '/select 1 from dual|user_objects|user_tablespaces|connect_by_filtering/ and next;
s/[21 ]\.\d{4,5}/1.99999/;
s/ +/ /g;
s/\s+/ /g;
print'
sql --listproc $MYSQL_TEST_DBURL |
perl -pe 's/^\d+/XXX/'

View file

@ -549,38 +549,6 @@ par_colsep echo ac
par_colsep ac
par_colsep echo ac
par_colsep ac
par_compress_prg_fails ### bug #41609: --compress fails
par_compress_prg_fails f1a751b1283e99e7dda40f63f1225f74 -
par_compress_prg_fails f1a751b1283e99e7dda40f63f1225f74 -
par_compress_prg_fails ### bug #44546: If --compress-program fails: fail
par_compress_prg_fails 1
par_compress_prg_fails parallel: Error: false failed.
par_compress_prg_fails parallel: Error: false failed.
par_compress_prg_fails --files 1
par_compress_prg_fails --files parallel: Warning: Use --files0 when $TMPDIR contains newline.
par_compress_prg_fails --files parallel: Error: false failed.
par_compress_prg_fails --files parallel: Error: false failed.
par_compress_prg_fails --tag 1
par_compress_prg_fails --tag parallel: Error: false failed.
par_compress_prg_fails --tag parallel: Error: false failed.
par_compress_prg_fails --tag --files 1
par_compress_prg_fails --tag --files parallel: Warning: Use --files0 when $TMPDIR contains newline.
par_compress_prg_fails --tag --files parallel: Error: false failed.
par_compress_prg_fails --tag --files parallel: Error: false failed.
par_compress_prg_fails --line-buffer 1
par_compress_prg_fails --line-buffer parallel: Error: false failed.
par_compress_prg_fails --line-buffer parallel: Error: false failed.
par_compress_prg_fails --line-buffer --files 1
par_compress_prg_fails --line-buffer --files parallel: Warning: Use --files0 when $TMPDIR contains newline.
par_compress_prg_fails --line-buffer --files parallel: Error: false failed.
par_compress_prg_fails --line-buffer --files parallel: Error: false failed.
par_compress_prg_fails --line-buffer --tag 1
par_compress_prg_fails --line-buffer --tag parallel: Error: false failed.
par_compress_prg_fails --line-buffer --tag parallel: Error: false failed.
par_compress_prg_fails --line-buffer --tag --files 1
par_compress_prg_fails --line-buffer --tag --files parallel: Warning: Use --files0 when $TMPDIR contains newline.
par_compress_prg_fails --line-buffer --tag --files parallel: Error: false failed.
par_compress_prg_fails --line-buffer --tag --files parallel: Error: false failed.
par_dryrun_timeout_ungroup bug #51039: --dry-run --timeout 1.4m -u breaks
par_dryrun_timeout_ungroup 1000 2000 8893
par_failing_compressor Compress with failing (de)compressor
@ -1367,6 +1335,25 @@ par_retries_all_fail 5
par_retries_all_fail 6
par_retries_all_fail 7
par_retries_all_fail 8
par_retries_lb_jl Broken in 20240522
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo should be 5 lines >> "$tmp";sleep 20
par_retries_lb_jl should be 5 lines
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo 5 lines >> "$tmp";sleep 20
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo 5 lines >> "$tmp";sleep 20
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo 5 lines >> "$tmp";sleep 20
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo 5 lines >> "$tmp";sleep 20
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo 5 lines >> "$tmp";sleep 20
par_retries_lb_jl 5 lines
par_retries_lb_jl 5 lines
par_retries_lb_jl 5 lines
par_retries_lb_jl 5 lines
par_retries_lb_jl 5 lines
par_seqreplace_long_line ### Test --seqreplace and line too long
par_seqreplace_long_line 9 1 1 101
par_seqreplace_long_line 90 1 1 201

View file

@ -3,7 +3,7 @@ par__dburl_parsing csv:///mydir/tange Execution ERROR: Cannot open /tmp/parallel
par__dburl_parsing csv:///mydir/tange `/tmp/trip`>/tmp/tripwire;
par__dburl_parsing csv:///mydir/tange 
par__dburl_parsing csv:///mydir/tange "'@<?[]|~\/tmp/test/mydir/tange: No such file or directory (2) at /usr/lib/x86_64-linux-gnu/perl5/5.38/DBI/DBD/SqlEngine.pm line 1624.
par__dburl_parsing csv:///mydir/tange called from /usr/local/bin/parallel at 15320.
par__dburl_parsing csv:///mydir/tange called from /usr/local/bin/parallel at 15324.
par__dburl_parsing csv:///mydir/tange
par__dburl_parsing csv:///mydir/tange
par__dburl_parsing csv:///./mydir/tange parallel: Error:
@ -11,7 +11,7 @@ par__dburl_parsing csv:///./mydir/tange Execution ERROR: Cannot open /tmp/parall
par__dburl_parsing csv:///./mydir/tange `/tmp/trip`>/tmp/tripwire;
par__dburl_parsing csv:///./mydir/tange 
par__dburl_parsing csv:///./mydir/tange "'@<?[]|~\/tmp/test/mydir/tange: No such file or directory (2) at /usr/lib/x86_64-linux-gnu/perl5/5.38/DBI/DBD/SqlEngine.pm line 1624.
par__dburl_parsing csv:///./mydir/tange called from /usr/local/bin/parallel at 15320.
par__dburl_parsing csv:///./mydir/tange called from /usr/local/bin/parallel at 15324.
par__dburl_parsing csv:///./mydir/tange
par__dburl_parsing csv:///./mydir/tange
par__dburl_parsing csv:///.%2Fmydir/tange parallel: Error:
@ -19,7 +19,7 @@ par__dburl_parsing csv:///.%2Fmydir/tange Execution ERROR: Cannot open /tmp/para
par__dburl_parsing csv:///.%2Fmydir/tange `/tmp/trip`>/tmp/tripwire;
par__dburl_parsing csv:///.%2Fmydir/tange 
par__dburl_parsing csv:///.%2Fmydir/tange "'@<?[]|~\/tmp/test/mydir/tange: No such file or directory (2) at /usr/lib/x86_64-linux-gnu/perl5/5.38/DBI/DBD/SqlEngine.pm line 1624.
par__dburl_parsing csv:///.%2Fmydir/tange called from /usr/local/bin/parallel at 15320.
par__dburl_parsing csv:///.%2Fmydir/tange called from /usr/local/bin/parallel at 15324.
par__dburl_parsing csv:///.%2Fmydir/tange
par__dburl_parsing csv:///.%2Fmydir/tange
par__dburl_parsing csv:////tmp/parallel-local-30s-tmp/ 1
@ -37,7 +37,7 @@ par__dburl_parsing csv:///./tange Execution ERROR: Cannot open /tmp/parallel-loc
par__dburl_parsing csv:///./tange `/tmp/trip`>/tmp/tripwire;
par__dburl_parsing csv:///./tange 
par__dburl_parsing csv:///./tange "'@<?[]|~\/tmp/test/tange: No such file or directory (2) at /usr/lib/x86_64-linux-gnu/perl5/5.38/DBI/DBD/SqlEngine.pm line 1624.
par__dburl_parsing csv:///./tange called from /usr/local/bin/parallel at 15320.
par__dburl_parsing csv:///./tange called from /usr/local/bin/parallel at 15324.
par__dburl_parsing csv:///./tange
par__dburl_parsing csv:///./tange
par__dburl_parsing csv:///./ parallel: Error:
@ -45,7 +45,7 @@ par__dburl_parsing csv:///./ Execution ERROR: Cannot open /tmp/parallel-local-30
par__dburl_parsing csv:///./ `/tmp/trip`>/tmp/tripwire;
par__dburl_parsing csv:///./ 
par__dburl_parsing csv:///./ "'@<?[]|~\/tmp/test/tange: No such file or directory (2) at /usr/lib/x86_64-linux-gnu/perl5/5.38/DBI/DBD/SqlEngine.pm line 1624.
par__dburl_parsing csv:///./ called from /usr/local/bin/parallel at 15320.
par__dburl_parsing csv:///./ called from /usr/local/bin/parallel at 15324.
par__dburl_parsing csv:///./
par__dburl_parsing csv:///./
par__dburl_parsing csv:///tange/tange parallel: Error: tange is not a directory.
@ -69,7 +69,7 @@ par__dburl_parsing sqlite3:////tmp/parallel-local-30s-tmp/ DBI connect('dbname=/
par__dburl_parsing `/tmp/trip`>/tmp/tripwire; parallel: Error: `/tmp/trip`>/tmp/tripwire; is not a valid DBURL
par__dburl_parsing  parallel: Error:  is not a valid DBURL
par__dburl_parsing "'@<?[]|~\/tmp/test/tange/tange parallel: Error: "'@<?[]|~\/tmp/test/tange/tange is not a valid DBURL
par__dburl_parsing sqlite3:///%2Ftmp%2Fparallel-local-30s-tmp%2F DBD::SQLite::db prepare failed: near "/": syntax error [for Statement "DROP TABLE IF EXISTS /tmp/parallel-local-30s-tmp/;"] at /usr/local/bin/parallel line 15317, <$fh> line 1.
par__dburl_parsing sqlite3:///%2Ftmp%2Fparallel-local-30s-tmp%2F parallel: Error: The table name (/tmp/parallel-local-30s-tmp/) cannot contain /
par__dburl_parsing `%2Ftmp%2Ftrip`>%2Ftmp%2Ftripwire; parallel: Error: `%2Ftmp%2Ftrip`>%2Ftmp%2Ftripwire; is not a valid DBURL
par__dburl_parsing  parallel: Error:  is not a valid DBURL
par__dburl_parsing "'@<?[]|~\%2Ftmp%2Ftest/tange/tange parallel: Error: "'@<?[]|~\%2Ftmp%2Ftest/tange/tange is not a valid DBURL
@ -107,7 +107,7 @@ par__dburl_parsing sqlite:////tmp/parallel-local-30s-tmp/ DBI connect('dbname=/t
par__dburl_parsing `/tmp/trip`>/tmp/tripwire; parallel: Error: `/tmp/trip`>/tmp/tripwire; is not a valid DBURL
par__dburl_parsing  parallel: Error:  is not a valid DBURL
par__dburl_parsing "'@<?[]|~\/tmp/test/tange/tange parallel: Error: "'@<?[]|~\/tmp/test/tange/tange is not a valid DBURL
par__dburl_parsing sqlite:///%2Ftmp%2Fparallel-local-30s-tmp%2F DBD::SQLite::db prepare failed: near "/": syntax error [for Statement "DROP TABLE IF EXISTS /tmp/parallel-local-30s-tmp/;"] at /usr/local/bin/parallel line 15317, <$fh> line 1.
par__dburl_parsing sqlite:///%2Ftmp%2Fparallel-local-30s-tmp%2F parallel: Error: The table name (/tmp/parallel-local-30s-tmp/) cannot contain /
par__dburl_parsing `%2Ftmp%2Ftrip`>%2Ftmp%2Ftripwire; parallel: Error: `%2Ftmp%2Ftrip`>%2Ftmp%2Ftripwire; is not a valid DBURL
par__dburl_parsing  parallel: Error:  is not a valid DBURL
par__dburl_parsing "'@<?[]|~\%2Ftmp%2Ftest/tange/tange parallel: Error: "'@<?[]|~\%2Ftmp%2Ftest/tange/tange is not a valid DBURL
@ -177,6 +177,108 @@ par__dburl_parsing pg://// 3
par__dburl_parsing pg:/// 1
par__dburl_parsing pg:/// 2
par__dburl_parsing pg:/// 3
par__dburl_parsing csv:///mydir/tange parallel: Error: mydir/tange is not a directory.
par__dburl_parsing csv:///./mydir/tange parallel: Error: ./mydir/tange is not a directory.
par__dburl_parsing csv:///.%2Fmydir/tange parallel: Error: ./mydir/tange is not a directory.
par__dburl_parsing csv:////tmp/parallel-local-30s-tmp/ 1
par__dburl_parsing csv:////tmp/parallel-local-30s-tmp/ 2
par__dburl_parsing csv:////tmp/parallel-local-30s-tmp/ 3
par__dburl_parsing `/tmp/trip`>/tmp/tripwire; parallel: Error: `/tmp/trip`>/tmp/tripwire;/ is not a valid DBURL
par__dburl_parsing  parallel: Error: / is not a valid DBURL
par__dburl_parsing "'@<?[]|~\/tmp/test/tange parallel: Error: "'@<?[]|~\/tmp/test/tange/ is not a valid DBURL
par__dburl_parsing csv:///%2Ftmp%2Fparallel-local-30s-tmp%2F 1
par__dburl_parsing csv:///%2Ftmp%2Fparallel-local-30s-tmp%2F 2
par__dburl_parsing csv:///%2Ftmp%2Fparallel-local-30s-tmp%2F 3
par__dburl_parsing `%2Ftmp%2Ftrip`>%2Ftmp%2Ftripwire; parallel: Error: `%2Ftmp%2Ftrip`>%2Ftmp%2Ftripwire;/ is not a valid DBURL
par__dburl_parsing  parallel: Error: / is not a valid DBURL
par__dburl_parsing "'@<?[]|~\%2Ftmp%2Ftest/tange parallel: Error: "'@<?[]|~\%2Ftmp%2Ftest/tange/ is not a valid DBURL
par__dburl_parsing csv:///./tange parallel: Error: ./tange is not a directory.
par__dburl_parsing csv:///./ parallel: Error:
par__dburl_parsing csv:///./ Execution ERROR: Cannot open /tmp/parallel-local-30s-tmp/
par__dburl_parsing csv:///./ `/tmp/trip`>/tmp/tripwire;
par__dburl_parsing csv:///./ 
par__dburl_parsing csv:///./ "'@<?[]|~\/tmp/test/tange: No such file or directory (2) at /usr/lib/x86_64-linux-gnu/perl5/5.38/DBI/DBD/SqlEngine.pm line 1624.
par__dburl_parsing csv:///./ called from /usr/local/bin/parallel at 15324.
par__dburl_parsing csv:///./
par__dburl_parsing csv:///./
par__dburl_parsing csv:///tange/tange parallel: Error: tange/tange is not a directory.
par__dburl_parsing csv:////tange parallel: Error: /tange is not a directory.
par__dburl_parsing csv:///tange/ parallel: Error: tange/ is not a directory.
par__dburl_parsing csv://// parallel: Error:
par__dburl_parsing csv://// Execution ERROR: Cannot open /tange for writing: Permission denied (13) at /usr/lib/x86_64-linux-gnu/perl5/5.38/DBI/DBD/SqlEngine.pm line 1624.
par__dburl_parsing csv://// called from /usr/local/bin/parallel at 15322.
par__dburl_parsing csv:////
par__dburl_parsing csv://// at /usr/lib/x86_64-linux-gnu/perl5/5.38/DBI/DBD/SqlEngine.pm line 1271.
par__dburl_parsing csv:////
par__dburl_parsing csv:/// parallel: Error: tange is not a directory.
par__dburl_parsing sqlite3:///tange/tange DBI connect('dbname=tange/tange','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite3://mydir/tange/tange DBI connect('dbname=tange/tange;host=mydir','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite3:///mydir/tange/tange DBI connect('dbname=mydir/tange/tange','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite3:///mydir%2Ftange/tange DBI connect('dbname=mydir/tange/tange','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite3:////tmp/parallel-local-30s-tmp/ DBI connect('dbname=/tmp/parallel-local-30s-tmp/','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing `/tmp/trip`>/tmp/tripwire; parallel: Error: `/tmp/trip`>/tmp/tripwire;/ is not a valid DBURL
par__dburl_parsing  parallel: Error: / is not a valid DBURL
par__dburl_parsing "'@<?[]|~\/tmp/test/tange/tange parallel: Error: "'@<?[]|~\/tmp/test/tange/tange/ is not a valid DBURL
par__dburl_parsing sqlite3:///%2Ftmp%2Fparallel-local-30s-tmp%2F DBI connect('dbname=/tmp/parallel-local-30s-tmp/','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing `%2Ftmp%2Ftrip`>%2Ftmp%2Ftripwire; parallel: Error: `%2Ftmp%2Ftrip`>%2Ftmp%2Ftripwire;/ is not a valid DBURL
par__dburl_parsing  parallel: Error: / is not a valid DBURL
par__dburl_parsing "'@<?[]|~\%2Ftmp%2Ftest/tange/tange parallel: Error: "'@<?[]|~\%2Ftmp%2Ftest/tange/tange/ is not a valid DBURL
par__dburl_parsing sqlite3:///tange/ 1
par__dburl_parsing sqlite3:///tange/ 2
par__dburl_parsing sqlite3:///tange/ 3
par__dburl_parsing sqlite3:///tange/tange DBI connect('dbname=tange/tange','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite3:////tange DBI connect('dbname=/tange','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite3:///tange/ 1
par__dburl_parsing sqlite3:///tange/ 2
par__dburl_parsing sqlite3:///tange/ 3
par__dburl_parsing sqlite3://// DBI connect('dbname=/','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite3:/// 1
par__dburl_parsing sqlite3:/// 2
par__dburl_parsing sqlite3:/// 3
par__dburl_parsing sqlite:///tange/tange DBI connect('dbname=tange/tange','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite://mydir/tange/tange DBI connect('dbname=tange/tange;host=mydir','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite:///mydir/tange/tange DBI connect('dbname=mydir/tange/tange','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite:///mydir%2Ftange/tange DBI connect('dbname=mydir/tange/tange','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite:////tmp/parallel-local-30s-tmp/ DBI connect('dbname=/tmp/parallel-local-30s-tmp/','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing `/tmp/trip`>/tmp/tripwire; parallel: Error: `/tmp/trip`>/tmp/tripwire;/ is not a valid DBURL
par__dburl_parsing  parallel: Error: / is not a valid DBURL
par__dburl_parsing "'@<?[]|~\/tmp/test/tange/tange parallel: Error: "'@<?[]|~\/tmp/test/tange/tange/ is not a valid DBURL
par__dburl_parsing sqlite:///%2Ftmp%2Fparallel-local-30s-tmp%2F DBI connect('dbname=/tmp/parallel-local-30s-tmp/','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing `%2Ftmp%2Ftrip`>%2Ftmp%2Ftripwire; parallel: Error: `%2Ftmp%2Ftrip`>%2Ftmp%2Ftripwire;/ is not a valid DBURL
par__dburl_parsing  parallel: Error: / is not a valid DBURL
par__dburl_parsing "'@<?[]|~\%2Ftmp%2Ftest/tange/tange parallel: Error: "'@<?[]|~\%2Ftmp%2Ftest/tange/tange/ is not a valid DBURL
par__dburl_parsing sqlite:///tange/ 1
par__dburl_parsing sqlite:///tange/ 2
par__dburl_parsing sqlite:///tange/ 3
par__dburl_parsing sqlite:///tange/tange DBI connect('dbname=tange/tange','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite:////tange DBI connect('dbname=/tange','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite:///tange/ 1
par__dburl_parsing sqlite:///tange/ 2
par__dburl_parsing sqlite:///tange/ 3
par__dburl_parsing sqlite://// DBI connect('dbname=/','',...) failed: unable to open database file at /usr/local/bin/parallel line 15114.
par__dburl_parsing sqlite:/// 1
par__dburl_parsing sqlite:/// 2
par__dburl_parsing sqlite:/// 3
par__dburl_parsing mysql://tange@/tange/tange DBI connect('dbname=tange/tange','tange',...) failed: Access denied for user 'tange'@'localhost' to database 'tange/tange' at /usr/local/bin/parallel line 15114.
par__dburl_parsing mysql://tange@/tange/ DBI connect('dbname=tange/','tange',...) failed: Access denied for user 'tange'@'localhost' to database 'tange/' at /usr/local/bin/parallel line 15114.
par__dburl_parsing mysql://tange@// DBI connect('dbname=/','tange',...) failed: Access denied for user 'tange'@'localhost' to database '/' at /usr/local/bin/parallel line 15114.
par__dburl_parsing mysql:///tange/tange DBI connect('dbname=tange/tange','',...) failed: Access denied for user 'tange'@'localhost' to database 'tange/tange' at /usr/local/bin/parallel line 15114.
par__dburl_parsing mysql:////tange DBI connect('dbname=/tange','',...) failed: Access denied for user 'tange'@'localhost' to database '/tange' at /usr/local/bin/parallel line 15114.
par__dburl_parsing mysql:///tange/ DBI connect('dbname=tange/','',...) failed: Access denied for user 'tange'@'localhost' to database 'tange/' at /usr/local/bin/parallel line 15114.
par__dburl_parsing mysql://// DBI connect('dbname=/','',...) failed: Access denied for user 'tange'@'localhost' to database '/' at /usr/local/bin/parallel line 15114.
par__dburl_parsing mysql:/// 1
par__dburl_parsing mysql:/// 2
par__dburl_parsing mysql:/// 3
par__dburl_parsing pg://tange@/tange/tange DBI connect('dbname=tange/tange','tange',...) failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "tange/tange" does not exist at /usr/local/bin/parallel line 15114.
par__dburl_parsing pg://tange@/tange/ DBI connect('dbname=tange/','tange',...) failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "tange/" does not exist at /usr/local/bin/parallel line 15114.
par__dburl_parsing pg://tange@// DBI connect('dbname=/','tange',...) failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "/" does not exist at /usr/local/bin/parallel line 15114.
par__dburl_parsing pg:///tange/tange DBI connect('dbname=tange/tange','',...) failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "tange/tange" does not exist at /usr/local/bin/parallel line 15114.
par__dburl_parsing pg:////tange DBI connect('dbname=/tange','',...) failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "/tange" does not exist at /usr/local/bin/parallel line 15114.
par__dburl_parsing pg:///tange/ DBI connect('dbname=tange/','',...) failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "tange/" does not exist at /usr/local/bin/parallel line 15114.
par__dburl_parsing pg://// DBI connect('dbname=/','',...) failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "/" does not exist at /usr/local/bin/parallel line 15114.
par__dburl_parsing pg:/// 1
par__dburl_parsing pg:/// 2
par__dburl_parsing pg:/// 3
par__groupby_big ### test --group-by on file bigger than block
par__groupby_big --group-by on col 1..3, -n1..5
par__groupby_big _pipe and _ppart (pipepart) must return the same
@ -1787,7 +1889,7 @@ par__print_in_blocks ### bug #41565: Print happens in blocks - not after each jo
par__print_in_blocks The timing here is important: a full second between each
par__print_in_blocks 1
par__print_in_blocks 300 ms jobs:
par__print_in_blocks 4
par__print_in_blocks 3
par__test_detected_shell ### bug #42913: Dont use $SHELL but the shell currently running
par__test_detected_shell test_unknown_shell bash Global::shell /usr/bin/bash
par__test_detected_shell test_unknown_shell csh Global::shell /usr/bin/bash
@ -1839,6 +1941,7 @@ par__test_detected_shell test_known_shell_pipe static-sh Global::shell /usr/bin/
par__test_detected_shell test_known_shell_pipe tcsh Global::shell /usr/bin/tcsh
par__test_detected_shell test_known_shell_pipe yash Global::shell /usr/bin/yash
par__test_detected_shell test_known_shell_pipe zsh Global::shell /usr/bin/zsh
par__test_ipv6_format ### Host as IPv6 address
par_bin ### Test --bin
par_bin 2 2 4
par_bin 2 2 4
@ -3154,25 +3257,6 @@ par_race_condition1 9
par_race_condition1 10
par_reload_slf_every_second ### --slf should reload every second
par_reload_slf_every_second OK
par_retries_lb_jl Broken in 20240522
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo should be 5 lines >> "$tmp";sleep 20
par_retries_lb_jl should be 5 lines
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo 5 lines >> "$tmp";sleep 20
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo 5 lines >> "$tmp";sleep 20
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo 5 lines >> "$tmp";sleep 20
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo 5 lines >> "$tmp";sleep 20
par_retries_lb_jl parallel: Warning: This job was killed because it timed out:
par_retries_lb_jl parallel: Warning: echo 5 lines >> "$tmp";sleep 20
par_retries_lb_jl 5 lines
par_retries_lb_jl 5 lines
par_retries_lb_jl 5 lines
par_retries_lb_jl 5 lines
par_retries_lb_jl 5 lines
par_shard ### --shard
par_shard OK
par_shard OK
@ -3419,4 +3503,3 @@ par_sshlogin_parsing @grp1+grp2/4//usr/bin/ssh withpassword::;`echo>/tmp/trap`;)
par_sshlogin_parsing @grp1+grp2/4//usr/bin/ssh withpassword::;`echo>/tmp/trap`;)(|<*&"'@lo:22222 withpassword
par_test_diff_roundrobin_k ### test there is difference on -k
par_test_diff_roundrobin_k OK
par_test_ipv6_format ### Host as IPv6 address

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -2,41 +2,24 @@ CSV do_dburl CSV
CSV par_append p_wrapper par_append $CSV
CSV par_append Exit=0
CSV par_append Exit=0
CSV par_append sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_append
CSV par_append Usage:
CSV par_append sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_append sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_append
CSV par_append See 'man sql' for the options
CSV par_append IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_empty p_wrapper par_empty $CSV
CSV par_empty Do nothing: TBL99999 does not exist because it is not created
CSV par_empty Exit=0
CSV par_empty Exit=0
CSV par_empty sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_empty
CSV par_empty Usage:
CSV par_empty sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_empty sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_empty
CSV par_empty See 'man sql' for the options
CSV par_empty IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_no_table p_wrapper par_no_table $CSV
CSV par_no_table bug #50018: --dburl without table dies
CSV par_no_table should default to table USERNAME
CSV par_no_table 255
CSV par_no_table 255
CSV par_no_table 255
CSV par_no_table Exit=0
CSV par_no_table Exit=0
CSV par_no_table sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_no_table
CSV par_no_table Usage:
CSV par_no_table sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_no_table sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_no_table
CSV par_no_table See 'man sql' for the options
CSV par_no_table parallel: Error: The DBURL (csv:///%2Frun%2Fshm) must contain a table.
CSV par_no_table parallel: Error: The DBURL (csv:///%2Frun%2Fshm) must contain a table.
CSV par_no_table parallel: Error: The DBURL (csv:///%2Frun%2Fshm) must contain a table.
CSV par_no_table parallel: Error: tange is not a directory.
CSV par_no_table parallel: Error: tange is not a directory.
CSV par_no_table parallel: Error: tange is not a directory.
CSV par_no_table IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_shuf p_wrapper par_shuf $CSV
CSV par_shuf 1 a
CSV par_shuf 1 b
@ -65,13 +48,9 @@ CSV par_shuf 5 d
CSV par_shuf 5 e
CSV par_shuf Exit=0
CSV par_shuf Exit=0
CSV par_shuf sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_shuf
CSV par_shuf Usage:
CSV par_shuf sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_shuf sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_shuf
CSV par_shuf See 'man sql' for the options
CSV par_shuf IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_shuf IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_shuf IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_sql_joblog p_wrapper par_sql_joblog $CSV
CSV par_sql_joblog ### should only give a single --joblog heading
CSV par_sql_joblog ### --sqlmaster/--sqlworker
@ -180,111 +159,51 @@ CSV par_sql_joblog 24 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 d
CSV par_sql_joblog 25 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 e
CSV par_sql_joblog Exit=0
CSV par_sql_joblog Exit=0
CSV par_sql_joblog sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_sql_joblog
CSV par_sql_joblog Usage:
CSV par_sql_joblog sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_sql_joblog sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_sql_joblog
CSV par_sql_joblog See 'man sql' for the options
CSV par_sql_joblog IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_sqlandworker p_wrapper par_sqlandworker $CSV
CSV par_sqlandworker Exit=0
CSV par_sqlandworker Exit=0
CSV par_sqlandworker sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_sqlandworker
CSV par_sqlandworker Usage:
CSV par_sqlandworker sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_sqlandworker sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_sqlandworker
CSV par_sqlandworker See 'man sql' for the options
CSV par_sqlandworker IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_sqlandworker_compress_linebuffer_tag p_wrapper par_sqlandworker_compress_linebuffer_tag $CSV
CSV par_sqlandworker_compress_linebuffer_tag Exit=0
CSV par_sqlandworker_compress_linebuffer_tag Exit=0
CSV par_sqlandworker_compress_linebuffer_tag sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_sqlandworker_compress_linebuffer_tag
CSV par_sqlandworker_compress_linebuffer_tag Usage:
CSV par_sqlandworker_compress_linebuffer_tag sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_sqlandworker_compress_linebuffer_tag sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_sqlandworker_compress_linebuffer_tag
CSV par_sqlandworker_compress_linebuffer_tag See 'man sql' for the options
CSV par_sqlandworker_compress_linebuffer_tag IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_sqlandworker_linebuffer p_wrapper par_sqlandworker_linebuffer $CSV
CSV par_sqlandworker_linebuffer Exit=0
CSV par_sqlandworker_linebuffer Exit=0
CSV par_sqlandworker_linebuffer sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_sqlandworker_linebuffer
CSV par_sqlandworker_linebuffer Usage:
CSV par_sqlandworker_linebuffer sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_sqlandworker_linebuffer sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_sqlandworker_linebuffer
CSV par_sqlandworker_linebuffer See 'man sql' for the options
CSV par_sqlandworker_linebuffer IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_sqlandworker_linebuffer_tag p_wrapper par_sqlandworker_linebuffer_tag $CSV
CSV par_sqlandworker_linebuffer_tag Exit=0
CSV par_sqlandworker_linebuffer_tag Exit=0
CSV par_sqlandworker_linebuffer_tag sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_sqlandworker_linebuffer_tag
CSV par_sqlandworker_linebuffer_tag Usage:
CSV par_sqlandworker_linebuffer_tag sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_sqlandworker_linebuffer_tag sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_sqlandworker_linebuffer_tag
CSV par_sqlandworker_linebuffer_tag See 'man sql' for the options
CSV par_sqlandworker_linebuffer_tag IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_sqlandworker_lo p_wrapper par_sqlandworker_lo $CSV
CSV par_sqlandworker_lo Exit=0
CSV par_sqlandworker_lo Exit=0
CSV par_sqlandworker_lo sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_sqlandworker_lo
CSV par_sqlandworker_lo Usage:
CSV par_sqlandworker_lo sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_sqlandworker_lo sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_sqlandworker_lo
CSV par_sqlandworker_lo See 'man sql' for the options
CSV par_sqlandworker_lo IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_sqlandworker_results p_wrapper par_sqlandworker_results $CSV
CSV par_sqlandworker_results Exit=0
CSV par_sqlandworker_results Exit=0
CSV par_sqlandworker_results sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_sqlandworker_results
CSV par_sqlandworker_results Usage:
CSV par_sqlandworker_results sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_sqlandworker_results sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_sqlandworker_results
CSV par_sqlandworker_results See 'man sql' for the options
CSV par_sqlandworker_results IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_sqlandworker_tag p_wrapper par_sqlandworker_tag $CSV
CSV par_sqlandworker_tag Exit=0
CSV par_sqlandworker_tag Exit=0
CSV par_sqlandworker_tag sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_sqlandworker_tag
CSV par_sqlandworker_tag Usage:
CSV par_sqlandworker_tag sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_sqlandworker_tag sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_sqlandworker_tag
CSV par_sqlandworker_tag See 'man sql' for the options
CSV par_sqlandworker_tag IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_sqlandworker_total_jobs p_wrapper par_sqlandworker_total_jobs $CSV
CSV par_sqlandworker_total_jobs Exit=0
CSV par_sqlandworker_total_jobs Exit=0
CSV par_sqlandworker_total_jobs sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_sqlandworker_total_jobs
CSV par_sqlandworker_total_jobs Usage:
CSV par_sqlandworker_total_jobs sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_sqlandworker_total_jobs sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_sqlandworker_total_jobs
CSV par_sqlandworker_total_jobs See 'man sql' for the options
CSV par_sqlandworker_total_jobs IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_sqlandworker_unbuffer p_wrapper par_sqlandworker_unbuffer $CSV
CSV par_sqlandworker_unbuffer Exit=0
CSV par_sqlandworker_unbuffer Exit=0
CSV par_sqlandworker_unbuffer sql: Error: csv:///%2Frun%2Fshm is not a valid DBURL
CSV par_sqlandworker_unbuffer
CSV par_sqlandworker_unbuffer Usage:
CSV par_sqlandworker_unbuffer sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
CSV par_sqlandworker_unbuffer sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
CSV par_sqlandworker_unbuffer
CSV par_sqlandworker_unbuffer See 'man sql' for the options
CSV par_sqlandworker_unbuffer IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
INFLUX do_dburl INFLUX
INFLUX par_append p_wrapper par_append $INFLUX
INFLUX par_append Exit=255
INFLUX par_append Exit=0
INFLUX par_append ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_append parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_append parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_append parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_append parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_append parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_append parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_append error parsing query: only ORDER BY time supported at this time
INFLUX par_empty p_wrapper par_empty $INFLUX
INFLUX par_empty Do nothing: TBL99999 does not exist because it is not created
@ -294,33 +213,34 @@ INFLUX par_empty ERR: error parsing query: only ORDER BY time supported at this
INFLUX par_empty error parsing query: only ORDER BY time supported at this time
INFLUX par_no_table p_wrapper par_no_table $INFLUX
INFLUX par_no_table bug #50018: --dburl without table dies
INFLUX par_no_table should default to table USERNAME
INFLUX par_no_table 255
INFLUX par_no_table 255
INFLUX par_no_table 255
INFLUX par_no_table Exit=255
INFLUX par_no_table Exit=0
INFLUX par_no_table ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_no_table parallel: Error: influx:///parallel is not a valid DBURL
INFLUX par_no_table parallel: Error: influx:///parallel is not a valid DBURL
INFLUX par_no_table parallel: Error: influx:///parallel is not a valid DBURL
INFLUX par_no_table parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_no_table parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_no_table parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_no_table parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_no_table parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_no_table error parsing query: only ORDER BY time supported at this time
INFLUX par_shuf p_wrapper par_shuf $INFLUX
INFLUX par_shuf Exit=0
INFLUX par_shuf Exit=0
INFLUX par_shuf ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_shuf parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_shuf parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_shuf parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_shuf parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_shuf parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_shuf parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_shuf parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_shuf parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_shuf parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_shuf parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_shuf cat: '/tmp/parallel-bug49791-25d/1/*/*/*/stdout': No such file or directory
INFLUX par_shuf error parsing query: only ORDER BY time supported at this time
INFLUX par_shuf parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_shuf parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_shuf parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_shuf parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_shuf parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_shuf parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_shuf parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_shuf parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_shuf parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_shuf parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_shuf error parsing query: only ORDER BY time supported at this time
INFLUX par_shuf error parsing query: only ORDER BY time supported at this time
INFLUX par_sql_joblog p_wrapper par_sql_joblog $INFLUX
@ -332,72 +252,72 @@ INFLUX par_sql_joblog Seq Host Starttime JobRuntime Send Receive Exitval Signal
INFLUX par_sql_joblog Exit=0
INFLUX par_sql_joblog Exit=0
INFLUX par_sql_joblog ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_sql_joblog parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sql_joblog parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sql_joblog parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sql_joblog parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sql_joblog parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sql_joblog parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sql_joblog error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker p_wrapper par_sqlandworker $INFLUX
INFLUX par_sqlandworker Exit=255
INFLUX par_sqlandworker Exit=0
INFLUX par_sqlandworker ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_compress_linebuffer_tag p_wrapper par_sqlandworker_compress_linebuffer_tag $INFLUX
INFLUX par_sqlandworker_compress_linebuffer_tag Exit=255
INFLUX par_sqlandworker_compress_linebuffer_tag Exit=0
INFLUX par_sqlandworker_compress_linebuffer_tag ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_compress_linebuffer_tag parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_compress_linebuffer_tag parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_compress_linebuffer_tag parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_compress_linebuffer_tag parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_compress_linebuffer_tag error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_linebuffer p_wrapper par_sqlandworker_linebuffer $INFLUX
INFLUX par_sqlandworker_linebuffer Exit=255
INFLUX par_sqlandworker_linebuffer Exit=0
INFLUX par_sqlandworker_linebuffer ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_linebuffer parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_linebuffer parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_linebuffer parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_linebuffer parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_linebuffer error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_linebuffer_tag p_wrapper par_sqlandworker_linebuffer_tag $INFLUX
INFLUX par_sqlandworker_linebuffer_tag Exit=255
INFLUX par_sqlandworker_linebuffer_tag Exit=0
INFLUX par_sqlandworker_linebuffer_tag ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_linebuffer_tag parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_linebuffer_tag parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_linebuffer_tag parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_linebuffer_tag parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_linebuffer_tag error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_lo p_wrapper par_sqlandworker_lo $INFLUX
INFLUX par_sqlandworker_lo Exit=255
INFLUX par_sqlandworker_lo Exit=0
INFLUX par_sqlandworker_lo ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_lo parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_lo parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_lo parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_lo parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_lo error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_results p_wrapper par_sqlandworker_results $INFLUX
INFLUX par_sqlandworker_results Exit=255
INFLUX par_sqlandworker_results Exit=0
INFLUX par_sqlandworker_results ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_results parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_results parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_results parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_results parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_results error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_tag p_wrapper par_sqlandworker_tag $INFLUX
INFLUX par_sqlandworker_tag Exit=255
INFLUX par_sqlandworker_tag Exit=0
INFLUX par_sqlandworker_tag ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_tag parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_tag parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_tag parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_tag parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_tag error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_total_jobs p_wrapper par_sqlandworker_total_jobs $INFLUX
INFLUX par_sqlandworker_total_jobs Exit=255
INFLUX par_sqlandworker_total_jobs Exit=0
INFLUX par_sqlandworker_total_jobs ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_total_jobs parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_total_jobs parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_total_jobs parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_total_jobs parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_total_jobs error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_unbuffer p_wrapper par_sqlandworker_unbuffer $INFLUX
INFLUX par_sqlandworker_unbuffer Exit=255
INFLUX par_sqlandworker_unbuffer Exit=0
INFLUX par_sqlandworker_unbuffer ERR: error parsing query: only ORDER BY time supported at this time
INFLUX par_sqlandworker_unbuffer parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_unbuffer parallel: Error: influx:///parallel/TBL99999 is not a valid DBURL
INFLUX par_sqlandworker_unbuffer parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_unbuffer parallel: Error: influx not supported. Are you missing a perl DBD::influx module?
INFLUX par_sqlandworker_unbuffer error parsing query: only ORDER BY time supported at this time
MYSQL do_dburl MYSQL
MYSQL par_append p_wrapper par_append $MYSQL
@ -461,16 +381,16 @@ MYSQL par_empty Exit=0
MYSQL par_empty ERROR 1146 (42S02) at line 1: Table 'tange.TBL99999' doesn't exist
MYSQL par_no_table p_wrapper par_no_table $MYSQL
MYSQL par_no_table bug #50018: --dburl without table dies
MYSQL par_no_table 255
MYSQL par_no_table 255
MYSQL par_no_table 255
MYSQL par_no_table should default to table USERNAME
MYSQL par_no_table OK
MYSQL par_no_table 0
MYSQL par_no_table 0
MYSQL par_no_table OK
MYSQL par_no_table 0
MYSQL par_no_table Exit=0
MYSQL par_no_table Exit=0
MYSQL par_no_table Host Command V1 V2 Stdout Stderr
MYSQL par_no_table hostname true dummy dummy dummy dummy
MYSQL par_no_table parallel: Error: The DBURL (mysql://tange:tange@localhost/tange) must contain a table.
MYSQL par_no_table parallel: Error: The DBURL (mysql://tange:tange@localhost/tange) must contain a table.
MYSQL par_no_table parallel: Error: The DBURL (mysql://tange:tange@localhost/tange) must contain a table.
MYSQL par_shuf p_wrapper par_shuf $MYSQL
MYSQL par_shuf 1 a
MYSQL par_shuf 1 b
@ -1037,18 +957,18 @@ PG par_empty LINE 1: select Host,Command,V1,V2,Stdout,Stderr from TBL99999 order
PG par_empty ^
PG par_no_table p_wrapper par_no_table $PG
PG par_no_table bug #50018: --dburl without table dies
PG par_no_table 255
PG par_no_table 255
PG par_no_table 255
PG par_no_table should default to table USERNAME
PG par_no_table OK
PG par_no_table 0
PG par_no_table 0
PG par_no_table OK
PG par_no_table 0
PG par_no_table Exit=0
PG par_no_table Exit=0
PG par_no_table host| command | v1 | v2 | stdout | stderr
PG par_no_table hostname| true dummy dummy | dummy | dummy | |
PG par_no_table (1 row)
PG par_no_table
PG par_no_table parallel: Error: The DBURL (pg://tange:tange@localhost/tange) must contain a table.
PG par_no_table parallel: Error: The DBURL (pg://tange:tange@localhost/tange) must contain a table.
PG par_no_table parallel: Error: The DBURL (pg://tange:tange@localhost/tange) must contain a table.
PG par_shuf p_wrapper par_shuf $PG
PG par_shuf 1 a
PG par_shuf 1 b
@ -1858,6 +1778,7 @@ SQLITE par_empty Exit=0
SQLITE par_empty Parse error near line 1: no such table: TBL99999
SQLITE par_no_table p_wrapper par_no_table $SQLITE
SQLITE par_no_table bug #50018: --dburl without table dies
SQLITE par_no_table should default to table USERNAME
SQLITE par_no_table 255
SQLITE par_no_table 255
SQLITE par_no_table 255
@ -1865,9 +1786,9 @@ SQLITE par_no_table Exit=0
SQLITE par_no_table Exit=0
SQLITE par_no_table Host|Command|V1|V2|Stdout|Stderr
SQLITE par_no_table hostname|true dummy dummy|dummy|dummy||
SQLITE par_no_table parallel: Error: The DBURL (sqlite3:///%2Frun%2Fshm%2Fparallel.db) must contain a table.
SQLITE par_no_table parallel: Error: The DBURL (sqlite3:///%2Frun%2Fshm%2Fparallel.db) must contain a table.
SQLITE par_no_table parallel: Error: The DBURL (sqlite3:///%2Frun%2Fshm%2Fparallel.db) must contain a table.
SQLITE par_no_table parallel: Error: The table name (/run/shm/parallel.db) cannot contain /
SQLITE par_no_table parallel: Error: The table name (/run/shm/parallel.db) cannot contain /
SQLITE par_no_table parallel: Error: The table name (/run/shm/parallel.db) cannot contain /
SQLITE par_shuf p_wrapper par_shuf $SQLITE
SQLITE par_shuf 1 a
SQLITE par_shuf 1 b

View file

@ -1,13 +1,7 @@
par_few_duplicate_run $CSV par_few_duplicate_run $CSV
par_few_duplicate_run $CSV ### With many workers there will be some duplicates
par_few_duplicate_run $CSV sql: Error: csv:///%2Frun%2Fshm%2Fcsv is not a valid DBURL
par_few_duplicate_run $CSV
par_few_duplicate_run $CSV Usage:
par_few_duplicate_run $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand]
par_few_duplicate_run $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl < sql_command_file
par_few_duplicate_run $CSV
par_few_duplicate_run $CSV See 'man sql' for the options
par_few_duplicate_run $CSV OK
par_few_duplicate_run $CSV IsADirectoryError: [Errno 21] Is a directory: '/run/shm/csv'
par_few_duplicate_run $MYSQL par_few_duplicate_run $MYSQL
par_few_duplicate_run $MYSQL ### With many workers there will be some duplicates
par_few_duplicate_run $MYSQL OK

View file

@ -13,8 +13,8 @@ par__noheaders def 3
par__noheaders abc 1
par__noheaders def 3
par__tablesize ### Test --table-size --tablesize
par__tablesize 94
par__tablesize 94
par__tablesize 96
par__tablesize 96
par_dburl_user_password_host_port ### Test dburl with username password host port
par_dburl_user_password_host_port Test dburl with username password host port
par_dburl_user_password_host_port OK

View file

@ -3,7 +3,7 @@ par_influx empty input
par_influx empty input
par_influx empty input
par_influx dbsize is not implemented for influx
par_influx Field separator not implemented for influx at /usr/local/bin/sql line 892.
par_influx Field separator not implemented for influx at /usr/local/bin/sql line 944.
par_influx name: databases
par_influx name
par_influx ----

View file

@ -1,10 +1,5 @@
par_listproc ### Test --listproc
par_listproc
par_listproc CPU_TIME/100000 SQL_TEXT USERNAME
par_listproc --------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------
par_listproc 1.99999 SELECT CPU_TIME/100000, SYS.V_$SQL.SQL_TEXT, USERNAME FROM SYS.V_$SQL, SYS.V_$SESSION WHERE SYS.V_$SQL.SQL_ID = SYS.V_$SESSION.SQL_ID(+) AND username IS NOT NULL ORDER BY CPU_TIME DESC SYSTEM
par_listproc
par_listproc Id User Host db Command Time State Info
par_listproc CPU_TIME/100000 SQL_TEXT USERNAME --------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- 1.99999 SELECT CPU_TIME/100000, SYS.V_$SQL.SQL_TEXT, USERNAME FROM SYS.V_$SQL, SYS.V_$SESSION WHERE SYS.V_$SQL.SQL_ID = SYS.V_$SESSION.SQL_ID(+) AND username IS NOT NULL ORDER BY CPU_TIME DESC SYSTEM Id User Host db Command Time State Info
par_listproc XXX sqlunittest localhost sqlunittest Query 0 init show processlist
par_multiarg_on_command_line ### Test oracle with multiple arguments on the command line
par_multiarg_on_command_line
@ -37,11 +32,11 @@ par_showdatabases ### Test --show-databases
par_showdatabases
par_showdatabases TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS MAX_SIZE PCT_INCREASE MIN_EXTLEN STATUS CONTENTS LOGGING FOR EXTENT_MAN ALLOCATIO SEGMEN DEF_TAB_ RETENTION BIG PREDICA ENC COMPRESS_FOR DEF_INME DEF_INME DEF_INMEMORY_DI DEF_INMEMORY_COMP DEF_INMEMORY_ SHARED DEF_INDE INDEX_COMPRES DEF_CELLMEMORY DEF_INMEMORY DEF_INMEMORY_SERVICE_NAME LOST_WR C
par_showdatabases ------------------------------ ---------- -------------- ----------- ----------- ----------- ---------- ------------ ---------- --------- --------------------- --------- --- ---------- --------- ------ -------- ----------- --- ------- --- ------------------------------ -------- -------- --------------- ----------------- ------------- ------------- -------- ------------- ---------------- ------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------- -
par_showdatabases SYSTEM 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT LOGGING YES LOCAL SYSTEM MANUAL DISABLED NOT APPLY YES HOST NO DISABLED SHARED DISABLED OFF N
par_showdatabases SYSAUX 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT LOGGING YES LOCAL SYSTEM AUTO DISABLED NOT APPLY YES HOST NO DISABLED SHARED DISABLED OFF N
par_showdatabases UNDOTBS1 8192 65536 1 2147483645 2147483645 65536 ONLINE UNDO LOGGING NO LOCAL SYSTEM MANUAL DISABLED NOGUARANTEE YES HOST NO DISABLED SHARED DISABLED OFF N
par_showdatabases SYSTEM 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT LOGGING YES LOCAL SYSTEM MANUAL DISABLED NOT APPLY NO HOST NO DISABLED SHARED DISABLED OFF N
par_showdatabases SYSAUX 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT LOGGING YES LOCAL SYSTEM AUTO DISABLED NOT APPLY NO HOST NO DISABLED SHARED DISABLED OFF N
par_showdatabases UNDOTBS1 8192 65536 1 2147483645 2147483645 65536 ONLINE UNDO LOGGING NO LOCAL SYSTEM MANUAL DISABLED NOGUARANTEE NO HOST NO DISABLED SHARED DISABLED OFF N
par_showdatabases TEMP 8192 1048576 1048576 1 2147483645 0 1048576 ONLINE TEMPORARY NOLOGGING NO LOCAL UNIFORM MANUAL DISABLED NOT APPLY NO HOST NO DISABLED SHARED DISABLED OFF N
par_showdatabases USERS 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT LOGGING NO LOCAL SYSTEM AUTO DISABLED NOT APPLY YES HOST NO DISABLED SHARED DISABLED OFF N
par_showdatabases USERS 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT LOGGING NO LOCAL SYSTEM AUTO DISABLED NOT APPLY NO HOST NO DISABLED SHARED DISABLED OFF N
par_showdatabases
par_showtables ### Test --show-tables
par_showtables