From 27e02ab10c3e3632640b7edc31c989a8554ba36a Mon Sep 17 00:00:00 2001 From: lgeissbauer-btig <87755201+lgeissbauer-btig@users.noreply.github.com> Date: Thu, 2 Feb 2023 16:36:26 -0800 Subject: [PATCH] fix #360 (#361) --- src/API.jl | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/API.jl b/src/API.jl index 25a2f0c..83c8e32 100644 --- a/src/API.jl +++ b/src/API.jl @@ -63,23 +63,35 @@ macro odbc(func,args,vals...) ret = SQL_SUCCESS @static if Sys.iswindows() # odbc_dm[] == odbc32 # This branch is guarded by `@static` to avoid issues on Apple Silicon + counter = -100 while true ret = ccall( ($func, "odbc32"), stdcall, SQLRETURN, $args, $(vals...)) ret == SQL_STILL_EXECUTING || break - sleep(0.001) + if counter > 0 + sleep(0.000_001*counter) + end + counter = 1.2*(1 + counter) end else if odbc_dm[] == iODBC + counter = -100 while true ret = ccall( ($func, iODBC_jll.libiodbc), SQLRETURN, $(swapsqlwchar(args)), $(vals...)) ret == SQL_STILL_EXECUTING || break - sleep(0.001) + if counter > 0 + sleep(0.000_001*counter) + end + counter = 1.2*(1 + counter) end elseif odbc_dm[] == unixODBC + counter = -100 while true ret = ccall( ($func, unixODBC_jll.libodbc), SQLRETURN, $args, $(vals...)) ret == SQL_STILL_EXECUTING || break - sleep(0.001) + if counter > 0 + sleep(0.000_001*counter) + end + counter = 1.2*(1 + counter) end end end