MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / close

Method close

src/jrd/recsrc/IndexTableScan.cpp:83–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

81}
82
83void IndexTableScan::close(thread_db* tdbb) const
84{
85 Request* const request = tdbb->getRequest();
86
87 invalidateRecords(request);
88
89 Impure* const impure = request->getImpure<Impure>(m_impure);
90
91 if (impure->irsb_flags & irsb_open)
92 {
93 impure->irsb_flags &= ~irsb_open;
94
95 if (m_recursive)
96 {
97 if (impure->irsb_nav_bitmap)
98 {
99 delete *impure->irsb_nav_bitmap;
100 *impure->irsb_nav_bitmap = NULL;
101 }
102
103 delete impure->irsb_nav_records_visited;
104 impure->irsb_nav_records_visited = NULL;
105 }
106
107 if (impure->irsb_nav_btr_gc_lock)
108 {
109#ifdef DEBUG_LCK_LIST
110 if (!impure->irsb_nav_page && impure->irsb_nav_btr_gc_lock->isActive())
111 gds__log("DEBUG_LCK_LIST: irsb_nav_btr_gc_lock->isActive() && !irsb_nav_page");
112#endif
113 if (impure->irsb_nav_btr_gc_lock->isActive())
114 impure->irsb_nav_btr_gc_lock->enablePageGC(tdbb);
115
116 delete impure->irsb_nav_btr_gc_lock;
117 impure->irsb_nav_btr_gc_lock = NULL;
118 }
119
120 impure->irsb_nav_page = 0;
121
122 if (impure->irsb_nav_lower)
123 {
124 delete impure->irsb_nav_lower;
125 impure->irsb_nav_current_lower = impure->irsb_nav_lower = NULL;
126 }
127
128 if (impure->irsb_nav_upper)
129 {
130 delete impure->irsb_nav_upper;
131 impure->irsb_nav_current_upper = impure->irsb_nav_upper = NULL;
132 }
133
134 if (impure->irsb_iterator)
135 {
136 delete impure->irsb_iterator;
137 impure->irsb_iterator = NULL;
138 }
139 }
140#ifdef DEBUG_LCK_LIST

Callers

nothing calls this directly

Calls 3

enablePageGCMethod · 0.80
getRequestMethod · 0.45
isActiveMethod · 0.45

Tested by

no test coverage detected