fix(ODBC): Poco:Data::ODBC - MSSQL (n)varchar(max) length issue #4324 (#4738)

* fix(ODBC): Poco:Data::ODBC - MSSQL (n)varchar(max) length issue #4324

* chore(ODBC): remove unused vars; fix SQL Server SDK include path #4324

* fix(ODBC): trim UTF16 string #4324

* chore(ODBC): add compile time big string diagnostics #4324

* chore(ODBC): add SQLServer big string vector test case #4324

* fix(ODBC): detect SQLServer header #4324

* chore: add listing msodbdcsql18 folder #4324

* ci: change odbc drivers installation order #4324

* chore(CMake): Add option ENABLE_DATA_SQL_SERVER_BIG_STRINGS, auto-detection of msodbcsql.h on Linux and macOS

* fix(ODBC): detect backend at runtime for string size; add Session::dbmsName() #4324

* fix(ODBC): wrong char to string conversion #4324

---------

Co-authored-by: cunj123 <n.belusic@pta.hr>
Co-authored-by: Matej Kenda <matejken@gmail.com>
This commit is contained in:
Aleksandar Fabijanic
2024-10-19 14:43:00 -05:00
committed by GitHub
parent 9a97e7ca0d
commit 36c808230c
32 changed files with 558 additions and 198 deletions

30
configure vendored
View File

@@ -82,6 +82,10 @@ $(ls -C "$base"/build/config/)
Compile with -DPOCO_DATA_NO_SQL_PARSER
Disables compilation of the SQLParser.
--mssql-bigstring
Compile with -DPOCO_DATA_SQL_SERVER_BIG_STRINGS=1
Enables strings over 8000 bytes on MS SQL Server.
--sqlite-fts=<path>
Compile with -DPOCO_DATA_SQLITE_FTS.
Compile SQLite with Full Text Search support.
@@ -110,6 +114,9 @@ $(ls -C "$base"/build/config/)
--odbc-include=<path>
Specify the directory where ODBC header files are located.
--mssql-include=<path>
Specify the directory where MS SQL Server ODBC header files are located.
--mysql-lib=<path>
Specify the directory where MySQL library is located.
@@ -170,11 +177,13 @@ includepath=""
librarypath=""
odbclib=""
odbcinclude=""
mssqlinclude=""
unbundled=""
trace=""
static=""
shared=""
nosqlparser=
mssqlbigstring=
omitMinimal="Crypto NetSSL_OpenSSL Zip Data Data/SQLite Data/ODBC Data/MySQL Data/PostgreSQL MongoDB Redis PDF DNSSD DNSSD/Avahi DNSSD/Bonjour CppParser PageCompiler"
omitTypical="Data/ODBC Data/MySQL Data/PostgreSQL MongoDB Redis PDF DNSSD DNSSD/Avahi DNSSD/Bonjour CppParser"
omit=$omitTypical
@@ -208,6 +217,9 @@ while [ $# -ge 1 ]; do
--odbc-include=*)
odbcinclude="$(echo "${1}" | awk '{print substr($0,16)}')" ;;
--mssql-include=*)
mssqlinclude="$(echo "${1}" | awk '{print substr($0,16)}')" ;;
--mysql-lib=*)
mysqllib="$(echo "${1}" | awk '{print substr($0,13)}')" ;;
@@ -255,6 +267,11 @@ while [ $# -ge 1 ]; do
nosqlparser=1
;;
--mssql-bigstring)
flags="$flags -DPOCO_DATA_SQL_SERVER_BIG_STRINGS=1"
mssqlbigstring=1
;;
--sqlite-thread-safe=*)
flags="$flags -DSQLITE_THREADSAFE=$(echo "${1}" | awk '{print substr($0,22)}')" ;;
@@ -377,6 +394,9 @@ fi
if [ -n "$odbcinclude" ] ; then
echo "POCO_ODBC_INCLUDE = $odbcinclude" >>"$build"/config.make
fi
if [ -n "$mssqlinclude" ] ; then
echo "POCO_MSSQL_INCLUDE = $mssqlinclude" >>"$build"/config.make
fi
if [ -n "$mysqllib" ] ; then
echo "POCO_MYSQL_LIB = $mysqllib" >>"$build"/config.make
fi
@@ -401,6 +421,9 @@ fi
if [ -n "$nosqlparser" ] ; then
echo "POCO_DATA_NO_SQL_PARSER = $nosqlparser" >>"$build"/config.make
fi
if [ -n "$mssqlbigstring" ] ; then
echo "POCO_DATA_SQL_SERVER_BIG_STRINGS = $mssqlbigstring" >>"$build"/config.make
fi
cat <<__EOF__ >>"$build"/config.make
export POCO_CONFIG
@@ -428,6 +451,9 @@ fi
if [ -n "$odbcinclude" ] ; then
echo "export POCO_ODBC_INCLUDE" >>"$build"/config.make
fi
if [ -n "$mssqlinclude" ] ; then
echo "export POCO_MSSQL_INCLUDE" >>"$build"/config.make
fi
if [ -n "$mysqllib" ] ; then
echo "export POCO_MYSQL_LIB" >>"$build"/config.make
fi
@@ -452,7 +478,9 @@ fi
if [ -n "$nosqlparser" ] ; then
echo "export POCO_DATA_NO_SQL_PARSER" >>"$build"/config.make
fi
if [ -n "$mssqlbigstring" ] ; then
echo "POCO_DATA_SQL_SERVER_BIG_STRINGS=$mssqlbigstring" >>"$build"/config.make
fi
# create config.build
echo '# config.build generated by configure script' >"$build"/config.build
cat <<__EOF__ >>"$build"/config.build