From 9b4fd8b33b82ca8e6967dcf4f69672830a17d884 Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Sun, 18 Dec 2016 11:14:06 +0100 Subject: [PATCH] parallel: Implemented --results foo.csv/-.tsv. Incl. testsuite. --- doc/release_new_version | 1 + src/parallel | 296 ++++++-- src/parallel.pod | 80 +- src/parallel_design.pod | 13 + testsuite/tests-to-run/parallel-local-0.3s.sh | 10 + testsuite/tests-to-run/parallel-local-100s.sh | 1 - testsuite/tests-to-run/parallel-local-10s.sh | 17 + testsuite/tests-to-run/parallel-local-30s.sh | 9 - testsuite/tests-to-run/parallel-local-sql.sh | 22 +- testsuite/tests-to-run/parallel-local-ssh7.sh | 5 +- testsuite/wanted-results/parallel-local-0.3s | 2 + testsuite/wanted-results/parallel-local-10s | 348 +++++++++ testsuite/wanted-results/parallel-local-30s | 6 - testsuite/wanted-results/parallel-local-sql | 709 +++++++++++++++--- testsuite/wanted-results/parallel-local-ssh7 | 102 +-- 15 files changed, 1380 insertions(+), 241 deletions(-) diff --git a/doc/release_new_version b/doc/release_new_version index 6e47d0cd..3c44911f 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -230,6 +230,7 @@ Haiku of the month: -- Ole Tange New in this release: +http://www.nature.com/articles/srep39259 http://paperity.org/p/78557440/learning-string-distance-with-smoothing-for-ocr-spelling-correction http://blog.genoglobe.com/2016/11/gnu-parallel.html http://os.51cto.com/art/201612/524182.htm diff --git a/src/parallel b/src/parallel index 251d2e81..963bd56a 100755 --- a/src/parallel +++ b/src/parallel @@ -1076,11 +1076,21 @@ sub parse_options { $opt::compress = 1; $opt::decompress_program ||= $opt::compress_program." -dc"; } + + if(defined $opt::results) { + if($opt::results =~ /\.csv$/i) { + $Global::csv = ","; + $Global::membuffer ||= 1; + } elsif($opt::results =~ /\.tsv$/i) { + $Global::csv = "\t"; + $Global::membuffer ||= 1; + } + } if($opt::compress) { my ($compress, $decompress) = find_compression_program(); $opt::compress_program ||= $compress; $opt::decompress_program ||= $decompress; - if($opt::results or $opt::files) { + if(($opt::results and not $Global::csv) or $opt::files) { # No need for decompressing $opt::decompress_program = "cat >/dev/null"; } @@ -1178,9 +1188,13 @@ sub parse_options { $opt::jobs = "100%"; } open_joblog(); + open_csv(); if($opt::sqlmaster or $opt::sqlworker) { $Global::sql = SQL->new($opt::sqlmaster || $opt::sqlworker); } + if($opt::sqlworker) { + $Global::membuffer ||= 1; + } } sub check_invalid_option_combinations { @@ -1484,7 +1498,11 @@ sub open_joblog { ::error("--resume and --resume-failed require --joblog or --results."); ::wait_and_exit(255); } - if($opt::joblog) { + if($opt::joblog + and + ($opt::sqlmaster + or + not $opt::sqlworker)) { if($opt::resume || $opt::resume_failed || $opt::retry_failed) { if(open(my $joblog_fh, "<", $opt::joblog)) { # Read the joblog @@ -1574,6 +1592,31 @@ sub open_joblog { } } +sub open_csv { + if($opt::results) { + # Output as CSV/TSV + if($opt::results eq "-.csv" + or + $opt::results eq "-.tsv") { + # Output as CSV/TSV on stdout + open $Global::csv_fh, ">&", "STDOUT" or + ::die_bug("Can't dup STDOUT in csv: $!"); + # Do not print any other output to STDOUT + # by forcing all other output to /dev/null + open my $fd, ">", "/dev/null" or + ::die_bug("Can't >/dev/null in csv: $!"); + $Global::fd{1} = $fd; + $Global::fd{2} = $fd; + } elsif($Global::csv) { + if(not open($Global::csv_fh,">",$opt::results)) { + ::error("Cannot open results file `$opt::results': ". + "$!."); + wait_and_exit(255); + } + } + } +} + sub find_compression_program { # Find a fast compression program # Returns: @@ -6344,6 +6387,8 @@ sub new { # Timestamp for timeout if any 'timeout' => undef, 'virgin' => 1, + # Output used for SQL and CSV-output + 'output' => { 1 => [], 2 => [] }, }, ref($class) || $class; } @@ -6460,12 +6505,14 @@ sub openoutputfiles { # Set file handles in $self->fh my $self = shift; my ($outfhw, $errfhw, $outname, $errname); - if($opt::results) { + + if($opt::results and not $Global::csv) { + # Results as dir my $args_as_dirname = $self->{'commandline'}->args_as_dirname(); # Output in: prefix/name1/val1/name2/val2/stdout my $dir = $self->{'commandline'}-> - replace_placeholders([$opt::results],0,0) . - "/".$args_as_dirname; + replace_placeholders([$opt::results],0,0) . + "/".$args_as_dirname; if(eval{ File::Path::mkpath($dir); }) { # OK } else { @@ -6503,10 +6550,9 @@ sub openoutputfiles { $self->set_fh(2,"unlink",""); if($opt::sqlworker) { # Save the filenames in SQL table - $Global::sql->update("SET Stdout = ? WHERE Seq = ".$self->seq(), - $outname); - $Global::sql->update("SET Stderr = ? WHERE Seq = ".$self->seq(), - $errname); + $Global::sql->update("SET Stdout = ?, Stderr = ? ". + "WHERE Seq = ". $self->seq(), + $outname, $errname); } } elsif(not $opt::ungroup) { # To group we create temporary files for STDOUT and STDERR @@ -8133,25 +8179,174 @@ sub print { ::debug("print", "File descriptor $fdno (", $self->fh($fdno,"name"), "):\n"); if($opt::linebuffer) { # Line buffered print out - $self->linebuffer_print($fdno,$in_fh,$out_fd); + $self->print_linebuffer($fdno,$in_fh,$out_fd); } elsif($opt::files) { - $self->files_print($fdno,$in_fh,$out_fd); + $self->print_files($fdno,$in_fh,$out_fd); } elsif($opt::tag or defined $opt::tagstring) { - $self->tag_print($fdno,$in_fh,$out_fd); + $self->print_tag($fdno,$in_fh,$out_fd); } else { - $self->normal_print($fdno,$in_fh,$out_fd); + $self->print_normal($fdno,$in_fh,$out_fd); } flush $out_fd; } ::debug("print", "<{'exitstatus'} + if(defined $self->{'exitstatus'} and not ($self->virgin() and $opt::pipe)) { - # Add to joblog when finished - $self->print_joblog(); + if($Global::joblog and not $opt::sqlworker) { + # Add to joblog when finished + $self->print_joblog(); + } + if($opt::sqlworker and not $opt::results) { + $Global::sql->output($self); + } + if($Global::csv) { + # Add output to CSV when finished + $self->print_csv(); + } } } -sub files_print { +{ + my $header_printed; + + sub print_csv { + my $self = shift; + my $cmd; + if($Global::verbose <= 1) { + $cmd = $self->replaced(); + } else { + # Verbose level > 1: Print the rsync and stuff + $cmd = "@command"; + } + my $record_ref = $self->{'commandline'}{'arg_list_flat_orig'}; + + if(not $header_printed) { + # Variable headers + # Normal => V1..Vn + # --header : => first value from column + my @V; + if($opt::header) { + my $i = 1; + @V = (map { $Global::input_source_header{$i++} } + @$record_ref[1..$#$record_ref]); + } else { + my $V = "V1"; + @V = (map { $V++ } @$record_ref[1..$#$record_ref]); + } + print $Global::csv_fh + (map { $$_ } + combine_ref("Seq", "Host", "Starttime", "JobRuntime", + "Send", "Receive", "Exitval", "Signal", "Command", + @V, + "Stdout","Stderr" + )),"\n"; + $header_printed++; + } + # Memory optimization: Overwrite with the joined output + $self->{'output'}{1} = join("", @{$self->{'output'}{1}}); + $self->{'output'}{2} = join("", @{$self->{'output'}{2}}); + print $Global::csv_fh + (map { $$_ } + combine_ref + ($self->seq(), + $self->sshlogin()->string(), + $self->starttime(), sprintf("%0.3f",$self->runtime()), + $self->transfersize(), $self->returnsize(), + $self->exitstatus(), $self->exitsignal(), \$cmd, + \@$record_ref[1..$#$record_ref], + \$self->{'output'}{1}, + \$self->{'output'}{2})),"\n"; + } +} + +sub combine_ref { + # Inspired by Text::CSV_PP::_combine (by Makamaka Hannyaharamitu) + my @part = @_; + my $sep = $Global::csv; + my $quot = '"'; + my @out = (); + + my $must_be_quoted; + for my $column (@part) { + # Memory optimization: Content transferred as reference + if(ref $column ne "SCALAR") { + # Convert all columns to scalar references + my $v = $column; + $column = \$v; + } + if(not defined $$column) { + $$column = ''; + next; + } + + $must_be_quoted = 0; + + if($$column =~ s/$quot/$quot$quot/go){ + # Replace " => "" + $must_be_quoted ||=1; + } + if($$column =~ /[\s\Q$sep\E]/o){ + # Put quotes around if the column contains , + $must_be_quoted ||=1; + } + + $Global::use{"bytes"} ||= eval "use bytes; 1;"; + if ($$column =~ /\0/) { + # Contains \0 => put quotes around + $must_be_quoted ||=1; + } + if($must_be_quoted){ + push \@out, \$sep, \$quot, $column, \$quot; + } else { + push @out, \$sep, $column; + } + } + # Pop off a $sep + shift @out; + return @out; +} + +sub combine { + # Inspired by Text::CSV_PP::_combine (by Makamaka Hannyaharamitu) + my @part = @_; + my $sep = $Global::csv; + my $quot = '"'; + + my $must_be_quoted; + for my $column (@part) { + # Memory optimization: Content transferred as reference + if(ref $column ne "SCALAR") { + ($column,$$column) = ($$column,""); + } + if(not defined $column) { + $column = ''; + next; + } + + $must_be_quoted = 0; + + if($column =~ s/$quot/$quot$quot/go){ + # Replace " => "" + $must_be_quoted ||=1; + } + if($column =~ /[\s\Q$sep\E]/o){ + # Put quotes around if the column contains , + $must_be_quoted ||=1; + } + + $Global::use{"bytes"} ||= eval "use bytes; 1;"; + if ($column =~ /\0/) { + # Contains \0 => put quotes around + $must_be_quoted ||=1; + } + if($must_be_quoted){ + $column = $quot . $column . $quot; + } + } + return join($sep, @part) . "\n"; +} + +sub print_files { # Print the name of the file containing stdout on stdout # Uses: # $opt::pipe @@ -8182,9 +8377,8 @@ sub files_print { } } elsif($fdno == 1 and $self->fh($fdno,"name")) { print $out_fd $self->tag(),$self->fh($fdno,"name"),"\n"; - if($opt::sqlworker) { - $Global::sql->update("SET Stdout = ? WHERE Seq = ".$self->seq(), - $self->tag().$self->fh($fdno,"name")); + if($Global::membuffer) { + push @{$self->{'output'}{$fdno}}, $self->tag(), $self->fh($fdno,"name"); } $self->add_returnsize(-s $self->fh($fdno,"name")); # Mark as printed - do not print again @@ -8192,7 +8386,7 @@ sub files_print { } } -sub linebuffer_print { +sub print_linebuffer { my $self = shift; my ($fdno,$in_fh,$out_fd) = @_; my $partial = \$self->{'partial_line',$fdno}; @@ -8211,9 +8405,12 @@ sub linebuffer_print { } } } - if($opt::files or $opt::results) { + if($opt::files or ($opt::results and not $Global::csv)) { if($fdno == 1 and not $self->fh($fdno,"printed")) { print $out_fd $self->tag(),$self->fh($fdno,"name"),"\n"; + if($Global::membuffer) { + push @{$self->{'output'}{$fdno}}, $self->tag(), $self->fh($fdno,"name"); + } $self->set_fh($fdno,"printed",1); } # No need for reading $in_fh, as it it from "cat >/dev/null" @@ -8244,9 +8441,9 @@ sub linebuffer_print { } # Print up to and including the last \n print $out_fd substr($$partial,0,$i); - if($opt::sqlworker) { - push (@{$self->{'sqlworker'}{$fdno}}, - substr($$partial,0,$i)); + # Buffer in memory for SQL and CSV-output + if($Global::membuffer) { + push @{$self->{'output'}{$fdno}}, substr($$partial,0,$i); } # Remove the printed part substr($$partial,0,$i) = ""; @@ -8255,7 +8452,7 @@ sub linebuffer_print { $self->add_returnsize($outputlength); } if(defined $self->{'exitstatus'}) { - if($opt::files or $opt::results) { + if($opt::files or ($opt::results and not $Global::csv)) { $self->add_returnsize(-s $self->fh($fdno,"name")); } else { # If the job is dead: print the remaining partial line @@ -8266,8 +8463,8 @@ sub linebuffer_print { $$partial =~ s/^/$tag/gm; } print $out_fd $$partial; - if($opt::sqlworker) { - push (@{$self->{'sqlworker'}{$fdno}},$$partial); + if($Global::membuffer) { + push @{$self->{'output'}{$fdno}}, $$partial; } } # Release the memory @@ -8275,13 +8472,7 @@ sub linebuffer_print { if($self->fh($fdno,"rpid") and CORE::kill 0, $self->fh($fdno,"rpid")) { # decompress still running } else { - # decompress done: - # copy to sql (if needed) - # then close fh - if($opt::sqlworker and not $opt::results) { - $Global::sql->output($fdno, $self->seq(), - join("",@{$self->{'sqlworker'}{$fdno}})); - } + # decompress done: close fh close $in_fh; if($? and $opt::compress) { ::error($opt::decompress_program." failed."); @@ -8291,7 +8482,7 @@ sub linebuffer_print { } } -sub tag_print { +sub print_tag { my $self = shift; my ($fdno,$in_fh,$out_fd) = @_; my $buf; @@ -8309,16 +8500,13 @@ sub tag_print { while(<$in_fh>) { print $out_fd $tag,$_; $outputlength += length $_; - if($opt::sqlworker) { - push @output, $tag,$_; + if($Global::membuffer) { + push @{$self->{'output'}{$fdno}}, $tag, $_; } } if($fdno == 1) { $self->add_returnsize($outputlength); } - if($opt::sqlworker and not $opt::results) { - $Global::sql->output($fdno, $self->seq(), join("",@output)); - } close $in_fh; if($? and $opt::compress) { ::error($opt::decompress_program." failed."); @@ -8326,7 +8514,7 @@ sub tag_print { } } -sub normal_print { +sub print_normal { my $self = shift; my ($fdno,$in_fh,$out_fd) = @_; my $buf; @@ -8342,17 +8530,13 @@ sub normal_print { while(sysread($in_fh,$buf,131072)) { print $out_fd $buf; $outputlength += length $buf; - if($opt::sqlworker) { - push @output, $buf; + if($Global::membuffer) { + push @{$self->{'output'}{$fdno}}, $buf; } } if($fdno == 1) { $self->add_returnsize($outputlength); } - if($opt::sqlworker and not $opt::results) { - $Global::sql->output($fdno, $self->seq(), - join("",@output)); - } close $in_fh; if($? and $opt::compress) { ::error($opt::decompress_program." failed."); @@ -8597,7 +8781,8 @@ sub populate { # Returns: N/A my $self = shift; my $next_arg; - my $max_len = $Global::minimal_command_line_length || Limits::Command::max_length(); + my $max_len = $Global::minimal_command_line_length + || Limits::Command::max_length(); if($opt::cat or $opt::fifo) { # Get the empty arg added by --pipepart (if any) @@ -8659,6 +8844,7 @@ sub populate { } } } + if($opt::sqlmaster) { # Insert the V1..Vn for this $seq in SQL table instead of generating one $Global::sql->insert_records($self->seq(),$self->{'arg_list_flat_orig'}); @@ -9027,7 +9213,7 @@ sub replaced { $normal_replace or last; } } - @Arg::arg = (); + *Arg::arg = []; if($quote) { @target = ::shell_quote(@target); } @@ -10404,13 +10590,11 @@ sub update { sub output { my $self = shift; - my $fdno = shift; - my $seq = shift; - my @output = @_; + my $commandline = shift; - my %column_of_fdno = ( 1 => "Stdout", 2 => "Stderr" ); - my $column = $column_of_fdno{$fdno}; - $self->update("SET $column = ? WHERE Seq = ".$seq, join("",@output)); + $self->update("SET Stdout = ?, Stderr = ? WHERE Seq = ".$commandline->seq(), + join("",@{$commandline->{'output'}{1}}), + join("",@{$commandline->{'output'}{2}})); } sub max_number_of_args { diff --git a/src/parallel.pod b/src/parallel.pod index dcf7bce2..6b334cb7 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -565,9 +565,10 @@ Compress temporary files. If the output is big and very compressible this will take up less disk space in $TMPDIR and possibly be faster due to less disk I/O. -GNU B will try B, B, B, B, -B, B B, B, B, B, B, in that -order, and use the first available. +GNU B will try B, B, B, B, +B, B, B, B, B, B, B, B, +B, B, B, B, in that order, and use the first +available. =item B<--compress-program> I @@ -1441,18 +1442,36 @@ it to the command. Only used with B<--pipe>. -=item B<--results> I +=item B<--results> I (alpha testing) -=item B<--res> I +=item B<--res> I (alpha testing) -Save the output into files. The files will be stored in a directory tree -rooted at I. Within this directory tree, each command will result -in two files: I//stdout and I//stderr, where - is a sequence of directories representing the header of the input -source (if using B<--header :>) or the number of the input source and +Save the output into files. + +B + +If I ends in B<.csv>/B<.tsv> the output will be a CSV-file +named I. + +B<.csv> gives a comma separated value file. B<.tsv> gives a TAB +separated value file. + +B<-.csv>/B<-.tsv> are special: It will give the file on stdout +(standard output). + + +B + +If I does not end in B<.csv>/B<.tsv> will be treated as a dir. + +The files will be stored in a directory tree rooted at I. +Within this directory tree, each command will result in two files: +I//stdout and I//stderr, where is a +sequence of directories representing the header of the input source +(if using B<--header :>) or the number of the input source and corresponding values. -I can contain replacement strings. +I can contain replacement strings. E.g: @@ -3408,6 +3427,43 @@ Note: The default for GNU B is to remove the spaces around the columns parallel -a table_file.tsv --trim n --colsep '\t' cmd -o {2} -i {1} +=head1 EXAMPLE: Output as CSV-file + +GNU B can output to a database table and a CSV-file: + + DBURL=csv:///%2Ftmp%2Fmy.csv + DBTABLEURL=$DBURL/mytable + parallel --sqlandworker $DBTABLEURL seq ::: {1..10} + +It is rather slow and takes up a lot of CPU time because GNU +B parses the whole CSV file for each update. + +A better approach is to use an SQLite-base and then convert that to CSV: + + DBURL=sqlite3:///%2Ftmp%2Fmy.sqlite + DBTABLEURL=$DBURL/mytable + parallel --sqlandworker $DBTABLEURL seq ::: {1..10} + sql $DBURL '.headers on' '.mode csv' 'SELECT * FROM mytable;' + +This takes around a second per job. + +If you have access to a real database system, such as PostgreSQL, it +is even faster: + + DBURL=pg://user:pass@host/mydb + DBTABLEURL=$DBURL/mytable + parallel --sqlandworker $DBTABLEURL seq ::: {1..10} + sql $DBURL "COPY (SELECT * FROM mytable) TO stdout DELIMITER ',' CSV HEADER;" + +Or MySQL: + + DBURL=mysql://user:pass@host/mydb + DBTABLEURL=$DBURL/mytable + parallel --sqlandworker $DBTABLEURL seq ::: {1..10} + sql -p -B $DBURL "SELECT * FROM mytable;" > mytable.tsv + perl -pe 's/"/""/g;s/\t/","/g;s/^/"/;s/$/"/;s/\\\\/\\/g;s/\\t/\t/g;s/\\n/\n/g;' mytable.tsv + + =head1 EXAMPLE: Run the same command 10 times If you want to run the same command with the same arguments 10 times @@ -4722,7 +4778,7 @@ B<3> parallel mkdir -p thumbs/RELDIR\; convert FULLPATH -thumbnail 100x100^ -gra B<4> ladon "~/Music/*.wav" -- lame -V 2 FULLPATH DIRNAME/BASENAME.mp3 -B<4> parallel lame -V 2 FULLPATH DIRNAME/BASENAME.mp3 ::: ~/Music/*.wav +B<4> parallel lame -V 2 FULLPATH DIRNAME/BASENAME.mp3 ::: ~/Music/*.wav =head2 DIFFERENCES BETWEEN jobflow AND GNU Parallel diff --git a/src/parallel_design.pod b/src/parallel_design.pod index 4699375c..536b1cef 100644 --- a/src/parallel_design.pod +++ b/src/parallel_design.pod @@ -768,6 +768,19 @@ not need to sync them to disk. It gives the odd situation that a disk can be fully used, but there are no visible files on it. + +=head3 Partly buffering in memory + +When using output formats SQL and CSV then GNU Parallel has to read +the whole output into memory. When run normally it will only read the +output from a single job. But when using B<--linebuffer> every line +printed will also be buffered in memory - for all jobs currently +running. + +If memory is tight, then do not use the output format SQL/CSV with +B<--linebuffer>. + + =head3 Comparing to buffering in memory B is a parallelizing tool that buffers in memory. It is diff --git a/testsuite/tests-to-run/parallel-local-0.3s.sh b/testsuite/tests-to-run/parallel-local-0.3s.sh index e35754f6..2fcf818c 100644 --- a/testsuite/tests-to-run/parallel-local-0.3s.sh +++ b/testsuite/tests-to-run/parallel-local-0.3s.sh @@ -664,3 +664,13 @@ find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | wc -l find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | parallel rm sudo umount -l /tmp/smalldisk.img + +par_empty() { + echo "bug #:" + + parallel echo ::: true +} + + +export -f $(compgen -A function | grep par_) +compgen -A function | grep par_ | sort | parallel -j6 --tag -k '{} 2>&1' diff --git a/testsuite/tests-to-run/parallel-local-100s.sh b/testsuite/tests-to-run/parallel-local-100s.sh index fc44a298..7e375d33 100644 --- a/testsuite/tests-to-run/parallel-local-100s.sh +++ b/testsuite/tests-to-run/parallel-local-100s.sh @@ -1,5 +1,4 @@ #!/bin/bash -exit 0 # Simple jobs that never fails # Each should be taking >100s and be possible to run in parallel diff --git a/testsuite/tests-to-run/parallel-local-10s.sh b/testsuite/tests-to-run/parallel-local-10s.sh index cb7eb71a..48692b4a 100644 --- a/testsuite/tests-to-run/parallel-local-10s.sh +++ b/testsuite/tests-to-run/parallel-local-10s.sh @@ -133,6 +133,7 @@ par_compress_fail() { } par_distribute_input_by_ability() { + echo "### bug #48290: round-robin does not distribute data based on business" echo "### Distribute input to jobs that are ready" echo "Job-slot n is 50% slower than n+1, so the order should be 1..7" seq 20000000 | @@ -147,6 +148,22 @@ par_round_robin_blocks() { seq 20000000 | parallel --block 10M --round-robin --pipe wc -c | wc -l } +par_results_csv() { + echo "bug #: --results csv" + + doit() { + parallel -k $@ --results -.csv echo ::: H2 22 23 ::: H1 11 12; + } + export -f doit + parallel -k --tag doit ::: '--header :' '' \ + ::: --tag '' ::: --lb '' ::: --files '' ::: --compress '' | + perl -pe 's:/par......par:/tmpfile:g;s/\d+\.\d+/999.999/g' +} + +par_results_compress() { + parallel --results /tmp/ged --compress echo ::: 1 | wc -l + parallel --results /tmp/ged echo ::: 1 | wc -l +} export -f $(compgen -A function | grep par_) compgen -A function | grep par_ | sort | parallel -j6 --tag -k '{} 2>&1' diff --git a/testsuite/tests-to-run/parallel-local-30s.sh b/testsuite/tests-to-run/parallel-local-30s.sh index 32dc2923..a4ff5558 100644 --- a/testsuite/tests-to-run/parallel-local-30s.sh +++ b/testsuite/tests-to-run/parallel-local-30s.sh @@ -22,15 +22,6 @@ par_tmp_full() { stdout parallel -j1 --tmpdir $SHM cat /dev/zero ::: dummy } -par_bug_48290() { - echo "### bug #48290: round-robin does not distribute data based on business" - echo "Jobslot 1 is 256 times slower than jobslot 4 and should get much less data" - yes "$(seq 1000|xargs)" | head -c 30M | - parallel --tagstring {%} --linebuffer --compress -j4 --roundrobin --pipe --block 10k \ - pv -qL '{= $_=int( $job->slot()**4/2+1) =}'0000 | - perl -ne '/^\d+/ and $s{$&}++; END { print map { "$_\n" } sort { $s{$b} <=> $s{$a} } keys %s}' -} - par_memory_leak() { a_run() { seq $1 |time -v parallel true 2>&1 | diff --git a/testsuite/tests-to-run/parallel-local-sql.sh b/testsuite/tests-to-run/parallel-local-sql.sh index 346d1d4e..ce18b926 100755 --- a/testsuite/tests-to-run/parallel-local-sql.sh +++ b/testsuite/tests-to-run/parallel-local-sql.sh @@ -30,7 +30,7 @@ p_wrapper() { } p_template() { - (sleep 2; + (sleep 3; parallel --sqlworker $DBURL "$@" sleep .3\;echo >$T1) & parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >$T2; } @@ -112,9 +112,27 @@ par_shuf() { touch $T1 } +par_sqlandworker_lo() { + p_template -S lo +} + +par_sql_joblog() { + echo '### should only give a single --joblog heading' + echo '### --sqlmaster/--sqlworker' + parallel -k --joblog - --sqlmaster $DBURL --wait sleep .3\;echo ::: {1..5} ::: {a..e} | + perl -pe 's/\d+\.\d+/999.999/g' | sort -n & + sleep 0.5 + parallel -k --joblog - --sqlworker $DBURL sleep .3\;echo + wait + echo '### --sqlandworker' + parallel -k --joblog - --sqlandworker $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} | + perl -pe 's/\d+\.\d+/999.999/g' | sort -n + # TODO --sqlandworker --wait +} + export -f $(compgen -A function | egrep 'p_|par_') # Tested that -j0 in parallel is fastest (up to 15 jobs) compgen -A function | grep par_ | sort | - stdout parallel -vj5 -k --tag --joblog /tmp/jl-`basename $0` p_wrapper \ + stdout parallel -vj3 -k --tag --joblog /tmp/jl-`basename $0` p_wrapper \ :::: - ::: \$MYSQL \$PG \$SQLITE diff --git a/testsuite/tests-to-run/parallel-local-ssh7.sh b/testsuite/tests-to-run/parallel-local-ssh7.sh index fa1fd48e..704f00ba 100755 --- a/testsuite/tests-to-run/parallel-local-ssh7.sh +++ b/testsuite/tests-to-run/parallel-local-ssh7.sh @@ -248,7 +248,8 @@ par_csh_man() { echo exit value $status should be 255 _EOF ) - ssh csh@lo "$myscript" + # Sometimes the order f*cks up + stdout ssh csh@lo "$myscript" | sort } par_fish_man() { @@ -862,4 +863,4 @@ export -f $(compgen -A function | grep par_) # Tested with -j1..8 # -j6 was fastest #compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1' -compgen -A function | grep par_ | sort | parallel --delay 0.1 -j10 --tag -k '{} 2>&1' +compgen -A function | grep par_ | sort | parallel --delay 0.1 -j2 --tag -k '{} 2>&1' diff --git a/testsuite/wanted-results/parallel-local-0.3s b/testsuite/wanted-results/parallel-local-0.3s index b07d0e4d..6d88b53b 100644 --- a/testsuite/wanted-results/parallel-local-0.3s +++ b/testsuite/wanted-results/parallel-local-0.3s @@ -1759,3 +1759,5 @@ echo '**' ** ### 1 .par file from --files expected 10 +par_empty bug #: +par_empty true diff --git a/testsuite/wanted-results/parallel-local-10s b/testsuite/wanted-results/parallel-local-10s index 02851895..db1a25e2 100644 --- a/testsuite/wanted-results/parallel-local-10s +++ b/testsuite/wanted-results/parallel-local-10s @@ -1,6 +1,7 @@ par_compress_fail ### bug #41609: --compress fails par_compress_fail 24812dd0f24a26d08a780f988b9d5ad2 - par_compress_fail 24812dd0f24a26d08a780f988b9d5ad2 - +par_distribute_input_by_ability ### bug #48290: round-robin does not distribute data based on business par_distribute_input_by_ability ### Distribute input to jobs that are ready par_distribute_input_by_ability Job-slot n is 50% slower than n+1, so the order should be 1..7 par_distribute_input_by_ability 1 @@ -538,6 +539,353 @@ par_print_before_halt_on_error 2 exit code 1 par_print_before_halt_on_error 2 0 0 par_print_before_halt_on_error 2 parallel: This job failed: par_print_before_halt_on_error 2 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ 2\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 1 +par_results_compress 0 +par_results_compress 1 +par_results_csv bug #: --results csv +par_results_csv --header : --tag --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --tag --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --tag --lb --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --files 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --files 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --tag --lb --compress 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11 +par_results_csv --header : --tag --lb --compress ", +par_results_csv --header : --tag --lb --compress 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12 +par_results_csv --header : --tag --lb --compress ", +par_results_csv --header : --tag --lb --compress 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11 +par_results_csv --header : --tag --lb --compress ", +par_results_csv --header : --tag --lb --compress 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 +par_results_csv --header : --tag --lb --compress ", +par_results_csv --header : --tag --lb Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --tag --lb 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11 +par_results_csv --header : --tag --lb ", +par_results_csv --header : --tag --lb 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12 +par_results_csv --header : --tag --lb ", +par_results_csv --header : --tag --lb 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11 +par_results_csv --header : --tag --lb ", +par_results_csv --header : --tag --lb 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 +par_results_csv --header : --tag --lb ", +par_results_csv --header : --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --tag --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --tag --compress 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11 +par_results_csv --header : --tag --compress ", +par_results_csv --header : --tag --compress 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12 +par_results_csv --header : --tag --compress ", +par_results_csv --header : --tag --compress 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11 +par_results_csv --header : --tag --compress ", +par_results_csv --header : --tag --compress 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 +par_results_csv --header : --tag --compress ", +par_results_csv --header : --tag Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --tag 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11 +par_results_csv --header : --tag ", +par_results_csv --header : --tag 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12 +par_results_csv --header : --tag ", +par_results_csv --header : --tag 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11 +par_results_csv --header : --tag ", +par_results_csv --header : --tag 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 +par_results_csv --header : --tag ", +par_results_csv --header : --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --lb --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --files 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --files 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --lb --compress 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 +par_results_csv --header : --lb --compress ", +par_results_csv --header : --lb --compress 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 +par_results_csv --header : --lb --compress ", +par_results_csv --header : --lb --compress 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 +par_results_csv --header : --lb --compress ", +par_results_csv --header : --lb --compress 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 +par_results_csv --header : --lb --compress ", +par_results_csv --header : --lb Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --lb 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 +par_results_csv --header : --lb ", +par_results_csv --header : --lb 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 +par_results_csv --header : --lb ", +par_results_csv --header : --lb 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 +par_results_csv --header : --lb ", +par_results_csv --header : --lb 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 +par_results_csv --header : --lb ", +par_results_csv --header : --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : --compress 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 +par_results_csv --header : --compress ", +par_results_csv --header : --compress 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 +par_results_csv --header : --compress ", +par_results_csv --header : --compress 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 +par_results_csv --header : --compress ", +par_results_csv --header : --compress 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 +par_results_csv --header : --compress ", +par_results_csv --header : Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr +par_results_csv --header : 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 +par_results_csv --header : ", +par_results_csv --header : 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 +par_results_csv --header : ", +par_results_csv --header : 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 +par_results_csv --header : ", +par_results_csv --header : 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 +par_results_csv --header : ", +par_results_csv --tag --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --tag --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --tag --lb --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --tag --lb --compress 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 H2 H1 +par_results_csv --tag --lb --compress ", +par_results_csv --tag --lb --compress 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 H2 11 +par_results_csv --tag --lb --compress ", +par_results_csv --tag --lb --compress 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 H2 12 +par_results_csv --tag --lb --compress ", +par_results_csv --tag --lb --compress 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 22 H1 +par_results_csv --tag --lb --compress ", +par_results_csv --tag --lb --compress 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11 +par_results_csv --tag --lb --compress ", +par_results_csv --tag --lb --compress 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12 +par_results_csv --tag --lb --compress ", +par_results_csv --tag --lb --compress 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 23 H1 +par_results_csv --tag --lb --compress ", +par_results_csv --tag --lb --compress 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11 +par_results_csv --tag --lb --compress ", +par_results_csv --tag --lb --compress 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 +par_results_csv --tag --lb --compress ", +par_results_csv --tag --lb Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --tag --lb 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 H2 H1 +par_results_csv --tag --lb ", +par_results_csv --tag --lb 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 H2 11 +par_results_csv --tag --lb ", +par_results_csv --tag --lb 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 H2 12 +par_results_csv --tag --lb ", +par_results_csv --tag --lb 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 22 H1 +par_results_csv --tag --lb ", +par_results_csv --tag --lb 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11 +par_results_csv --tag --lb ", +par_results_csv --tag --lb 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12 +par_results_csv --tag --lb ", +par_results_csv --tag --lb 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 23 H1 +par_results_csv --tag --lb ", +par_results_csv --tag --lb 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11 +par_results_csv --tag --lb ", +par_results_csv --tag --lb 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 +par_results_csv --tag --lb ", +par_results_csv --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --tag --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --tag --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --tag --compress 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 H2 H1 +par_results_csv --tag --compress ", +par_results_csv --tag --compress 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 H2 11 +par_results_csv --tag --compress ", +par_results_csv --tag --compress 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 H2 12 +par_results_csv --tag --compress ", +par_results_csv --tag --compress 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 22 H1 +par_results_csv --tag --compress ", +par_results_csv --tag --compress 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11 +par_results_csv --tag --compress ", +par_results_csv --tag --compress 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12 +par_results_csv --tag --compress ", +par_results_csv --tag --compress 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 23 H1 +par_results_csv --tag --compress ", +par_results_csv --tag --compress 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11 +par_results_csv --tag --compress ", +par_results_csv --tag --compress 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 +par_results_csv --tag --compress ", +par_results_csv --tag Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --tag 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 H2 H1 +par_results_csv --tag ", +par_results_csv --tag 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 H2 11 +par_results_csv --tag ", +par_results_csv --tag 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 H2 12 +par_results_csv --tag ", +par_results_csv --tag 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 22 H1 +par_results_csv --tag ", +par_results_csv --tag 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11 +par_results_csv --tag ", +par_results_csv --tag 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 22 12 +par_results_csv --tag ", +par_results_csv --tag 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 23 H1 +par_results_csv --tag ", +par_results_csv --tag 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 23 11 +par_results_csv --tag ", +par_results_csv --tag 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 +par_results_csv --tag ", +par_results_csv --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --lb --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --lb --compress 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 +par_results_csv --lb --compress ", +par_results_csv --lb --compress 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 +par_results_csv --lb --compress ", +par_results_csv --lb --compress 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 +par_results_csv --lb --compress ", +par_results_csv --lb --compress 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 +par_results_csv --lb --compress ", +par_results_csv --lb --compress 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 +par_results_csv --lb --compress ", +par_results_csv --lb --compress 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 +par_results_csv --lb --compress ", +par_results_csv --lb --compress 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 +par_results_csv --lb --compress ", +par_results_csv --lb --compress 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 +par_results_csv --lb --compress ", +par_results_csv --lb --compress 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 +par_results_csv --lb --compress ", +par_results_csv --lb Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --lb 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 +par_results_csv --lb ", +par_results_csv --lb 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 +par_results_csv --lb ", +par_results_csv --lb 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 +par_results_csv --lb ", +par_results_csv --lb 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 +par_results_csv --lb ", +par_results_csv --lb 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 +par_results_csv --lb ", +par_results_csv --lb 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 +par_results_csv --lb ", +par_results_csv --lb 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 +par_results_csv --lb ", +par_results_csv --lb 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 +par_results_csv --lb ", +par_results_csv --lb 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 +par_results_csv --lb ", +par_results_csv --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv --compress 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 +par_results_csv --compress ", +par_results_csv --compress 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 +par_results_csv --compress ", +par_results_csv --compress 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 +par_results_csv --compress ", +par_results_csv --compress 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 +par_results_csv --compress ", +par_results_csv --compress 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 +par_results_csv --compress ", +par_results_csv --compress 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 +par_results_csv --compress ", +par_results_csv --compress 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 +par_results_csv --compress ", +par_results_csv --compress 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 +par_results_csv --compress ", +par_results_csv --compress 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 +par_results_csv --compress ", +par_results_csv Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr +par_results_csv 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 +par_results_csv ", +par_results_csv 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 +par_results_csv ", +par_results_csv 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 +par_results_csv ", +par_results_csv 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 +par_results_csv ", +par_results_csv 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 +par_results_csv ", +par_results_csv 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 +par_results_csv ", +par_results_csv 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 +par_results_csv ", +par_results_csv 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 +par_results_csv ", +par_results_csv 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 +par_results_csv ", par_round_robin_blocks bug #49664: --round-robin does not complete par_round_robin_blocks 2 par_testhalt ### testhalt --halt now,fail=0 diff --git a/testsuite/wanted-results/parallel-local-30s b/testsuite/wanted-results/parallel-local-30s index 27a58dad..8fe9edaa 100644 --- a/testsuite/wanted-results/parallel-local-30s +++ b/testsuite/wanted-results/parallel-local-30s @@ -1,9 +1,3 @@ -par_bug_48290 ### bug #48290: round-robin does not distribute data based on business -par_bug_48290 Jobslot 1 is 256 times slower than jobslot 4 and should get much less data -par_bug_48290 4 -par_bug_48290 3 -par_bug_48290 2 -par_bug_48290 1 par_linebuffer_matters_compress ### (--linebuffer) --compress --tag should give different output par_linebuffer_matters_compress OK: --linebuffer makes a difference par_linebuffer_matters_compress_tag ### (--linebuffer) --compress --tag should give different output diff --git a/testsuite/wanted-results/parallel-local-sql b/testsuite/wanted-results/parallel-local-sql index 4aff579e..5ea14f69 100644 --- a/testsuite/wanted-results/parallel-local-sql +++ b/testsuite/wanted-results/parallel-local-sql @@ -431,6 +431,461 @@ par_shuf $SQLITE :|sleep .3;echo 5 b|5|b|/tmp/parallel-bug49791-932/1/5/2/b/stdo par_shuf $SQLITE :|sleep .3;echo 5 c|5|c|/tmp/parallel-bug49791-932/1/5/2/c/stdout|/tmp/parallel-bug49791-932/1/5/2/c/stderr par_shuf $SQLITE :|sleep .3;echo 5 d|5|d|/tmp/parallel-bug49791-932/1/5/2/d/stdout|/tmp/parallel-bug49791-932/1/5/2/d/stderr par_shuf $SQLITE :|sleep .3;echo 5 e|5|e|/tmp/parallel-bug49791-932/1/5/2/e/stdout|/tmp/parallel-bug49791-932/1/5/2/e/stderr +p_wrapper par_sql_joblog \$MYSQL +par_sql_joblog $MYSQL ### should only give a single --joblog heading +par_sql_joblog $MYSQL ### --sqlmaster/--sqlworker +par_sql_joblog $MYSQL 1 a +par_sql_joblog $MYSQL 1 b +par_sql_joblog $MYSQL 1 c +par_sql_joblog $MYSQL 1 d +par_sql_joblog $MYSQL 1 e +par_sql_joblog $MYSQL 2 a +par_sql_joblog $MYSQL 2 b +par_sql_joblog $MYSQL 2 c +par_sql_joblog $MYSQL 2 d +par_sql_joblog $MYSQL 2 e +par_sql_joblog $MYSQL 3 a +par_sql_joblog $MYSQL 3 b +par_sql_joblog $MYSQL 3 c +par_sql_joblog $MYSQL 3 d +par_sql_joblog $MYSQL 3 e +par_sql_joblog $MYSQL 4 a +par_sql_joblog $MYSQL 4 b +par_sql_joblog $MYSQL 4 c +par_sql_joblog $MYSQL 4 d +par_sql_joblog $MYSQL 4 e +par_sql_joblog $MYSQL 5 a +par_sql_joblog $MYSQL 5 b +par_sql_joblog $MYSQL 5 c +par_sql_joblog $MYSQL 5 d +par_sql_joblog $MYSQL 5 e +par_sql_joblog $MYSQL Seq Host Starttime JobRuntime Send Receive Exitval Signal Command +par_sql_joblog $MYSQL 1 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 a +par_sql_joblog $MYSQL 2 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 b +par_sql_joblog $MYSQL 3 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 c +par_sql_joblog $MYSQL 4 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 d +par_sql_joblog $MYSQL 5 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 e +par_sql_joblog $MYSQL 6 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 a +par_sql_joblog $MYSQL 7 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 b +par_sql_joblog $MYSQL 8 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 c +par_sql_joblog $MYSQL 9 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 d +par_sql_joblog $MYSQL 10 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 e +par_sql_joblog $MYSQL 11 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 a +par_sql_joblog $MYSQL 12 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 b +par_sql_joblog $MYSQL 13 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 c +par_sql_joblog $MYSQL 14 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 d +par_sql_joblog $MYSQL 15 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 e +par_sql_joblog $MYSQL 16 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 a +par_sql_joblog $MYSQL 17 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 b +par_sql_joblog $MYSQL 18 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 c +par_sql_joblog $MYSQL 19 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 d +par_sql_joblog $MYSQL 20 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 e +par_sql_joblog $MYSQL 21 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 a +par_sql_joblog $MYSQL 22 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 b +par_sql_joblog $MYSQL 23 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 c +par_sql_joblog $MYSQL 24 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 d +par_sql_joblog $MYSQL 25 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 e +par_sql_joblog $MYSQL ### --sqlandworker +par_sql_joblog $MYSQL Seq Host Starttime JobRuntime Send Receive Exitval Signal Command +par_sql_joblog $MYSQL 1 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 a +par_sql_joblog $MYSQL 1 a +par_sql_joblog $MYSQL 1 b +par_sql_joblog $MYSQL 1 c +par_sql_joblog $MYSQL 1 d +par_sql_joblog $MYSQL 1 e +par_sql_joblog $MYSQL 2 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 b +par_sql_joblog $MYSQL 2 a +par_sql_joblog $MYSQL 2 b +par_sql_joblog $MYSQL 2 c +par_sql_joblog $MYSQL 2 d +par_sql_joblog $MYSQL 2 e +par_sql_joblog $MYSQL 3 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 c +par_sql_joblog $MYSQL 3 a +par_sql_joblog $MYSQL 3 b +par_sql_joblog $MYSQL 3 c +par_sql_joblog $MYSQL 3 d +par_sql_joblog $MYSQL 3 e +par_sql_joblog $MYSQL 4 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 d +par_sql_joblog $MYSQL 4 a +par_sql_joblog $MYSQL 4 b +par_sql_joblog $MYSQL 4 c +par_sql_joblog $MYSQL 4 d +par_sql_joblog $MYSQL 4 e +par_sql_joblog $MYSQL 5 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 e +par_sql_joblog $MYSQL 5 a +par_sql_joblog $MYSQL 5 b +par_sql_joblog $MYSQL 5 c +par_sql_joblog $MYSQL 5 d +par_sql_joblog $MYSQL 5 e +par_sql_joblog $MYSQL 6 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 a +par_sql_joblog $MYSQL 7 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 b +par_sql_joblog $MYSQL 8 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 c +par_sql_joblog $MYSQL 9 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 d +par_sql_joblog $MYSQL 10 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 e +par_sql_joblog $MYSQL 11 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 a +par_sql_joblog $MYSQL 12 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 b +par_sql_joblog $MYSQL 13 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 c +par_sql_joblog $MYSQL 14 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 d +par_sql_joblog $MYSQL 15 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 e +par_sql_joblog $MYSQL 16 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 a +par_sql_joblog $MYSQL 17 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 b +par_sql_joblog $MYSQL 18 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 c +par_sql_joblog $MYSQL 19 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 d +par_sql_joblog $MYSQL 20 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 e +par_sql_joblog $MYSQL 21 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 a +par_sql_joblog $MYSQL 22 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 b +par_sql_joblog $MYSQL 23 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 c +par_sql_joblog $MYSQL 24 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 d +par_sql_joblog $MYSQL 25 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 e +par_sql_joblog $MYSQL Exit=0 +par_sql_joblog $MYSQL Exit=0 +par_sql_joblog $MYSQL Host Command V1 V2 Stdout Stderr +par_sql_joblog $MYSQL : sleep .3;echo 1 a 1 a 1 a\n +par_sql_joblog $MYSQL : sleep .3;echo 1 b 1 b 1 b\n +par_sql_joblog $MYSQL : sleep .3;echo 1 c 1 c 1 c\n +par_sql_joblog $MYSQL : sleep .3;echo 1 d 1 d 1 d\n +par_sql_joblog $MYSQL : sleep .3;echo 1 e 1 e 1 e\n +par_sql_joblog $MYSQL : sleep .3;echo 2 a 2 a 2 a\n +par_sql_joblog $MYSQL : sleep .3;echo 2 b 2 b 2 b\n +par_sql_joblog $MYSQL : sleep .3;echo 2 c 2 c 2 c\n +par_sql_joblog $MYSQL : sleep .3;echo 2 d 2 d 2 d\n +par_sql_joblog $MYSQL : sleep .3;echo 2 e 2 e 2 e\n +par_sql_joblog $MYSQL : sleep .3;echo 3 a 3 a 3 a\n +par_sql_joblog $MYSQL : sleep .3;echo 3 b 3 b 3 b\n +par_sql_joblog $MYSQL : sleep .3;echo 3 c 3 c 3 c\n +par_sql_joblog $MYSQL : sleep .3;echo 3 d 3 d 3 d\n +par_sql_joblog $MYSQL : sleep .3;echo 3 e 3 e 3 e\n +par_sql_joblog $MYSQL : sleep .3;echo 4 a 4 a 4 a\n +par_sql_joblog $MYSQL : sleep .3;echo 4 b 4 b 4 b\n +par_sql_joblog $MYSQL : sleep .3;echo 4 c 4 c 4 c\n +par_sql_joblog $MYSQL : sleep .3;echo 4 d 4 d 4 d\n +par_sql_joblog $MYSQL : sleep .3;echo 4 e 4 e 4 e\n +par_sql_joblog $MYSQL : sleep .3;echo 5 a 5 a 5 a\n +par_sql_joblog $MYSQL : sleep .3;echo 5 b 5 b 5 b\n +par_sql_joblog $MYSQL : sleep .3;echo 5 c 5 c 5 c\n +par_sql_joblog $MYSQL : sleep .3;echo 5 d 5 d 5 d\n +par_sql_joblog $MYSQL : sleep .3;echo 5 e 5 e 5 e\n +p_wrapper par_sql_joblog \$PG +par_sql_joblog $PG ### should only give a single --joblog heading +par_sql_joblog $PG ### --sqlmaster/--sqlworker +par_sql_joblog $PG 1 a +par_sql_joblog $PG 1 b +par_sql_joblog $PG 1 c +par_sql_joblog $PG 1 d +par_sql_joblog $PG 1 e +par_sql_joblog $PG 2 a +par_sql_joblog $PG 2 b +par_sql_joblog $PG 2 c +par_sql_joblog $PG 2 d +par_sql_joblog $PG 2 e +par_sql_joblog $PG 3 a +par_sql_joblog $PG 3 b +par_sql_joblog $PG 3 c +par_sql_joblog $PG 3 d +par_sql_joblog $PG 3 e +par_sql_joblog $PG 4 a +par_sql_joblog $PG 4 b +par_sql_joblog $PG 4 c +par_sql_joblog $PG 4 d +par_sql_joblog $PG 4 e +par_sql_joblog $PG 5 a +par_sql_joblog $PG 5 b +par_sql_joblog $PG 5 c +par_sql_joblog $PG 5 d +par_sql_joblog $PG 5 e +par_sql_joblog $PG Seq Host Starttime JobRuntime Send Receive Exitval Signal Command +par_sql_joblog $PG 1 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 a +par_sql_joblog $PG 2 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 b +par_sql_joblog $PG 3 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 c +par_sql_joblog $PG 4 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 d +par_sql_joblog $PG 5 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 e +par_sql_joblog $PG 6 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 a +par_sql_joblog $PG 7 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 b +par_sql_joblog $PG 8 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 c +par_sql_joblog $PG 9 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 d +par_sql_joblog $PG 10 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 e +par_sql_joblog $PG 11 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 a +par_sql_joblog $PG 12 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 b +par_sql_joblog $PG 13 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 c +par_sql_joblog $PG 14 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 d +par_sql_joblog $PG 15 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 e +par_sql_joblog $PG 16 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 a +par_sql_joblog $PG 17 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 b +par_sql_joblog $PG 18 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 c +par_sql_joblog $PG 19 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 d +par_sql_joblog $PG 20 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 e +par_sql_joblog $PG 21 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 a +par_sql_joblog $PG 22 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 b +par_sql_joblog $PG 23 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 c +par_sql_joblog $PG 24 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 d +par_sql_joblog $PG 25 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 e +par_sql_joblog $PG ### --sqlandworker +par_sql_joblog $PG Seq Host Starttime JobRuntime Send Receive Exitval Signal Command +par_sql_joblog $PG 1 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 a +par_sql_joblog $PG 1 a +par_sql_joblog $PG 1 b +par_sql_joblog $PG 1 c +par_sql_joblog $PG 1 d +par_sql_joblog $PG 1 e +par_sql_joblog $PG 2 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 b +par_sql_joblog $PG 2 a +par_sql_joblog $PG 2 b +par_sql_joblog $PG 2 c +par_sql_joblog $PG 2 d +par_sql_joblog $PG 2 e +par_sql_joblog $PG 3 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 c +par_sql_joblog $PG 3 a +par_sql_joblog $PG 3 b +par_sql_joblog $PG 3 c +par_sql_joblog $PG 3 d +par_sql_joblog $PG 3 e +par_sql_joblog $PG 4 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 d +par_sql_joblog $PG 4 a +par_sql_joblog $PG 4 b +par_sql_joblog $PG 4 c +par_sql_joblog $PG 4 d +par_sql_joblog $PG 4 e +par_sql_joblog $PG 5 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 e +par_sql_joblog $PG 5 a +par_sql_joblog $PG 5 b +par_sql_joblog $PG 5 c +par_sql_joblog $PG 5 d +par_sql_joblog $PG 5 e +par_sql_joblog $PG 6 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 a +par_sql_joblog $PG 7 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 b +par_sql_joblog $PG 8 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 c +par_sql_joblog $PG 9 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 d +par_sql_joblog $PG 10 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 e +par_sql_joblog $PG 11 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 a +par_sql_joblog $PG 12 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 b +par_sql_joblog $PG 13 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 c +par_sql_joblog $PG 14 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 d +par_sql_joblog $PG 15 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 e +par_sql_joblog $PG 16 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 a +par_sql_joblog $PG 17 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 b +par_sql_joblog $PG 18 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 c +par_sql_joblog $PG 19 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 d +par_sql_joblog $PG 20 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 e +par_sql_joblog $PG 21 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 a +par_sql_joblog $PG 22 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 b +par_sql_joblog $PG 23 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 c +par_sql_joblog $PG 24 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 d +par_sql_joblog $PG 25 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 e +par_sql_joblog $PG Exit=0 +par_sql_joblog $PG Exit=0 +par_sql_joblog $PG host | command | v1 | v2 | stdout | stderr +par_sql_joblog $PG ------+-------------------+----+----+--------+-------- +par_sql_joblog $PG : | sleep .3;echo 1 a | 1 | a | 1 a +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 1 b | 1 | b | 1 b +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 1 c | 1 | c | 1 c +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 1 d | 1 | d | 1 d +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 1 e | 1 | e | 1 e +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 2 a | 2 | a | 2 a +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 2 b | 2 | b | 2 b +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 2 c | 2 | c | 2 c +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 2 d | 2 | d | 2 d +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 2 e | 2 | e | 2 e +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 3 a | 3 | a | 3 a +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 3 b | 3 | b | 3 b +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 3 c | 3 | c | 3 c +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 3 d | 3 | d | 3 d +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 3 e | 3 | e | 3 e +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 4 a | 4 | a | 4 a +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 4 b | 4 | b | 4 b +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 4 c | 4 | c | 4 c +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 4 d | 4 | d | 4 d +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 4 e | 4 | e | 4 e +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 5 a | 5 | a | 5 a +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 5 b | 5 | b | 5 b +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 5 c | 5 | c | 5 c +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 5 d | 5 | d | 5 d +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG : | sleep .3;echo 5 e | 5 | e | 5 e +| +par_sql_joblog $PG | | | | | +par_sql_joblog $PG (25 rows) +par_sql_joblog $PG +p_wrapper par_sql_joblog \$SQLITE +par_sql_joblog $SQLITE ### should only give a single --joblog heading +par_sql_joblog $SQLITE ### --sqlmaster/--sqlworker +par_sql_joblog $SQLITE 1 a +par_sql_joblog $SQLITE 1 b +par_sql_joblog $SQLITE 1 c +par_sql_joblog $SQLITE 1 d +par_sql_joblog $SQLITE 1 e +par_sql_joblog $SQLITE 2 a +par_sql_joblog $SQLITE 2 b +par_sql_joblog $SQLITE 2 c +par_sql_joblog $SQLITE 2 d +par_sql_joblog $SQLITE 2 e +par_sql_joblog $SQLITE 3 a +par_sql_joblog $SQLITE 3 b +par_sql_joblog $SQLITE 3 c +par_sql_joblog $SQLITE 3 d +par_sql_joblog $SQLITE 3 e +par_sql_joblog $SQLITE 4 a +par_sql_joblog $SQLITE 4 b +par_sql_joblog $SQLITE 4 c +par_sql_joblog $SQLITE 4 d +par_sql_joblog $SQLITE 4 e +par_sql_joblog $SQLITE 5 a +par_sql_joblog $SQLITE 5 b +par_sql_joblog $SQLITE 5 c +par_sql_joblog $SQLITE 5 d +par_sql_joblog $SQLITE 5 e +par_sql_joblog $SQLITE Seq Host Starttime JobRuntime Send Receive Exitval Signal Command +par_sql_joblog $SQLITE 1 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 a +par_sql_joblog $SQLITE 2 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 b +par_sql_joblog $SQLITE 3 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 c +par_sql_joblog $SQLITE 4 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 d +par_sql_joblog $SQLITE 5 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 e +par_sql_joblog $SQLITE 6 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 a +par_sql_joblog $SQLITE 7 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 b +par_sql_joblog $SQLITE 8 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 c +par_sql_joblog $SQLITE 9 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 d +par_sql_joblog $SQLITE 10 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 e +par_sql_joblog $SQLITE 11 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 a +par_sql_joblog $SQLITE 12 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 b +par_sql_joblog $SQLITE 13 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 c +par_sql_joblog $SQLITE 14 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 d +par_sql_joblog $SQLITE 15 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 e +par_sql_joblog $SQLITE 16 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 a +par_sql_joblog $SQLITE 17 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 b +par_sql_joblog $SQLITE 18 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 c +par_sql_joblog $SQLITE 19 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 d +par_sql_joblog $SQLITE 20 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 e +par_sql_joblog $SQLITE 21 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 a +par_sql_joblog $SQLITE 22 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 b +par_sql_joblog $SQLITE 23 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 c +par_sql_joblog $SQLITE 24 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 d +par_sql_joblog $SQLITE 25 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 e +par_sql_joblog $SQLITE ### --sqlandworker +par_sql_joblog $SQLITE Seq Host Starttime JobRuntime Send Receive Exitval Signal Command +par_sql_joblog $SQLITE 1 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 a +par_sql_joblog $SQLITE 1 a +par_sql_joblog $SQLITE 1 b +par_sql_joblog $SQLITE 1 c +par_sql_joblog $SQLITE 1 d +par_sql_joblog $SQLITE 1 e +par_sql_joblog $SQLITE 2 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 b +par_sql_joblog $SQLITE 2 a +par_sql_joblog $SQLITE 2 b +par_sql_joblog $SQLITE 2 c +par_sql_joblog $SQLITE 2 d +par_sql_joblog $SQLITE 2 e +par_sql_joblog $SQLITE 3 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 c +par_sql_joblog $SQLITE 3 a +par_sql_joblog $SQLITE 3 b +par_sql_joblog $SQLITE 3 c +par_sql_joblog $SQLITE 3 d +par_sql_joblog $SQLITE 3 e +par_sql_joblog $SQLITE 4 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 d +par_sql_joblog $SQLITE 4 a +par_sql_joblog $SQLITE 4 b +par_sql_joblog $SQLITE 4 c +par_sql_joblog $SQLITE 4 d +par_sql_joblog $SQLITE 4 e +par_sql_joblog $SQLITE 5 : 999.999 999.999 0 0 0 0 sleep .3;echo 1 e +par_sql_joblog $SQLITE 5 a +par_sql_joblog $SQLITE 5 b +par_sql_joblog $SQLITE 5 c +par_sql_joblog $SQLITE 5 d +par_sql_joblog $SQLITE 5 e +par_sql_joblog $SQLITE 6 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 a +par_sql_joblog $SQLITE 7 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 b +par_sql_joblog $SQLITE 8 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 c +par_sql_joblog $SQLITE 9 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 d +par_sql_joblog $SQLITE 10 : 999.999 999.999 0 0 0 0 sleep .3;echo 2 e +par_sql_joblog $SQLITE 11 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 a +par_sql_joblog $SQLITE 12 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 b +par_sql_joblog $SQLITE 13 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 c +par_sql_joblog $SQLITE 14 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 d +par_sql_joblog $SQLITE 15 : 999.999 999.999 0 0 0 0 sleep .3;echo 3 e +par_sql_joblog $SQLITE 16 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 a +par_sql_joblog $SQLITE 17 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 b +par_sql_joblog $SQLITE 18 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 c +par_sql_joblog $SQLITE 19 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 d +par_sql_joblog $SQLITE 20 : 999.999 999.999 0 0 0 0 sleep .3;echo 4 e +par_sql_joblog $SQLITE 21 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 a +par_sql_joblog $SQLITE 22 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 b +par_sql_joblog $SQLITE 23 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 c +par_sql_joblog $SQLITE 24 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 d +par_sql_joblog $SQLITE 25 : 999.999 999.999 0 0 0 0 sleep .3;echo 5 e +par_sql_joblog $SQLITE Exit=0 +par_sql_joblog $SQLITE Exit=0 +par_sql_joblog $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_sql_joblog $SQLITE :|sleep .3;echo 1 a|1|a|1 a +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 1 b|1|b|1 b +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 1 c|1|c|1 c +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 1 d|1|d|1 d +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 1 e|1|e|1 e +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 2 a|2|a|2 a +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 2 b|2|b|2 b +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 2 c|2|c|2 c +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 2 d|2|d|2 d +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 2 e|2|e|2 e +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 3 a|3|a|3 a +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 3 b|3|b|3 b +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 3 c|3|c|3 c +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 3 d|3|d|3 d +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 3 e|3|e|3 e +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 4 a|4|a|4 a +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 4 b|4|b|4 b +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 4 c|4|c|4 c +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 4 d|4|d|4 d +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 4 e|4|e|4 e +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 5 a|5|a|5 a +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 5 b|5|b|5 b +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 5 c|5|c|5 c +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 5 d|5|d|5 d +par_sql_joblog $SQLITE | +par_sql_joblog $SQLITE :|sleep .3;echo 5 e|5|e|5 e +par_sql_joblog $SQLITE | p_wrapper par_sqlandworker \$MYSQL par_sqlandworker $MYSQL Exit=0 par_sqlandworker $MYSQL Exit=0 @@ -575,92 +1030,142 @@ p_wrapper par_sqlandworker_compress_linebuffer_tag \$MYSQL par_sqlandworker_compress_linebuffer_tag $MYSQL Exit=0 par_sqlandworker_compress_linebuffer_tag $MYSQL Exit=0 par_sqlandworker_compress_linebuffer_tag $MYSQL Host Command V1 V2 Stdout Stderr -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 1 a 1 a NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 1 b 1 b NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 1 c 1 c NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 1 d 1 d NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 1 e 1 e NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 2 a 2 a NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 2 b 2 b NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 2 c 2 c NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 2 d 2 d NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 2 e 2 e NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 3 a 3 a NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 3 b 3 b NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 3 c 3 c NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 3 d 3 d NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 3 e 3 e NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 4 a 4 a NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 4 b 4 b NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 4 c 4 c NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 4 d 4 d NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 4 e 4 e NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 5 a 5 a NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 5 b 5 b NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 5 c 5 c NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 5 d 5 d NULL NULL -par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 5 e 5 e NULL NULL +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 1 a 1 a 1 a\t1 a\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 1 b 1 b 1 b\t1 b\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 1 c 1 c 1 c\t1 c\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 1 d 1 d 1 d\t1 d\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 1 e 1 e 1 e\t1 e\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 2 a 2 a 2 a\t2 a\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 2 b 2 b 2 b\t2 b\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 2 c 2 c 2 c\t2 c\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 2 d 2 d 2 d\t2 d\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 2 e 2 e 2 e\t2 e\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 3 a 3 a 3 a\t3 a\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 3 b 3 b 3 b\t3 b\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 3 c 3 c 3 c\t3 c\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 3 d 3 d 3 d\t3 d\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 3 e 3 e 3 e\t3 e\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 4 a 4 a 4 a\t4 a\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 4 b 4 b 4 b\t4 b\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 4 c 4 c 4 c\t4 c\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 4 d 4 d 4 d\t4 d\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 4 e 4 e 4 e\t4 e\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 5 a 5 a 5 a\t5 a\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 5 b 5 b 5 b\t5 b\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 5 c 5 c 5 c\t5 c\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 5 d 5 d 5 d\t5 d\n +par_sqlandworker_compress_linebuffer_tag $MYSQL : sleep .3;echo 5 e 5 e 5 e\t5 e\n p_wrapper par_sqlandworker_compress_linebuffer_tag \$PG par_sqlandworker_compress_linebuffer_tag $PG Exit=0 par_sqlandworker_compress_linebuffer_tag $PG Exit=0 -par_sqlandworker_compress_linebuffer_tag $PG host | command | v1 | v2 | stdout | stderr -par_sqlandworker_compress_linebuffer_tag $PG ------+-------------------+----+----+--------+-------- -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 1 a | 1 | a | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 1 b | 1 | b | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 1 c | 1 | c | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 1 d | 1 | d | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 1 e | 1 | e | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 2 a | 2 | a | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 2 b | 2 | b | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 2 c | 2 | c | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 2 d | 2 | d | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 2 e | 2 | e | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 3 a | 3 | a | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 3 b | 3 | b | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 3 c | 3 | c | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 3 d | 3 | d | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 3 e | 3 | e | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 4 a | 4 | a | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 4 b | 4 | b | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 4 c | 4 | c | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 4 d | 4 | d | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 4 e | 4 | e | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 5 a | 5 | a | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 5 b | 5 | b | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 5 c | 5 | c | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 5 d | 5 | d | | -par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 5 e | 5 | e | | +par_sqlandworker_compress_linebuffer_tag $PG host | command | v1 | v2 | stdout | stderr +par_sqlandworker_compress_linebuffer_tag $PG ------+-------------------+----+----+-------------+-------- +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 1 a | 1 | a | 1 a 1 a+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 1 b | 1 | b | 1 b 1 b+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 1 c | 1 | c | 1 c 1 c+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 1 d | 1 | d | 1 d 1 d+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 1 e | 1 | e | 1 e 1 e+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 2 a | 2 | a | 2 a 2 a+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 2 b | 2 | b | 2 b 2 b+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 2 c | 2 | c | 2 c 2 c+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 2 d | 2 | d | 2 d 2 d+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 2 e | 2 | e | 2 e 2 e+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 3 a | 3 | a | 3 a 3 a+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 3 b | 3 | b | 3 b 3 b+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 3 c | 3 | c | 3 c 3 c+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 3 d | 3 | d | 3 d 3 d+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 3 e | 3 | e | 3 e 3 e+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 4 a | 4 | a | 4 a 4 a+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 4 b | 4 | b | 4 b 4 b+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 4 c | 4 | c | 4 c 4 c+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 4 d | 4 | d | 4 d 4 d+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 4 e | 4 | e | 4 e 4 e+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 5 a | 5 | a | 5 a 5 a+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 5 b | 5 | b | 5 b 5 b+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 5 c | 5 | c | 5 c 5 c+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 5 d | 5 | d | 5 d 5 d+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG : | sleep .3;echo 5 e | 5 | e | 5 e 5 e+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | par_sqlandworker_compress_linebuffer_tag $PG (25 rows) par_sqlandworker_compress_linebuffer_tag $PG p_wrapper par_sqlandworker_compress_linebuffer_tag \$SQLITE par_sqlandworker_compress_linebuffer_tag $SQLITE Exit=0 par_sqlandworker_compress_linebuffer_tag $SQLITE Exit=0 par_sqlandworker_compress_linebuffer_tag $SQLITE Host|Command|V1|V2|Stdout|Stderr -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 1 a|1|a|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 1 b|1|b|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 1 c|1|c|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 1 d|1|d|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 1 e|1|e|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 2 a|2|a|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 2 b|2|b|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 2 c|2|c|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 2 d|2|d|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 2 e|2|e|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 3 a|3|a|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 3 b|3|b|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 3 c|3|c|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 3 d|3|d|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 3 e|3|e|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 4 a|4|a|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 4 b|4|b|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 4 c|4|c|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 4 d|4|d|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 4 e|4|e|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 5 a|5|a|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 5 b|5|b|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 5 c|5|c|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 5 d|5|d|| -par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 5 e|5|e|| +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 1 a|1|a|1 a 1 a +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 1 b|1|b|1 b 1 b +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 1 c|1|c|1 c 1 c +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 1 d|1|d|1 d 1 d +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 1 e|1|e|1 e 1 e +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 2 a|2|a|2 a 2 a +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 2 b|2|b|2 b 2 b +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 2 c|2|c|2 c 2 c +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 2 d|2|d|2 d 2 d +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 2 e|2|e|2 e 2 e +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 3 a|3|a|3 a 3 a +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 3 b|3|b|3 b 3 b +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 3 c|3|c|3 c 3 c +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 3 d|3|d|3 d 3 d +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 3 e|3|e|3 e 3 e +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 4 a|4|a|4 a 4 a +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 4 b|4|b|4 b 4 b +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 4 c|4|c|4 c 4 c +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 4 d|4|d|4 d 4 d +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 4 e|4|e|4 e 4 e +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 5 a|5|a|5 a 5 a +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 5 b|5|b|5 b 5 b +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 5 c|5|c|5 c 5 c +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 5 d|5|d|5 d 5 d +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE :|sleep .3;echo 5 e|5|e|5 e 5 e +par_sqlandworker_compress_linebuffer_tag $SQLITE | p_wrapper par_sqlandworker_linebuffer \$MYSQL par_sqlandworker_linebuffer $MYSQL Exit=0 par_sqlandworker_linebuffer $MYSQL Exit=0 @@ -1505,31 +2010,31 @@ p_wrapper par_sqlandworker_unbuffer \$MYSQL par_sqlandworker_unbuffer $MYSQL Exit=0 par_sqlandworker_unbuffer $MYSQL Exit=0 par_sqlandworker_unbuffer $MYSQL Host Command V1 V2 Stdout Stderr -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 1 a 1 a NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 1 b 1 b NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 1 c 1 c NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 1 d 1 d NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 1 e 1 e NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 2 a 2 a NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 2 b 2 b NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 2 c 2 c NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 2 d 2 d NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 2 e 2 e NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 3 a 3 a NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 3 b 3 b NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 3 c 3 c NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 3 d 3 d NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 3 e 3 e NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 4 a 4 a NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 4 b 4 b NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 4 c 4 c NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 4 d 4 d NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 4 e 4 e NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 5 a 5 a NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 5 b 5 b NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 5 c 5 c NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 5 d 5 d NULL NULL -par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 5 e 5 e NULL NULL +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 1 a 1 a +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 1 b 1 b +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 1 c 1 c +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 1 d 1 d +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 1 e 1 e +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 2 a 2 a +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 2 b 2 b +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 2 c 2 c +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 2 d 2 d +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 2 e 2 e +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 3 a 3 a +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 3 b 3 b +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 3 c 3 c +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 3 d 3 d +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 3 e 3 e +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 4 a 4 a +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 4 b 4 b +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 4 c 4 c +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 4 d 4 d +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 4 e 4 e +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 5 a 5 a +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 5 b 5 b +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 5 c 5 c +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 5 d 5 d +par_sqlandworker_unbuffer $MYSQL : sleep .3;echo 5 e 5 e p_wrapper par_sqlandworker_unbuffer \$PG par_sqlandworker_unbuffer $PG Exit=0 par_sqlandworker_unbuffer $PG Exit=0 diff --git a/testsuite/wanted-results/parallel-local-ssh7 b/testsuite/wanted-results/parallel-local-ssh7 index e98e473e..a2c20b2e 100644 --- a/testsuite/wanted-results/parallel-local-ssh7 +++ b/testsuite/wanted-results/parallel-local-ssh7 @@ -89,67 +89,67 @@ par_csh_funky Funky-  !"#$%&'()*+,-./0123456789:;<= par_csh_funky func_echo: Command not found. par_csh_funky \\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ par_csh_man ### csh -par_csh_man ### From man env_parallel -par_csh_man aliases work -par_csh_man aliases work -par_csh_man aliases work -par_csh_man aliases work -par_csh_man variables work -par_csh_man variables work -par_csh_man variables work -par_csh_man variables work -par_csh_man arrays -par_csh_man work, -par_csh_man too -par_csh_man arrays -par_csh_man work, -par_csh_man too -par_csh_man arrays -par_csh_man work, -par_csh_man too -par_csh_man arrays -par_csh_man work, -par_csh_man too -par_csh_man exit value 2 should be 2 -par_csh_man Unknown option: no-such-option -par_csh_man Usage: par_csh_man -par_csh_man parallel [options] [command [arguments]] < list_of_arguments -par_csh_man parallel [options] [command [arguments]] (::: arguments|:::: argfile(s))... -par_csh_man cat ... | parallel --pipe [options] [command [arguments]] par_csh_man -par_csh_man -j n Run n jobs in parallel -par_csh_man -k Keep same order -par_csh_man -X Multiple arguments with context replace -par_csh_man --colsep regexp Split input on regexp for positional replacements -par_csh_man {} {.} {/} {/.} {#} {%} {= perl code =} Replacement strings -par_csh_man {3} {3.} {3/} {3/.} {=3 perl code =} Positional replacement strings -par_csh_man With --plus: {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..} = +par_csh_man +par_csh_man +par_csh_man +par_csh_man +par_csh_man +par_csh_man +par_csh_man par_csh_man {+/}/{/..}.{+..} = {...}.{+...} = {+/}/{/...}.{+...} -par_csh_man -par_csh_man -S sshlogin Example: foo@server.example.com -par_csh_man --slf .. Use ~/.parallel/sshloginfile as the list of sshlogins -par_csh_man --trc {}.bar Shorthand for --transfer --return {}.bar --cleanup -par_csh_man --onall Run the given command with argument on all sshlogins +par_csh_man ;login: The USENIX Magazine, February 2011:42-47. +par_csh_man O. Tange (2011): GNU Parallel - The Command-Line Power Tool, +par_csh_man ### From man env_parallel +par_csh_man --colsep regexp Split input on regexp for positional replacements par_csh_man --nonall Run the given command with no arguments on all sshlogins -par_csh_man +par_csh_man --onall Run the given command with argument on all sshlogins par_csh_man --pipe Split stdin (standard input) to multiple jobs. par_csh_man --recend str Record end separator for --pipe. par_csh_man --recstart str Record start separator for --pipe. -par_csh_man -par_csh_man See 'man parallel' for details -par_csh_man +par_csh_man --slf .. Use ~/.parallel/sshloginfile as the list of sshlogins +par_csh_man --trc {}.bar Shorthand for --transfer --return {}.bar --cleanup +par_csh_man -S sshlogin Example: foo@server.example.com +par_csh_man -X Multiple arguments with context replace +par_csh_man -j n Run n jobs in parallel +par_csh_man -k Keep same order par_csh_man Academic tradition requires you to cite works you base your article on. -par_csh_man When using programs that use GNU Parallel to process data for publication -par_csh_man please cite: -par_csh_man -par_csh_man O. Tange (2011): GNU Parallel - The Command-Line Power Tool, -par_csh_man ;login: The USENIX Magazine, February 2011:42-47. -par_csh_man -par_csh_man This helps funding further development; AND IT WON'T COST YOU A CENT. par_csh_man If you pay 10000 EUR you should feel free to use GNU Parallel without citing. -par_csh_man +par_csh_man See 'man parallel' for details +par_csh_man This helps funding further development; AND IT WON'T COST YOU A CENT. +par_csh_man Unknown option: no-such-option +par_csh_man Usage: +par_csh_man When using programs that use GNU Parallel to process data for publication +par_csh_man With --plus: {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..} = +par_csh_man aliases work +par_csh_man aliases work +par_csh_man aliases work +par_csh_man aliases work +par_csh_man arrays +par_csh_man arrays +par_csh_man arrays +par_csh_man arrays +par_csh_man cat ... | parallel --pipe [options] [command [arguments]] par_csh_man exit value -1 should be 255 +par_csh_man exit value 2 should be 2 +par_csh_man parallel [options] [command [arguments]] (::: arguments|:::: argfile(s))... +par_csh_man parallel [options] [command [arguments]] < list_of_arguments +par_csh_man please cite: +par_csh_man too +par_csh_man too +par_csh_man too +par_csh_man too +par_csh_man variables work +par_csh_man variables work +par_csh_man variables work +par_csh_man variables work +par_csh_man work, +par_csh_man work, +par_csh_man work, +par_csh_man work, +par_csh_man {3} {3.} {3/} {3/.} {=3 perl code =} Positional replacement strings +par_csh_man {} {.} {/} {/.} {#} {%} {= perl code =} Replacement strings par_csh_underscore ### csh par_csh_underscore ### Testing of --env _ par_csh_underscore #: Command not found.