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

Geoff Montee geoff.montee at gmail.com
Wed Feb 24 19:35:15 EST 2016

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."


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.



More information about the FreeTDS mailing list