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: 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! GNU parallel is awesome. Use it more often in your scripts!
-- Wade @WadeGrimshire@twitter -- 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 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 -- 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. 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すごい gnu parallelすごい
-- たらたら@nosennyuu@twitter -- たらたら@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) $(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" | grep '<<.*>>' && echo STOP STOP STOP ||
echo "$description" echo "$description"
@ -272,39 +275,25 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm> 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: Quote of the month:
GNU parallel is so satisfying <<>>
-- James Coman @jcoman.bsky.social
New in this release: 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. * Bug fixes and man page updates.
News about GNU Parallel: 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. 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"> <directory name="parallel" rev="405" vrev="4" srcmd5="f209576e587b84cd2326ed90ddd06b83">
<entry name="Makefile" md5="d62bf3bdf277f9787ce915e6d1309317" size="1254" mtime="1727031498" /> <entry name="Makefile" md5="9fb8935564eeda7d61506128a9cf18b7" size="1335" mtime="1732314935" />
<entry name="PKGBUILD" md5="2147d5d0557cb1d87e905ec16b855cfb" size="795" mtime="1732313409" /> <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" md5="37e808b62e43c87c49bb4b876cec0a8d" size="2677531" mtime="1732313409" />
<entry name="parallel-20241122.tar.bz2.sig" md5="b2b7cd40233f2da68986ef54d02128ce" size="2080" mtime="1732313410" /> <entry name="parallel-20241122.tar.bz2.sig" md5="b2b7cd40233f2da68986ef54d02128ce" size="2080" mtime="1732313410" />
<entry name="parallel.spec" md5="47eaf53b1ed3821dedd238cabccf1149" size="6224" mtime="1732313410" /> <entry name="parallel.spec" md5="47eaf53b1ed3821dedd238cabccf1149" size="6224" mtime="1732313410" />

View file

@ -3,7 +3,9 @@ all: update upload monitorbuild
update: update:
# Update sha256sum # 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 # Update version
perl -i -pe 's/pkgver=.*/pkgver=$$ENV{YYYYMMDD}/' PKGBUILD perl -i -pe 's/pkgver=.*/pkgver=$$ENV{YYYYMMDD}/' PKGBUILD
osc diff osc diff

View file

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

View file

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

View file

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

73
src/sql
View file

@ -597,6 +597,11 @@ if($database_driver eq "mysql" or
$database_driver eq "influxssl") { $database_driver eq "influxssl") {
($batch_command,$interactive_command) = ($batch_command,$interactive_command) =
influx_commands($database_driver,%dburl); 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; my $err;
@ -635,8 +640,6 @@ if($dburl{'query'}) {
$batch_command = "(cat $qfile;rm $qfile; cat) | $batch_command"; $batch_command = "(cat $qfile;rm $qfile; cat) | $batch_command";
} }
do { do {
if(@ARGV) { if(@ARGV) {
# SQL Commands given as arguments: # SQL Commands given as arguments:
@ -746,36 +749,38 @@ sub parse_options {
sub database_driver_alias { sub database_driver_alias {
my $driver = shift; my $driver = shift;
my %database_driver_alias = ("mysql" => "mysql", my %database_driver_alias = (
"csv" => "csv",
"influx" => "influx",
"influxdb" => "influx",
"influxdbs" => "influxssl",
"influxdbssl" => "influxssl",
"influxs" => "influxssl",
"influxssl" => "influxssl",
"mysql" => "mysql",
"mysqls" => "mysqlssl", "mysqls" => "mysqlssl",
"mysqlssl" => "mysqlssl", "mysqlssl" => "mysqlssl",
"oracle" => "oracle",
"ora" => "oracle", "ora" => "oracle",
"oracle" => "oracle",
"oracles" => "oraclessl", "oracles" => "oraclessl",
"oras" => "oraclessl",
"oraclessl" => "oraclessl", "oraclessl" => "oraclessl",
"oras" => "oraclessl",
"orassl" => "oraclessl", "orassl" => "oraclessl",
"postgresql" => "postgresql",
"pgsql" => "postgresql",
"postgres" => "postgresql",
"pg" => "postgresql", "pg" => "postgresql",
"postgresqlssl" => "postgresqlssl",
"pgsqlssl" => "postgresqlssl",
"postgresssl" => "postgresqlssl",
"pgssl" => "postgresqlssl",
"postgresqls" => "postgresqlssl",
"pgsqls" => "postgresqlssl",
"postgress" => "postgresqlssl",
"pgs" => "postgresqlssl", "pgs" => "postgresqlssl",
"pgsql" => "postgresql",
"pgsqls" => "postgresqlssl",
"pgsqlssl" => "postgresqlssl",
"pgssl" => "postgresqlssl",
"postgres" => "postgresql",
"postgresql" => "postgresql",
"postgresqls" => "postgresqlssl",
"postgresqlssl" => "postgresqlssl",
"postgress" => "postgresqlssl",
"postgresssl" => "postgresqlssl",
"sqlite" => "sqlite", "sqlite" => "sqlite",
"sqlite2" => "sqlite", "sqlite2" => "sqlite",
"sqlite3" => "sqlite3", "sqlite3" => "sqlite3",
"influx" => "influx",
"influxdb" => "influx",
"influxssl" => "influxssl",
"influxdbssl" => "influxssl",
"influxs" => "influxssl",
"influxdbs" => "influxssl",
); );
return $database_driver_alias{$driver}; return $database_driver_alias{$driver};
} }
@ -907,6 +912,30 @@ sub sqlite_commands {
return($batch_command,$interactive_command); 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 { sub influx_commands {
my ($database_driver,%opt) = (@_); my ($database_driver,%opt) = (@_);
my $influx = find_command_in_path("influx") || 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: startvm:
sort -u ~/.ssh/*.pub vagrant/authorized_keys > vagrant/authorized_keys. sort -u ~/.ssh/*.pub vagrant/authorized_keys > vagrant/authorized_keys.
mv 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: stopvm:
parallel -j0 --tag -k '${stop}' ::: ${namedservers} || true parallel -j0 --tag -k '${stop}' ::: ${namedservers} || true
startdb: startdb:
sql oracle://SYSTEM:$$VM_ORACLE_PWD@/FREE "select 'Oracle is running' from dual;" || \ 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;") sql oracle://SYSTEM:$$VM_ORACLE_PWD@/FREE "select 'Oracle is running' from dual;")
stopdb: stopdb:
cd vagrant-projects/OracleDatabase/23.4.0-Free; vagrant suspend cd vagrant-projects/OracleDatabase/23.3.0-Free; vagrant suspend
### Distribution ### Distribution
installparallel: ../src/parallel 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 autossh sshpass lsh-client lsh-utils jq"
test_pkgs="$test_pkgs libpod-simple-perl libtext-csv-perl" test_pkgs="$test_pkgs libpod-simple-perl libtext-csv-perl"
test_pkgs="$test_pkgs libtest-nowarnings-perl pod2pdf" 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 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 mono-csharp-shell octave openjdk-11-jdk-headless tcl"
test_pkgs="$test_pkgs racket libevent-dev python-is-python3" 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 # Each should be taking 10-30s and be possible to run in parallel
# I.e.: No race conditions, no logins # 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() { par_--match() {
export PARALLEL=-k export PARALLEL=-k
echo Basic match echo Basic match
@ -224,22 +236,6 @@ par__round_robin_blocks() {
seq 20000000 | parallel -j8 --block 10M --round-robin --pipe wc -c | wc -l 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() { par_dryrun_timeout_ungroup() {
echo 'bug #51039: --dry-run --timeout 1.4m -u breaks' echo 'bug #51039: --dry-run --timeout 1.4m -u breaks'
seq 1000 | stdout parallel --dry-run --timeout 1.4m -u --jobs 10 echo | wc 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 export -f test_dburl
parallel -j1 --tag test_dburl ::: ${dburls[@]} parallel -j1 --tag test_dburl ::: ${dburls[@]}
parallel -j1 --tag test_dburl {}/ ::: ${dburls[@]}
) )
rmdir test rmdir test
} }
@ -142,7 +143,7 @@ par__print_in_blocks() {
perl -e 'for(1..30){print("$_\n");`sleep .3`}' | perl -e 'for(1..30){print("$_\n");`sleep .3`}' |
parallel -j3 --delay 0.3 echo | parallel -j3 --delay 0.3 echo |
timestamp -d -d | timestamp -d -d |
perl -pe 's/(.....).*/int($1*10+0.2)/e' | perl -pe 's/(.....).*/int($1*10+0.1)/e' |
median median
} }
@ -176,18 +177,6 @@ par__keeporder_roundrobin() {
fi 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() { par_reload_slf_every_second() {
echo "### --slf should reload every second" echo "### --slf should reload every second"
tmp=$(mktemp) tmp=$(mktemp)
@ -677,7 +666,7 @@ par__test_detected_shell() {
} }
export -f test_known_shell_pipe 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 \ ::: test_unknown_shell test_known_shell_c test_known_shell_pipe \
::: $shells | ::: $shells |
grep -Ev 'parallel: Warning: (Starting .* processes took|Consider adjusting)' grep -Ev 'parallel: Warning: (Starting .* processes took|Consider adjusting)'
@ -728,101 +717,102 @@ par_max_length_len_128k() {
par__plus_dyn_repl() { par__plus_dyn_repl() {
echo "Dynamic replacement strings defined by --plus" echo "Dynamic replacement strings defined by --plus"
pp="nice parallel --plus"
unset myvar unset myvar
echo ${myvar:-myval} echo ${myvar:-myval}
parallel --rpl '{:-(.+)} $_ ||= $$1' echo {:-myval} ::: "$myvar" parallel --rpl '{:-(.+)} $_ ||= $$1' echo {:-myval} ::: "$myvar"
parallel --plus echo {:-myval} ::: "$myvar" $pp echo {:-myval} ::: "$myvar"
parallel --plus echo {2:-myval} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {2:-myval} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2:-myval} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {-2:-myval} ::: "wrong" ::: "$myvar" ::: "wrong"
myvar=abcAaBdefCdefDdef myvar=abcAaBdefCdefDdef
echo ${myvar:2} echo ${myvar:2}
parallel --rpl '{:(\d+)} substr($_,0,$$1) = ""' echo {:2} ::: "$myvar" parallel --rpl '{:(\d+)} substr($_,0,$$1) = ""' echo {:2} ::: "$myvar"
parallel --plus echo {:2} ::: "$myvar" $pp echo {:2} ::: "$myvar"
parallel --plus echo {2:2} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {2:2} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2:2} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {-2:2} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar:2:3} echo ${myvar:2:3}
parallel --rpl '{:(\d+?):(\d+?)} $_ = substr($_,$$1,$$2);' echo {:2:3} ::: "$myvar" parallel --rpl '{:(\d+?):(\d+?)} $_ = substr($_,$$1,$$2);' echo {:2:3} ::: "$myvar"
parallel --plus echo {:2:3} ::: "$myvar" $pp echo {:2:3} ::: "$myvar"
parallel --plus echo {2:2:3} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {2:2:3} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2:2:3} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {-2:2:3} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${#myvar} echo ${#myvar}
parallel --rpl '{#} $_ = length $_;' echo {#} ::: "$myvar" parallel --rpl '{#} $_ = length $_;' echo {#} ::: "$myvar"
# {#} used for job number # {#} used for job number
parallel --plus echo {#} ::: "$myvar" $pp echo {#} ::: "$myvar"
echo ${myvar#bc} echo ${myvar#bc}
parallel --rpl '{#(.+?)} s/^$$1//;' echo {#bc} ::: "$myvar" parallel --rpl '{#(.+?)} s/^$$1//;' echo {#bc} ::: "$myvar"
parallel --plus echo {#bc} ::: "$myvar" $pp echo {#bc} ::: "$myvar"
parallel --plus echo {2#bc} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {2#bc} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2#bc} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {-2#bc} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar#abc} echo ${myvar#abc}
parallel --rpl '{#(.+?)} s/^$$1//;' echo {#abc} ::: "$myvar" parallel --rpl '{#(.+?)} s/^$$1//;' echo {#abc} ::: "$myvar"
parallel --plus echo {#abc} ::: "$myvar" $pp echo {#abc} ::: "$myvar"
parallel --plus echo {2#abc} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {2#abc} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2#abc} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {-2#abc} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar%de} echo ${myvar%de}
parallel --rpl '{%(.+?)} s/$$1$//;' echo {%de} ::: "$myvar" parallel --rpl '{%(.+?)} s/$$1$//;' echo {%de} ::: "$myvar"
parallel --plus echo {%de} ::: "$myvar" $pp echo {%de} ::: "$myvar"
parallel --plus echo {2%de} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {2%de} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2%de} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {-2%de} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar%def} echo ${myvar%def}
parallel --rpl '{%(.+?)} s/$$1$//;' echo {%def} ::: "$myvar" parallel --rpl '{%(.+?)} s/$$1$//;' echo {%def} ::: "$myvar"
parallel --plus echo {%def} ::: "$myvar" $pp echo {%def} ::: "$myvar"
parallel --plus echo {2%def} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {2%def} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2%def} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {-2%def} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar/def/ghi} echo ${myvar/def/ghi}
parallel --rpl '{/(.+?)/(.+?)} s/$$1/$$2/;' echo {/def/ghi} ::: "$myvar" parallel --rpl '{/(.+?)/(.+?)} s/$$1/$$2/;' echo {/def/ghi} ::: "$myvar"
parallel --plus echo {/def/ghi} ::: "$myvar" $pp echo {/def/ghi} ::: "$myvar"
parallel --plus echo {2/def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {2/def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2/def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {-2/def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar//def/ghi} echo ${myvar//def/ghi}
parallel --rpl '{//(.+?)/(.+?)} s/$$1/$$2/g;' echo {//def/ghi} ::: "$myvar" parallel --rpl '{//(.+?)/(.+?)} s/$$1/$$2/g;' echo {//def/ghi} ::: "$myvar"
parallel --plus echo {//def/ghi} ::: "$myvar" $pp echo {//def/ghi} ::: "$myvar"
parallel --plus echo {2//def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {2//def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2//def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {-2//def/ghi} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar^a} echo ${myvar^a}
parallel --rpl '{^(.+?)} s/^($$1)/uc($1)/e;' echo {^a} ::: "$myvar" parallel --rpl '{^(.+?)} s/^($$1)/uc($1)/e;' echo {^a} ::: "$myvar"
parallel --plus echo {^a} ::: "$myvar" $pp echo {^a} ::: "$myvar"
parallel --plus echo {2^a} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {2^a} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2^a} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {-2^a} ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar^^a} echo ${myvar^^a}
parallel --rpl '{^^(.+?)} s/($$1)/uc($1)/eg;' echo {^^a} ::: "$myvar" parallel --rpl '{^^(.+?)} s/($$1)/uc($1)/eg;' echo {^^a} ::: "$myvar"
parallel --plus echo {^^a} ::: "$myvar" $pp echo {^^a} ::: "$myvar"
parallel --plus echo {2^^a} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {2^^a} ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo {-2^^a} ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo {-2^^a} ::: "wrong" ::: "$myvar" ::: "wrong"
myvar=AbcAaAdef myvar=AbcAaAdef
echo ${myvar,A} echo ${myvar,A}
parallel --rpl '{,(.+?)} s/^($$1)/lc($1)/e;' echo '{,A}' ::: "$myvar" parallel --rpl '{,(.+?)} s/^($$1)/lc($1)/e;' echo '{,A}' ::: "$myvar"
parallel --plus echo '{,A}' ::: "$myvar" $pp echo '{,A}' ::: "$myvar"
parallel --plus echo '{2,A}' ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo '{2,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo '{-2,A}' ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo '{-2,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
echo ${myvar,,A} echo ${myvar,,A}
parallel --rpl '{,,(.+?)} s/($$1)/lc($1)/eg;' echo '{,,A}' ::: "$myvar" parallel --rpl '{,,(.+?)} s/($$1)/lc($1)/eg;' echo '{,,A}' ::: "$myvar"
parallel --plus echo '{,,A}' ::: "$myvar" $pp echo '{,,A}' ::: "$myvar"
parallel --plus echo '{2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo '{2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
parallel --plus echo '{-2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong" $pp echo '{-2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
myvar=abcabcdefdef myvar=abcabcdefdef
echo $myvar ${myvar/#abc/ABC} 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 ${myvar/%def/DEF}
echo $myvar | parallel --plus echo {} {/%def/DEF} echo $myvar | $pp echo {} {/%def/DEF}
echo $myvar ${myvar/#abc/} echo $myvar ${myvar/#abc/}
echo $myvar | parallel --plus echo {} {/#abc/} echo $myvar | $pp echo {} {/#abc/}
echo $myvar ${myvar/%def/} 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 # If not MaxStartups 100:30:1000 then this will fail
ipv4() { ipv4() {
ifconfig | perl -nE '/inet (\S+) / and say $1' 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' ifconfig | perl -nE '/inet6 ([0-9a-f:]+) .*(host|global)/ and say $1'
} }
(ipv4; ipv6) | (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' echo '### Host as IPv6 address'
( (
ipv6 | ipv6 |
@ -848,7 +838,7 @@ par_test_ipv6_format() {
# 9.9.9.9q22 => 9.9.9.9 # 9.9.9.9q22 => 9.9.9.9
perl -pe 's/q.*//;' perl -pe 's/q.*//;'
) | ) |
parallel -j200% --argsep , parallel -S {} true ::: 1 || nice parallel -j200% --argsep , parallel -S {} true ::: 1 ||
echo Failed echo Failed
} }

View file

@ -24,80 +24,6 @@ env_underscore() {
} }
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() { par_hostgroup() {
echo '### --hostgroup force ncpu - 2x parallel, 6x me' echo '### --hostgroup force ncpu - 2x parallel, 6x me'
parallel --delay 0.1 --hgrp -S @g1/1/parallel@lo -S @g2/3/lo \ 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 '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_) export -f $(compgen -A function | grep par_)
compgen -A function | G "$@" | grep par_ | sort | compgen -A function | G "$@" | grep par_ | sort |
# parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1' # 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() { par_no_table() {
echo 'bug #50018: --dburl without table dies' 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 parallel --sqlworker $SERVERURL
echo $? echo $?
parallel --sqlandworker $SERVERURL echo ::: no_output
echo $?
parallel --sqlmaster $SERVERURL echo ::: no_output
echo $?
# For p_wrapper to remove table # For p_wrapper to remove table
parallel --sqlandworker $DBURL true ::: dummy ::: dummy parallel --sqlandworker $DBURL true ::: dummy ::: dummy
} }

View file

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

View file

@ -52,7 +52,8 @@ par_influx() {
sql -s . influx:///parallel 'SELECT * FROM cpu;' sql -s . influx:///parallel 'SELECT * FROM cpu;'
sql --html influx:///parallel 'SELECT * FROM cpu;' sql --html influx:///parallel 'SELECT * FROM cpu;'
sql influx:///parallel 'drop database parallel' 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() { par_listproc() {
echo "### Test --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; perl -ne '/select 1 from dual|user_objects|user_tablespaces|connect_by_filtering/ and next;
s/[21 ]\.\d{4,5}/1.99999/; s/[21 ]\.\d{4,5}/1.99999/;
s/ +/ /g; s/\s+/ /g;
print' print'
sql --listproc $MYSQL_TEST_DBURL | sql --listproc $MYSQL_TEST_DBURL |
perl -pe 's/^\d+/XXX/' perl -pe 's/^\d+/XXX/'

View file

@ -549,38 +549,6 @@ par_colsep echo ac
par_colsep ac par_colsep ac
par_colsep echo ac par_colsep echo ac
par_colsep 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 bug #51039: --dry-run --timeout 1.4m -u breaks
par_dryrun_timeout_ungroup 1000 2000 8893 par_dryrun_timeout_ungroup 1000 2000 8893
par_failing_compressor Compress with failing (de)compressor 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 6
par_retries_all_fail 7 par_retries_all_fail 7
par_retries_all_fail 8 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 ### Test --seqreplace and line too long
par_seqreplace_long_line 9 1 1 101 par_seqreplace_long_line 9 1 1 101
par_seqreplace_long_line 90 1 1 201 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 `/tmp/trip`>/tmp/tripwire;
par__dburl_parsing csv:///mydir/tange  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 "'@<?[]|~\/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 par__dburl_parsing csv:///mydir/tange
par__dburl_parsing csv:///./mydir/tange parallel: Error: 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 `/tmp/trip`>/tmp/tripwire;
par__dburl_parsing csv:///./mydir/tange  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 "'@<?[]|~\/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 par__dburl_parsing csv:///./mydir/tange
par__dburl_parsing csv:///.%2Fmydir/tange parallel: Error: 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 `/tmp/trip`>/tmp/tripwire;
par__dburl_parsing csv:///.%2Fmydir/tange  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 "'@<?[]|~\/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:///.%2Fmydir/tange par__dburl_parsing csv:///.%2Fmydir/tange
par__dburl_parsing csv:////tmp/parallel-local-30s-tmp/ 1 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 `/tmp/trip`>/tmp/tripwire;
par__dburl_parsing csv:///./tange  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 "'@<?[]|~\/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:///./tange par__dburl_parsing csv:///./tange
par__dburl_parsing csv:///./ parallel: Error: 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:///./ `/tmp/trip`>/tmp/tripwire;
par__dburl_parsing csv:///./  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:///./ "'@<?[]|~\/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:///./ par__dburl_parsing csv:///./
par__dburl_parsing csv:///tange/tange parallel: Error: tange is not a directory. 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 `/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  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 "'@<?[]|~\/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 `%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  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 "'@<?[]|~\%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 `/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  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 "'@<?[]|~\/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 `%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  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 "'@<?[]|~\%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:/// 1
par__dburl_parsing pg:/// 2 par__dburl_parsing pg:/// 2
par__dburl_parsing pg:/// 3 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 ### test --group-by on file bigger than block
par__groupby_big --group-by on col 1..3, -n1..5 par__groupby_big --group-by on col 1..3, -n1..5
par__groupby_big _pipe and _ppart (pipepart) must return the same 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 The timing here is important: a full second between each
par__print_in_blocks 1 par__print_in_blocks 1
par__print_in_blocks 300 ms jobs: 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 ### 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 bash Global::shell /usr/bin/bash
par__test_detected_shell test_unknown_shell csh 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 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 yash Global::shell /usr/bin/yash
par__test_detected_shell test_known_shell_pipe zsh Global::shell /usr/bin/zsh 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 ### Test --bin
par_bin 2 2 4 par_bin 2 2 4
par_bin 2 2 4 par_bin 2 2 4
@ -3154,25 +3257,6 @@ par_race_condition1 9
par_race_condition1 10 par_race_condition1 10
par_reload_slf_every_second ### --slf should reload every second par_reload_slf_every_second ### --slf should reload every second
par_reload_slf_every_second OK 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 ### --shard
par_shard OK par_shard OK
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_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 ### test there is difference on -k
par_test_diff_roundrobin_k OK 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 p_wrapper par_append $CSV
CSV par_append Exit=0 CSV par_append Exit=0
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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_empty p_wrapper par_empty $CSV 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 Do nothing: TBL99999 does not exist because it is not created
CSV par_empty Exit=0 CSV par_empty Exit=0
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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_no_table p_wrapper par_no_table $CSV CSV par_no_table p_wrapper par_no_table $CSV
CSV par_no_table bug #50018: --dburl without table dies 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 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 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 parallel: Error: tange is not a directory.
CSV par_no_table CSV par_no_table parallel: Error: tange is not a directory.
CSV par_no_table Usage: CSV par_no_table parallel: Error: tange is not a directory.
CSV par_no_table sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [sqlcommand] CSV par_no_table IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_shuf p_wrapper par_shuf $CSV CSV par_shuf p_wrapper par_shuf $CSV
CSV par_shuf 1 a CSV par_shuf 1 a
CSV par_shuf 1 b CSV par_shuf 1 b
@ -65,13 +48,9 @@ CSV par_shuf 5 d
CSV par_shuf 5 e CSV par_shuf 5 e
CSV par_shuf Exit=0 CSV par_shuf Exit=0
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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_shuf CSV par_shuf IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
CSV par_shuf Usage: CSV par_shuf IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_sql_joblog p_wrapper par_sql_joblog $CSV 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 ### should only give a single --joblog heading
CSV par_sql_joblog ### --sqlmaster/--sqlworker 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 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 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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_sqlandworker p_wrapper par_sqlandworker $CSV CSV par_sqlandworker p_wrapper par_sqlandworker $CSV
CSV par_sqlandworker Exit=0 CSV par_sqlandworker Exit=0
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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_compress_linebuffer_tag p_wrapper par_sqlandworker_compress_linebuffer_tag $CSV 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 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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_linebuffer p_wrapper par_sqlandworker_linebuffer $CSV 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 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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_tag p_wrapper par_sqlandworker_linebuffer_tag $CSV 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 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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_lo p_wrapper par_sqlandworker_lo $CSV 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 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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_results p_wrapper par_sqlandworker_results $CSV 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 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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_tag p_wrapper par_sqlandworker_tag $CSV 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 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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_total_jobs p_wrapper par_sqlandworker_total_jobs $CSV 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 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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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_unbuffer p_wrapper par_sqlandworker_unbuffer $CSV 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 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 IsADirectoryError: [Errno 21] Is a directory: '/run/shm'
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
INFLUX do_dburl INFLUX INFLUX do_dburl INFLUX
INFLUX par_append p_wrapper par_append $INFLUX INFLUX par_append p_wrapper par_append $INFLUX
INFLUX par_append Exit=255 INFLUX par_append Exit=255
INFLUX par_append Exit=0 INFLUX par_append Exit=0
INFLUX par_append ERR: error parsing query: only ORDER BY time supported at this time 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 not supported. Are you missing a perl DBD::influx module?
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:///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 error parsing query: only ORDER BY time supported at this time 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 p_wrapper par_empty $INFLUX
INFLUX par_empty Do nothing: TBL99999 does not exist because it is not created 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_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 p_wrapper par_no_table $INFLUX
INFLUX par_no_table bug #50018: --dburl without table dies 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 255
INFLUX par_no_table 255 INFLUX par_no_table 255
INFLUX par_no_table Exit=255 INFLUX par_no_table Exit=255
INFLUX par_no_table Exit=0 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 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 not supported. Are you missing a perl DBD::influx module?
INFLUX par_no_table parallel: Error: influx:///parallel 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:///parallel 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:///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 error parsing query: only ORDER BY time supported at this time 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 p_wrapper par_shuf $INFLUX
INFLUX par_shuf Exit=0 INFLUX par_shuf Exit=0
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 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 not supported. Are you missing a perl DBD::influx module?
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:///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:///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:///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 cat: '/tmp/parallel-bug49791-25d/1/*/*/*/stdout': No such file or directory 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 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 not supported. Are you missing a perl DBD::influx module?
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:///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:///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:///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 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_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 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 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 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 not supported. Are you missing a perl DBD::influx module?
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:///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 error parsing query: only ORDER BY time supported at this time 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 p_wrapper par_sqlandworker $INFLUX
INFLUX par_sqlandworker Exit=255 INFLUX par_sqlandworker Exit=255
INFLUX par_sqlandworker Exit=0 INFLUX par_sqlandworker Exit=0
INFLUX par_sqlandworker ERR: error parsing query: only ORDER BY time supported at this time 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 not supported. Are you missing a perl DBD::influx module?
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 error parsing query: only ORDER BY time supported at this time 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 p_wrapper par_sqlandworker_compress_linebuffer_tag $INFLUX
INFLUX par_sqlandworker_compress_linebuffer_tag Exit=255 INFLUX par_sqlandworker_compress_linebuffer_tag Exit=255
INFLUX par_sqlandworker_compress_linebuffer_tag Exit=0 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 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 not supported. Are you missing a perl DBD::influx module?
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 error parsing query: only ORDER BY time supported at this time 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 p_wrapper par_sqlandworker_linebuffer $INFLUX
INFLUX par_sqlandworker_linebuffer Exit=255 INFLUX par_sqlandworker_linebuffer Exit=255
INFLUX par_sqlandworker_linebuffer Exit=0 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 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 not supported. Are you missing a perl DBD::influx module?
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 error parsing query: only ORDER BY time supported at this time 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 p_wrapper par_sqlandworker_linebuffer_tag $INFLUX
INFLUX par_sqlandworker_linebuffer_tag Exit=255 INFLUX par_sqlandworker_linebuffer_tag Exit=255
INFLUX par_sqlandworker_linebuffer_tag Exit=0 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 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 not supported. Are you missing a perl DBD::influx module?
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 error parsing query: only ORDER BY time supported at this time 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 p_wrapper par_sqlandworker_lo $INFLUX
INFLUX par_sqlandworker_lo Exit=255 INFLUX par_sqlandworker_lo Exit=255
INFLUX par_sqlandworker_lo Exit=0 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 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 not supported. Are you missing a perl DBD::influx module?
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 error parsing query: only ORDER BY time supported at this time 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 p_wrapper par_sqlandworker_results $INFLUX
INFLUX par_sqlandworker_results Exit=255 INFLUX par_sqlandworker_results Exit=255
INFLUX par_sqlandworker_results Exit=0 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 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 not supported. Are you missing a perl DBD::influx module?
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 error parsing query: only ORDER BY time supported at this time 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 p_wrapper par_sqlandworker_tag $INFLUX
INFLUX par_sqlandworker_tag Exit=255 INFLUX par_sqlandworker_tag Exit=255
INFLUX par_sqlandworker_tag Exit=0 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 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 not supported. Are you missing a perl DBD::influx module?
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 error parsing query: only ORDER BY time supported at this time 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 p_wrapper par_sqlandworker_total_jobs $INFLUX
INFLUX par_sqlandworker_total_jobs Exit=255 INFLUX par_sqlandworker_total_jobs Exit=255
INFLUX par_sqlandworker_total_jobs Exit=0 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 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 not supported. Are you missing a perl DBD::influx module?
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 error parsing query: only ORDER BY time supported at this time 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 p_wrapper par_sqlandworker_unbuffer $INFLUX
INFLUX par_sqlandworker_unbuffer Exit=255 INFLUX par_sqlandworker_unbuffer Exit=255
INFLUX par_sqlandworker_unbuffer Exit=0 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 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 not supported. Are you missing a perl DBD::influx module?
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 error parsing query: only ORDER BY time supported at this time INFLUX par_sqlandworker_unbuffer error parsing query: only ORDER BY time supported at this time
MYSQL do_dburl MYSQL MYSQL do_dburl MYSQL
MYSQL par_append p_wrapper par_append $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_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 p_wrapper par_no_table $MYSQL
MYSQL par_no_table bug #50018: --dburl without table dies MYSQL par_no_table bug #50018: --dburl without table dies
MYSQL par_no_table 255 MYSQL par_no_table should default to table USERNAME
MYSQL par_no_table 255 MYSQL par_no_table OK
MYSQL par_no_table 255 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 Exit=0 MYSQL par_no_table Exit=0
MYSQL par_no_table Host Command V1 V2 Stdout Stderr MYSQL par_no_table Host Command V1 V2 Stdout Stderr
MYSQL par_no_table hostname true dummy dummy dummy dummy 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 p_wrapper par_shuf $MYSQL
MYSQL par_shuf 1 a MYSQL par_shuf 1 a
MYSQL par_shuf 1 b 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_empty ^
PG par_no_table p_wrapper par_no_table $PG PG par_no_table p_wrapper par_no_table $PG
PG par_no_table bug #50018: --dburl without table dies PG par_no_table bug #50018: --dburl without table dies
PG par_no_table 255 PG par_no_table should default to table USERNAME
PG par_no_table 255 PG par_no_table OK
PG par_no_table 255 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 Exit=0 PG par_no_table Exit=0
PG par_no_table host| command | v1 | v2 | stdout | stderr PG par_no_table host| command | v1 | v2 | stdout | stderr
PG par_no_table hostname| true dummy dummy | dummy | dummy | | PG par_no_table hostname| true dummy dummy | dummy | dummy | |
PG par_no_table (1 row) PG par_no_table (1 row)
PG par_no_table 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 p_wrapper par_shuf $PG
PG par_shuf 1 a PG par_shuf 1 a
PG par_shuf 1 b 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_empty Parse error near line 1: no such table: TBL99999
SQLITE par_no_table p_wrapper par_no_table $SQLITE SQLITE par_no_table p_wrapper par_no_table $SQLITE
SQLITE par_no_table bug #50018: --dburl without table dies 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 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 Exit=0
SQLITE par_no_table Host|Command|V1|V2|Stdout|Stderr SQLITE par_no_table Host|Command|V1|V2|Stdout|Stderr
SQLITE par_no_table hostname|true dummy dummy|dummy|dummy|| 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 table name (/run/shm/parallel.db) cannot contain /
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 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_shuf p_wrapper par_shuf $SQLITE SQLITE par_shuf p_wrapper par_shuf $SQLITE
SQLITE par_shuf 1 a SQLITE par_shuf 1 a
SQLITE par_shuf 1 b 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 par_few_duplicate_run $CSV
par_few_duplicate_run $CSV ### With many workers there will be some duplicates 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 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 par_few_duplicate_run $MYSQL
par_few_duplicate_run $MYSQL ### With many workers there will be some duplicates par_few_duplicate_run $MYSQL ### With many workers there will be some duplicates
par_few_duplicate_run $MYSQL OK par_few_duplicate_run $MYSQL OK

View file

@ -13,8 +13,8 @@ par__noheaders def 3
par__noheaders abc 1 par__noheaders abc 1
par__noheaders def 3 par__noheaders def 3
par__tablesize ### Test --table-size --tablesize par__tablesize ### Test --table-size --tablesize
par__tablesize 94 par__tablesize 96
par__tablesize 94 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 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 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 empty input par_influx empty input
par_influx dbsize is not implemented for influx 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: databases
par_influx name par_influx name
par_influx ---- par_influx ----

View file

@ -1,10 +1,5 @@
par_listproc ### Test --listproc par_listproc ### Test --listproc
par_listproc 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 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 XXX sqlunittest localhost sqlunittest Query 0 init show processlist 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 ### Test oracle with multiple arguments on the command line
par_multiarg_on_command_line par_multiarg_on_command_line
@ -37,11 +32,11 @@ par_showdatabases ### Test --show-databases
par_showdatabases 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 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 ------------------------------ ---------- -------------- ----------- ----------- ----------- ---------- ------------ ---------- --------- --------------------- --------- --- ---------- --------- ------ -------- ----------- --- ------- --- ------------------------------ -------- -------- --------------- ----------------- ------------- ------------- -------- ------------- ---------------- ------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------- -
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 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 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 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 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 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 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_showdatabases
par_showtables ### Test --show-tables par_showtables ### Test --show-tables
par_showtables par_showtables