Skip to Content.
Sympa Menu

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

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Geoff Montee <geoff.montee AT gmail.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: [freetds] dbdatlen() returns 8 for NULL timestamp / rowversion value
  • Date: Wed, 24 Feb 2016 16:35:15 -0800

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




Archive powered by MHonArc 2.6.24.

Top of Page