dbdatlen() returns 8 for NULL timestamp / rowversion value
Geoff Montee <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <CAA7biFNB=MJa+RzX0EK2NsLzcnu+L3ywza2A3yCE5K=9O6nU=A@mail.gmail.com> |
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