Ludo Brands wrote:
We only support 32 bit SPARC, and there we split a 64 bit load into
two
32 bit loads. dbl, assuming it points to a double, should
point to a 64
bit-aligned memory location though (depending on the cpu, 32 bit
alignment may be sufficient, but better be safe than sorry).
I'll try to test against 2.7.1 later in the day, although as
I've said
Linux is OK. Is the if FIntegerDatetimes then something
Solaris-specific Ludo?)?
No, the value is read from the server and depends on how the server was
compiled. Run 'show integer_datetimes;' in psql or whatever client you are
using to see the value.
Pqconnection has detected that it is 'on' on your server. You can check with
above command to see if the server agrees with that.
With integer_datetimes on the datetime is returned as an int64 with the
number of microseconds since 2000-01-01 00:00:00 UTC, hence the
dbl^ := pint64(buffer)^/1000000;
Dbl is a Pdouble, so the alignment problem could indeed come from there. The
buffer returned by the driver is correct because just before you have
pint64(buffer)^ := BEtoN(pint64(CurrBuff)^); CurrBuff being the pointer
returned.
Now, you are getting a SIGSEGV, not a SIGBUS which is what you would get for
an alignment problem.
This problem no longer exists in 2.7.1 (21919 + Reinier's
solarisdbtrunk2.diff).
However, I've got an "unknown fieldtype" which I'll investigate and if
necessary raise separately.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal