diff --git a/session.go b/session.go index 76d7cb28..0bef19a0 100644 --- a/session.go +++ b/session.go @@ -93,11 +93,15 @@ func (session *Session) Close() { } session.Tx = nil session.stmtCache = nil - session.Init() session.db = nil } } +// IsClosed returns if session is closed +func (session *Session) IsClosed() bool { + return session.db == nil +} + func (session *Session) resetStatement() { if session.AutoResetStatement { session.Statement.Init() diff --git a/session_test.go b/session_test.go new file mode 100644 index 00000000..d003274d --- /dev/null +++ b/session_test.go @@ -0,0 +1,23 @@ +// Copyright 2017 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xorm + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestClose(t *testing.T) { + assert.NoError(t, prepareEngine()) + + sess1 := testEngine.NewSession() + sess1.Close() + assert.True(t, sess1.IsClosed()) + + sess2 := testEngine.Where("a = ?", 1) + sess2.Close() + assert.True(t, sess2.IsClosed()) +}