From 882253bf4a60ee4e0bfeee5f9052cea8401cd7c0 Mon Sep 17 00:00:00 2001 From: "Brian J. Cardiff" Date: Wed, 14 Dec 2016 10:57:12 -0300 Subject: [PATCH] specs to ensure connection is not returned to pool in nested transaction --- spec/save_point_transaction_spec.cr | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/spec/save_point_transaction_spec.cr b/spec/save_point_transaction_spec.cr index 85dc676..97d5ab4 100644 --- a/spec/save_point_transaction_spec.cr +++ b/spec/save_point_transaction_spec.cr @@ -124,4 +124,37 @@ describe DB::SavePointTransaction do top.rolledback.should be_false top.committed.should be_true end + + it "releasing result_set from within inner transaction should not return connection to pool" do + cnn = uninitialized DB::Connection + with_dummy do |db| + db.transaction do |tx| + tx.transaction do |inner| + cnn = inner.connection + cnn.scalar "1" + db.pool.is_available?(cnn).should be_false + end + db.pool.is_available?(cnn).should be_false + end + db.pool.is_available?(cnn).should be_true + end + end + + it "releasing result_set from within inner inner transaction should not return connection to pool" do + cnn = uninitialized DB::Connection + with_dummy do |db| + db.transaction do |tx| + tx.transaction do |inner| + inner.transaction do |inner_inner| + cnn = inner_inner.connection + cnn.scalar "1" + db.pool.is_available?(cnn).should be_false + end + db.pool.is_available?(cnn).should be_false + end + db.pool.is_available?(cnn).should be_false + end + db.pool.is_available?(cnn).should be_true + end + end end