[gdal-dev] Call for discusson on RFC 31 - OGR 64bit Integer Fields and FIDs
Daniel Morissette
dmorissette at mapgears.com
Tue Jan 27 18:51:51 PST 2015
Hi Even,
Replies in-line below
On 2015-01-27 12:47 PM, Even Rouault wrote:
>
> Not sure if you saw my answer to Dmitriy as it ended up into a separate thread
> due to dumb email agent. Reposting it inline
>
No, I'm sorry it seems that I had missed it.
> """Dmitriy,
>
> The main reason for the new symbol is that if we change the return type it
> might cause crashing problems that are not detected at compile time if GetFID
> is used in a printf like function. For example
>
> printf("%ld %s", GetFID (), str)
>
> Even
> """
>
This may not be true on all platforms, but at least with GCC, we get
warnings in a case like this, e.g.
#include <stdio.h>
#include <stdint.h>
int main()
{
int64_t id=10;
printf ("%d %s\n", id, "test");
return 0;
}
$ gcc -Wall ttt.c -o ttt
ttt.c: In function 'main':
ttt.c:8: warning: format '%ld' expects type 'long int', but argument 2
has type 'int64_t'
> I've taken that approach from Frank's initial draft and that seamed a valid
> concern. That said, if you guys think that changing the return type is better,
> I've no strong mind.
>
I don't feel that strongly about it. I was mostly wondering if there
would be a way to avoid the *64() suffixes.
>>
>> Also note that in the list of driver upgrades, you could add potential
>> enhancement to the support for MITAB "TAB Seamless Tables" which had a
>> potential FID overflow problem on very large tables with 32 bit ids. The
>> driver would have caught and reported an error in this case, but that
>> limitation can be solved with 64 bit ids if/when the code is upgraded to
>> use them. Look for TABSeamless::EncodeFeatureId() and related methods in
>> mitab_tabseamless.cpp.
>
> OK thanks for the hint, I'll have a look at this. Do you have samples datasets
> that would trigger that issue ?
>
No. I don't think I've ever seen or heard of a seamless table large
enough to trigger the issue.
--
Daniel Morissette
T: +1 418-696-5056 #201
http://www.mapgears.com/
Provider of Professional MapServer Support since 2000
More information about the gdal-dev
mailing list