[med-svn] [sra-sdk] 03/04: Imported Upstream version 2.6.3

Andreas Tille tille at debian.org
Mon Jun 6 09:28:28 UTC 2016


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository sra-sdk.

commit a32a2f5898a9bc909b450eb568ccb8b487808dfb
Author: Andreas Tille <tille at debian.org>
Date:   Mon Jun 6 11:25:41 2016 +0200

    Imported Upstream version 2.6.3
---
 CHANGES                                            |  13 ++
 CHANGES.md                                         |  12 ++
 setup/package.prl                                  |   2 +-
 test/general-loader/expected/2.stderr              |   4 +-
 test/general-loader/expected/2packed.stderr        |   4 +-
 tools/align-info/align-info.vers                   |   2 +-
 tools/align-info/align-info.vers.h                 |   2 +-
 tools/bam-loader/Makefile                          |  20 ++
 tools/bam-loader/alignment-writer.c                |  26 ++-
 tools/bam-loader/bam-load.vers                     |   2 +-
 tools/bam-loader/bam.c                             | 235 +++++++++++++++------
 tools/bam-loader/bam.h                             |   6 +-
 tools/bam-loader/loader-imp.c                      | 129 ++++++++---
 tools/bam-loader/reference-writer.c                |  15 +-
 tools/bam-loader/reference-writer.h                |   2 +
 tools/bam-loader/samview.c                         | 109 ++++++++++
 .../fastdump.vers => bam-loader/samview.vers}      |   0
 tools/cache-mgr/cache-mgr.vers                     |   2 +-
 tools/cache-mgr/cache-mgr.vers.h                   |   2 +-
 tools/ccextract/ccextract.vers                     |   2 +-
 tools/cg-load/cg-load.vers                         |   2 +-
 tools/copycat/copycat.vers                         |   2 +-
 tools/fastdump/fastdump.vers                       |   2 +-
 tools/fastq-dump/fastq-dump.vers                   |   2 +-
 tools/fastq-loader/latf-load.vers                  |   2 +-
 tools/fastq-loader/latf-load.vers.h                |   2 +-
 tools/fuse/remote-fuser.vers                       |   2 +-
 tools/fuse/sra-fuser-test.vers                     |   2 +-
 tools/fuse/sra-fuser-test.vers.h                   |   2 +-
 tools/fuse/sra-fuser.vers                          |   2 +-
 tools/fuse/sra-makeidx.vers                        |   2 +-
 tools/general-loader/general-loader.vers           |   2 +-
 tools/general-loader/general-loader.vers.h         |   2 +-
 tools/general-loader/libgeneral-writer.vers        |   2 +-
 tools/kar/kar.vers                                 |   2 +-
 tools/kar/kar.vers.h                               |   2 +-
 tools/kar/sra-kar.vers                             |   2 +-
 tools/kar/sra-kar.vers.h                           |   2 +-
 tools/keyring-srv/keyring-srv.vers                 |   2 +-
 tools/kqsh/kqsh.vers                               |   2 +-
 tools/nenctool/nenctest.vers                       |   2 +-
 tools/nenctool/nenctool.vers                       |   2 +-
 tools/nencvalid/nencvalid.vers                     |   2 +-
 tools/pacbio-load/pacbio-load.vers                 |   2 +-
 tools/pileup-stats/pileup-stats.vers               |   2 +-
 tools/prefetch/prefetch.vers                       |   2 +-
 tools/prefetch/prefetch.vers.h                     |   2 +-
 tools/qual-recalib-stat/qual-recalib-stat.vers     |   2 +-
 tools/qual-recalib-stat/qual-recalib-stat.vers.h   |   2 +-
 tools/rd-filter-redact/rd-filter-redact.vers       |   2 +-
 tools/rd-filter-redact/read-filter-redact.vers     |   2 +-
 tools/rd-filter-redact/read-filter-redact.vers.h   |   2 +-
 tools/rd-filter-redact/test-read-write-cursor.vers |   2 +-
 tools/ref-variation/ref-variation.vers             |   2 +-
 tools/ref-variation/ref-variation.vers.h           |   2 +-
 tools/ref-variation/var-expand.vers                |   2 +-
 tools/ref-variation/var-expand.vers.h              |   2 +-
 tools/refseq-load/refseq-load.vers                 |   1 -
 tools/sra-dump/abi-dump.vers                       |   2 +-
 tools/sra-dump/abi-dump.vers.h                     |   2 +-
 tools/sra-dump/fastq-dump.vers                     |   2 +-
 tools/sra-dump/fastq-dump.vers.h                   |   2 +-
 tools/sra-dump/illumina-dump.vers                  |   2 +-
 tools/sra-dump/illumina-dump.vers.h                |   2 +-
 tools/sra-dump/sff-dump.vers                       |   2 +-
 tools/sra-dump/sff-dump.vers.h                     |   2 +-
 tools/sra-dump/sra-dump.vers                       |   2 +-
 tools/sra-load/abi-load.vers                       |   2 +-
 tools/sra-load/fastq-load.vers                     |   2 +-
 tools/sra-load/helicos-load.vers                   |   2 +-
 tools/sra-load/illumina-load.vers                  |   2 +-
 tools/sra-load/pacbio-loadxml.vers                 |   2 +-
 tools/sra-load/sff-load.vers                       |   2 +-
 tools/sra-load/srf-load.vers                       |   2 +-
 tools/sra-pileup/sam-dump.vers                     |   2 +-
 tools/sra-pileup/sam-dump.vers.h                   |   2 +-
 tools/sra-pileup/sam-dump2.vers                    |   2 +-
 tools/sra-pileup/sra-pileup.vers                   |   2 +-
 tools/sra-pileup/sra-pileup.vers.h                 |   2 +-
 tools/sra-sort/sra-sort.vers                       |   2 +-
 tools/sra-stat/sra-stat.vers                       |   2 +-
 tools/sra-stat/sra-stat.vers.h                     |   2 +-
 tools/sra/table-vers.vers                          |   2 +-
 tools/srapath/srapath.vers                         |   2 +-
 tools/srapath/srapath.vers.h                       |   2 +-
 tools/update-schema/vdb-update-schema.vers         |   2 +-
 tools/util/kdb-index.vers                          |   2 +-
 tools/util/kdbmeta.vers                            |   2 +-
 tools/util/kdbmeta.vers.h                          |   2 +-
 tools/util/md5cp.vers                              |   2 +-
 tools/util/md5cp.vers.h                            |   2 +-
 tools/util/pacbio-correct.vers                     |   2 +-
 tools/util/rcexplain.vers                          |   2 +-
 tools/util/rcexplain.vers.h                        |   2 +-
 tools/util/rowwritetest.vers                       |   2 +-
 tools/util/schema-replace.vers                     |   2 +-
 tools/util/schema-replace.vers.h                   |   2 +-
 tools/util/test-sra.vers                           |   2 +-
 tools/util/test-sra.vers.h                         |   2 +-
 tools/util/testld.vers                             |   2 +-
 tools/util/txt2kdb.vers                            |   2 +-
 tools/util/vdb-lock.vers                           |   2 +-
 tools/util/vdb-lock.vers.h                         |   2 +-
 tools/util/vdb-passwd.vers                         |   2 +-
 tools/util/vdb-passwd.vers.h                       |   2 +-
 tools/util/vdb-unlock.vers                         |   2 +-
 tools/util/vdb-unlock.vers.h                       |   2 +-
 tools/vcf-loader/vcf-load.vers                     |   2 +-
 tools/vdb-config/vdb-config.vers                   |   2 +-
 tools/vdb-config/vdb-config.vers.h                 |   2 +-
 tools/vdb-copy/vdb-copy.vers                       |   2 +-
 tools/vdb-copy/vdb-copy.vers.h                     |   2 +-
 tools/vdb-decrypt/vdb-decrypt.vers                 |   2 +-
 tools/vdb-decrypt/vdb-decrypt.vers.h               |   2 +-
 tools/vdb-decrypt/vdb-encrypt.vers                 |   2 +-
 tools/vdb-decrypt/vdb-encrypt.vers.h               |   2 +-
 tools/vdb-dump/vdb-boot.vers                       |   2 +-
 tools/vdb-dump/vdb-dump.vers                       |   2 +-
 tools/vdb-dump/vdb-dump.vers.h                     |   2 +-
 tools/vdb-validate/check-corrupt.vers              |   2 +-
 tools/vdb-validate/check-corrupt.vers.h            |   2 +-
 tools/vdb-validate/vdb-validate.vers               |   2 +-
 tools/vdb-validate/vdb-validate.vers.h             |   2 +-
 123 files changed, 565 insertions(+), 229 deletions(-)

diff --git a/CHANGES b/CHANGES
index f406ba5..a209cef 100644
--- a/CHANGES
+++ b/CHANGES
@@ -26,6 +26,19 @@
 The NCBI SRA Software Development Kit
 Contact: sra-tools at ncbi.nlm.nih.gov
 
+NCBI External Developer Release: SRA Toolkit 2.6.3
+May 25, 2016
+
+  bam-load: Corrects an optimization used to compare read lengths when lengths are greater than 255
+  bam-load: alignments which are below the minimum match count but with at least 1/2 of the aligned bases matching are accepted
+  bam-load: improved performance of SAM parsing code
+  bam-load: non-fatal result codes no longer cause the reader thread to quit early
+  bam-load: will NOT do spot assembly using hard clipped secondary alignments even when make-spots-with-secondary is enabled;
+            WILL do spot assembly using hard-clipped secondary alignments when defer-secondary is enabled
+  build: MSVS 2013 toolset (12.0) is now supported across all repositories
+  vdb: Fixed a bound on memory cache that would never flush under certain access modes
+
+
 NCBI External Developer Release: SRA Toolkit 2.6.2
 April 20, 2016
 
diff --git a/CHANGES.md b/CHANGES.md
index d0f49b0..147ff8c 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,4 +1,16 @@
 # NCBI External Developer Release:
+
+## SRA Toolkit 2.6.3
+**May 25, 2016**
+
+  **bam-load**: Corrects an optimization used to compare read lengths when lengths are greater than 255
+  **bam-load**: alignments which are below the minimum match count but with at least 1/2 of the aligned bases matching are accepted
+  **bam-load**: improved performance of SAM parsing code
+  **bam-load**: non-fatal result codes no longer cause the reader thread to quit early
+  **bam-load**: will NOT do spot assembly using hard clipped secondary alignments even when make-spots-with-secondary is enabled; WILL do spot assembly using hard-clipped secondary alignments when defer-secondary is enabled
+  **build**: MSVS 2013 toolset (12.0) is now supported across all repositories
+  **vdb**: Fixed a bound on memory cache that would never flush under certain access modes
+
 ## SRA Toolkit 2.6.2
 **April 20, 2016**
 
diff --git a/setup/package.prl b/setup/package.prl
index 2f6b782..7fdb755 100644
--- a/setup/package.prl
+++ b/setup/package.prl
@@ -1,6 +1,6 @@
 ################################################################################
 sub PACKAGE      { 'sra-tools' }
-sub VERSION      { '2.6.2' }
+sub VERSION      { '2.6.3' }
 sub PACKAGE_TYPE { 'B' }
 sub PACKAGE_NAME { 'SRA-TOOLS' }
 sub PACKAGE_NAMW { 'SRATOOLS' }
diff --git a/test/general-loader/expected/2.stderr b/test/general-loader/expected/2.stderr
index 9851334..0e8df07 100644
--- a/test/general-loader/expected/2.stderr
+++ b/test/general-loader/expected/2.stderr
@@ -1,2 +1,2 @@
-general-loader.2.6.2 err: general-loader: error "something is wrong"
-general-loader.2.6.2 err: error exists while reading file - load failed
+general-loader.2.6.3 err: general-loader: error "something is wrong"
+general-loader.2.6.3 err: error exists while reading file - load failed
diff --git a/test/general-loader/expected/2packed.stderr b/test/general-loader/expected/2packed.stderr
index 9851334..0e8df07 100644
--- a/test/general-loader/expected/2packed.stderr
+++ b/test/general-loader/expected/2packed.stderr
@@ -1,2 +1,2 @@
-general-loader.2.6.2 err: general-loader: error "something is wrong"
-general-loader.2.6.2 err: error exists while reading file - load failed
+general-loader.2.6.3 err: general-loader: error "something is wrong"
+general-loader.2.6.3 err: error exists while reading file - load failed
diff --git a/tools/align-info/align-info.vers b/tools/align-info/align-info.vers
index 097a15a..ec1cf33 100644
--- a/tools/align-info/align-info.vers
+++ b/tools/align-info/align-info.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/align-info/align-info.vers.h b/tools/align-info/align-info.vers.h
index 15c01a7..f04bfe1 100644
--- a/tools/align-info/align-info.vers.h
+++ b/tools/align-info/align-info.vers.h
@@ -1 +1 @@
-#define ALIGN_INFO_VERS 0x02060002
+#define ALIGN_INFO_VERS 0x02060003
diff --git a/tools/bam-loader/Makefile b/tools/bam-loader/Makefile
index 5a27e06..a4b0a47 100644
--- a/tools/bam-loader/Makefile
+++ b/tools/bam-loader/Makefile
@@ -29,6 +29,7 @@ TOP ?= $(abspath ../..)
 MODULE = tools/bam-loader
 
 INT_TOOLS = \
+	samview
 
 EXT_TOOLS = \
 	bam-load 
@@ -102,3 +103,22 @@ BAMLOAD_LIB = \
 $(BINDIR)/bam-load: $(BAMLOAD_OBJ)
 	$(LP) --exe --vers $(SRCDIR) -o $@ $^ $(BAMLOAD_LIB)
 
