Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Mar 22 07:33:16 2025 +0000

    Avoid errors redefining getpid() for MingW

    We use a macro for getpid but MingW define a getpid function
    which can clash with our definition. Include unistd.h header
    earlier to avoid the clash later.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Apr 23 21:47:50 2025 +0100

    ctlib: Add a test for data rows locking tables to blk_in test

    As other tests for bulk copy skip the test if the setup fails.
    This allows to add tests for types not supported by some versions
    of the database without having to explicitly test if some types
    are supported or not for the specific query.
    Add a test with "LOCK DATAROWS" which fails on Microsoft servers.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Apr 23 22:36:46 2025 +0100

    ctlib: Check all command succeed running a query with run_command

    Almost all test queries are expected to run successfully
    commands so check they all succeeded.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Apr 23 22:15:58 2025 +0100

    ctlib: Do not store run_command results if not used

    No reason to store the result value.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Apr 23 21:43:28 2025 +0100

    tds: Detect data rows locking looking to capabilities

    More fine grained and correct check.
    For instance ASE version 12.5.2 reports a version of 12.5 during
    login so the check for >= 12.5.1 failed causing invalid encoding.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Apr 23 21:41:08 2025 +0100

    tds: Make clear product version is hexadecimal in logs

    Format output as 0xXXXX, not just XXXX.

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 15:57:29 2025 +1200

    [DOL BULK] Documentation for sysstat2; warn about slow index for datarows-locked table

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 15:22:24 2025 +1200

    [DOL BULK] Perform the locktype query before the columns query - hidden dependency

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 15:15:30 2025 +1200

    [DOL BULK] Also support freebcp being invoked with database.owner.tablename

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 13:33:26 2025 +1200

    [DOL BULK] Row data packet layout

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 12:36:05 2025 +1200

    [DOL BULK] Probe for datarows-lock on the table

            Limit the locking type probe to ASE versions that support it

