[freetds] tds_get_size_by_type for SYBMSDATE

James K. Lowden jklowden at freetds.org
Wed Apr 9 20:21:45 EDT 2014


On Wed, 9 Apr 2014 12:41:53 +0100
Frediano Ziglio <freddy77 at gmail.com> wrote:

> Is size the size of the network bytes we receive from
> the server or is the size of the structure stored by libTDS for this
> type? Actually the table reply with the first (network bytes) but you
> are changing with the last (structure bytes). The problem is really
> this, the function is used for both purposes :(

Generally in C, we have the sizeof operator to tell us how big
something is.  The purpose of tds_get_size_by_type is to map the
type token integer "servertype" to a number of bytes that will be read
off the wire.  That's all it should ever do.  :-)  

When tds_convert gets into the picture, we're no longer working with an
amorphous string of bytes.  We have a known type, and we're converting
to a known type.  The only "unknown" is in the case of a string target:
how many bytes will be needed to represent the int/float/date/etc.?

That question is answered by tds_willconvert().  Originally it returned
boolean, but I changed it to an output size because the logic
substially overlapped another "how big will it be" function that we
were then able to drop.  

HTH.  

--jkl


More information about the FreeTDS mailing list