[freetds] column_data and CVS HEAD
ZIGLIO, Frediano, VF-IT
Frediano.Ziglio at vodafone.com
Fri Jan 27 05:47:44 EST 2006
As someone should have noted I started a new branch and new code in CVS.
I decided to not call anymore CVS HEAD as version x.xx cause this caused
a lot of confusion. Currently snapshot should unpack to a
freetds-0.65.dev.2006xxxx directory however calling it 0.65 (as we did
with previous versions) confuse only users.
Now let's see that main change in 0.^H^H^H development version. I
removed column_offset and put a new column_data field (while changing
libTDS so version :) ) in TDSCOLUMN. column_data is a direct pointer to
data and should be compatible with column_type. I also added a
column_data_free in TDSCOLUMN and a row_free in TDSRESULTINFO. Why this
- simplify getting data pointer using directly col->column_data instead
of a &res_info->current_row[col->column_offset]
- allow every column to be allocate indipendly. This is very helpful in
parameters where you add a parameter at a time (you don't have to
reallocate row every time)
- allow to implement row buffering (a bit complicated but nothing
compared to semplification above)
- allow direct data binding if data is binary compatible with tds one.
Not yet implemented and probably there is some work to do for indicators
but was impossible with data packed in a row...
Some other works in this direction
- remove bcp_column_data from TDSCOLUMN and use column_data and
column_cur_size instead. A bit more complicated than work above but will
shorten bcp code stuff
- implement (partially) direct binding
- (possible?) change convert stuff to not allocated useless buffers
- (useful?) make libTDS store only text/binary data for BLOBs. Now we
store a structure with text, text pointer and the timestamp. Although
text pointer and timestamp are related to data is quite different to
handle BLOBs from normal data in libTDS. However this has some drawbacks
(were should we store these informations? how to handle thse
informations in row buffering?) to valutate.
More information about the FreeTDS