public void ReleaseTableReadLock(ITable table, Transaction transaction)
        {
            if (transaction.IsolationLevel == IsolationLevels.RepetableRead)
            {
                return;
            }

            ILock tableLock = this.tableLocks[table];
            var   lockInfo  = this.lockInventory.GetLockInformation(tableLock, transaction);

            // Releated tables are locked until the transaction ends
            if (!lockInfo.IsRelatedTable && lockInfo.IsReadLockHeld)
            {
                if (!lockInfo.IsWriteLockHeld)
                {
                    tableLock.ExitRead();
                    // TODO: OnReleased
                }

                lockInfo.IsReadLockHeld = false;
            }
        }