Hi,

there's a bug in the row-wise access to the table-interface. The
row-struct stores data of different types and column names in their own
vectors.  However, when using a cursor to access the rows, column names
for unsigned columns are inserted into the signed name vector in
ibis::bord::cursor::fillRow. Please see the attached diff for the
details.

Best regards

Patrik Nisen
Index: src/bord.cpp
===================================================================
--- src/bord.cpp	(revision 605)
+++ src/bord.cpp	(working copy)
@@ -11102,7 +11102,7 @@
 	    }
 	    break;}
 	case ibis::UBYTE: {
-	    res.bytesnames.push_back(buffer[j].cname);
+	    res.ubytesnames.push_back(buffer[j].cname);
 	    if (buffer[j].cval) {
 		res.ubytesvalues.push_back
 		    ((* static_cast<const array_t<const unsigned char>*>
@@ -11124,7 +11124,7 @@
 	    }
 	    break;}
 	case ibis::USHORT: {
-	    res.shortsnames.push_back(buffer[j].cname);
+	    res.ushortsnames.push_back(buffer[j].cname);
 	    if (buffer[j].cval) {
 		res.ushortsvalues.push_back
 		    ((* static_cast<const array_t<const uint16_t>*>
@@ -11146,7 +11146,7 @@
 	    }
 	    break;}
 	case ibis::UINT: {
-	    res.intsnames.push_back(buffer[j].cname);
+	    res.uintsnames.push_back(buffer[j].cname);
 	    if (buffer[j].cval) {
 		res.uintsvalues.push_back
 		    ((* static_cast<const array_t<const uint32_t>*>
@@ -11168,7 +11168,7 @@
 	    }
 	    break;}
 	case ibis::ULONG: {
-	    res.longsnames.push_back(buffer[j].cname);
+	    res.ulongsnames.push_back(buffer[j].cname);
 	    if (buffer[j].cval) {
 		res.ulongsvalues.push_back
 		    ((* static_cast<const array_t<const uint64_t>*>
_______________________________________________
FastBit-users mailing list
[email protected]
https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users

Reply via email to