Author: Frediano Ziglio <[email protected]>
Date: Sun Mar 29 20:38:27 2026 +0100
odbc: Update SQLGetInfo(SQL_DESCRIBE_PARAMETER)
SQLDescribeParam was implemented, so return it's supported.
Author: Frediano Ziglio <[email protected]>
Date: Mon Mar 23 18:31:52 2026 +0000
odbc: Fix SQL_DESC_BIND_OFFSET_PTR handling
Use sql_desc_bind_offset_ptr not only on structure binding or
on following (not first) rows.
SQLExtendedFetch uses sql_desc_bind_offset_ptr so do not clear it.
Add a test, partially from Bob Kline.
This fixes https://github.com/FreeTDS/freetds/issues/716.
Author: Frediano Ziglio <[email protected]>
Date: Sat Feb 14 17:16:58 2026 +0000
utils: Fix compatibility with Nettle 4 library
Hash length parameter was removed from nettle_md5_digest.
Method suggested by Satadru Pramanik.
Author: Frediano Ziglio <[email protected]>
Date: Thu Feb 19 04:48:16 2026 +0000
odbc: Fix leak in SQLDriverConnect if string is invalid
Login structure was not freed if odbc_parse_connect_string
returned false, which can simply happen if the string has
an invalid syntax.
Author: Frediano Ziglio <[email protected]>
Date: Mon Feb 16 21:45:25 2026 +0000
tds: Avoid overflow converting numeric to string
Author: Aaron M. Ucko <[email protected]>
Date: Thu May 9 16:36:31 2024 -0400
Improve support for TDS 5 (Sybase) bulk transfers.
* Read defaults, send them back explicitly as needed, and clean up
their storage afterwards.
* tds5_bcp_add_variable_columns:
** Send spaces in lieu of fully empty SYB(VAR)CHAR data.
** Send correct textpos values in all cases.
** When writing the adjustment table, avoid a potential Sybase "row
format error" by eliding the (effective) column count when it would
have repeated the largest adjustment table entry.
* tds_deinit_bcpinfo: Free and reset current_row for transfers in.
Avoid potentially trying to interpret fragments of outgoing TDS
data as BLOB pointers.
Author: Frediano Ziglio <[email protected]>
Date: Mon Dec 1 19:37:18 2025 +0000
odbc: Fix for SQL_COPT_SS_OLDPWD attribute
This attribute allows to change the password while logging
to the server.
Code was wrongly taking the length of the attribute in
characters instead of bytes causing a failure using wide
function.
Author: Frediano Ziglio <[email protected]>
Date: Wed Nov 19 23:57:13 2025 +0000
Fix ABI breakage for tdsdump_open under Windows
tdsdump_open is exported by our DB-Library implementation.
Before version 1.5 tdsdump_open always accepted a "const char*"
string, however in 1.5 this was changed to "const wchar_t*" for
Windows to support Unicode.
This broke ABI for Windows.
Provide tdsdump_open with old ABI and a new tdsdump_wopen
(Windows only).
Author: Matt McNabb <[email protected]>
Date: Thu Oct 30 21:26:10 2025 -0400
odbc: Re-prepare a prepared query if it never returned a handle
Merge: b95ce1e6 e39070ff
Author: Frediano Ziglio <[email protected]>
Date: Thu Oct 30 06:30:11 2025 +0000
Merge fix for SQLPutData
Author: Frediano Ziglio <[email protected]>
Date: Thu Oct 23 19:45:03 2025 +0100
odbc: Fix inserting too much data with SQLPutData
An error is returned if column is truncate.
Author: Frediano Ziglio <[email protected]>
Date: Wed Oct 8 16:35:57 2025 +0100
odbc: Accept any variable data type using DATA_AT_EXEC length
Reported in https://github.com/FreeTDS/freetds/issues/667.
The behaviour is consistent with Microsoft driver.
This caused an issue using PHP ODBC PDO driver.
Author: Frediano Ziglio <[email protected]>
Date: Tue Oct 14 21:35:22 2025 +0100
ci: Update win-iconv version
Pick up more recent master version, already including my fix.
Author: Frediano Ziglio <[email protected]>
Date: Wed Sep 10 17:53:56 2025 +0100
dblib: Expand buffers to hold converted floating point
Make sure there's enough space for converting the numbers.
This fixes fisql command printing real/float values.
Author: Frediano Ziglio <[email protected]>
Date: Thu Aug 28 21:02:57 2025 +0100
Use CORK flag correctly, do not delay partial packets
Resetting TCP_CORK flag in Linux causes the partial packets
to be flushed however if the queue is full partial packets
are not moved to the queue.
Partial packets are then processed when space is available.
However FreeTDS used to set again the flag causing partial
packets to be delayed.
Remove that delay reducing latency.
Merge: 569401e6 65efc2d5
Author: Frediano Ziglio <[email protected]>
Date: Wed Jun 25 17:15:09 2025 +0100
Merge test for vasprintf for VMS
Author: Craig A. Berry <[email protected]>
Date: Tue Jun 24 10:38:20 2025 -0500
VMS has had vsnprintf for a long time
And this allows for a better vasprintf fallback for systems where
vasprintf is not available.
Author: Craig A. Berry <[email protected]>
Date: Mon Jun 23 07:26:27 2025 -0500
Better test for vasprintf on VMS
Recentish CRTLs do have it, but the test I added 23 years ago was
not correctly detecting it.
Author: Frediano Ziglio <[email protected]>
Date: Wed Jun 18 11:08:10 2025 +0100
tds: Fix bulk copy in for Microsoft XML type
As documented, and tested, the protocol requires the usage
of NVARCHAR type, not XML, which is refused causing an error.
Merge: 349445e4 6c532e2a
Author: Frediano Ziglio <[email protected]>
Date: Sat May 31 17:43:29 2025 +0100
Fix conversion bound checks, tsql message formatting
Author: Frediano Ziglio <[email protected]>
Date: Sat May 31 17:02:34 2025 +0100
tds: Fix bound check conversion (float -> uint)
Converting from floating point to unsigned int the bound check
was incorrect resulting in invalid conversions if the input
value was not in range.
Author: Frediano Ziglio <[email protected]>
Date: Sat May 31 17:00:18 2025 +0100
tsql: Avoid possible invalid type formatting a message
Specifically:
tsql.c: In function ‘do_query’:
tsql.c:292:80: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘__suseconds64_t’ {aka ‘long long int’} [-Wformat=]
292 | sprintf(message, "Total time for processing %d rows: %ld msecs\n",
| ~~^
| |
| long int
| %lld
293 | rows, (long) ((stop.tv_sec - start.tv_sec) * 1000) + ((stop.tv_usec - start.tv_usec) / 1000));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| __suseconds64_t {aka long long int}
long should be enough for 49 days in case of 32 bit, I hope
your query doesn't take so long.
Author: Frediano Ziglio <[email protected]>
Date: Mon Apr 21 15:58:08 2025 +0100
ctlib: Remove leak freeing command
Release cursor while freeing command.