Hi Francesc: Thanks for your help. I managed to get things to work by removing the NROWS parameter from the table in the C++ code. I'll keep an eye out for upcoming HDF5 releases, where this issue will hopefully be resolved.
Thanks again Milad On Thu, Nov 20, 2008 at 3:15 AM, Francesc Alted <[EMAIL PROTECTED]> wrote: > A Wednesday 19 November 2008, Francesc Alted escrigué: >> Hi Milad, >> >> I've just received this message. It seems that it bounced for some >> unknown reason. Anyway, see my answer interspersed through your >> comments. >> >> > Message: 1 >> > Date: Fri, 14 Nov 2008 11:05:05 -0600 >> > From: "Milad Fatenejad" <[EMAIL PROTECTED]> >> > Subject: Re: [Pytables-users] pytables compatibility with h5tb >> > To: "Francesc Alted" <[EMAIL PROTECTED]> >> > Cc: [email protected] >> > Message-ID: >> > >> > <[EMAIL PROTECTED]> >> > Content-Type: text/plain; charset=ISO-8859-1 >> > >> > Hi Francesc: >> > Thanks for your reply. It is a big relief to know that the two >> > projects are designed to work with one another. Below, I've >> > included: 1) The pytables code to generate the hdf5 file, with one >> > record in the /streams/time table >> > 2) The c++ code which simply opens the file and appends two more >> > records. >> >> I've tracked down the problem in a bug in the HDF5's H5TB interface. >> It seems that it does not honor the NROWS attribute in a consistent >> way throughout the calls in H5TB. Apparently, it doesn't create a >> NROWS attribute in table creation time, but under some circumstances >> (for example, when deleting a row of the table), it gets eventually >> created. It happens that the routine that detects the number of rows >> in a table (H5TBget_table_info()) first looks at the NROWS existence, >> and if there, it trust it instead of asking directly to the dataset >> (with H5Sget_simple_extent_dims()). However, it turns out that the >> function for appending rows (H5TBappend_records()), doesn't update >> properly the NROWS attribute, so you can't never increase the number >> of rows in successive appends. >> >> On his hand, PyTables always keep NROWS updated, so, this is why when >> you mix both ways of updating the HDF5 file this problem appears. >> >> I think this NROWS parameter comes from the age of pre-HDF5 1.8.x >> series, where the H5Dset_extent() did not work properly. However, I >> think that it works as intended with HDF5 1.8.x, so an elegant >> solution for the problem would be to get rid of the NROWS attribute >> completely. If not, H5TB should be fixed in order to honor the NROWS >> where appropriate. >> >> I'll contact the THG crew about this and let you know their answer. > > And here it is: > > """ > Hi Francesc, > > A bug report was created for this issue. We will > re-examine the H5TB interface and update it as needed. > > Thanks! > -Barbara > > > +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ > Barbara Jones > THG Helpdesk > > The HDF Group (THG) > [EMAIL PROTECTED] > +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ > """ > > Meanwhile, what you can do is to delete the NROWS attribute each time > that you want to update a table from your C++ program. That would make > everything work as intended. > > Another solution is that you set the PYTABLES_SYS_ATTRS to False in your > parameters.py (or pass it as a keyword to the openFile() function). > This prevents the NROWS (as well as all the other system attributes) to > be written in PyTables generated files. You will need PyTables 2.1 > (its final version is planned for the next week) for doing this though. > > Cheers, > > -- > Francesc Alted > ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Pytables-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/pytables-users