+
+#-------------------------------------------------------------------------------
+# samview
+#
+SAMVIEW_SRC = \
+	bam \
+	samview
+
+SAMVIEW_OBJ = \
+	$(addsuffix .$(OBJX),$(SAMVIEW_SRC))
+
+SAMVIEW_LIB = \
+	-lkapp \
+	-sncbi-vdb \
+	-lm
+
+$(BINDIR)/samview: $(SAMVIEW_OBJ)
+	$(LP) --exe --vers $(SRCDIR) -o $@ $^ $(SAMVIEW_LIB)
+
diff --git a/tools/bam-loader/alignment-writer.c b/tools/bam-loader/alignment-writer.c
index 999c7d1..6e93b7f 100644
--- a/tools/bam-loader/alignment-writer.c
+++ b/tools/bam-loader/alignment-writer.c
@@ -120,18 +120,24 @@ rc_t AlignmentGetSpotKey(Alignment *const self, uint64_t * keyId)
     
     switch (self->st) {
     case 0:
-        rc = TableWriterAlgn_TmpKeyStart(self->tbl[tblPrimary]);
-        if (rc)
-            break;
+        if (self->tbl[tblPrimary]) {
+            rc = TableWriterAlgn_TmpKeyStart(self->tbl[tblPrimary]);
+            if (rc)
+                break;
+        }
         self->rowId = 0;
         ++self->st;
     case 1:
-        rc = TableWriterAlgn_TmpKey(self->tbl[tblPrimary], ++self->rowId, keyId);
-        if (rc == 0)
-            break;
-        ++self->st;
-        if (GetRCState(rc) != rcNotFound || GetRCObject(rc) != rcRow || self->tbl[tblSecondary] == NULL)
-            break;
+        if (self->tbl[tblPrimary]) {
+            rc = TableWriterAlgn_TmpKey(self->tbl[tblPrimary], ++self->rowId, keyId);
+            if (rc == 0)
+                break;
+            ++self->st;
+            if (GetRCState(rc) != rcNotFound || GetRCObject(rc) != rcRow || self->tbl[tblSecondary] == NULL)
+                break;
+        }
+        else
+            ++self->st;
     case 2:
         rc = TableWriterAlgn_TmpKeyStart(self->tbl[tblSecondary]);
         if (rc)
@@ -167,7 +173,7 @@ rc_t AlignmentWriteSpotId(Alignment * const self, int64_t const spotId)
 
 rc_t AlignmentWhack(Alignment * const self, bool const commit) 
 {
-    rc_t const rc = TableWriterAlgn_Whack(self->tbl[tblPrimary], commit, NULL);
+    rc_t const rc = self->tbl[tblPrimary] ? TableWriterAlgn_Whack(self->tbl[tblPrimary], commit, NULL) : 0;
     rc_t const rc2 = self->tbl[tblSecondary] ? TableWriterAlgn_Whack(self->tbl[tblSecondary], commit | (rc == 0), NULL) : 0;
 
     VDatabaseRelease(self->db);
diff --git a/tools/bam-loader/bam-load.vers b/tools/bam-loader/bam-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/bam-loader/bam-load.vers
+++ b/tools/bam-loader/bam-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/bam-loader/bam.c b/tools/bam-loader/bam.c
index 8d544f7..c32ad49 100644
--- a/tools/bam-loader/bam.c
+++ b/tools/bam-loader/bam.c
@@ -48,6 +48,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+#include <math.h>
 #include <assert.h>
 #if 1
 /*_DEBUGGING*/
@@ -1293,7 +1294,7 @@ static rc_t ProcessSAMHeader(BAM_File *self, char const substitute[])
         void *const tmp = headerText;
         int const ch = SAMFileRead1(file);
         
-        if (ch < 0)
+        if (ch == -1)
             return SAMFileLastError(file);
         
         if (st == 0) {
@@ -1797,12 +1798,12 @@ rc_t BAM_FileReadNoCopy(BAM_File *const self, unsigned actsize[], BAM_Alignment
         if ((int)GetRCObject(rc) == rcData && GetRCState(rc) == rcInsufficient)
         {
             self->eof = true;
-            return RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
+            return SILENT_RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
         }
         return rc;
     }
     if (maxPeek < 4)
-        return RC(rcAlign, rcFile, rcReading, rcBuffer, rcNotAvailable);
+        return SILENT_RC(rcAlign, rcFile, rcReading, rcBuffer, rcNotAvailable);
     else {
         int32_t const i32 = BAM_FilePeekI32(self);
 
@@ -1810,14 +1811,14 @@ rc_t BAM_FileReadNoCopy(BAM_File *const self, unsigned actsize[], BAM_Alignment
             return RC(rcAlign, rcFile, rcReading, rcData, rcInvalid);
         
         if (maxPeek < i32 + 4)
-            return RC(rcAlign, rcFile, rcReading, rcBuffer, rcNotAvailable);
-        
+        return SILENT_RC(rcAlign, rcFile, rcReading, rcBuffer, rcNotAvailable);
+
         isgood = BAM_AlignmentInitLog(rhs, maxsize, i32, BAM_FilePeek(self, 4));
         rhs[0].parent = self;
     }
     *actsize = BAM_AlignmentSize(rhs[0].numExtra);
     if (isgood && *actsize > maxsize)
-        return RC(rcAlign, rcFile, rcReading, rcBuffer, rcInsufficient);
+        return SILENT_RC(rcAlign, rcFile, rcReading, rcBuffer, rcInsufficient);
 
     BAM_FileAdvance(self, 4 + rhs->datasize);
     return isgood ? 0 : RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid);
@@ -1837,6 +1838,8 @@ static bool BAM_AlignmentIsEmpty(BAM_Alignment const *const self)
 {
     if (getReadNameLength(self) == 0)
         return true;
+    if (getReadName(self)[0] == '\0')
+        return true;
     if (self->hasColor == 3)
         return false;
     if (getReadLen(self) != 0)
@@ -1864,7 +1867,7 @@ rc_t BAM_FileReadCopy(BAM_File *const self, BAM_Alignment const *rslt[], bool co
             if ((int)GetRCObject(rc) == rcData && GetRCState(rc) == rcInsufficient)
             {
                 self->eof = true;
-                rc = RC( rcAlign, rcFile, rcReading, rcRow, rcNotFound );
+                rc = SILENT_RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
             }
             return rc;
         }
@@ -2105,19 +2108,93 @@ static rc_t SAM2BAM_ConvertQUAL(unsigned const insize, void /* inout */ *const d
 
 static int SAM2BAM_ScanValue(void *const dst, char const *src, bool isFloat, bool isArray)
 {
-    static char const *Fmt[] = {
-        ",%f%n",
-        ",%i%n"
-    };
-    char const *const fmt = Fmt[isFloat ? 0 : 1] + (isArray ? 0 : 1);
-    union { int i; float f; } x;
-    int n = 0;
+    int i = 0;
+    int sgn = 0;
+    uint64_t mantissa = 0;
+    int shift = 0;
+    int exponent = 0;
+    int st = 0;
 
-    x.i = 0;
-    if (sscanf(src, fmt, &x, &n) != 1)
-        return -1;
-    SAM2BAM_ConvertInt(dst, x.i);
-    return n;
+    if (isArray) {
+        int const ch = src[i++];
+        if (ch != ',')
+            return -1;
+    }
+    for ( ; ; ++i) {
+        int const ch = src[i];
+        int const value = ch - '0';
+
+        if (ch == '\0')
+            break;
+        if (isArray && ch == ',')
+            break;
+        switch (st) {
+        case 0:
+            ++st;
+            if (ch == '-') {
+                sgn = -1;
+                break;
+            }
+            else if (ch == '+') {
+                sgn = 1;
+                break;
+            }
+            /* fallthrough; */
+        case 1:
+            if (ch == '.') {
+                st = 2;
+                break;
+            }
+            if (ch == 'e' || ch == 'E') {
+                st = 3;
+                break;
+            }
+            if (value < 0 || value > 9)
+                return -1;
+            mantissa = mantissa * 10 + value;
+            break;
+        case 2:
+            if (ch == 'e' || ch == 'E') {
+                st = 3;
+                break;
+            }
+            if (value < 0 || value > 9)
+                return -1;
+            mantissa = mantissa * 10 + value;
+            ++shift;
+            break;
+        case 3:
+            ++st;
+            if (ch == '-') {
+                ++st;
+                break;
+            }
+            else if (ch == '+') {
+                break;
+            }
+            /* fallthrough; */
+        case 4:
+            if (value < 0 || value > 9)
+                return -1;
+            exponent = exponent * 10 + value;
+            break;
+        case 5:
+            if (value < 0 || value > 9)
+                return -1;
+            exponent = exponent * 10 - value;
+            break;
+        }
+    }
+    {
+        double const value = mantissa * pow(10, exponent - shift) * (sgn ? sgn : 1);
+        union { int i; float f; } x;
+        if (isFloat)
+            x.f = value;
+        else
+            x.i = floor(value);
+        SAM2BAM_ConvertInt(dst, x.i);
+    }
+    return i;
 }
 
 static int SAM2BAM_ConvertEXTRA(unsigned const insize, void /* inout */ *const data, void const *const endp)
@@ -2149,8 +2226,8 @@ static int SAM2BAM_ConvertEXTRA(unsigned const insize, void /* inout */ *const d
                 if ((void const *)&dst[7] >= endp)
                     return -2;
                 {
-                int const n = SAM2BAM_ScanValue(&dst[3], src + 5, type == 'f', false);
-                return (n < 0 || n + 5 != insize) ? -4 : 7;
+                    int const n = SAM2BAM_ScanValue(&dst[3], src + 5, type == 'f', false);
+                    return (n < 0 || n + 5 != insize) ? -4 : 7;
                 }
             }
             case 'B':
@@ -2175,27 +2252,25 @@ static int SAM2BAM_ConvertEXTRA(unsigned const insize, void /* inout */ *const d
                 return -3;
             }
             {
-                uint8_t *scratch = (void *)(src + insize);
+                uint8_t *const scratch = (void *)(src + insize);
                 int const subtype = src[5] == 'f' ? 'f' : 'i';
                 unsigned i;
+                unsigned j;
 
                 dst[3] = subtype;
-                for (i = 6; i < insize; ) {
-                    if ((void const *)&scratch[4] >= endp)
+                for (i = 6, j = 0; i < insize; ++j) {
+                    if ((void const *)(scratch + 4 * j + 4) >= endp)
                         return -2;
                     {
-                    int const n = SAM2BAM_ScanValue(scratch, src + 5, subtype == 'f', true);
-                    if (n < 0)
-                        return -4;
-                    i += n;
+                        int const n = SAM2BAM_ScanValue(scratch + 4 * j, src + i, subtype == 'f', true);
+                        if (n < 0)
+                            return -4;
+                        i += n;
                     }
-                    scratch += 4;
-                }
-                {
-                    unsigned const written = scratch - (uint8_t const *)(src + insize);
-                    memmove(dst + 4, src + insize, written);
-                    return written + 5;
                 }
+                SAM2BAM_ConvertInt(&dst[4], j);
+                memmove(&dst[8], scratch, 4 * j);
+                return 8 + 4 * j;
             }
         }
     }
@@ -2225,30 +2300,56 @@ static rc_t BAM_FileReadSAM(BAM_File *const self, BAM_Alignment const **const rs
         char *EXTRA;
     } temp;
     unsigned field = 1;
-    char *scratch;
+    char *scratch = &raw->read_name[0];
+    int *intScratch = NULL;
+    int sgn = 1;
     unsigned i = 0;
     int n = 0;
     
     memset(raw, 0, sizeof(*raw));
     memset(&temp, 0, sizeof(temp));
-    scratch = temp.QNAME = &raw->read_name[0];
+    temp.QNAME = scratch;
     
     for ( ; ; ) {
         int const ch = SAMFileRead1(&self->file.sam);
         if (ch < 0) {
             rc_t const rc = SAMFileLastError(&self->file.sam);
-            return (i == 0 && field == 1 && (rc == 0 || GetRCState(rc) == rcInsufficient)) ? RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound) : rc;
+            return (i == 0 && field == 1 && (rc == 0 || GetRCState(rc) == rcInsufficient)) ? SILENT_RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound) : rc;
         }
         if ((void const *)&scratch[i] >= endp)
             return RC(rcAlign, rcFile, rcReading, rcBuffer, rcInsufficient);
 
         if (!(ch == '\t' || ch == '\n')) {
-            if (field != 0)
-                scratch[i++] = ch;
+            if (field != 0) {
+                if (intScratch == NULL) {
+                    scratch[i] = ch;
+                }
+                else {
+                    int const value = ch - '0';
+                    if (ch == '-' && i == 0) {
+                        sgn = -1;
+                    }
+                    else if (ch == '-' && i == 0) {
+                        sgn = 1;
+                    }
+                    else {
+                        if (value < 0 || value > 9) {
+                            LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing integer field");
+                            return RC(rcAlign, rcFile, rcReading, rcData, rcInvalid);
+                        }
+                        *intScratch = *intScratch * 10 + value * sgn;
+                    }
+                }
+            }
+            ++i;
             continue;
         }
-        scratch[i] = '\0';
-
+        if (intScratch == NULL)
+            scratch[i] = '\0';
+        else {
+            intScratch = NULL;
+            sgn = 1;
+        }
         switch (field) {
             case 0:
                 if (ch == '\n')
@@ -2267,12 +2368,9 @@ static rc_t BAM_FileReadSAM(BAM_File *const self, BAM_Alignment const **const rs
                     }
                 }
                 temp.CIGAR = (void *)scratch;
+                intScratch = &temp.FLAG;
                 break;
             case 2:
-                if (sscanf(scratch, "%i%n", &temp.FLAG, &n) != 1 || n != i) {
-                    LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing FLAG");
-                    field = 0;
-                }
                 break;
             case 3:
                 if (i == 1 && scratch[0] == '*')
@@ -2286,18 +2384,12 @@ static rc_t BAM_FileReadSAM(BAM_File *const self, BAM_Alignment const **const rs
                         field = 0;
                     }
                 }
+                intScratch = &temp.POS;
                 break;
             case 4:
-                if (sscanf(scratch, "%i%n", &temp.POS, &n) != 1 || n != i) {
-                    LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing POS");
-                    field = 0;
-                }
+                intScratch = &temp.MAPQ;
                 break;
             case 5:
-                if (sscanf(scratch, "%i%n", &temp.MAPQ, &n) != 1 || n != i) {
-                    LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing MAPQ");
-                    field = 0;
-                }
                 if (temp.MAPQ > 255) {
                     LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error MAPQ > 255");
                     field = 0;
@@ -2337,25 +2429,19 @@ static rc_t BAM_FileReadSAM(BAM_File *const self, BAM_Alignment const **const rs
                         field = 0;
                     }
                 }
+                intScratch = &temp.PNEXT;
                 break;
             case 8:
-                if (sscanf(scratch, "%i%n", &temp.PNEXT, &n) != 1 || n != i) {
-                    LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing PNEXT");
-                    field = 0;
-                }
+                intScratch = &temp.TLEN;
                 break;
             case 9:
-                if (sscanf(scratch, "%i%n", &temp.TLEN, &n) != 1 || n != i) {
-                    LOGERR(klogErr, RC(rcAlign, rcFile, rcReading, rcRow, rcInvalid), "SAM Record error parsing TLEN");
-                    field = 0;
-                }
                 break;
             case 10:
                 if (i == 1 && scratch[0] == '*')
                     temp.readlen = 0;
                 else {
                     temp.readlen = i;
-                    scratch += (i + 1) >> 1;
+                    scratch += (temp.readlen + 1) / 2;
                     temp.QUAL = (uint8_t *)scratch;
                     {
                         rc_t const rc = SAM2BAM_ConvertSEQ(i, temp.SEQ, endp);
@@ -2450,7 +2536,7 @@ static rc_t read2(BAM_File *const self, BAM_Alignment const **const rhs)
     rc_t rc;
     
     if (self->bufCurrent >= self->bufSize && self->eof)
-        return RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
+        return SILENT_RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
 
     if (self->isSAM) {
         rc = BAM_FileReadSAM(self, rhs);
@@ -2501,7 +2587,7 @@ static rc_t readDefer(BAM_File *const self, BAM_Alignment const **const rslt)
     if (nread == 0) {
         KFileRelease(self->defer);
         self->defer = NULL;
-        return RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
+        return SILENT_RC(rcAlign, rcFile, rcReading, rcRow, rcNotFound);
     }
     assert(nread == 4);
     assert(datasize < 64u * 1024u);
@@ -3231,6 +3317,10 @@ static int FormatOptData(BAM_Alignment const *const self,
                 j = snprintf(buffer + cur, maxsize - cur, "%f", fi.f);
                 if ((cur += j) >= maxsize)
                     return -1;
+                while (buffer[cur - 1] == '0')
+                    --cur;
+                if (buffer[cur - 1] == '.')
+                    --cur;
                 offset += 4;
                 break;
 
@@ -3311,7 +3401,12 @@ static int FormatOptData(BAM_Alignment const *const self,
                                 j = snprintf(buffer + cur, maxsize - cur, "%f", fi.f);
                                 if ((cur += j) >= maxsize)
                                     return -1;
+                                while (buffer[cur - 1] == '0')
+                                    --cur;
+                                if (buffer[cur - 1] == '.')
+                                    --cur;
                                 offset += 4;
+                                break;
 
                             default:
                                 return -1;
@@ -3662,7 +3757,7 @@ rc_t BAM_AlignmentCGReadLength(BAM_Alignment const *self, uint32_t *readlen)
         *readlen = di;
         return 0;
     }
-    return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+    return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
 }
 
 static unsigned BAM_AlignmentParseCGTag(BAM_Alignment const *self, size_t const max_cg_segs, unsigned cg_segs[/* max_cg_segs */])
@@ -3735,7 +3830,7 @@ rc_t ExtractInt32(BAM_Alignment const *self, int32_t *result,
             return RC(rcAlign, rcRow, rcReading, rcData, rcInvalid);
         break;
     default:
-        return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+        return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
     }
     if (INT32_MIN <= y && y <= INT32_MAX) {
         *result = (int32_t)y;
@@ -3761,7 +3856,7 @@ rc_t BAM_AlignmentGetCGAlignGroup(BAM_Alignment const *self,
         rc = ExtractInt32(self, &zi, ZI); if (rc) return rc;
         return string_printf(buffer, max_size, act_size, "%i_%i", zi, za);
     }
-    return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+    return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
 }
 
 rc_t BAM_AlignmentGetCGSeqQual(BAM_Alignment const *self,
@@ -3816,7 +3911,7 @@ rc_t BAM_AlignmentGetCGSeqQual(BAM_Alignment const *self,
         }
         return 0;
     }
-    return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+    return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
 }
 
 
@@ -3945,7 +4040,7 @@ rc_t BAM_AlignmentGetCGCigar(BAM_Alignment const *self,
         *cig_act = GetCGCigar(self, cig_max, cigar);
         return 0;
     }
-    return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+    return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
 }
 
 /* MARK: end CG stuff */
@@ -3959,7 +4054,7 @@ rc_t BAM_AlignmentGetTI(BAM_Alignment const *self, uint64_t *ti)
         *ti = (uint64_t)temp;
         return 0;
     }
-    return RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
+    return SILENT_RC(rcAlign, rcRow, rcReading, rcData, rcNotFound);
 }
 
 rc_t BAM_AlignmentGetRNAStrand(BAM_Alignment const *const self, uint8_t *const rslt)
diff --git a/tools/bam-loader/bam.h b/tools/bam-loader/bam.h
index 274744e..b4e1d53 100644
--- a/tools/bam-loader/bam.h
+++ b/tools/bam-loader/bam.h
@@ -317,9 +317,9 @@ rc_t BAM_AlignmentGetCigar ( const BAM_Alignment *self,
 rc_t BAM_AlignmentGetInsertSize ( const BAM_Alignment *self, int64_t *size );
 
 rc_t BAM_AlignmentFormatSAM(const BAM_Alignment *self,
-                                           size_t *actsize,
-                                           size_t maxsize,
-                                           char *buffer);
+                            size_t *actsize,
+                            size_t maxsize,
+                            char *buffer);
 
 /* OptDataForEach
  *  DANGER
diff --git a/tools/bam-loader/loader-imp.c b/tools/bam-loader/loader-imp.c
index d2cfef6..7413d55 100644
--- a/tools/bam-loader/loader-imp.c
+++ b/tools/bam-loader/loader-imp.c
@@ -119,6 +119,7 @@ typedef struct {
     uint32_t primaryId[2];
     uint32_t spotId;
     uint32_t fragmentId;
+	uint8_t  fragment_len[2]; /*** lowest byte of fragment length to prevent different sizes of primary and secondary alignments **/
     uint8_t  platform;
     uint8_t  pId_ext[2];
     uint8_t  spotId_ext;
@@ -1005,9 +1006,10 @@ INSDC_SRA_platform_id GetINSDCPlatform(BAM_File const *bam, char const name[]) {
 static
 rc_t CheckLimitAndLogError(void)
 {
-    ++G.errCount;
-    if (G.maxErrCount > 0 && G.errCount > G.maxErrCount) {
-        (void)PLOGERR(klogErr, (klogErr, SILENT_RC(rcAlign, rcFile, rcReading, rcError, rcExcessive), "Number of errors $(cnt) exceeds limit of $(max): Exiting", "cnt=%u,max=%u", G.errCount, G.maxErrCount));
+    unsigned const count = ++G.errCount;
+
+    if (G.maxErrCount > 0 && count > G.maxErrCount) {
+        (void)PLOGERR(klogErr, (klogErr, SILENT_RC(rcAlign, rcFile, rcReading, rcError, rcExcessive), "Number of errors $(cnt) exceeds limit of $(max): Exiting", "cnt=%u,max=%u", count, G.maxErrCount));
         return RC(rcAlign, rcFile, rcReading, rcError, rcExcessive);
     }
     return 0;
@@ -1394,12 +1396,23 @@ KQueue *bamq;
 static rc_t run_bamread_thread(const KThread *self, void *const file)
 {
     rc_t rc = 0;
+    size_t NR = 0;
 
     while (rc == 0) {
         BAM_Alignment const *crec = NULL;
         BAM_Alignment *rec = NULL;
 
+        ++NR;
         rc = BAM_FileRead2(file, &crec);
+        if ((int)GetRCObject(rc) == rcRow && (int)GetRCState(rc) == rcEmpty) {
+            rc = CheckLimitAndLogError();
+            continue;
+        }
+        if ((int)GetRCObject(rc) == rcRow && (int)GetRCState(rc) == rcNotFound) {
+            /* EOF */
+            rc = 0;
+            break;
+        }
         if (rc) break;
         rc = BAM_AlignmentCopy(crec, &rec);
         BAM_AlignmentRelease(crec);
@@ -1424,8 +1437,13 @@ static rc_t run_bamread_thread(const KThread *self, void *const file)
                 break;
         }
     }
-    (void)PLOGERR(klogInfo, (klogInfo, rc, "bamread_thread done", NULL));
     KQueueSeal(bamq);
+    if (rc) {
+        (void)LOGERR(klogErr, rc, "bamread_thread done");
+    }
+    else {
+        (void)PLOGMSG(klogInfo, (klogInfo, "bamread_thread done; read $(NR) records", "NR=%lu", NR));
+    }
     return rc;
 }
 #endif
@@ -1580,11 +1598,14 @@ static rc_t ProcessBAM(char const bamFile[], context_t *ctx, VDatabase *db,
             if ((int)GetRCObject(rc) == rcTimeout)
                 rc = 0;
             else {
-                if ((int)GetRCObject(rc)==rcData && (int)GetRCState(rc)==rcDone)
-                    (void)PLOGMSG(klogInfo, (klogInfo, "KQueuePop Done", NULL));
+                rc_t rc2 = 0;
+                if ((int)GetRCObject(rc) == rcData && (int)GetRCState(rc) == rcDone)
+                    (void)LOGMSG(klogDebug, "KQueuePop Done");
                 else
                     (void)PLOGERR(klogWarn, (klogWarn, rc, "KQueuePop Error", NULL));
-                KThreadWait(bamread_thread, &rc);
+                KThreadWait(bamread_thread, &rc2);
+                if (rc2 != 0)
+                    rc = rc2;
                 KThreadRelease(bamread_thread);
                 bamread_thread = NULL;
                 break;
@@ -1595,8 +1616,10 @@ static rc_t ProcessBAM(char const bamFile[], context_t *ctx, VDatabase *db,
 #endif
 
         if (rc) {
-            if (GetRCModule(rc) == rcAlign && GetRCObject(rc) == rcRow && GetRCState(rc) == rcNotFound) {
-                (void)PLOGMSG(klogInfo, (klogInfo, "EOF '$(file)'; read $(read); processed $(proc)", "file=%s,read=%lu,proc=%lu", bamFile, (unsigned long)recordsRead, (unsigned long)recordsProcessed));
+            if (   (GetRCModule(rc) == rcCont && (int)GetRCObject(rc) == rcData && GetRCState(rc) == rcDone)
+                || (GetRCModule(rc) == rcAlign && GetRCObject(rc) == rcRow && GetRCState(rc) == rcNotFound))
+            {
+                (void)PLOGMSG(klogInfo, (klogInfo, "EOF '$(file)'; processed $(proc)", "file=%s,read=%lu,proc=%lu", bamFile, (unsigned long)recordsRead, (unsigned long)recordsProcessed));
                 rc = 0;
             }
             else if (GetRCModule(rc) == rcAlign && GetRCObject(rc) == rcRow && GetRCState(rc) == rcEmpty) {
@@ -1612,6 +1635,17 @@ static rc_t ProcessBAM(char const bamFile[], context_t *ctx, VDatabase *db,
         }
         ++recordsRead;
         
+        BAM_AlignmentGetReadName2(rec, &name, &namelen);
+#if THREADING_BAMREAD_PRIME_NAME2KEY
+		keyId = rec->keyId;
+		wasInserted = rec->wasInserted;
+#else
+		rc = GetKeyID(&ctx->keyToID, &keyId, &wasInserted, spotGroup, name, namelen);
+        if (rc) {
+            (void)PLOGERR(klogErr, (klogErr, rc, "KBTreeEntry: failed on key '$(key)'", "key=%.*s", namelen, name));
+            goto LOOP_END;
+        }
+#endif
         {
             float const new_value = BAM_FileGetProportionalPosition(bam) * 100.0;
             float const delta = new_value - progress;
@@ -1640,7 +1674,6 @@ MIXED_BASE_AND_COLOR:
                 isNotColorSpace = true;
         }
         BAM_AlignmentGetFlags(rec, &flags);
-        BAM_AlignmentGetReadName2(rec, &name, &namelen);
         isPrimary = (flags & (BAMFlags_IsNotPrimary|BAMFlags_IsSupplemental)) == 0 ? true : false;
         if (!isPrimary && G.noSecondary)
             goto LOOP_END;
@@ -1713,6 +1746,32 @@ MIXED_BASE_AND_COLOR:
                     }
                 }
             }
+		    if(G.deferSecondary && !isPrimary ){	/*** try to see if hard-clipped secondary alignment can be salvaged **/
+				ctx_value_t *tmp_value; 
+				rc_t rc2=MMArrayGetRead(ctx->id2value, (void **)&tmp_value, keyId);
+				if(rc2==0){
+					int i=((flags&BAMFlags_WasPaired) && (flags&BAMFlags_IsSecond))?0:1;
+					BAM_AlignmentGetReadLength(rec, &readlen);
+					if(readlen + lpad + rpad < tmp_value->fragment_len[i]){
+						opCount++;
+						rc = KDataBufferResize(&cigBuf, opCount);
+						if (rc) {
+							(void)LOGERR(klogErr, rc, "Failed to resize CIGAR buffer");
+							goto LOOP_END;
+						}
+						if(rpad > 0 && lpad==0){
+							uint32_t * cigar = cigBuf.base;
+							lpad =  tmp_value->fragment_len[i] - readlen - rpad;
+							memmove(cigar+1,cigar,(opCount-1)*sizeof(*cigar));
+							cigar[0] =  (((uint32_t)lpad) << 4) | 4;
+						} else {
+							uint32_t *const cigar = cigBuf.base;
+							rpad += tmp_value->fragment_len[i] - readlen - lpad;
+							cigar[opCount - 1] =  (((uint32_t)rpad) << 4) | 4;
+						}
+					}
+				}
+			}
         }
         if (hasCG) {
             rc = AlignmentRecordInit(&data, readlen);
@@ -1898,23 +1957,15 @@ MIXED_BASE_AND_COLOR:
             assert(!"this shouldn't happen");
             goto LOOP_END;
         }
-#if THREADING_BAMREAD_PRIME_NAME2KEY
-		keyId = rec->keyId;
-		wasInserted = rec->wasInserted;
-#else
-		rc = GetKeyID(&ctx->keyToID, &keyId, &wasInserted, spotGroup, name, namelen);
-#endif
-        if (rc) {
-            (void)PLOGERR(klogErr, (klogErr, rc, "KBTreeEntry: failed on key '$(key)'", "key=%.*s", namelen, name));
-            goto LOOP_END;
-        }
+
+        AR_KEY(data) = keyId;
+
         rc = MMArrayGet(ctx->id2value, (void **)&value, keyId);
         if (rc) {
             (void)PLOGERR(klogErr, (klogErr, rc, "MMArrayGet: failed on id '$(id)'", "id=%u", keyId));
             goto LOOP_END;
         }
 
-        AR_KEY(data) = keyId;
 
         mated = false;
         if (flags & BAMFlags_WasPaired) {
@@ -1955,13 +2006,13 @@ MIXED_BASE_AND_COLOR:
             }
             memset(value, 0, sizeof(*value));
             value->unmated = !mated;
-            if (isPrimary || G.assembleWithSecondary) {
+            if (isPrimary || G.assembleWithSecondary || G.deferSecondary) {
                 value->pcr_dup = (flags & BAMFlags_IsDuplicate) == 0 ? 0 : 1;
                 value->platform = GetINSDCPlatform(bam, spotGroup);
                 value->primary_is_set = 1;
             }
         }
-        else if (isPrimary || G.assembleWithSecondary) {
+        else if (isPrimary || G.assembleWithSecondary || G.deferSecondary) {
             int o_pcr_dup = value->pcr_dup;
             int const n_pcr_dup = (flags & BAMFlags_IsDuplicate) == 0 ? 0 : 1;
 
@@ -2046,6 +2097,31 @@ MIXED_BASE_AND_COLOR:
                                                            NCBI_align_ro_intron_unknown;
                 rc = ReferenceRead(ref, &data, rpos, cigBuf.base, opCount, seqDNA, readlen, intronType, &matches, &misses);
             }
+            if (rc == 0) {
+                int const i= AR_READNO(data) - 1;
+                int const clipped_rl = (uint8_t)readlen;
+                if (i >= 0 && i < 2) {
+                    int const rl = value->fragment_len[i];
+
+                    if (rl == 0)
+                        value->fragment_len[i] = clipped_rl;
+                    else if (rl != clipped_rl) {
+                        if (isPrimary) {
+                            rc = RC(rcApp, rcFile, rcReading, rcConstraint, rcViolated);
+                            (void)PLOGERR(klogErr, (klogErr, rc, "Primary alignment for '$(name)' has different length ($(len)) then previously recorded secondary alignment. Try to defer secondary alignment processing.",
+                                                    "name=%s,len=%d", name, readlen));
+                        }
+                        else {
+                            rc = SILENT_RC(rcApp, rcFile, rcReading, rcConstraint, rcViolated);
+                            (void)PLOGERR(klogWarn, (klogWarn, rc, "Secondary alignment for '$(name)' has different length ($(len)) then previously recorded primary alignment; discarding secondary alignment.",
+                                                     "name=%s,len=%d", name, readlen));
+                            DISCARD_BAD_SECONDARY;
+                            rc = CheckLimitAndLogError();
+                        }
+                        goto LOOP_END;
+                    }
+                }
+            }
             if (rc == 0 && (matches < G.minMatchCount || (matches == 0 && !G.acceptNoMatch))) {
                 if (isPrimary) {
                     if (misses > matches) {
@@ -2139,7 +2215,7 @@ WRITE_SEQUENCE:
                     int64_t pnext = 0;
 
                     if (!isPrimary) {
-                        if (!G.assembleWithSecondary || hardclipped) { 
+                        if ( (!G.assembleWithSecondary || hardclipped) && !G.deferSecondary ) { 
                             goto WRITE_ALIGNMENT;
                         }
                         (void)PLOGMSG(klogDebug, (klogDebug, "Spot '$(name)' (id $(id)) is being constructed from secondary alignment information", "id=%lx,name=%s", keyId, name));
@@ -2238,7 +2314,7 @@ WRITE_SEQUENCE:
                         uint8_t  *src  = (uint8_t*) fip + sizeof(*fip);
                         
                         if (!isPrimary) {
-                            if (!G.assembleWithSecondary || hardclipped ) {
+                            if ((!G.assembleWithSecondary || hardclipped) && !G.deferSecondary ) {
                                 goto WRITE_ALIGNMENT;
                             }
                             (void)PLOGMSG(klogDebug, (klogDebug, "Spot '$(name)' (id $(id)) is being constructed from secondary alignment information", "id=%lx,name=%s", keyId, name));
@@ -2360,7 +2436,7 @@ WRITE_SEQUENCE:
             else if (CTX_VALUE_GET_S_ID(*value) == 0) {
                 /* new unmated fragment - no spot assembly */
                 if (!isPrimary) {
-                    if (!G.assembleWithSecondary || hardclipped ) {
+                    if ((!G.assembleWithSecondary || hardclipped) && !G.deferSecondary ) {
                         goto WRITE_ALIGNMENT;
                     }
                     (void)PLOGMSG(klogDebug, (klogDebug, "Spot '$(name)' (id $(id)) is being constructed from secondary alignment information", "id=%lx,name=%s", keyId, name));
@@ -2960,6 +3036,7 @@ rc_t run(char const progName[],
                                 VDatabaseRelease(db);
                                 VTableDropColumn(tbl, "TMP_KEY_ID");
                                 VTableDropColumn(tbl, "READ");
+                                VTableDropColumn(tbl, "ALTREAD");
                                 VTableRelease(tbl);
                             }
 
diff --git a/tools/bam-loader/reference-writer.c b/tools/bam-loader/reference-writer.c
index 755f391..f43c54a 100644
--- a/tools/bam-loader/reference-writer.c
+++ b/tools/bam-loader/reference-writer.c
@@ -416,16 +416,14 @@ rc_t ReferenceAddCoverage(Reference *const self,
 {
     unsigned const refEnd = refStart + refLength;
 
-    if (refLength == 0) /* this happens for insert-only alignments */
-        return 0;
-
-    if (refEnd > self->endPos) {
+    if (refEnd > self->endPos || self->endPos == 0) {
         unsigned const t1 = refEnd + (G.maxSeqLen - 1);
         unsigned const adjust = t1 % G.maxSeqLen;
-        unsigned const newEndPos = t1 - adjust;
+        unsigned const t2 = t1 - adjust;
+        unsigned const newEndPos = t2 != 0 ? t2 : G.maxSeqLen;
         unsigned const baseCount = self->endPos - self->curPos;
         unsigned const newBaseCount = newEndPos - self->curPos;
-        
+
         BAIL_ON_FAIL(KDataBufferResize(&self->coverage, newBaseCount));
         BAIL_ON_FAIL(KDataBufferResize(&self->mismatches, newBaseCount));
         BAIL_ON_FAIL(KDataBufferResize(&self->indels, newBaseCount));
@@ -561,6 +559,11 @@ rc_t ReferenceRead(Reference *self, AlignmentRecord *data, uint64_t const pos,
     return 0;
 }
 
+rc_t ReferenceGetSequence(Reference *self, char *rslt, unsigned position, unsigned nCIGAR, unsigned *CIGAR)
+{
+    return ReferenceSeq_Read(self->rseq, rslt, position, nCIGAR, CIGAR);
+}
+
 static rc_t IdVecAppend(KDataBuffer *vec, uint64_t id)
 {
     uint64_t const end = vec->elem_count;
diff --git a/tools/bam-loader/reference-writer.h b/tools/bam-loader/reference-writer.h
index 2946c82..1c798f5 100644
--- a/tools/bam-loader/reference-writer.h
+++ b/tools/bam-loader/reference-writer.h
@@ -73,4 +73,6 @@ rc_t ReferenceRead(Reference *self, AlignmentRecord *data, uint64_t pos,
                    uint8_t rna_orient, uint32_t *matches, uint32_t *misses);
 rc_t ReferenceWhack(Reference *self, bool commit);
 
+rc_t ReferenceGetSequence(Reference *self, char *rslt, unsigned position, unsigned nCIGAR, unsigned *CIGAR);
+
 #endif
diff --git a/tools/bam-loader/samview.c b/tools/bam-loader/samview.c
new file mode 100644
index 0000000..77b6519
--- /dev/null
+++ b/tools/bam-loader/samview.c
@@ -0,0 +1,109 @@
+/* ===========================================================================
+ *
+ *                            PUBLIC DOMAIN NOTICE
+ *               National Center for Biotechnology Information
+ *
+ *  This software/database is a "United States Government Work" under the
+ *  terms of the United States Copyright Act.  It was written as part of
+ *  the author's official duties as a United States Government employee and
+ *  thus cannot be copyrighted.  This software/database is freely available
+ *  to the public for use. The National Library of Medicine and the U.S.
+ *  Government have not placed any restriction on its use or reproduction.
+ *
+ *  Although all reasonable efforts have been taken to ensure the accuracy
+ *  and reliability of the software and data, the NLM and the U.S.
+ *  Government do not and cannot warrant the performance or results that
+ *  may be obtained by using this software or data. The NLM and the U.S.
+ *  Government disclaim all warranties, express or implied, including
+ *  warranties of performance, merchantability or fitness for any particular
+ *  purpose.
+ *
+ *  Please cite the author in any work or product based on this material.
+ *
+ * ===========================================================================
+ *
+ */
+
+#include <kapp/args.h>
+#include <kapp/main.h>
+#include <klib/log.h>
+#include <kfs/file.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "bam.h"
+
+#include <klib/rc.h>
+
+static void writeHeader(BAM_File const *const bam)
+{
+    char const *header = NULL;
+    size_t hsize = 0;
+
+    BAM_FileGetHeaderText(bam, &header, &hsize);
+    fwrite(header, 1, hsize, stdout);
+}
+
+static rc_t writeSAM(BAM_Alignment const *const rec)
+{
+    static char buffer[64*1024];
+    size_t actsize = 0;
+    rc_t const rc = BAM_AlignmentFormatSAM(rec, &actsize, sizeof(buffer), buffer);
+
+    if (rc == 0)
+        fwrite(buffer, 1, actsize, stdout);
+
+    return rc;
+}
+
+static
+void samview(char const path[])
+{
+    BAM_File const *bam = NULL;
+    rc_t rc = BAM_FileMake(&bam, NULL, NULL, path);
+
+    if (rc == 0) {
+        BAM_Alignment const *rec = NULL;
+
+        writeHeader(bam);
+        while ((rc = BAM_FileRead2(bam, &rec)) == 0) {
+            rc_t const rc2 = writeSAM(rec);
+            BAM_AlignmentRelease(rec);
+            if (rc2)
+                break;
+        }
+        BAM_FileRelease(bam);
+        if (GetRCObject(rc) == rcRow && GetRCState(rc) == rcNotFound)
+            rc = 0;
+    }
+    if (rc)
+        LOGERR(klogWarn, rc, "Final RC");
+}
+
+rc_t CC UsageSummary(char const *name)
+{
+    return 0;
+}
+
+rc_t CC Usage(Args const *args)
+{
+    return 0;
+}
+
+ver_t CC KAppVersion(void)
+{
+    return 0;
+}
+
+rc_t CC KMain(int argc, char *argv[])
+{
+    if (argc == 1) {
+        samview("/dev/stdin");
+        return 0;
+    }
+    while (--argc) {
+        samview(*++argv);
+    }
+    return 0;
+}
diff --git a/tools/fastdump/fastdump.vers b/tools/bam-loader/samview.vers
similarity index 100%
copy from tools/fastdump/fastdump.vers
copy to tools/bam-loader/samview.vers
diff --git a/tools/cache-mgr/cache-mgr.vers b/tools/cache-mgr/cache-mgr.vers
index 097a15a..ec1cf33 100644
--- a/tools/cache-mgr/cache-mgr.vers
+++ b/tools/cache-mgr/cache-mgr.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/cache-mgr/cache-mgr.vers.h b/tools/cache-mgr/cache-mgr.vers.h
index 554e80d..faf499d 100644
--- a/tools/cache-mgr/cache-mgr.vers.h
+++ b/tools/cache-mgr/cache-mgr.vers.h
@@ -1 +1 @@
-#define CACHE_MGR_VERS 0x02060002
+#define CACHE_MGR_VERS 0x02060003
diff --git a/tools/ccextract/ccextract.vers b/tools/ccextract/ccextract.vers
index 097a15a..ec1cf33 100644
--- a/tools/ccextract/ccextract.vers
+++ b/tools/ccextract/ccextract.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/cg-load/cg-load.vers b/tools/cg-load/cg-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/cg-load/cg-load.vers
+++ b/tools/cg-load/cg-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/copycat/copycat.vers b/tools/copycat/copycat.vers
index 097a15a..ec1cf33 100644
--- a/tools/copycat/copycat.vers
+++ b/tools/copycat/copycat.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fastdump/fastdump.vers b/tools/fastdump/fastdump.vers
index 3eefcb9..ec1cf33 100644
--- a/tools/fastdump/fastdump.vers
+++ b/tools/fastdump/fastdump.vers
@@ -1 +1 @@
-1.0.0
+2.6.3
diff --git a/tools/fastq-dump/fastq-dump.vers b/tools/fastq-dump/fastq-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/fastq-dump/fastq-dump.vers
+++ b/tools/fastq-dump/fastq-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fastq-loader/latf-load.vers b/tools/fastq-loader/latf-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/fastq-loader/latf-load.vers
+++ b/tools/fastq-loader/latf-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fastq-loader/latf-load.vers.h b/tools/fastq-loader/latf-load.vers.h
index d8b420a..c6d8979 100644
--- a/tools/fastq-loader/latf-load.vers.h
+++ b/tools/fastq-loader/latf-load.vers.h
@@ -1 +1 @@
-#define LATF_LOAD_VERS 0x02060002
+#define LATF_LOAD_VERS 0x02060003
diff --git a/tools/fuse/remote-fuser.vers b/tools/fuse/remote-fuser.vers
index 097a15a..ec1cf33 100644
--- a/tools/fuse/remote-fuser.vers
+++ b/tools/fuse/remote-fuser.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fuse/sra-fuser-test.vers b/tools/fuse/sra-fuser-test.vers
index 097a15a..ec1cf33 100644
--- a/tools/fuse/sra-fuser-test.vers
+++ b/tools/fuse/sra-fuser-test.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fuse/sra-fuser-test.vers.h b/tools/fuse/sra-fuser-test.vers.h
index 02a6a64..02be1cf 100644
--- a/tools/fuse/sra-fuser-test.vers.h
+++ b/tools/fuse/sra-fuser-test.vers.h
@@ -1 +1 @@
-#define SRA_FUSER_TEST_VERS 0x02060002
+#define SRA_FUSER_TEST_VERS 0x02060003
diff --git a/tools/fuse/sra-fuser.vers b/tools/fuse/sra-fuser.vers
index 097a15a..ec1cf33 100644
--- a/tools/fuse/sra-fuser.vers
+++ b/tools/fuse/sra-fuser.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/fuse/sra-makeidx.vers b/tools/fuse/sra-makeidx.vers
index 097a15a..ec1cf33 100644
--- a/tools/fuse/sra-makeidx.vers
+++ b/tools/fuse/sra-makeidx.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/general-loader/general-loader.vers b/tools/general-loader/general-loader.vers
index 097a15a..ec1cf33 100644
--- a/tools/general-loader/general-loader.vers
+++ b/tools/general-loader/general-loader.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/general-loader/general-loader.vers.h b/tools/general-loader/general-loader.vers.h
index 259ee83..367089a 100644
--- a/tools/general-loader/general-loader.vers.h
+++ b/tools/general-loader/general-loader.vers.h
@@ -1 +1 @@
-#define GENERAL_LOADER_VERS 0x02060002
+#define GENERAL_LOADER_VERS 0x02060003
diff --git a/tools/general-loader/libgeneral-writer.vers b/tools/general-loader/libgeneral-writer.vers
index 097a15a..ec1cf33 100644
--- a/tools/general-loader/libgeneral-writer.vers
+++ b/tools/general-loader/libgeneral-writer.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/kar/kar.vers b/tools/kar/kar.vers
index 097a15a..ec1cf33 100644
--- a/tools/kar/kar.vers
+++ b/tools/kar/kar.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/kar/kar.vers.h b/tools/kar/kar.vers.h
index 72ddb2d..8d8dc95 100644
--- a/tools/kar/kar.vers.h
+++ b/tools/kar/kar.vers.h
@@ -1 +1 @@
-#define KAR_VERS 0x02060002
+#define KAR_VERS 0x02060003
diff --git a/tools/kar/sra-kar.vers b/tools/kar/sra-kar.vers
index 097a15a..ec1cf33 100644
--- a/tools/kar/sra-kar.vers
+++ b/tools/kar/sra-kar.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/kar/sra-kar.vers.h b/tools/kar/sra-kar.vers.h
index 77c127a..1be0e24 100644
--- a/tools/kar/sra-kar.vers.h
+++ b/tools/kar/sra-kar.vers.h
@@ -1 +1 @@
-#define SRA_KAR_VERS 0x02060002
+#define SRA_KAR_VERS 0x02060003
diff --git a/tools/keyring-srv/keyring-srv.vers b/tools/keyring-srv/keyring-srv.vers
index 097a15a..ec1cf33 100644
--- a/tools/keyring-srv/keyring-srv.vers
+++ b/tools/keyring-srv/keyring-srv.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/kqsh/kqsh.vers b/tools/kqsh/kqsh.vers
index 097a15a..ec1cf33 100644
--- a/tools/kqsh/kqsh.vers
+++ b/tools/kqsh/kqsh.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/nenctool/nenctest.vers b/tools/nenctool/nenctest.vers
index 097a15a..ec1cf33 100644
--- a/tools/nenctool/nenctest.vers
+++ b/tools/nenctool/nenctest.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/nenctool/nenctool.vers b/tools/nenctool/nenctool.vers
index 097a15a..ec1cf33 100644
--- a/tools/nenctool/nenctool.vers
+++ b/tools/nenctool/nenctool.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/nencvalid/nencvalid.vers b/tools/nencvalid/nencvalid.vers
index 097a15a..ec1cf33 100644
--- a/tools/nencvalid/nencvalid.vers
+++ b/tools/nencvalid/nencvalid.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/pacbio-load/pacbio-load.vers b/tools/pacbio-load/pacbio-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/pacbio-load/pacbio-load.vers
+++ b/tools/pacbio-load/pacbio-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/pileup-stats/pileup-stats.vers b/tools/pileup-stats/pileup-stats.vers
index 097a15a..ec1cf33 100644
--- a/tools/pileup-stats/pileup-stats.vers
+++ b/tools/pileup-stats/pileup-stats.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/prefetch/prefetch.vers b/tools/prefetch/prefetch.vers
index 097a15a..ec1cf33 100644
--- a/tools/prefetch/prefetch.vers
+++ b/tools/prefetch/prefetch.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/prefetch/prefetch.vers.h b/tools/prefetch/prefetch.vers.h
index 1fdd187..9ab6a39 100644
--- a/tools/prefetch/prefetch.vers.h
+++ b/tools/prefetch/prefetch.vers.h
@@ -1 +1 @@
-#define PREFETCH_VERS 0x02060002
+#define PREFETCH_VERS 0x02060003
diff --git a/tools/qual-recalib-stat/qual-recalib-stat.vers b/tools/qual-recalib-stat/qual-recalib-stat.vers
index 097a15a..ec1cf33 100644
--- a/tools/qual-recalib-stat/qual-recalib-stat.vers
+++ b/tools/qual-recalib-stat/qual-recalib-stat.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/qual-recalib-stat/qual-recalib-stat.vers.h b/tools/qual-recalib-stat/qual-recalib-stat.vers.h
index 6e217ad..447af5d 100644
--- a/tools/qual-recalib-stat/qual-recalib-stat.vers.h
+++ b/tools/qual-recalib-stat/qual-recalib-stat.vers.h
@@ -1 +1 @@
-#define QUAL_RECALIB_STAT_VERS 0x02060002
+#define QUAL_RECALIB_STAT_VERS 0x02060003
diff --git a/tools/rd-filter-redact/rd-filter-redact.vers b/tools/rd-filter-redact/rd-filter-redact.vers
index 097a15a..ec1cf33 100644
--- a/tools/rd-filter-redact/rd-filter-redact.vers
+++ b/tools/rd-filter-redact/rd-filter-redact.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/rd-filter-redact/read-filter-redact.vers b/tools/rd-filter-redact/read-filter-redact.vers
index 097a15a..ec1cf33 100644
--- a/tools/rd-filter-redact/read-filter-redact.vers
+++ b/tools/rd-filter-redact/read-filter-redact.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/rd-filter-redact/read-filter-redact.vers.h b/tools/rd-filter-redact/read-filter-redact.vers.h
index 7b2743b..0724895 100644
--- a/tools/rd-filter-redact/read-filter-redact.vers.h
+++ b/tools/rd-filter-redact/read-filter-redact.vers.h
@@ -1 +1 @@
-#define READ_FILTER_REDACT_VERS 0x02060002
+#define READ_FILTER_REDACT_VERS 0x02060003
diff --git a/tools/rd-filter-redact/test-read-write-cursor.vers b/tools/rd-filter-redact/test-read-write-cursor.vers
index 097a15a..ec1cf33 100644
--- a/tools/rd-filter-redact/test-read-write-cursor.vers
+++ b/tools/rd-filter-redact/test-read-write-cursor.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/ref-variation/ref-variation.vers b/tools/ref-variation/ref-variation.vers
index 097a15a..ec1cf33 100644
--- a/tools/ref-variation/ref-variation.vers
+++ b/tools/ref-variation/ref-variation.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/ref-variation/ref-variation.vers.h b/tools/ref-variation/ref-variation.vers.h
index 9d66d52..60715b0 100644
--- a/tools/ref-variation/ref-variation.vers.h
+++ b/tools/ref-variation/ref-variation.vers.h
@@ -1 +1 @@
-#define REF_VARIATION_VERS 0x02060002
+#define REF_VARIATION_VERS 0x02060003
diff --git a/tools/ref-variation/var-expand.vers b/tools/ref-variation/var-expand.vers
index 097a15a..ec1cf33 100644
--- a/tools/ref-variation/var-expand.vers
+++ b/tools/ref-variation/var-expand.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/ref-variation/var-expand.vers.h b/tools/ref-variation/var-expand.vers.h
index 8d3b773..cf2ec40 100644
--- a/tools/ref-variation/var-expand.vers.h
+++ b/tools/ref-variation/var-expand.vers.h
@@ -1 +1 @@
-#define VAR_EXPAND_VERS 0x02060002
+#define VAR_EXPAND_VERS 0x02060003
diff --git a/tools/refseq-load/refseq-load.vers b/tools/refseq-load/refseq-load.vers
deleted file mode 100644
index ecd7ee5..0000000
--- a/tools/refseq-load/refseq-load.vers
+++ /dev/null
@@ -1 +0,0 @@
-2.5.8
diff --git a/tools/sra-dump/abi-dump.vers b/tools/sra-dump/abi-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-dump/abi-dump.vers
+++ b/tools/sra-dump/abi-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-dump/abi-dump.vers.h b/tools/sra-dump/abi-dump.vers.h
index 5cb1220..e794e28 100644
--- a/tools/sra-dump/abi-dump.vers.h
+++ b/tools/sra-dump/abi-dump.vers.h
@@ -1 +1 @@
-#define ABI_DUMP_VERS 0x02060002
+#define ABI_DUMP_VERS 0x02060003
diff --git a/tools/sra-dump/fastq-dump.vers b/tools/sra-dump/fastq-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-dump/fastq-dump.vers
+++ b/tools/sra-dump/fastq-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-dump/fastq-dump.vers.h b/tools/sra-dump/fastq-dump.vers.h
index 2e4eac7..bac1c66 100644
--- a/tools/sra-dump/fastq-dump.vers.h
+++ b/tools/sra-dump/fastq-dump.vers.h
@@ -1 +1 @@
-#define FASTQ_DUMP_VERS 0x02060002
+#define FASTQ_DUMP_VERS 0x02060003
diff --git a/tools/sra-dump/illumina-dump.vers b/tools/sra-dump/illumina-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-dump/illumina-dump.vers
+++ b/tools/sra-dump/illumina-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-dump/illumina-dump.vers.h b/tools/sra-dump/illumina-dump.vers.h
index 5578f1e..a7a1763 100644
--- a/tools/sra-dump/illumina-dump.vers.h
+++ b/tools/sra-dump/illumina-dump.vers.h
@@ -1 +1 @@
-#define ILLUMINA_DUMP_VERS 0x02060002
+#define ILLUMINA_DUMP_VERS 0x02060003
diff --git a/tools/sra-dump/sff-dump.vers b/tools/sra-dump/sff-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-dump/sff-dump.vers
+++ b/tools/sra-dump/sff-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-dump/sff-dump.vers.h b/tools/sra-dump/sff-dump.vers.h
index edc31de..5f9ef78 100644
--- a/tools/sra-dump/sff-dump.vers.h
+++ b/tools/sra-dump/sff-dump.vers.h
@@ -1 +1 @@
-#define SFF_DUMP_VERS 0x02060002
+#define SFF_DUMP_VERS 0x02060003
diff --git a/tools/sra-dump/sra-dump.vers b/tools/sra-dump/sra-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-dump/sra-dump.vers
+++ b/tools/sra-dump/sra-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/abi-load.vers b/tools/sra-load/abi-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/abi-load.vers
+++ b/tools/sra-load/abi-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/fastq-load.vers b/tools/sra-load/fastq-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/fastq-load.vers
+++ b/tools/sra-load/fastq-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/helicos-load.vers b/tools/sra-load/helicos-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/helicos-load.vers
+++ b/tools/sra-load/helicos-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/illumina-load.vers b/tools/sra-load/illumina-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/illumina-load.vers
+++ b/tools/sra-load/illumina-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/pacbio-loadxml.vers b/tools/sra-load/pacbio-loadxml.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/pacbio-loadxml.vers
+++ b/tools/sra-load/pacbio-loadxml.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/sff-load.vers b/tools/sra-load/sff-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/sff-load.vers
+++ b/tools/sra-load/sff-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-load/srf-load.vers b/tools/sra-load/srf-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-load/srf-load.vers
+++ b/tools/sra-load/srf-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-pileup/sam-dump.vers b/tools/sra-pileup/sam-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-pileup/sam-dump.vers
+++ b/tools/sra-pileup/sam-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-pileup/sam-dump.vers.h b/tools/sra-pileup/sam-dump.vers.h
index b2db389..0d9ee9f 100644
--- a/tools/sra-pileup/sam-dump.vers.h
+++ b/tools/sra-pileup/sam-dump.vers.h
@@ -1 +1 @@
-#define SAM_DUMP_VERS 0x02060002
+#define SAM_DUMP_VERS 0x02060003
diff --git a/tools/sra-pileup/sam-dump2.vers b/tools/sra-pileup/sam-dump2.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-pileup/sam-dump2.vers
+++ b/tools/sra-pileup/sam-dump2.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-pileup/sra-pileup.vers b/tools/sra-pileup/sra-pileup.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-pileup/sra-pileup.vers
+++ b/tools/sra-pileup/sra-pileup.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-pileup/sra-pileup.vers.h b/tools/sra-pileup/sra-pileup.vers.h
index 41689b9..83db8f0 100644
--- a/tools/sra-pileup/sra-pileup.vers.h
+++ b/tools/sra-pileup/sra-pileup.vers.h
@@ -1 +1 @@
-#define SRA_PILEUP_VERS 0x02060002
+#define SRA_PILEUP_VERS 0x02060003
diff --git a/tools/sra-sort/sra-sort.vers b/tools/sra-sort/sra-sort.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-sort/sra-sort.vers
+++ b/tools/sra-sort/sra-sort.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-stat/sra-stat.vers b/tools/sra-stat/sra-stat.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra-stat/sra-stat.vers
+++ b/tools/sra-stat/sra-stat.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/sra-stat/sra-stat.vers.h b/tools/sra-stat/sra-stat.vers.h
index ffd88d8..baf727b 100644
--- a/tools/sra-stat/sra-stat.vers.h
+++ b/tools/sra-stat/sra-stat.vers.h
@@ -1 +1 @@
-#define SRA_STAT_VERS 0x02060002
+#define SRA_STAT_VERS 0x02060003
diff --git a/tools/sra/table-vers.vers b/tools/sra/table-vers.vers
index 097a15a..ec1cf33 100644
--- a/tools/sra/table-vers.vers
+++ b/tools/sra/table-vers.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/srapath/srapath.vers b/tools/srapath/srapath.vers
index 097a15a..ec1cf33 100644
--- a/tools/srapath/srapath.vers
+++ b/tools/srapath/srapath.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/srapath/srapath.vers.h b/tools/srapath/srapath.vers.h
index 94ba19b..9a38b5c 100644
--- a/tools/srapath/srapath.vers.h
+++ b/tools/srapath/srapath.vers.h
@@ -1 +1 @@
-#define SRAPATH_VERS 0x02060002
+#define SRAPATH_VERS 0x02060003
diff --git a/tools/update-schema/vdb-update-schema.vers b/tools/update-schema/vdb-update-schema.vers
index 097a15a..ec1cf33 100644
--- a/tools/update-schema/vdb-update-schema.vers
+++ b/tools/update-schema/vdb-update-schema.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/kdb-index.vers b/tools/util/kdb-index.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/kdb-index.vers
+++ b/tools/util/kdb-index.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/kdbmeta.vers b/tools/util/kdbmeta.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/kdbmeta.vers
+++ b/tools/util/kdbmeta.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/kdbmeta.vers.h b/tools/util/kdbmeta.vers.h
index 2a17913..7531271 100644
--- a/tools/util/kdbmeta.vers.h
+++ b/tools/util/kdbmeta.vers.h
@@ -1 +1 @@
-#define KDBMETA_VERS 0x02060002
+#define KDBMETA_VERS 0x02060003
diff --git a/tools/util/md5cp.vers b/tools/util/md5cp.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/md5cp.vers
+++ b/tools/util/md5cp.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/md5cp.vers.h b/tools/util/md5cp.vers.h
index 4fe95b6..ab6b4ff 100644
--- a/tools/util/md5cp.vers.h
+++ b/tools/util/md5cp.vers.h
@@ -1 +1 @@
-#define MD5CP_VERS 0x02060002
+#define MD5CP_VERS 0x02060003
diff --git a/tools/util/pacbio-correct.vers b/tools/util/pacbio-correct.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/pacbio-correct.vers
+++ b/tools/util/pacbio-correct.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/rcexplain.vers b/tools/util/rcexplain.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/rcexplain.vers
+++ b/tools/util/rcexplain.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/rcexplain.vers.h b/tools/util/rcexplain.vers.h
index 7f877fa..7ceed3d 100644
--- a/tools/util/rcexplain.vers.h
+++ b/tools/util/rcexplain.vers.h
@@ -1 +1 @@
-#define RCEXPLAIN_VERS 0x02060002
+#define RCEXPLAIN_VERS 0x02060003
diff --git a/tools/util/rowwritetest.vers b/tools/util/rowwritetest.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/rowwritetest.vers
+++ b/tools/util/rowwritetest.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/schema-replace.vers b/tools/util/schema-replace.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/schema-replace.vers
+++ b/tools/util/schema-replace.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/schema-replace.vers.h b/tools/util/schema-replace.vers.h
index 3e4e977..cc76b17 100644
--- a/tools/util/schema-replace.vers.h
+++ b/tools/util/schema-replace.vers.h
@@ -1 +1 @@
-#define SCHEMA_REPLACE_VERS 0x02060002
+#define SCHEMA_REPLACE_VERS 0x02060003
diff --git a/tools/util/test-sra.vers b/tools/util/test-sra.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/test-sra.vers
+++ b/tools/util/test-sra.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/test-sra.vers.h b/tools/util/test-sra.vers.h
index 853d01a..d706c30 100644
--- a/tools/util/test-sra.vers.h
+++ b/tools/util/test-sra.vers.h
@@ -1 +1 @@
-#define TEST_SRA_VERS 0x02060002
+#define TEST_SRA_VERS 0x02060003
diff --git a/tools/util/testld.vers b/tools/util/testld.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/testld.vers
+++ b/tools/util/testld.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/txt2kdb.vers b/tools/util/txt2kdb.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/txt2kdb.vers
+++ b/tools/util/txt2kdb.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/vdb-lock.vers b/tools/util/vdb-lock.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/vdb-lock.vers
+++ b/tools/util/vdb-lock.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/vdb-lock.vers.h b/tools/util/vdb-lock.vers.h
index c72842d..b179426 100644
--- a/tools/util/vdb-lock.vers.h
+++ b/tools/util/vdb-lock.vers.h
@@ -1 +1 @@
-#define VDB_LOCK_VERS 0x02060002
+#define VDB_LOCK_VERS 0x02060003
diff --git a/tools/util/vdb-passwd.vers b/tools/util/vdb-passwd.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/vdb-passwd.vers
+++ b/tools/util/vdb-passwd.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/vdb-passwd.vers.h b/tools/util/vdb-passwd.vers.h
index be91a7b..0c2f054 100644
--- a/tools/util/vdb-passwd.vers.h
+++ b/tools/util/vdb-passwd.vers.h
@@ -1 +1 @@
-#define VDB_PASSWD_VERS 0x02060002
+#define VDB_PASSWD_VERS 0x02060003
diff --git a/tools/util/vdb-unlock.vers b/tools/util/vdb-unlock.vers
index 097a15a..ec1cf33 100644
--- a/tools/util/vdb-unlock.vers
+++ b/tools/util/vdb-unlock.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/util/vdb-unlock.vers.h b/tools/util/vdb-unlock.vers.h
index 921e5a2..9f05aa4 100644
--- a/tools/util/vdb-unlock.vers.h
+++ b/tools/util/vdb-unlock.vers.h
@@ -1 +1 @@
-#define VDB_UNLOCK_VERS 0x02060002
+#define VDB_UNLOCK_VERS 0x02060003
diff --git a/tools/vcf-loader/vcf-load.vers b/tools/vcf-loader/vcf-load.vers
index 097a15a..ec1cf33 100644
--- a/tools/vcf-loader/vcf-load.vers
+++ b/tools/vcf-loader/vcf-load.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-config/vdb-config.vers b/tools/vdb-config/vdb-config.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-config/vdb-config.vers
+++ b/tools/vdb-config/vdb-config.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-config/vdb-config.vers.h b/tools/vdb-config/vdb-config.vers.h
index 7a7a5bf..55347d6 100644
--- a/tools/vdb-config/vdb-config.vers.h
+++ b/tools/vdb-config/vdb-config.vers.h
@@ -1 +1 @@
-#define VDB_CONFIG_VERS 0x02060002
+#define VDB_CONFIG_VERS 0x02060003
diff --git a/tools/vdb-copy/vdb-copy.vers b/tools/vdb-copy/vdb-copy.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-copy/vdb-copy.vers
+++ b/tools/vdb-copy/vdb-copy.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-copy/vdb-copy.vers.h b/tools/vdb-copy/vdb-copy.vers.h
index 2051ddd..b8f37a1 100644
--- a/tools/vdb-copy/vdb-copy.vers.h
+++ b/tools/vdb-copy/vdb-copy.vers.h
@@ -1 +1 @@
-#define VDB_COPY_VERS 0x02060002
+#define VDB_COPY_VERS 0x02060003
diff --git a/tools/vdb-decrypt/vdb-decrypt.vers b/tools/vdb-decrypt/vdb-decrypt.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-decrypt/vdb-decrypt.vers
+++ b/tools/vdb-decrypt/vdb-decrypt.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-decrypt/vdb-decrypt.vers.h b/tools/vdb-decrypt/vdb-decrypt.vers.h
index 6867585..fa1acef 100644
--- a/tools/vdb-decrypt/vdb-decrypt.vers.h
+++ b/tools/vdb-decrypt/vdb-decrypt.vers.h
@@ -1 +1 @@
-#define VDB_DECRYPT_VERS 0x02060002
+#define VDB_DECRYPT_VERS 0x02060003
diff --git a/tools/vdb-decrypt/vdb-encrypt.vers b/tools/vdb-decrypt/vdb-encrypt.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-decrypt/vdb-encrypt.vers
+++ b/tools/vdb-decrypt/vdb-encrypt.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-decrypt/vdb-encrypt.vers.h b/tools/vdb-decrypt/vdb-encrypt.vers.h
index 8619a5a..0d3bf0d 100644
--- a/tools/vdb-decrypt/vdb-encrypt.vers.h
+++ b/tools/vdb-decrypt/vdb-encrypt.vers.h
@@ -1 +1 @@
-#define VDB_ENCRYPT_VERS 0x02060002
+#define VDB_ENCRYPT_VERS 0x02060003
diff --git a/tools/vdb-dump/vdb-boot.vers b/tools/vdb-dump/vdb-boot.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-dump/vdb-boot.vers
+++ b/tools/vdb-dump/vdb-boot.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-dump/vdb-dump.vers b/tools/vdb-dump/vdb-dump.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-dump/vdb-dump.vers
+++ b/tools/vdb-dump/vdb-dump.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-dump/vdb-dump.vers.h b/tools/vdb-dump/vdb-dump.vers.h
index a7aa35d..6d6ab84 100644
--- a/tools/vdb-dump/vdb-dump.vers.h
+++ b/tools/vdb-dump/vdb-dump.vers.h
@@ -1 +1 @@
-#define VDB_DUMP_VERS 0x02060002
+#define VDB_DUMP_VERS 0x02060003
diff --git a/tools/vdb-validate/check-corrupt.vers b/tools/vdb-validate/check-corrupt.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-validate/check-corrupt.vers
+++ b/tools/vdb-validate/check-corrupt.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-validate/check-corrupt.vers.h b/tools/vdb-validate/check-corrupt.vers.h
index 581f280..f0acd0c 100644
--- a/tools/vdb-validate/check-corrupt.vers.h
+++ b/tools/vdb-validate/check-corrupt.vers.h
@@ -1 +1 @@
-#define CHECK_CORRUPT_VERS 0x02060002
+#define CHECK_CORRUPT_VERS 0x02060003
diff --git a/tools/vdb-validate/vdb-validate.vers b/tools/vdb-validate/vdb-validate.vers
index 097a15a..ec1cf33 100644
--- a/tools/vdb-validate/vdb-validate.vers
+++ b/tools/vdb-validate/vdb-validate.vers
@@ -1 +1 @@
-2.6.2
+2.6.3
diff --git a/tools/vdb-validate/vdb-validate.vers.h b/tools/vdb-validate/vdb-validate.vers.h
index 90495a8..b536b1f 100644
--- a/tools/vdb-validate/vdb-validate.vers.h
+++ b/tools/vdb-validate/vdb-validate.vers.h
@@ -1 +1 @@
-#define VDB_VALIDATE_VERS 0x02060002
+#define VDB_VALIDATE_VERS 0x02060003

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/sra-sdk.git



More information about the debian-med-commit mailing list