Closed fifofonix closed 1 year ago
With msodbcsql18 it will try to reconnect if possible, and if not, will return an error ("Communication link failure" or similar). Is that not what you see? Post an ODBC trace if you'd like more assistance with troubleshooting.
@v-chojas thanks for your comments regarding MSODBCSQL18. When I enabled the trace I found that I had mangled my configuration and that I wasn't in fact using that driver as expected. Fixing that I got MSODBCSQL18 working fine. I've modified description of problem above to reflect the fact that the issue is more to do with freetds at this point. I'm going to capture a log from that and post.
ODBC trace using freetds on MacOS from a simple loop making SELECT SQL calls. As soon as wifi is toggled we get to the end of the ODBC trace, and nothing more occurs even when networking is resumed. Eventually calling program abends without an exception.
[ODBC][44227][1664301809.724287][__handles.c][499]
Exit:[SQL_SUCCESS]
Environment = 0x7fde658c2600
[ODBC][44227][1664301809.724468][SQLSetEnvAttr.c][189]
Entry:
Environment = 0x7fde658c2600
Attribute = SQL_ATTR_ODBC_VERSION
Value = 0x3
StrLen = 4
[ODBC][44227][1664301809.724551][SQLSetEnvAttr.c][381]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301809.726522][SQLAllocHandle.c][395]
Entry:
Handle Type = 2
Input Handle = 0x7fde658c2600
UNICODE Using encoding ASCII 'UTF-8' and UNICODE 'UCS-2-INTERNAL'
[ODBC][44227][1664301809.726797][SQLAllocHandle.c][531]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde658c4a00
[ODBC][44227][1664301809.726865][SQLSetConnectAttr.c][399]
Entry:
Connection = 0x7fde658c4a00
Attribute = SQL_ATTR_LOGIN_TIMEOUT
Value = 0x2
StrLen = -5
[ODBC][44227][1664301809.726929][SQLSetConnectAttr.c][716]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301809.728402][SQLDriverConnectW.c][298]
Entry:
Connection = 0x7fde658c4a00
Window Hdl = 0x0
Str In = [server=***REDACTED***;port=1433;tds_version=7.4;driver=/usr/local...][length = 158 (SQL_NTS)]
Str Out = 0x0
Str Out Max = 0
Str Out Ptr = 0x0
Completion = 0
[ODBC][44227][1664301809.993157][SQLDriverConnectW.c][1089]
Exit:[SQL_SUCCESS]
Connection Out [[NULL]]
[ODBC][44227][1664301809.993427][SQLGetInfo.c][236]
Entry:
Connection = 0x7fde658c4a00
Info Type = SQL_DRIVER_ODBC_VER (77)
Info Value = 0x7ff7bb66e590
Buffer Length = 20
StrLen = 0x7ff7bb66e582
[ODBC][44227][1664301809.993509][SQLGetInfo.c][236]
Entry:
Connection = 0x7fde658c4a00
Info Type = SQL_DESCRIBE_PARAMETER (10002)
Info Value = 0x7ff7bb66e580
Buffer Length = 2
StrLen = 0x7ff7bb66e582
[ODBC][44227][1664301809.993750][SQLGetInfo.c][236]
Entry:
Connection = 0x7fde658c4a00
Info Type = SQL_NEED_LONG_DATA_LEN (111)
Info Value = 0x7ff7bb66e580
Buffer Length = 2
StrLen = 0x7ff7bb66e582
[ODBC][44227][1664301809.993819][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301809.993909][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde661d2a00
[ODBC][44227][1664301809.994108][SQLGetTypeInfo.c][168]
Entry:
Statement = 0x7fde661d2a00
Data Type = SQL_VARCHAR
[ODBC][44227][1664301810.023907][SQLGetTypeInfo.c][321]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.024029][SQLFetch.c][162]
Entry:
Statement = 0x7fde661d2a00
[ODBC][44227][1664301810.024107][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.024245][SQLGetData.c][237]
Entry:
Statement = 0x7fde661d2a00
Column Number = 3
Target Type = 4 SQL_INTEGER
Buffer Length = 4
Target Value = 0x7ff7bb66e584
StrLen Or Ind = 0x0
[ODBC][44227][1664301810.024417][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [8000]
Strlen Or Ind = NULLPTR
[ODBC][44227][1664301810.024571][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde661d2a00
Option = 0
[ODBC][44227][1664301810.052441][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.052602][SQLFreeHandle.c][387]
Entry:
Handle Type = 3
Input Handle = 0x7fde661d2a00
[ODBC][44227][1664301810.052801][SQLFreeHandle.c][490]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.052882][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301810.052973][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde661d2a00
[ODBC][44227][1664301810.053166][SQLGetTypeInfo.c][168]
Entry:
Statement = 0x7fde661d2a00
Data Type = Unknown(-9)
[ODBC][44227][1664301810.080979][SQLGetTypeInfo.c][321]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.081158][SQLFetch.c][162]
Entry:
Statement = 0x7fde661d2a00
[ODBC][44227][1664301810.081327][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.081592][SQLGetData.c][237]
Entry:
Statement = 0x7fde661d2a00
Column Number = 3
Target Type = 4 SQL_INTEGER
Buffer Length = 4
Target Value = 0x7ff7bb66e584
StrLen Or Ind = 0x0
[ODBC][44227][1664301810.081868][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [4000]
Strlen Or Ind = NULLPTR
[ODBC][44227][1664301810.082006][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde661d2a00
Option = 0
[ODBC][44227][1664301810.114604][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.114748][SQLFreeHandle.c][387]
Entry:
Handle Type = 3
Input Handle = 0x7fde661d2a00
[ODBC][44227][1664301810.115033][SQLFreeHandle.c][490]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.115310][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301810.115453][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde661d2a00
[ODBC][44227][1664301810.115517][SQLGetTypeInfo.c][168]
Entry:
Statement = 0x7fde661d2a00
Data Type = SQL_VARBINARY
[ODBC][44227][1664301810.144806][SQLGetTypeInfo.c][321]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.144932][SQLFetch.c][162]
Entry:
Statement = 0x7fde661d2a00
[ODBC][44227][1664301810.145179][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.145288][SQLGetData.c][237]
Entry:
Statement = 0x7fde661d2a00
Column Number = 3
Target Type = 4 SQL_INTEGER
Buffer Length = 4
Target Value = 0x7ff7bb66e584
StrLen Or Ind = 0x0
[ODBC][44227][1664301810.145424][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [8000]
Strlen Or Ind = NULLPTR
[ODBC][44227][1664301810.145653][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde661d2a00
Option = 0
[ODBC][44227][1664301810.174992][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.175126][SQLFreeHandle.c][387]
Entry:
Handle Type = 3
Input Handle = 0x7fde661d2a00
[ODBC][44227][1664301810.175397][SQLFreeHandle.c][490]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.175691][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301810.175948][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde661d2a00
[ODBC][44227][1664301810.176136][SQLGetTypeInfo.c][168]
Entry:
Statement = 0x7fde661d2a00
Data Type = SQL_TYPE_TIMESTAMP
[ODBC][44227][1664301810.204504][SQLGetTypeInfo.c][321]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.204638][SQLFetch.c][162]
Entry:
Statement = 0x7fde661d2a00
[ODBC][44227][1664301810.204924][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.205028][SQLGetData.c][237]
Entry:
Statement = 0x7fde661d2a00
Column Number = 3
Target Type = 4 SQL_INTEGER
Buffer Length = 4
Target Value = 0x7ff7bb66e584
StrLen Or Ind = 0x0
[ODBC][44227][1664301810.205172][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [27]
Strlen Or Ind = NULLPTR
[ODBC][44227][1664301810.205256][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde661d2a00
Option = 0
[ODBC][44227][1664301810.238037][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.238198][SQLFreeHandle.c][387]
Entry:
Handle Type = 3
Input Handle = 0x7fde661d2a00
[ODBC][44227][1664301810.238389][SQLFreeHandle.c][490]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.239964][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301810.240079][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde661d2a00
[ODBC][44227][1664301810.240572][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde661d2a00
Option = 0
[ODBC][44227][1664301810.240646][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.240982][SQLExecDirectW.c][177]
Entry:
Statement = 0x7fde661d2a00
SQL = [SELECT CAST(SERVERPROPERTY('ProductVersion') AS VARCHAR)][length = 56]
[ODBC][44227][1664301810.272987][SQLExecDirectW.c][456]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.273161][SQLRowCount.c][173]
Entry:
Statement = 0x7fde661d2a00
Row Count = 0x7ff7bb66cb40
[ODBC][44227][1664301810.273326][SQLRowCount.c][247]
Exit:[SQL_SUCCESS]
Row Count = 0x7ff7bb66cb40 -> -1 (64 bits)
[ODBC][44227][1664301810.273533][SQLNumResultCols.c][156]
Entry:
Statement = 0x7fde661d2a00
Column Count = 0x7ff7bb66cb38
[ODBC][44227][1664301810.273644][SQLNumResultCols.c][251]
Exit:[SQL_SUCCESS]
Count = 0x7ff7bb66cb38 -> 1
[ODBC][44227][1664301810.273841][SQLDescribeCol.c][247]
Entry:
Statement = 0x7fde661d2a00
Column Number = 1
Column Name = 0x7ff7bb66ca10
Buffer Length = 200
Name Length = 0x7ff7bb66ca08
Data Type = 0x7ff7bb66ca0e
Column Size = 0x7ff7bb66ca00
Decimal Digits = 0x7ff7bb66ca0a
Nullable = 0x7ff7bb66ca0c
[ODBC][44227][1664301810.273964][SQLDescribeCol.c][504]
Exit:[SQL_SUCCESS]
Column Name = []
Data Type = 0x7ff7bb66ca0e -> 12
Column Size = 0x7ff7bb66ca00 -> 30 (64 bits)
Decimal Digits = 0x7ff7bb66ca0a -> 0
Nullable = 0x7ff7bb66ca0c -> 1
[ODBC][44227][1664301810.274133][SQLDescribeColW.c][209]
Entry:
Statement = 0x7fde661d2a00
Column Number = 1
Column Name = 0x7fde557b5c40
Buffer Length = 300
Name Length = 0x7ff7bb66cacc
Data Type = 0x7ff7bb66cae6
Column Size = 0x7ff7bb66caa8
Decimal Digits = 0x7ff7bb66cae4
Nullable = 0x7ff7bb66cace
[ODBC][44227][1664301810.274480][SQLDescribeColW.c][467]
Exit:[SQL_SUCCESS]
Column Name = [](unicode)
Data Type = 0x7ff7bb66cae6 -> 12
Column Size = 0x7ff7bb66caa8 -> 30 (64 bits)
Decimal Digits = 0x7ff7bb66cae4 -> 0
Nullable = 0x7ff7bb66cace -> 1
[ODBC][44227][1664301810.275511][SQLFetch.c][162]
Entry:
Statement = 0x7fde661d2a00
[ODBC][44227][1664301810.275627][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.275879][SQLGetData.c][237]
Entry:
Statement = 0x7fde661d2a00
Column Number = 1
Target Type = -8 SQL_WCHAR
Buffer Length = 4096
Target Value = 0x7fde661d9a00
StrLen Or Ind = 0x7ff7bb66cae0
[ODBC][44227][1664301810.276130][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [14.0.2037.2](unicode)
Strlen Or Ind = 0x7ff7bb66cae0 -> 22 (64 bits)
[ODBC][44227][1664301810.276546][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde661d2a00
Option = 0
[ODBC][44227][1664301810.304209][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.304341][SQLFreeHandle.c][387]
Entry:
Handle Type = 3
Input Handle = 0x7fde661d2a00
[ODBC][44227][1664301810.304637][SQLFreeHandle.c][490]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.306195][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301810.306309][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde75af9e00
[ODBC][44227][1664301810.306893][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde75af9e00
Option = 0
[ODBC][44227][1664301810.306985][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.307325][SQLExecDirectW.c][177]
Entry:
Statement = 0x7fde75af9e00
SQL = [SELECT schema_name()][length = 20]
[ODBC][44227][1664301810.335798][SQLExecDirectW.c][456]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.335909][SQLRowCount.c][173]
Entry:
Statement = 0x7fde75af9e00
Row Count = 0x7ff7bb66c470
[ODBC][44227][1664301810.335987][SQLRowCount.c][247]
Exit:[SQL_SUCCESS]
Row Count = 0x7ff7bb66c470 -> -1 (64 bits)
[ODBC][44227][1664301810.336062][SQLNumResultCols.c][156]
Entry:
Statement = 0x7fde75af9e00
Column Count = 0x7ff7bb66c468
[ODBC][44227][1664301810.336240][SQLNumResultCols.c][251]
Exit:[SQL_SUCCESS]
Count = 0x7ff7bb66c468 -> 1
[ODBC][44227][1664301810.336383][SQLDescribeCol.c][247]
Entry:
Statement = 0x7fde75af9e00
Column Number = 1
Column Name = 0x7ff7bb66c340
Buffer Length = 200
Name Length = 0x7ff7bb66c338
Data Type = 0x7ff7bb66c33e
Column Size = 0x7ff7bb66c330
Decimal Digits = 0x7ff7bb66c33a
Nullable = 0x7ff7bb66c33c
[ODBC][44227][1664301810.336441][SQLDescribeCol.c][504]
Exit:[SQL_SUCCESS]
Column Name = []
Data Type = 0x7ff7bb66c33e -> -9
Column Size = 0x7ff7bb66c330 -> 128 (64 bits)
Decimal Digits = 0x7ff7bb66c33a -> 0
Nullable = 0x7ff7bb66c33c -> 1
[ODBC][44227][1664301810.336718][SQLDescribeColW.c][209]
Entry:
Statement = 0x7fde75af9e00
Column Number = 1
Column Name = 0x7fde457cb610
Buffer Length = 300
Name Length = 0x7ff7bb66c3fc
Data Type = 0x7ff7bb66c416
Column Size = 0x7ff7bb66c3d8
Decimal Digits = 0x7ff7bb66c414
Nullable = 0x7ff7bb66c3fe
[ODBC][44227][1664301810.336867][SQLDescribeColW.c][467]
Exit:[SQL_SUCCESS]
Column Name = [](unicode)
Data Type = 0x7ff7bb66c416 -> -9
Column Size = 0x7ff7bb66c3d8 -> 128 (64 bits)
Decimal Digits = 0x7ff7bb66c414 -> 0
Nullable = 0x7ff7bb66c3fe -> 1
[ODBC][44227][1664301810.337155][SQLFetch.c][162]
Entry:
Statement = 0x7fde75af9e00
[ODBC][44227][1664301810.337223][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.337434][SQLGetData.c][237]
Entry:
Statement = 0x7fde75af9e00
Column Number = 1
Target Type = -8 SQL_WCHAR
Buffer Length = 4096
Target Value = 0x7fde75b02e00
StrLen Or Ind = 0x7ff7bb66c7e0
[ODBC][44227][1664301810.337492][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [dbo](unicode)
Strlen Or Ind = 0x7ff7bb66c7e0 -> 6 (64 bits)
[ODBC][44227][1664301810.337666][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde75af9e00
Option = 0
[ODBC][44227][1664301810.368960][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.369192][SQLFreeHandle.c][387]
Entry:
Handle Type = 3
Input Handle = 0x7fde75af9e00
[ODBC][44227][1664301810.369498][SQLFreeHandle.c][490]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.369870][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301810.369986][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde661d2a00
[ODBC][44227][1664301810.370261][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde661d2a00
Option = 0
[ODBC][44227][1664301810.370374][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.370451][SQLExecDirectW.c][177]
Entry:
Statement = 0x7fde661d2a00
SQL = [SELECT name FROM sys.system_views WHERE name IN ('dm_exec_sessions', 'dm_pdw_nodes_exec_sessions')][length = 98]
[ODBC][44227][1664301810.399003][SQLExecDirectW.c][456]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.399119][SQLRowCount.c][173]
Entry:
Statement = 0x7fde661d2a00
Row Count = 0x7ff7bb66d4e0
[ODBC][44227][1664301810.399179][SQLRowCount.c][247]
Exit:[SQL_SUCCESS]
Row Count = 0x7ff7bb66d4e0 -> -1 (64 bits)
[ODBC][44227][1664301810.399345][SQLNumResultCols.c][156]
Entry:
Statement = 0x7fde661d2a00
Column Count = 0x7ff7bb66d4d8
[ODBC][44227][1664301810.399457][SQLNumResultCols.c][251]
Exit:[SQL_SUCCESS]
Count = 0x7ff7bb66d4d8 -> 1
[ODBC][44227][1664301810.399511][SQLDescribeCol.c][247]
Entry:
Statement = 0x7fde661d2a00
Column Number = 1
Column Name = 0x7ff7bb66d3b0
Buffer Length = 200
Name Length = 0x7ff7bb66d3a8
Data Type = 0x7ff7bb66d3ae
Column Size = 0x7ff7bb66d3a0
Decimal Digits = 0x7ff7bb66d3aa
Nullable = 0x7ff7bb66d3ac
[ODBC][44227][1664301810.399568][SQLDescribeCol.c][504]
Exit:[SQL_SUCCESS]
Column Name = [name]
Data Type = 0x7ff7bb66d3ae -> -9
Column Size = 0x7ff7bb66d3a0 -> 128 (64 bits)
Decimal Digits = 0x7ff7bb66d3aa -> 0
Nullable = 0x7ff7bb66d3ac -> 0
[ODBC][44227][1664301810.399694][SQLDescribeColW.c][209]
Entry:
Statement = 0x7fde661d2a00
Column Number = 1
Column Name = 0x7fde45886ef0
Buffer Length = 300
Name Length = 0x7ff7bb66d46c
Data Type = 0x7ff7bb66d486
Column Size = 0x7ff7bb66d448
Decimal Digits = 0x7ff7bb66d484
Nullable = 0x7ff7bb66d46e
[ODBC][44227][1664301810.399824][SQLDescribeColW.c][467]
Exit:[SQL_SUCCESS]
Column Name = [name](unicode)
Data Type = 0x7ff7bb66d486 -> -9
Column Size = 0x7ff7bb66d448 -> 128 (64 bits)
Decimal Digits = 0x7ff7bb66d484 -> 0
Nullable = 0x7ff7bb66d46e -> 0
[ODBC][44227][1664301810.399959][SQLFetch.c][162]
Entry:
Statement = 0x7fde661d2a00
[ODBC][44227][1664301810.400015][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.400067][SQLGetData.c][237]
Entry:
Statement = 0x7fde661d2a00
Column Number = 1
Target Type = -8 SQL_WCHAR
Buffer Length = 4096
Target Value = 0x7fde661d9a00
StrLen Or Ind = 0x7ff7bb66d520
[ODBC][44227][1664301810.400190][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [dm_exec_sessions](unicode)
Strlen Or Ind = 0x7ff7bb66d520 -> 32 (64 bits)
[ODBC][44227][1664301810.400255][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde661d2a00
Option = 0
[ODBC][44227][1664301810.427668][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.427820][SQLExecDirectW.c][177]
Entry:
Statement = 0x7fde661d2a00
SQL = [
SELECT CASE transaction_isolation_level
WHEN 0 THEN NULL
...][length = 545]
[ODBC][44227][1664301810.456049][SQLExecDirectW.c][456]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.456228][SQLRowCount.c][173]
Entry:
Statement = 0x7fde661d2a00
Row Count = 0x7ff7bb66d4e0
[ODBC][44227][1664301810.456455][SQLRowCount.c][247]
Exit:[SQL_SUCCESS]
Row Count = 0x7ff7bb66d4e0 -> -1 (64 bits)
[ODBC][44227][1664301810.456648][SQLNumResultCols.c][156]
Entry:
Statement = 0x7fde661d2a00
Column Count = 0x7ff7bb66d4d8
[ODBC][44227][1664301810.456773][SQLNumResultCols.c][251]
Exit:[SQL_SUCCESS]
Count = 0x7ff7bb66d4d8 -> 1
[ODBC][44227][1664301810.456886][SQLDescribeCol.c][247]
Entry:
Statement = 0x7fde661d2a00
Column Number = 1
Column Name = 0x7ff7bb66d3b0
Buffer Length = 200
Name Length = 0x7ff7bb66d3a8
Data Type = 0x7ff7bb66d3ae
Column Size = 0x7ff7bb66d3a0
Decimal Digits = 0x7ff7bb66d3aa
Nullable = 0x7ff7bb66d3ac
[ODBC][44227][1664301810.457153][SQLDescribeCol.c][504]
Exit:[SQL_SUCCESS]
Column Name = [TRANSACTION_ISOLATION_LEVEL]
Data Type = 0x7ff7bb66d3ae -> 12
Column Size = 0x7ff7bb66d3a0 -> 16 (64 bits)
Decimal Digits = 0x7ff7bb66d3aa -> 0
Nullable = 0x7ff7bb66d3ac -> 1
[ODBC][44227][1664301810.457530][SQLDescribeColW.c][209]
Entry:
Statement = 0x7fde661d2a00
Column Number = 1
Column Name = 0x7fde760f8f70
Buffer Length = 300
Name Length = 0x7ff7bb66d46c
Data Type = 0x7ff7bb66d486
Column Size = 0x7ff7bb66d448
Decimal Digits = 0x7ff7bb66d484
Nullable = 0x7ff7bb66d46e
[ODBC][44227][1664301810.457669][SQLDescribeColW.c][467]
Exit:[SQL_SUCCESS]
Column Name = [TRANSACTION_ISOLATION_LEVEL](unicode)
Data Type = 0x7ff7bb66d486 -> 12
Column Size = 0x7ff7bb66d448 -> 16 (64 bits)
Decimal Digits = 0x7ff7bb66d484 -> 0
Nullable = 0x7ff7bb66d46e -> 1
[ODBC][44227][1664301810.457990][SQLFetch.c][162]
Entry:
Statement = 0x7fde661d2a00
[ODBC][44227][1664301810.458064][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.458250][SQLGetData.c][237]
Entry:
Statement = 0x7fde661d2a00
Column Number = 1
Target Type = -8 SQL_WCHAR
Buffer Length = 4096
Target Value = 0x7fde75aec800
StrLen Or Ind = 0x7ff7bb66d520
[ODBC][44227][1664301810.458534][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [READ COMMITTED](unicode)
Strlen Or Ind = 0x7ff7bb66d520 -> 28 (64 bits)
[ODBC][44227][1664301810.458668][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde661d2a00
Option = 0
[ODBC][44227][1664301810.489505][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.489652][SQLFreeHandle.c][387]
Entry:
Handle Type = 3
Input Handle = 0x7fde661d2a00
[ODBC][44227][1664301810.490003][SQLFreeHandle.c][490]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.490559][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301810.490685][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde658c7400
[ODBC][44227][1664301810.490992][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde658c7400
Option = 0
[ODBC][44227][1664301810.491061][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.491336][SQLExecDirectW.c][177]
Entry:
Statement = 0x7fde658c7400
SQL = [SELECT CAST('test max support' AS NVARCHAR(max))][length = 48]
[ODBC][44227][1664301810.523372][SQLExecDirectW.c][456]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.523537][SQLRowCount.c][173]
Entry:
Statement = 0x7fde658c7400
Row Count = 0x7ff7bb66c810
[ODBC][44227][1664301810.523781][SQLRowCount.c][247]
Exit:[SQL_SUCCESS]
Row Count = 0x7ff7bb66c810 -> -1 (64 bits)
[ODBC][44227][1664301810.523871][SQLNumResultCols.c][156]
Entry:
Statement = 0x7fde658c7400
Column Count = 0x7ff7bb66c808
[ODBC][44227][1664301810.524047][SQLNumResultCols.c][251]
Exit:[SQL_SUCCESS]
Count = 0x7ff7bb66c808 -> 1
[ODBC][44227][1664301810.524291][SQLDescribeCol.c][247]
Entry:
Statement = 0x7fde658c7400
Column Number = 1
Column Name = 0x7ff7bb66c6e0
Buffer Length = 200
Name Length = 0x7ff7bb66c6d8
Data Type = 0x7ff7bb66c6de
Column Size = 0x7ff7bb66c6d0
Decimal Digits = 0x7ff7bb66c6da
Nullable = 0x7ff7bb66c6dc
[ODBC][44227][1664301810.524376][SQLDescribeCol.c][504]
Exit:[SQL_SUCCESS]
Column Name = []
Data Type = 0x7ff7bb66c6de -> -9
Column Size = 0x7ff7bb66c6d0 -> 0 (64 bits)
Decimal Digits = 0x7ff7bb66c6da -> 0
Nullable = 0x7ff7bb66c6dc -> 1
[ODBC][44227][1664301810.524476][SQLDescribeColW.c][209]
Entry:
Statement = 0x7fde658c7400
Column Number = 1
Column Name = 0x7fde457cb3e0
Buffer Length = 300
Name Length = 0x7ff7bb66c79c
Data Type = 0x7ff7bb66c7b6
Column Size = 0x7ff7bb66c778
Decimal Digits = 0x7ff7bb66c7b4
Nullable = 0x7ff7bb66c79e
[ODBC][44227][1664301810.524619][SQLDescribeColW.c][467]
Exit:[SQL_SUCCESS]
Column Name = [](unicode)
Data Type = 0x7ff7bb66c7b6 -> -9
Column Size = 0x7ff7bb66c778 -> 0 (64 bits)
Decimal Digits = 0x7ff7bb66c7b4 -> 0
Nullable = 0x7ff7bb66c79e -> 1
[ODBC][44227][1664301810.524871][SQLFetch.c][162]
Entry:
Statement = 0x7fde658c7400
[ODBC][44227][1664301810.524950][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.525338][SQLGetData.c][237]
Entry:
Statement = 0x7fde658c7400
Column Number = 1
Target Type = -8 SQL_WCHAR
Buffer Length = 4096
Target Value = 0x7fde658c6400
StrLen Or Ind = 0x7ff7bb66cb80
[ODBC][44227][1664301810.525488][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [test max support](unicode)
Strlen Or Ind = 0x7ff7bb66cb80 -> 32 (64 bits)
[ODBC][44227][1664301810.525673][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde658c7400
Option = 0
[ODBC][44227][1664301810.553110][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.553323][SQLFreeHandle.c][387]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c7400
[ODBC][44227][1664301810.553489][SQLFreeHandle.c][490]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.553986][SQLEndTran.c][417]
Entry:
Connection = 0x7fde658c4a00
Completion Type = 1
[ODBC][44227][1664301810.554109][SQLGetInfo.c][236]
Entry:
Connection = 0x7fde658c4a00
Info Type = SQL_CURSOR_COMMIT_BEHAVIOR (23)
Info Value = 0x7fde658c6290
Buffer Length = 2
StrLen = 0x7ff7bb66da90
[ODBC][44227][1664301810.554344][SQLGetInfo.c][236]
Entry:
Connection = 0x7fde658c4a00
Info Type = SQL_CURSOR_ROLLBACK_BEHAVIOR (24)
Info Value = 0x7fde658c6292
Buffer Length = 2
StrLen = 0x7ff7bb66da90
[ODBC][44227][1664301810.554491][SQLEndTran.c][566]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.555940][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301810.556078][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde5588f200
[ODBC][44227][1664301810.556528][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde5588f200
Option = 0
[ODBC][44227][1664301810.556602][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.556833][SQLExecDirectW.c][177]
Entry:
Statement = 0x7fde5588f200
SQL = [SELECT 1 AS "TestColumn"][length = 24]
[ODBC][44227][1664301810.582886][SQLExecDirectW.c][456]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.583013][SQLRowCount.c][173]
Entry:
Statement = 0x7fde5588f200
Row Count = 0x7ff7bb670990
[ODBC][44227][1664301810.583081][SQLRowCount.c][247]
Exit:[SQL_SUCCESS]
Row Count = 0x7ff7bb670990 -> -1 (64 bits)
[ODBC][44227][1664301810.583175][SQLNumResultCols.c][156]
Entry:
Statement = 0x7fde5588f200
Column Count = 0x7ff7bb670988
[ODBC][44227][1664301810.583249][SQLNumResultCols.c][251]
Exit:[SQL_SUCCESS]
Count = 0x7ff7bb670988 -> 1
[ODBC][44227][1664301810.583307][SQLDescribeCol.c][247]
Entry:
Statement = 0x7fde5588f200
Column Number = 1
Column Name = 0x7ff7bb670860
Buffer Length = 200
Name Length = 0x7ff7bb670858
Data Type = 0x7ff7bb67085e
Column Size = 0x7ff7bb670850
Decimal Digits = 0x7ff7bb67085a
Nullable = 0x7ff7bb67085c
[ODBC][44227][1664301810.583421][SQLDescribeCol.c][504]
Exit:[SQL_SUCCESS]
Column Name = [TestColumn]
Data Type = 0x7ff7bb67085e -> 4
Column Size = 0x7ff7bb670850 -> 10 (64 bits)
Decimal Digits = 0x7ff7bb67085a -> 0
Nullable = 0x7ff7bb67085c -> 0
[ODBC][44227][1664301810.583554][SQLColAttribute.c][294]
Entry:
Statement = 0x7fde5588f200
Column Number = 1
Field Identifier = SQL_DESC_UNSIGNED
Character Attr = 0x0
Buffer Length = 0
String Length = 0x0
Numeric Attribute = 0x7ff7bb670848
[ODBC][44227][1664301810.583689][SQLColAttribute.c][709]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.583753][SQLDescribeColW.c][209]
Entry:
Statement = 0x7fde5588f200
Column Number = 1
Column Name = 0x7fde557b5c40
Buffer Length = 300
Name Length = 0x7ff7bb67091c
Data Type = 0x7ff7bb670936
Column Size = 0x7ff7bb6708f8
Decimal Digits = 0x7ff7bb670934
Nullable = 0x7ff7bb67091e
[ODBC][44227][1664301810.583875][SQLDescribeColW.c][467]
Exit:[SQL_SUCCESS]
Column Name = [TestColumn](unicode)
Data Type = 0x7ff7bb670936 -> 4
Column Size = 0x7ff7bb6708f8 -> 10 (64 bits)
Decimal Digits = 0x7ff7bb670934 -> 0
Nullable = 0x7ff7bb67091e -> 0
[ODBC][44227][1664301810.584214][SQLFetch.c][162]
Entry:
Statement = 0x7fde5588f200
[ODBC][44227][1664301810.584289][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.584451][SQLGetData.c][237]
Entry:
Statement = 0x7fde5588f200
Column Number = 1
Target Type = 4 SQL_INTEGER
Buffer Length = 4
Target Value = 0x7ff7bb6710b8
StrLen Or Ind = 0x7ff7bb6710d0
[ODBC][44227][1664301810.584521][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [1]
Strlen Or Ind = 0x7ff7bb6710d0 -> 4 (64 bits)
[ODBC][44227][1664301810.584579][SQLFetch.c][162]
Entry:
Statement = 0x7fde5588f200
[ODBC][44227][1664301810.584721][SQLFetch.c][352]
Exit:[SQL_NO_DATA]
[ODBC][44227][1664301810.584851][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde5588f200
Option = 0
[ODBC][44227][1664301810.584918][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.585127][SQLFreeHandle.c][387]
Entry:
Handle Type = 3
Input Handle = 0x7fde5588f200
[ODBC][44227][1664301810.585282][SQLFreeHandle.c][490]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.585931][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301810.586129][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde658c7400
[ODBC][44227][1664301810.586285][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde658c7400
Option = 0
[ODBC][44227][1664301810.586349][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.586412][SQLExecDirectW.c][177]
Entry:
Statement = 0x7fde658c7400
SQL = [select 0 "Execution"][length = 20]
[ODBC][44227][1664301810.615896][SQLExecDirectW.c][456]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.616008][SQLRowCount.c][173]
Entry:
Statement = 0x7fde658c7400
Row Count = 0x7ff7bb6705f0
[ODBC][44227][1664301810.616126][SQLRowCount.c][247]
Exit:[SQL_SUCCESS]
Row Count = 0x7ff7bb6705f0 -> -1 (64 bits)
[ODBC][44227][1664301810.616193][SQLNumResultCols.c][156]
Entry:
Statement = 0x7fde658c7400
Column Count = 0x7ff7bb6705e8
[ODBC][44227][1664301810.616360][SQLNumResultCols.c][251]
Exit:[SQL_SUCCESS]
Count = 0x7ff7bb6705e8 -> 1
[ODBC][44227][1664301810.616483][SQLDescribeCol.c][247]
Entry:
Statement = 0x7fde658c7400
Column Number = 1
Column Name = 0x7ff7bb6704c0
Buffer Length = 200
Name Length = 0x7ff7bb6704b8
Data Type = 0x7ff7bb6704be
Column Size = 0x7ff7bb6704b0
Decimal Digits = 0x7ff7bb6704ba
Nullable = 0x7ff7bb6704bc
[ODBC][44227][1664301810.616559][SQLDescribeCol.c][504]
Exit:[SQL_SUCCESS]
Column Name = [Execution]
Data Type = 0x7ff7bb6704be -> 4
Column Size = 0x7ff7bb6704b0 -> 10 (64 bits)
Decimal Digits = 0x7ff7bb6704ba -> 0
Nullable = 0x7ff7bb6704bc -> 0
[ODBC][44227][1664301810.616690][SQLColAttribute.c][294]
Entry:
Statement = 0x7fde658c7400
Column Number = 1
Field Identifier = SQL_DESC_UNSIGNED
Character Attr = 0x0
Buffer Length = 0
String Length = 0x0
Numeric Attribute = 0x7ff7bb6704a8
[ODBC][44227][1664301810.616844][SQLColAttribute.c][709]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.616985][SQLDescribeColW.c][209]
Entry:
Statement = 0x7fde658c7400
Column Number = 1
Column Name = 0x7fde557b5c40
Buffer Length = 300
Name Length = 0x7ff7bb67057c
Data Type = 0x7ff7bb670596
Column Size = 0x7ff7bb670558
Decimal Digits = 0x7ff7bb670594
Nullable = 0x7ff7bb67057e
[ODBC][44227][1664301810.617050][SQLDescribeColW.c][467]
Exit:[SQL_SUCCESS]
Column Name = [Execution](unicode)
Data Type = 0x7ff7bb670596 -> 4
Column Size = 0x7ff7bb670558 -> 10 (64 bits)
Decimal Digits = 0x7ff7bb670594 -> 0
Nullable = 0x7ff7bb67057e -> 0
[ODBC][44227][1664301810.617346][SQLFetch.c][162]
Entry:
Statement = 0x7fde658c7400
[ODBC][44227][1664301810.617419][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.617553][SQLGetData.c][237]
Entry:
Statement = 0x7fde658c7400
Column Number = 1
Target Type = 4 SQL_INTEGER
Buffer Length = 4
Target Value = 0x7ff7bb670d18
StrLen Or Ind = 0x7ff7bb670d30
[ODBC][44227][1664301810.617610][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [0]
Strlen Or Ind = 0x7ff7bb670d30 -> 4 (64 bits)
[ODBC][44227][1664301810.617747][SQLFetch.c][162]
Entry:
Statement = 0x7fde658c7400
[ODBC][44227][1664301810.617807][SQLFetch.c][352]
Exit:[SQL_NO_DATA]
[ODBC][44227][1664301810.617957][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde658c7400
Option = 0
[ODBC][44227][1664301810.618010][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301810.618129][SQLFreeHandle.c][387]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c7400
[ODBC][44227][1664301810.618190][SQLFreeHandle.c][490]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301815.623043][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301815.623196][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde75af9e00
[ODBC][44227][1664301815.623868][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde75af9e00
Option = 0
[ODBC][44227][1664301815.623947][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301815.624204][SQLExecDirectW.c][177]
Entry:
Statement = 0x7fde75af9e00
SQL = [select 1 "Execution"][length = 20]
[ODBC][44227][1664301815.715297][SQLExecDirectW.c][456]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301815.715448][SQLRowCount.c][173]
Entry:
Statement = 0x7fde75af9e00
Row Count = 0x7ff7bb6705f0
[ODBC][44227][1664301815.715743][SQLRowCount.c][247]
Exit:[SQL_SUCCESS]
Row Count = 0x7ff7bb6705f0 -> -1 (64 bits)
[ODBC][44227][1664301815.715872][SQLNumResultCols.c][156]
Entry:
Statement = 0x7fde75af9e00
Column Count = 0x7ff7bb6705e8
[ODBC][44227][1664301815.716060][SQLNumResultCols.c][251]
Exit:[SQL_SUCCESS]
Count = 0x7ff7bb6705e8 -> 1
[ODBC][44227][1664301815.716424][SQLDescribeCol.c][247]
Entry:
Statement = 0x7fde75af9e00
Column Number = 1
Column Name = 0x7ff7bb6704c0
Buffer Length = 200
Name Length = 0x7ff7bb6704b8
Data Type = 0x7ff7bb6704be
Column Size = 0x7ff7bb6704b0
Decimal Digits = 0x7ff7bb6704ba
Nullable = 0x7ff7bb6704bc
[ODBC][44227][1664301815.716574][SQLDescribeCol.c][504]
Exit:[SQL_SUCCESS]
Column Name = [Execution]
Data Type = 0x7ff7bb6704be -> 4
Column Size = 0x7ff7bb6704b0 -> 10 (64 bits)
Decimal Digits = 0x7ff7bb6704ba -> 0
Nullable = 0x7ff7bb6704bc -> 0
[ODBC][44227][1664301815.716741][SQLColAttribute.c][294]
Entry:
Statement = 0x7fde75af9e00
Column Number = 1
Field Identifier = SQL_DESC_UNSIGNED
Character Attr = 0x0
Buffer Length = 0
String Length = 0x0
Numeric Attribute = 0x7ff7bb6704a8
[ODBC][44227][1664301815.716932][SQLColAttribute.c][709]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301815.717136][SQLDescribeColW.c][209]
Entry:
Statement = 0x7fde75af9e00
Column Number = 1
Column Name = 0x7fde557b5c40
Buffer Length = 300
Name Length = 0x7ff7bb67057c
Data Type = 0x7ff7bb670596
Column Size = 0x7ff7bb670558
Decimal Digits = 0x7ff7bb670594
Nullable = 0x7ff7bb67057e
[ODBC][44227][1664301815.717301][SQLDescribeColW.c][467]
Exit:[SQL_SUCCESS]
Column Name = [Execution](unicode)
Data Type = 0x7ff7bb670596 -> 4
Column Size = 0x7ff7bb670558 -> 10 (64 bits)
Decimal Digits = 0x7ff7bb670594 -> 0
Nullable = 0x7ff7bb67057e -> 0
[ODBC][44227][1664301815.717792][SQLFetch.c][162]
Entry:
Statement = 0x7fde75af9e00
[ODBC][44227][1664301815.717917][SQLFetch.c][352]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301815.718157][SQLGetData.c][237]
Entry:
Statement = 0x7fde75af9e00
Column Number = 1
Target Type = 4 SQL_INTEGER
Buffer Length = 4
Target Value = 0x7ff7bb670d18
StrLen Or Ind = 0x7ff7bb670d30
[ODBC][44227][1664301815.718330][SQLGetData.c][545]
Exit:[SQL_SUCCESS]
Buffer = [1]
Strlen Or Ind = 0x7ff7bb670d30 -> 4 (64 bits)
[ODBC][44227][1664301815.718482][SQLFetch.c][162]
Entry:
Statement = 0x7fde75af9e00
[ODBC][44227][1664301815.718566][SQLFetch.c][352]
Exit:[SQL_NO_DATA]
[ODBC][44227][1664301815.718702][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde75af9e00
Option = 0
[ODBC][44227][1664301815.718763][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301815.719063][SQLFreeHandle.c][387]
Entry:
Handle Type = 3
Input Handle = 0x7fde75af9e00
[ODBC][44227][1664301815.719170][SQLFreeHandle.c][490]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301820.723394][SQLAllocHandle.c][578]
Entry:
Handle Type = 3
Input Handle = 0x7fde658c4a00
[ODBC][44227][1664301820.723565][SQLAllocHandle.c][1123]
Exit:[SQL_SUCCESS]
Output Handle = 0x7fde658c7400
[ODBC][44227][1664301820.724160][SQLFreeStmt.c][144]
Entry:
Statement = 0x7fde658c7400
Option = 0
[ODBC][44227][1664301820.724258][SQLFreeStmt.c][266]
Exit:[SQL_SUCCESS]
[ODBC][44227][1664301820.724484][SQLExecDirectW.c][177]
Entry:
Statement = 0x7fde658c7400
SQL = [select 2 "Execution"][length = 20]
And tail end of FreeTDS logs that accompany this situation. Seemingly an error is detected but somehow not propagated properly up the stack...
....
....
odbc_export.h:801:SQLExecDirectW(0x7f85aa7c1a20, select 2 "Execution", 20)
prepare_query.c:208:parsing 0 parameters
odbc.c:3275:_SQLExecute(0x7f85aa7c1a20)
odbc.c:3292:_SQLExecute() starting with state 0
mem.c:656:tds_free_all_results()
util.c:179:Changed query state from IDLE to WRITING
packet.c:852:Sending packet
0000 01 01 00 46 00 00 01 00-16 00 00 00 12 00 00 00 |...F.... ........|
0010 02 00 00 00 00 00 00 00-00 00 01 00 00 00 73 00 |........ ......s.|
0020 65 00 6c 00 65 00 63 00-74 00 20 00 31 00 20 00 |e.l.e.c. t. .1. .|
0030 22 00 45 00 78 00 65 00-63 00 75 00 74 00 69 00 |".E.x.e. c.u.t.i.|
0040 6f 00 6e 00 22 00 - |o.n.".|
tls.c:183:in tds_push_func
util.c:179:Changed query state from WRITING to PENDING
token.c:555:tds_process_tokens(0x7f85ba7ec8b0, 0x7ff7b3146374, 0x7ff7b3146370, 0x6914)
util.c:179:Changed query state from PENDING to READING
tls.c:160:in tds_pull_func
util.c:179:Changed query state from READING to DEAD
util.c:333:tdserror(0x7f85ca7df070, 0x7f85ba7ec8b0, 20004, 60)
odbc.c:2369:msgno 20004 20003
util.c:363:tdserror: client library returned TDS_INT_CANCEL(2)
util.c:386:tdserror: returning TDS_INT_CANCEL(2)
Debugging this further it seems that despite passing pyodb.connect(..., timeout=<integer>)
, the resultant connection object's timeout parameter is zero.
Luckily, it is possible post-connect to modify the connection object's timeout variable directly, at which point network drops will result in exceptions as desired as opposed to hanging forever / segmentation faults.
Tested by toggling wifi on MacOS, and with docker network dis(connect)
using alpine container.
Debugging this further it seems that despite passing
pyodb.connect(..., timeout=<integer>)
, the resultant connection object's timeout parameter is zero.
The timeout=
argument to connect()
only sets the timeout for establishing the connection. It does not set the default timeout for running queries. Details here and here.
Environment
MacOS:
Alpine (in docker):
Issue
No issues connecting and executing SQL, connect similar to:
However, disabling wifi during repetitive use of cursor to execute simple SQL hangs and eventually crashes with no exception raised. On Alpine a segmentation fault is indicated although on MacOS no message to indicate similar is shown.
Documentation indicates that use of timeout should mean an exception would be thrown providing driver supports this parameter. In the case of freetds documentation seems to indicate this is supported.
What is best practice for handling network disconnects/reconnects?