[freetds] dbdatlen() returns 8 for NULL timestamp / rowversion value

Frediano Ziglio freddy77 at gmail.com
Sun Feb 28 15:35:56 EST 2016

On 25 Feb 2016 23:10, "Geoff Montee" <geoff.montee at gmail.com> wrote:
> Hi all,
> According to MS SQL Server's documentation, the timestamp / rowversion
> data type is equivalent to binary(8) or varbinary(8) depending on
> whether the column is nullable.
> "A nonnullable rowversion column is semantically equivalent to a
> binary(8) column. A nullable rowversion column is semantically
> equivalent to a varbinary(8) column."
> https://msdn.microsoft.com/en-us/library/ms182776.aspx
> I can confirm that FreeTDS's dbcoltype() function returns 45
> (SYBBINARY) as the data type for a timestamp column. I've noticed some
> strange behavior by dbdatlen() though.
> If I query a NULL binary(8) or varbinary(8) column, then dbdatlen()
> returns 0, which makes sense for a NULL column. However, if I query a
> NULL timestamp column, then dbdatlen() returns 8. This causes the NULL
> checks in my application (tds_fdw) to say that the column is not NULL.
> Is this intentional, or is this a bug?
> I noticed this behavior on FreeTDS 0.95.19 on RHEL 7.
> Thanks!
> Geoff

I don't known. Can you send a log (tds dump)?

If I remember the only difference for timestamps and binaries are the
usertype. Possibly binary is always used instead of varbinary.


More information about the FreeTDS mailing list