Oh, sorry, it was r495, not line 495. I reverted the change introduced in 
src/colValues.cpp at revision 495 to restore functionality.

However, it ended up being a bit more complex than that because of r496 which 
changed the behavior of category::getString (use row index, not key). The 
problem, after i reverted colValues, is that the bundle call the 
colUInt::getString which call category::getString with the key, not the row 
index. The follwoing change should fix it but prevent use of colUINT with TEXT 
columns (i don't think it was used, not sure it even makes sense):

diff --git a/src/colValues.h b/src/colValues.h
index ff7c1c3..232be61 100755
--- a/src/colValues.h
+++ b/src/colValues.h
@@ -239,10 +239,9 @@ public:
     }
     /// Write the ith element as text.
     virtual void write(std::ostream& out, uint32_t i) const {
-       if (col->type() == ibis::CATEGORY || col->type() == ibis::TEXT) {
-           std::string str;
-           col->getString((*array)[i], str);
-           if (str.empty()) {
+       if (col->type() == ibis::CATEGORY) {
+           const char * str = reinterpret_cast<const 
ibis::category*>(col)->getKey((*array)[i]);
+           if (str == 0 || (*str) == 0) {
                out << "<NULL>";
            }
            else {

All my test case works after this final change. I have attached the complete 
patch i'm applying on top of r497 to make everything work. I'm not sure i'm not 
breaking something else though (especially the things i reverted from r495).

Thanks,

-----Original Message-----
From: K. John Wu [mailto:[email protected]] 
Sent: Thursday, March 22, 2012 6:43 PM
To: FastBit Users
Cc: Dominique Prunier
Subject: Re: [FastBit-users] Changes in src/colValues.cpp@495 breaks 
ibis::bundle::getUInt for CATEGORY

Hi, Dominique,

I see the problem of assign a nil pointer to a string object.  I would
prefer to handle this case a little earlier in the code.  The change
will appear in the next SVN check in.

Would you mind check the file and line number in the original message?
 I don't see any problem with src/colValues.cpp line 495 in my copy of
the code..

John



On 3/22/12 3:04 PM, Dominique Prunier wrote:
> While i’m at it, the following patch fixes the NUL string case (key 0)
> 
>  
> 
> diff --git a/src/category.cpp b/src/category.cpp
> 
> index d8c1a9f..e7d28a1 100644
> 
> --- a/src/category.cpp
> 
> +++ b/src/category.cpp
> 
> @@ -715,7 +715,7 @@ void ibis::category::getString(uint32_t i,
> std::string &str) const {
> 
>         ibis::array_t<uint32_t> ints;
> 
>         ierr = ibis::fileManager::instance().getFile(fnm.c_str(), ints);
> 
>         if (ierr >= 0 && ints.size() == thePart->nRows()) {
> 
> -           if (i < ints.size()) {
> 
> +           if (i < ints.size() && ints[i] > 0) {
> 
>                 str = dic[ints[i]];
> 
>             }
> 
>             return;
> 
>  
> 
> Thanks,
> 
>  
> 
> *From:*[email protected]
> [mailto:[email protected]] *On Behalf Of *Dominique
> Prunier
> *Sent:* Thursday, March 22, 2012 5:59 PM
> *To:* FastBit Users
> *Subject:* [FastBit-users] Changes in src/colValues.cpp@495 breaks
> ibis::bundle::getUInt for CATEGORY
> 
>  
> 
> Hey John,
> 
>  
> 
> The title says pretty much everything. I’m not sure why this has been
> changed (this is a huge changeset in a part of the lib i don’t really
> know), but it breaks the ability to access a CATEGORY string key
> though bundles. If i revert only this file, it seems to work.
> 
>  
> 
> Thanks,
> 
>  
> 
> */Dominique Prunier/**//*
> 
>  APG Lead Developper
> 
> Logo-W4N-100dpi
> 
>  4388, rue Saint-Denis
> 
>  Bureau 309
> 
>  Montreal (Quebec)  H2J 2L1
> 
>  Tel. +1 514-842-6767  x310
> 
>  Fax +1 514-842-3989
> 
>  [email protected] <mailto:[email protected]>
> 
>  www.watch4net.com <http://www.watch4net.com/>
> 
> / /
> 
> /This message is for the designated recipient only and may contain
> privileged, proprietary, or otherwise private information. If you have
> received it in error, please notify the sender immediately and delete
> the original. Any other use of this electronic mail by you is prohibited.
> 
> //Ce message est pour le récipiendaire désigné seulement et peut
> contenir des informations privilégiées, propriétaires ou autrement
> privées. Si vous l'avez reçu par erreur, S.V.P. avisez l'expéditeur
> immédiatement et effacez l'original. Toute autre utilisation de ce
> courrier électronique par vous est prohibée.///
> 
>  
> 
> 
> 
> _______________________________________________
> FastBit-users mailing list
> [email protected]
> https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users

Attachment: fix_r497.patch
Description: fix_r497.patch

_______________________________________________
FastBit-users mailing list
[email protected]
https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users

Reply via email to