Author: Matt McNabb <Matthew.mcnabb@vmssoftware.com>
Date:   Fri Apr 11 17:46:43 2025 +1200

    [DOL BULK] Add TDS_REQ_DOL_BULK to capabilities.

      Wireshark calls this TDS_DOL_VOID and tds.capability.dol.bulk
      Required by SAP ASE to bulk insert to a datable with DATAROWS locking.

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 10:45:52 2025 +1200

    Allow alternate input file for c_blk_in unittest

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Apr 21 18:16:42 2025 +0100

    ctlib: Check buffer length for ct_cmd_props(CS_CUR_STATUS)

    Sybase requires it to be CS_UNUSED.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Apr 21 13:12:52 2025 +0100

    ctlib: Better check for ct_cursor parameters

    Check parameters in a way more similar to Sybase libraries.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Apr 21 15:58:08 2025 +0100

    ctlib: Remove leak freeing command

    Release cursor while freeing command.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Apr 21 02:58:41 2025 +0100

    ctlib: Reuse check_call macros in tests

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Mar 24 05:20:49 2025 +0000

    tds: Do nothing if error on tds_set_interfaces_file_loc

    It should not happen, but in case it does do not revert to
    NULL.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Apr 20 10:30:13 2025 +0100

    Avoid some mixed sign compare converting numeric

    tds_numeric_bytes_per_prec are always more than 0 bytes.
    tds_swap_bytes takes the size of the buffer which should be
    size_t, not int.
    Also fill the entire numeric with zeroes first as makes easier
    for new compilers to use better code due to size constant.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 21 04:37:57 2025 +0000

    tds: Remove some warnings compiling with -Wconversion

    Most of the times we check for overflow before numeric conversions.
    Use unsigned characters if we need to do computation on them.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Apr 20 02:29:51 2025 +0100

    odbc: Set proper error in convert_numeric2server

    Propagate conversion error, otherwise a generic one would be
    used.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Apr 20 02:20:43 2025 +0100

    odbc: Extract and reuse function to convert numeric from ODBC to libTDS

    Reduce code duplication.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Apr 19 19:59:43 2025 +0100

    odbc: Add support for SQL_COPT_SS_ATTACHDBFILENAME connection attribute

    Allows to attach a file while logging it.
    Previously the option was only available using string
    attributes using SQLDriverConnect.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Jul 8 10:01:10 2018 +0100

    dblib: Return table column name from dbtablecolinfo if available

    Fill ActualName with real column table name if available.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Apr 19 16:15:47 2025 +0100

    Add missing test_base.h file to distribution

    File was added in commit c431fed9845a6d68e2383922598982b10eb1ff79
    (cfr "unit tests: Start phasing in a central baseline setup")

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Apr 19 03:42:08 2025 +0100

    Swap varint size 4 and 5 to make code more readable

    Varint size is, for most types, the size of the length in the protocol.
    For instance a size 0 means there's no size associated with the
    type while 1 means the size is one byte (so potentially 0-255).
    This is not true for size 5 which is a simple 4 bytes length while
    type 4 was a bit more complicated (having 2 lengths, one for
    text pointer and one for the data).
    Swap varint types of 4 and 5 to make the code more readable and
    consistent.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Apr 19 03:48:57 2025 +0100

    utils: Fix range check converting path name

    The check was meant to check if the returned length exceeded
    the passed buffer.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Apr 19 03:25:54 2025 +0100

    ctlib: Explain the need for cs_dt_crack

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Mar 24 05:23:07 2025 +0000

    utils: Always force terminator for tds_dir_from_cstr

    We explicitly convert the terminator so it should be already
    terminated. But won't hurt force setting it.
    Also check MultiByteToWideChar is not returning wrong values.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Apr 18 20:29:27 2025 +0100

    Define and use more cursor constants

    Mainly style change.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Apr 18 10:20:19 2025 +0100

    odbc: Fix linker issues with wide support disabled on Windows

    Do not attempt to export wide functions if they are not compiled.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Apr 18 10:19:19 2025 +0100

    odbc: Do not give warnings compiling with wide support disabled

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Apr 18 10:18:08 2025 +0100

    dblib: Remove an unused warning on Windows

    UNITTEST variable is not used if systems, like Windows, does not
    support fstat.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Apr 17 20:41:06 2025 +0100

    tests: Reuse bool, make symbols static

    Use bool type for "failed" variable.
    Do not export functions or variables from tests if not needed.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Apr 17 19:30:16 2025 +0100

    doc: Sync web pages

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 20:53:52 2025 +0100

    dblib: Check NULL behaviour in t0014 test

    Check dbreadtext does not crash on NULL values.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Mar 24 05:18:57 2025 +0000

    dblib: Allows to pass NULL to dbsetifile

    As documented by Sybase passing NULL should reset to the default
    value.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 21:21:57 2025 +0100

    dblib: Fix dbreadtext crash on NULL values

    NULL values have column_cur_size < 0.
    Do not use negative values for size, thread NULL values has having
    size zero. This will cause dbreadtext to return 0, which is the
    correct value.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 20:53:11 2025 +0100

    dblib: Compatibility with Sybase libraries for t0013 and t0014 tests

    DBTDS_7_2 is only FreeTDS.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 20:52:21 2025 +0100

    dblib: Add some assert in some tests

    Make sure memory allocations did not fail.
    Check some unexpected result from dbreadtext.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 20:50:20 2025 +0100

    dblib: Make some variable static

    Reduce scope, no need to export them, they are not used
    outside tests.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 20:48:11 2025 +0100

    dblib: Use bool in t0013 and t0014 tests

    Just style change.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Mar 29 15:08:48 2025 +0000

    apps: Remove warning compiling with MSVC

    Specifically:

        warning C4996: 'unlink': The POSIX name for this item is deprecated.
        Instead, use the ISO C++ conformant name: _unlink.
        See online help for details.

    This was introduced by commit 0c5059e394f19e
    (cfr "Makes macros.h independent from other headers").

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 28 05:23:35 2025 +0000

    More robust filename comparison on log_elision.c

    Problem reported by Craig A. Berry.
    On OpenVMS the check for log was failing due to different
    syntax of file names.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Mar 27 07:36:08 2025 +0000

    dblib: Remove server and timeout override in some tests

    I never used this feature.
    Also it's confusing with last changes and printing the wrong
    executable name if used.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed Jul 17 15:38:03 2024 -0400

    Centralize test login info (PWD file) handling.

    Extend the recently introduced tds_test_base library to supply a new
    COMMON_PWD data structure (mostly based on ctlib tests'), an instance
    thereof (the only one in practice), functions for working with it, and
    the default (relative) path to try.  Adjust everything else to use
    this setup rather than a local variant thereof.  Let historical
    variable names such as SERVER continue to work within dblib tests
    because all online dblib tests need to consult them, but explicitly go
    through the instance elsewhere, including dblib tests' common.c.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed Jul 17 14:57:08 2024 -0400

    Optionally suppress crash dialog boxes for tests on Windows.

    Consult the environment variable DIAG_SILENT_ABORT (if present),
    looking for a value starting with Y or y.  To that end, adjust
    TEST_MAIN to call test-specific entry points test_main and incorporate
    a new tds_test_base library defining a wrapper main that, on Windows,
    first suppresses any possible source of crash dialog boxes.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed Jul 17 13:31:26 2024 -0400

    unit tests: Formally designate entry points as TEST_MAIN().

    Define it in the recently introduced <freetds/utils/test_base.h>
    (which now includes <freetds/macros.h> accordingly) as

      int main(int argc TDS_UNUSED, char **argv TDS_UNUSED)

    so that main can have the same signature in tests that ignore any
    arguments as in tests that consult arguments without yielding any
    warnings.  Use this macro for all tests to pave the way for
    introducing a central main wrapper around what will then be a
    test-specific test_main.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Mar 26 10:26:37 2025 +0000

    Makes macros.h independent from other headers

    This header can be potentially be included very earlier.
    Avoid having it dependent on other larger headers.
    This can cause some compilation error in some environments
    like MingW.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed Jul 17 12:32:39 2024 -0400

    unit tests: Start phasing in a central baseline setup.

    * Introduce a <freetds/utils/test_base.h> that for now simply ensures
      that assertions in test-specific code will always be active and
      pulls in <config.h>.  (Tests that use assertions are still responsible
      for including <assert.h> themselves, but <config.h> is generally best
      included as early as possible.)
    * Start every common.h with #include <freetds/utils/test_base.h> and
      src/tds/unittests/{parsing,tls}.c with #include "common.h".  (Every
      other unit test with an accompanying common.h already had that form.)
    * Don't directly undefine NDEBUG or include <config.h> anywhere in
      */src/unittests.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Mon May 13 15:09:06 2024 -0400

    ct_get_data: Populate cmd->iodesc->name more efficiently.

    Explicitly build cmd->iodesc->name and update ...->namelen along the
    way rather than calling sprintf and strlen (which can be slow).

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 11:07:47 2025 +0000

    Remove -no-install warnings for Mac OS

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 10:56:10 2025 +0000

    ci: Build tests under Mac OS

    Just build the test, at least check if they compile.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 05:21:08 2025 +0000

    Remove some -Wconversion warnings

    In ct.c we already tested the numbers were not negative.
    For tests force conversions, we expect numbers not to be negative.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 09:36:11 2025 +0000

    Do not compile some empty modules

    Some systems (like Mac OS) complains that module (c files) are
    empty, not exporting any symbols.
    This is due to conditional compilation in some files.
    Replacement functions are compiled only if missing (poll, socketpair).
    Some code is only used on Windows (gettimeofday.c, win_mutex.c).

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 08:21:26 2025 +0000

    Remove usage of WIN32, WIN64 and __WIN32__ macros

    _WIN32 is always present for Windows having at least 32 bit, so
    no need to check either WIN32 or __WIN32__.
    WIN64 is not used in code, _WIN64 can be used instead if needed.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 05:49:36 2025 +0000

    odbc: Minor changes to parse hexadecimal numbers

    The assert it's testing condition that cannot happen, pretty
    paranoid.
    Convert to lower case instead of upper case so simplify (with or
    the constant is simpler than with and).

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 05:47:04 2025 +0000

    Do not include assert.h if not used

