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
fix_r497.patch
Description: fix_r497.patch
_______________________________________________ FastBit-users mailing list [email protected] https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users
