The following code results in Julia crashing due to an error in libmariadb.dll. The database is a MySQL database accessed through an SSH tunnel. Setting n=32 works with no issues, but n=33 crashes. Is that a limit on the number of parameters in a prepared statement?
using MySQL, DataFrames
n = 33
str = join(repeat('?', n), ',')
query = "SELECT id FROM myTable WHERE id IN ($str)"
parameters = rand(UInt64, n)
host = "127.0.0.1"
user = "user"
passwd = "password"
port = 3307
database = "database"
conn = DBInterface.connect(MySQL.Connection, host, user, passwd; db=database, port=port)
statement = DBInterface.prepare(conn, query)
cursor = DBInterface.execute(statement, parameters)
df = DataFrame(cursor)
DBInterface.close!(statement)
DBInterface.close!(conn)
The execution reaches DBInterface.execute (line 18) and then crashes with the following printout:
Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0x693d966a -- ma_stmt_execute_generate_simple_request at C:\Users\Martin\.julia\artifacts\f82e31e2e89705335e2f2f07bd10b675704f036c\bin\libmariadb.dll (unknown line)
in expression starting at C:\Users\Martin\Documents\Repos\MariaDBError\test_min.jl:18
ma_stmt_execute_generate_simple_request at C:\Users\Martin\.julia\artifacts\f82e31e2e89705335e2f2f07bd10b675704f036c\bin\libmariadb.dll (unknown line)
mysql_stmt_execute at C:\Users\Martin\.julia\artifacts\f82e31e2e89705335e2f2f07bd10b675704f036c\bin\libmariadb.dll (unknown line)
mysql_stmt_execute at C:\Users\Martin\.julia\packages\MySQL\JGiss\src\api\ccalls.jl:4 [inlined]
execute at C:\Users\Martin\.julia\packages\MySQL\JGiss\src\api\papi.jl:3
#execute#48 at C:\Users\Martin\.julia\packages\MySQL\JGiss\src\prepare.jl:162
execute at C:\Users\Martin\.julia\packages\MySQL\JGiss\src\prepare.jl:152
unknown function (ip: 00000230ff67cfe0) at (unknown file)
jl_apply at C:/workdir/src\julia.h:2391 [inlined]
do_call at C:/workdir/src\interpreter.c:123
eval_value at C:/workdir/src\interpreter.c:243
eval_stmt_value at C:/workdir/src\interpreter.c:194 [inlined]
eval_body at C:/workdir/src\interpreter.c:707
jl_interpret_toplevel_thunk at C:/workdir/src\interpreter.c:898
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:1035
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:975
ijl_toplevel_eval at C:/workdir/src\toplevel.c:1047 [inlined]
ijl_toplevel_eval_in at C:/workdir/src\toplevel.c:1092
eval at .\boot.jl:489
include_string at .\loading.jl:2874
_include at .\loading.jl:2934
include at .\Base.jl:306
exec_options at .\client.jl:317
_start at .\client.jl:550
jfptr__start_33180.1 at C:\Users\Martin\.julia\juliaup\julia-1.12.6+0.x64.w64.mingw32\lib\julia\sys.dll (unknown line)
jl_apply at C:/workdir/src\julia.h:2391 [inlined]
true_main at C:/workdir/src\jlapi.c:971
jl_repl_entrypoint at C:/workdir/src\jlapi.c:1139
mainCRTStartup at C:/workdir/cli\loader_exe.c:58
BaseThreadInitThunk at C:\WINDOWS\System32\KERNEL32.DLL (unknown line)
RtlUserThreadStart at C:\WINDOWS\SYSTEM32\ntdll.dll (unknown line)
Allocations: 2200195 (Pool: 2200112; Big: 83); GC: 3
OS: Windows
Julia version: 1.12.6
MySQL.jl version: v1.5.1
Any help is appreciated.
The following code results in Julia crashing due to an error in libmariadb.dll. The database is a MySQL database accessed through an SSH tunnel. Setting
n=32works with no issues, butn=33crashes. Is that a limit on the number of parameters in a prepared statement?The execution reaches
DBInterface.execute(line 18) and then crashes with the following printout:OS: Windows
Julia version: 1.12.6
MySQL.jl version: v1.5.1
Any help is appreciated.