Re: dbdatlen() returns 8 for NULL timestamp / rowversion value

Frediano Ziglio <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <CAHt6W4e1T+iiomAJNbxG+NvkBstzF5RM80kMXjzpmT9d7mUBWg@mail.gmail.com>
On 25 Feb 2016 23:10, "Geoff Montee" <[email protected]> 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.

Frediano
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.