Author: Craig A. Berry <craigberry@mac.com>
Date:   Sat Mar 22 14:55:25 2025 -0500

    VMS build updates

    Find OpenSSL 3.x if available.
    Build tweaks to avoid unrecognized symbols.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed Jul 17 16:08:10 2024 -0400

    Formally address static analyzer concerns.

    * Add more explicit sanity checks and initializers.
    * vstrbuild.c (tds_vstrbuild): Use unsigned int for counts that will
      never be negative.
    * rpc_ct_setparam.c (ex_display_results): Avoid memory leaks in some
      error cases.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed May 8 16:21:30 2024 -0400

    Fix compilation errors in single-threaded builds.

    * Conditionally stub out the tests that require threading (as of 1.4.12)
      and don't yet have such logic.
    * include/freetds/thread.h: Never try to add extra checks around stubs.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 21 08:50:34 2025 +0000

    Reuse TDS_MIN and TDS_MAX macros

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 21 07:45:08 2025 +0000

    tds: Move tds_put_buf to login.c

    It's used specifically for login.
    In the meantime use TDS_PUT_BYTE instead of tds_put_byte to avoid
    a possible warning and and reuse TDS_MIN.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 21 07:42:35 2025 +0000

    tds: Introduce and reuse TDS_MAX, TDS_MIN and TDS_CLAMP

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 21 04:35:33 2025 +0000

    tds: Add some comments in tds_numeric_to_string

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Tue May 28 15:16:52 2024 -0400

    Address most implicit conversion warnings.

    - Harmonize variable, parameter, etc. data types more fully.
    - Adjust system API usage accordingly:
    -- For some string constants, use sizeof() - 1 in lieu of strlen,
       taking care to ensure they come from array variables.
    -- Keep format specifiers for printf et al. in sync with argument types.
    -- dbprrow: Account for the fact that printf always uses int for
       dynamic widths by substituting memchr + fwrite.
    -- odbc/prepare_query.c (prepared_rpc): Substitute atoi for strtol
       (already used with no endptr) when populating TDSINT4.
    - Cast away some remaining discrepancies where safe, in some cases by
      taking advantage of TDS_PUT_* macros.
    - ctlib.h: Explicitly define _CS_CURS_TYPE_* in terms of
      TDS_CURSOR_STATE_* rather than duplicating their values.
    - odbc_util.c: #include <stddef.h> for ptrdiff_t (now used in
      odbc_set_string_flag).
    - tds_parse_conf_section: To legitimize a cast, tighten debug_flags'
      range check on systems where int is narrower than long.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 14 10:43:38 2025 +0000

    Remove some warnings compiling with -Wconversion

    This option detect problems truncating integer numbers and
    changing sign.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Mar 12 08:07:12 2025 +0000

    doc: Update note on release process

    Mostly removal of old notes.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Mar 6 20:36:46 2025 +0000

    doc: Sync web pages

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Mar 12 04:23:56 2025 +0000

    Avoid some warnings if -Wconversion is used

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Mar 12 04:24:38 2025 +0000

    Use sizeof instead of constants

    Make easier to change buffer size and code more readable.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Mar 12 04:19:07 2025 +0000

    tds: Use size_t for tds_timestamp_str buffer size

    More appropriate type.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Mar 11 19:39:20 2025 +0000

    doc: Update software used for release

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Mar 11 19:41:22 2025 +0000

    odbc: Add a comment about usage of iODBC extension

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Mar 11 19:41:03 2025 +0000

    odbc: Use more verbose and clear names for some Unicode macros

    Makes code more clear.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 9 21:08:14 2025 +0000

    odbc: Add missing potential iconv library to tests

    If iconv library is needed it wasn't find linking some tests.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 9 21:07:04 2025 +0000

    odbc: Implement SQL_ATTR_DRIVER_UNICODE_TYPE

    It's a iODBC extension to get the type of Unicode driver.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Mar 8 22:02:07 2025 +0000

    doc: Remove obsolete note from README file

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 9 21:09:14 2025 +0000

    tds: Remove warnings about some unused parameters

    This apply to system still using OpenSSL 1.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 9 08:42:50 2025 +0000

    odbc: Remove obsolete TODO in SQLSetConnectOption

    vParam should be always be the same size as the pointer.
    Also write vParam converted to avoid printing part of it during
    logging in case of 64 bit environments.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 9 08:40:39 2025 +0000

    odbc: Avoid potentially usage of NULL pointer

    "params" can be used uninitialised in case of new_query allocation
    failure.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Mar 8 22:01:06 2025 +0000

    tds: Avoid some possible conversion warning in some tests

    Specifically:

      CC       charconv.o
    charconv.c:105:20: warning: implicit conversion from 'int' to 'char' changes value from 194 to -62 [-Wconstant-conversion]
      105 |                 buf[*pos] = 0xC0 + (x >> 6);
          |                           ~ ~~~~~^~~~~~~~~~

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Mar 8 21:56:49 2025 +0000

    odbc: Use correct type for wide characters in utf8_4 test

    Some Driver Manager do not define WCHAR type, use SQLWCHAR which
    is the same type used below in the code.

