From b4e856cc3cce571a46ebc4e98e6e09e82a910547 Mon Sep 17 00:00:00 2001 From: Ryan Culpepper Date: Sun, 13 Nov 2011 14:32:41 -0700 Subject: [PATCH] db: fixed space leak in statement finalizer thread This "fixes" the segfault in the test program, but it seems like there must be another underlying problem. --- collects/db/private/generic/prepared.rkt | 4 ++-- collects/tests/db/programs/sl-inserts.rkt | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 collects/tests/db/programs/sl-inserts.rkt diff --git a/collects/db/private/generic/prepared.rkt b/collects/db/private/generic/prepared.rkt index 8c9ed4bffa..e70f033467 100644 --- a/collects/db/private/generic/prepared.rkt +++ b/collects/db/private/generic/prepared.rkt @@ -109,5 +109,5 @@ [else "prepared statement finalizer thread handled non-exception"]) e))]) - (will-execute will-executor) - (loop)))))) + (will-execute will-executor)) + (loop))))) diff --git a/collects/tests/db/programs/sl-inserts.rkt b/collects/tests/db/programs/sl-inserts.rkt new file mode 100644 index 0000000000..ecb6e07f30 --- /dev/null +++ b/collects/tests/db/programs/sl-inserts.rkt @@ -0,0 +1,20 @@ +#lang racket +(require db) + +(define db (sqlite3-connect #:database 'memory)) + +(query-exec + db + "CREATE TABLE IF NOT EXISTS + log_word_map(word TEXT, log_id INTEGER, + PRIMARY KEY (word, log_id) + ON CONFLICT FAIL)") + +(query-exec db "BEGIN TRANSACTION") + +(for ([x (in-range 20000)]) + (query-exec db + "insert into log_word_map values (?, ?)" + (number->string x) 99)) + +(query-exec db "COMMIT")