CUBRID Engine  latest
heap_file.h
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Search Solution Corporation
3  * Copyright 2016 CUBRID Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 
20 /*
21  * heap_file.h: Heap file object manager (at Server)
22  */
23 
24 #ifndef _HEAP_FILE_H_
25 #define _HEAP_FILE_H_
26 
27 #ident "$Id$"
28 
29 #if !defined (SERVER_MODE) && !defined (SA_MODE)
30 #error Belongs to server module
31 #endif /* !defined (SERVER_MODE) && !defined (SA_MODE) */
32 
33 #include "config.h"
34 #include "file_manager.h"
35 #include "heap_attrinfo.h"
36 #include "mem_block.hpp"
37 #include "mvcc.h"
38 #include "page_buffer.h"
39 #include "perf_monitor.h"
40 #include "storage_common.h"
41 #include "thread_compat.hpp"
42 #include "tde.h"
43 
44 // forward declarations
46 class record_descriptor;
47 
48 #define HFID_EQ(hfid_ptr1, hfid_ptr2) \
49  ((hfid_ptr1) == (hfid_ptr2) \
50  || ((hfid_ptr1)->hpgid == (hfid_ptr2)->hpgid && VFID_EQ (&((hfid_ptr1)->vfid), &((hfid_ptr2)->vfid))))
51 
52 #define HEAP_SET_RECORD(recdes, record_area_size, record_length, record_type, record_data) \
53  do \
54  { \
55  (recdes)->area_size = (record_area_size); \
56  (recdes)->length = (record_length); \
57  (recdes)->type = (record_type); \
58  (recdes)->data = (char *) (record_data); \
59  } \
60  while (0)
61 
62 #define HEAP_HEADER_AND_CHAIN_SLOTID 0 /* Slot for chain and header */
63 
64 #define HEAP_MAX_ALIGN INT_ALIGNMENT /* maximum alignment for heap record */
65 
66 #define HEAP_ISJUNK_OID(oid) \
67  ((oid)->slotid == HEAP_HEADER_AND_CHAIN_SLOTID \
68  || (oid)->slotid < 0 || (oid)->volid < 0 || (oid)->pageid < 0)
69 
70 #if defined (NDEBUG)
71 #define HEAP_ISVALID_OID(thread_p, oid) \
72  (HEAP_ISJUNK_OID (oid) \
73  ? DISK_INVALID \
74  : DISK_VALID)
75 #else
76 /* todo: fix me */
77 #define HEAP_ISVALID_OID(thread_p, oid) \
78  (HEAP_ISJUNK_OID (oid) \
79  ? DISK_INVALID \
80  : disk_is_page_sector_reserved ((thread_p), (oid)->volid, (oid)->pageid))
81 #endif
82 
83 #define HEAP_SCANCACHE_SET_NODE(scan_cache, class_oid_p, hfid_p) \
84  do \
85  { \
86  COPY_OID (&(scan_cache)->node.class_oid, class_oid_p); \
87  HFID_COPY (&(scan_cache)->node.hfid, hfid_p); \
88  } \
89  while (0)
90 
91 #define heap_classrepr_free_and_init(class_repr, idxp) \
92  do \
93  { \
94  if ((class_repr) != NULL) \
95  { \
96  heap_classrepr_free ((class_repr), (idxp)); \
97  (class_repr) = NULL; \
98  } \
99  } \
100  while (0)
101 
102 /*
103  * Heap scan structures
104  */
105 
106 /* Heap MVCC delete informations. This structure keep informations about
107  * the current row.
108  */
111 {
112  MVCCID row_delid; /* row delete id */
114 };
115 
118 {
119  VPID vpid; /* Vpid of one of the best pages */
120  int freespace; /* Estimated free space in this page */
121 };
122 
125 {
126  HFID hfid; /* Heap file of scan */
127  OID class_oid; /* Class oid of scanned instances */
128  const char *classname;
129 };
130 
133 {
136 };
137 
138 // *INDENT-OFF*
141 { /* Define a scan over the whole heap file */
142  public:
143  int debug_initpattern; /* A pattern which indicates that the structure has been initialized */
144  HEAP_SCANCACHE_NODE node; /* current scanned heap file information */
145  LOCK page_latch; /* Indicates the latch/lock to be acquired on heap pages. Its value may be NULL_LOCK
146  * when it is secure to skip lock on heap pages. For example, the class of the heap has
147  * been locked with either S_LOCK, SIX_LOCK, or X_LOCK */
148  bool cache_last_fix_page; /* Indicates if page buffers and memory are cached (left fixed) */
150  int num_btids; /* Total number of indexes defined on the scanning class */
151  multi_index_unique_stats *m_index_stats; // does this really belong to scan cache??
152  FILE_TYPE file_type; /* The file type of the heap file being scanned. Can be FILE_HEAP or
153  * FILE_HEAP_REUSE_SLOTS */
154  MVCC_SNAPSHOT *mvcc_snapshot; /* mvcc snapshot */
155  HEAP_SCANCACHE_NODE_LIST *partition_list; /* list holding the heap file information for partition nodes involved
156  * in the scan */
157 
158 
159  void start_area ();
160  void end_area ();
161  void reserve_area (size_t size = 0);
162  void assign_recdes_to_area (RECDES & recdes, size_t size = 0);
163  bool is_recdes_assigned_to_area (const RECDES & recdes) const;
164  const cubmem::block_allocator &get_area_block_allocator ();
165 
166  // todo - add constructor/destructor; should automatically call heap_scancache_end on destructor if started
167 
168  private:
169 
170  void alloc_area ();
171 
173 };
174 // *INDENT-ON*
175 
178 { /* Define a scanrange over a set of objects resident on the same page. It can be used
179  * for evaluation of nested joins */
180  OID first_oid; /* First OID in scan range object */
181  OID last_oid; /* Last OID in scan range object */
182  HEAP_SCANCACHE scan_cache; /* Current cached information from previous scan */
183 };
184 
187 {
188  LF_HASH_TABLE hfid_hash; /* class OID->HFID cache hash table */
189  LF_ENTRY_DESCRIPTOR hfid_hash_descriptor; /* used by hfid_hash */
190  LF_FREELIST hfid_hash_freelist; /* used by hfid_hash */
191  bool logging;
192 };
193 
194 #define HEAP_HFID_HASH_SIZE 1000
195 
196 /* entry for class OID->HFID lock free hashtable */
199 {
200  OID class_oid; /* key - OID */
201  HEAP_HFID_TABLE_ENTRY *stack; /* used in freelist */
202  HEAP_HFID_TABLE_ENTRY *next; /* used in hash table */
203  UINT64 del_id; /* delete transaction ID (for lock free) */
204 
205  HFID hfid; /* value - HFID */
206  FILE_TYPE ftype; /* value - FILE_HEAP or FILE_HEAP_REUSE_SLOTS */
207 // *INDENT-OFF*
208  std::atomic<char*> classname; /* Also cache the classname. */
209 // *INDENT-ON*
210 };
211 
212 // forward declaration
213 struct func_pred;
214 struct xasl_unpack_info;
215 
218 {
219  char *expr_stream;
221  int col_id;
223  struct func_pred *expr;
224 };
225 
228 {
231 };
232 
233 #if 0 /* TODO: check not use - ksseo */
234 typedef struct heap_spacecache HEAP_SPACECACHE;
235 struct heap_spacecache
236 { /* Define an alter space cache for heap file */
237 
238  float remain_sumlen; /* Total new length of records that it is predicted for the rest of space cache. If it
239  * is unknown -1 is stored. This value is used to estimate the number of pages to
240  * allocate at a particular time in space cache. If the value is < pagesize, only one
241  * page at a time is allocated. */
242 };
243 #endif
244 
247 {
248  int num_btids; /* class has # of btids */
249  int has_single_col; /* class has single column index */
250  int has_multi_col; /* class has multi-column index */
251 };
252 
253 /* heap operation types */
254 typedef enum
255 {
261 
263 {
264  UPDATE_INPLACE_NONE = 0, /* None */
265  UPDATE_INPLACE_CURRENT_MVCCID = 1, /* non-MVCC in-place update style with current MVCC ID. */
266  UPDATE_INPLACE_OLD_MVCCID = 2 /* non-MVCC in-place update style with old MVCC ID. Preserves old MVCC ID */
267 };
269 
270 /* Currently mvcc update is also executed inplace, but coresponds to UPDATE_INPLACE_NONE. TODO: Refactor */
271 #define HEAP_IS_UPDATE_INPLACE(update_inplace_style) \
272  ((update_inplace_style) != UPDATE_INPLACE_NONE)
273 
274 /* heap operation information structure */
277 {
278  /* heap operation type */
281 
282  /* logical operation input */
283  HFID hfid; /* heap file identifier */
284  OID oid; /* object identifier */
285  OID class_oid; /* class object identifier */
286  RECDES *recdes_p; /* record descriptor */
287  HEAP_SCANCACHE *scan_cache_p; /* scan cache */
288 
289  /* overflow transient data */
290  RECDES map_recdes; /* built record descriptor during multipage insert */
291  OID ovf_oid; /* overflow object location */
292 
293  /* transient data */
295  char home_recdes_buffer[IO_MAX_PAGE_SIZE + MAX_ALIGNMENT];
296  INT16 record_type; /* record type of original record */
297  FILE_TYPE file_type; /* the file type of hfid */
298 
299  /* physical page watchers - these should not be referenced directly */
304 
305  /* page watchers */
310 
311  /* logical operation output */
312  OID res_oid; /* object identifier (if operation generates one) */
313  bool is_logical_old; /* true if initial record was not REC_ASSIGN_ADDRESS */
314  bool is_redistribute_insert_with_delid; /* true if the insert is due to a partition redistribute data operation
315  * and has a valid delid */
316  bool is_bulk_op; // note - currently for insert only
317  // side-effect - disables MVCC operations
318 
319  bool use_bulk_logging; // note - currently for bulk insert only
320 
321  /* Performance stat dump. */
322  PERF_UTIME_TRACKER *time_track;
323 };
324 
325 enum
327 
328 typedef enum
329 {
330  SNAPSHOT_TYPE_NONE, /* do not use snapshot */
331  SNAPSHOT_TYPE_MVCC, /* use MVCC snapshot */
332  SNAPSHOT_TYPE_DIRTY /* use dirty snapshot */
333 } SNAPSHOT_TYPE;
334 
335 /* HEAP_PAGE_VACUUM_STATUS -
336  * Heap page attribute used to predict when page is no longer going to need
337  * another vacuum actions. This allows page deallocations without risking
338  * future access from vacuum workers.
339  *
340  * There are three possible states.
341  *
342  * Initial state is HEAP_PAGE_VACUUM_NONE (empty page). This state can be
343  * reached again after vacuuming in state VACUUM_PAGE_VACUUM_ONCE.
344  *
345  * After one MVCC op, state becomes HEAP_PAGE_VACUUM_ONCE.
346  *
347  * After a second MVCC op without vacuum, state becomes
348  * HEAP_PAGE_VACUUM_UNKNOWN, since future access from vacuum workers becomes
349  * unpredictable. Trying to keep track of required number vacuum accesses is
350  * not trivial and requires too much effort to handle cases that are not
351  * necessarily common.
352  *
353  * HEAP_PAGE_VACUUM_UNKNOWN can be changed only one way: When heap page max
354  * MVCCID is older than vacuum data oldest MVCCID, it means all vacuum
355  * required for that page was executed. Next MVCC op will convert the state
356  * to HEAP_PAGE_VACUUM_ONCE.
357  */
358 typedef enum
359 {
360  HEAP_PAGE_VACUUM_NONE, /* Heap page is completely vacuumed. */
361  HEAP_PAGE_VACUUM_ONCE, /* Heap page requires one vacuum action. */
362  HEAP_PAGE_VACUUM_UNKNOWN /* Heap page requires an unknown number of vacuum actions. */
364 
367 {
368  INT16 record_type; /* record type */
369 
370  /* input */
371  const OID *oid_p; /* required object identifier */
372  OID forward_oid; /* forward oid of REC_RELOCATION or REC_BIGONE */
373  OID *class_oid_p; /* class object identifier */
374  RECDES *recdes_p; /* record descriptor */
375  HEAP_SCANCACHE *scan_cache; /* scan cache */
376 
377  /* physical page watchers */
379  PGBUF_WATCHER fwd_page_watcher; /* forward page */
380 
381  /* retrieving parameters */
382  bool ispeeking; /* PEEK or COPY */
383  int old_chn; /* Cache number coherency */
384 
385  PGBUF_LATCH_MODE latch_mode; /* normally, we need READ latch for get_context, but some operations
386  * (like serial increment) require WRITE mode */
387 };
388 
389 /* Forward definition. */
390 struct mvcc_reev_data;
391 extern int mvcc_header_size_lookup[8];
392 
393 extern int heap_classrepr_decache (THREAD_ENTRY * thread_p, const OID * class_oid);
394 #ifdef DEBUG_CLASSREPR_CACHE
395 extern int heap_classrepr_dump_anyfixed (void);
396 #endif /* DEBUG_CLASSREPR_CACHE */
397 extern int heap_manager_initialize (void);
398 extern int heap_classrepr_restart_cache (void);
399 extern int heap_manager_finalize (void);
400 extern int heap_assign_address (THREAD_ENTRY * thread_p, const HFID * hfid, OID * class_oid, OID * oid,
401  int expected_length);
402 extern const OID *heap_ovf_delete (THREAD_ENTRY * thread_p, const HFID * hfid, const OID * ovf_oid, VFID * ovf_vfid_p);
403 extern VFID *heap_ovf_find_vfid (THREAD_ENTRY * thread_p, const HFID * hfid, VFID * ovf_vfid, bool create,
404  PGBUF_LATCH_CONDITION latch_cond);
405 extern void heap_flush (THREAD_ENTRY * thread_p, const OID * oid);
406 extern int xheap_reclaim_addresses (THREAD_ENTRY * thread_p, const HFID * hfid);
407 extern int heap_scancache_start (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * scan_cache, const HFID * hfid,
408  const OID * class_oid, int cache_last_fix_page, int is_indexscan,
410 extern int heap_scancache_start_modify (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * scan_cache, const HFID * hfid,
411  const OID * class_oid, int op_type, MVCC_SNAPSHOT * mvcc_snapshot);
412 extern int heap_scancache_quick_start (HEAP_SCANCACHE * scan_cache);
413 extern int heap_scancache_quick_start_modify (HEAP_SCANCACHE * scan_cache);
414 extern int heap_scancache_end (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * scan_cache);
415 extern int heap_scancache_end_when_scan_will_resume (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * scan_cache);
416 extern void heap_scancache_end_modify (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * scan_cache);
417 extern SCAN_CODE heap_get_class_oid (THREAD_ENTRY * thread_p, const OID * oid, OID * class_oid);
418 extern SCAN_CODE heap_next (THREAD_ENTRY * thread_p, const HFID * hfid, OID * class_oid, OID * next_oid,
419  RECDES * recdes, HEAP_SCANCACHE * scan_cache, int ispeeking);
420 extern SCAN_CODE heap_next_record_info (THREAD_ENTRY * thread_p, const HFID * hfid, OID * class_oid, OID * next_oid,
421  RECDES * recdes, HEAP_SCANCACHE * scan_cache, int ispeeking,
422  DB_VALUE ** cache_recordinfo);
423 extern SCAN_CODE heap_prev (THREAD_ENTRY * thread_p, const HFID * hfid, OID * class_oid, OID * prev_oid,
424  RECDES * recdes, HEAP_SCANCACHE * scan_cache, int ispeeking);
425 extern SCAN_CODE heap_prev_record_info (THREAD_ENTRY * thread_p, const HFID * hfid, OID * class_oid, OID * next_oid,
426  RECDES * recdes, HEAP_SCANCACHE * scan_cache, int ispeeking,
427  DB_VALUE ** cache_recordinfo);
428 extern SCAN_CODE heap_first (THREAD_ENTRY * thread_p, const HFID * hfid, OID * class_oid, OID * oid, RECDES * recdes,
429  HEAP_SCANCACHE * scan_cache, int ispeeking);
430 extern SCAN_CODE heap_last (THREAD_ENTRY * thread_p, const HFID * hfid, OID * class_oid, OID * oid, RECDES * recdes,
431  HEAP_SCANCACHE * scan_cache, int ispeeking);
432 #if defined (ENABLE_UNUSED_FUNCTION)
433 extern int heap_cmp (THREAD_ENTRY * thread_p, const OID * oid, RECDES * recdes);
434 #endif
435 extern int heap_scanrange_start (THREAD_ENTRY * thread_p, HEAP_SCANRANGE * scan_range, const HFID * hfid,
436  const OID * class_oid, MVCC_SNAPSHOT * mvcc_snapshot);
437 extern void heap_scanrange_end (THREAD_ENTRY * thread_p, HEAP_SCANRANGE * scan_range);
438 extern SCAN_CODE heap_scanrange_to_following (THREAD_ENTRY * thread_p, HEAP_SCANRANGE * scan_range, OID * start_oid);
439 extern SCAN_CODE heap_scanrange_to_prior (THREAD_ENTRY * thread_p, HEAP_SCANRANGE * scan_range, OID * last_oid);
440 extern SCAN_CODE heap_scanrange_next (THREAD_ENTRY * thread_p, OID * next_oid, RECDES * recdes,
441  HEAP_SCANRANGE * scan_range, int ispeeking);
442 #if defined (ENABLE_UNUSED_FUNCTION)
443 extern SCAN_CODE heap_scanrange_prev (THREAD_ENTRY * thread_p, OID * prev_oid, RECDES * recdes,
444  HEAP_SCANRANGE * scan_range, int ispeeking);
445 extern SCAN_CODE heap_scanrange_first (THREAD_ENTRY * thread_p, OID * first_oid, RECDES * recdes,
446  HEAP_SCANRANGE * scan_range, int ispeeking);
447 extern SCAN_CODE heap_scanrange_last (THREAD_ENTRY * thread_p, OID * last_oid, RECDES * recdes,
448  HEAP_SCANRANGE * scan_range, int ispeeking);
449 #endif
450 
451 extern bool heap_does_exist (THREAD_ENTRY * thread_p, OID * class_oid, const OID * oid);
452 extern bool heap_is_object_not_null (THREAD_ENTRY * thread_p, OID * class_oid, const OID * oid);
453 extern int heap_get_num_objects (THREAD_ENTRY * thread_p, const HFID * hfid, int *npages, int *nobjs, int *avg_length);
454 
455 extern int heap_estimate (THREAD_ENTRY * thread_p, const HFID * hfid, int *npages, int *nobjs, int *avg_length);
456 extern int heap_estimate_num_objects (THREAD_ENTRY * thread_p, const HFID * hfid);
457 
458 extern int heap_get_class_name (THREAD_ENTRY * thread_p, const OID * class_oid, char **class_name);
459 extern int heap_get_class_name_alloc_if_diff (THREAD_ENTRY * thread_p, const OID * class_oid, char *guess_classname,
460  char **class_name_out);
461 extern int heap_get_class_tde_algorithm (THREAD_ENTRY * thread_p, const OID * class_oid, TDE_ALGORITHM * tde_algo);
462 extern int heap_get_class_partitions (THREAD_ENTRY * thread_p, const OID * class_oid, OR_PARTITION ** parts,
463  int *parts_count);
464 extern void heap_clear_partition_info (THREAD_ENTRY * thread_p, OR_PARTITION * parts, int parts_count);
465 extern int heap_get_class_supers (THREAD_ENTRY * thread_p, const OID * class_oid, OID ** super_oids, int *count);
466 #if defined (ENABLE_UNUSED_FUNCTION)
467 extern char *heap_get_class_name_with_is_class (THREAD_ENTRY * thread_p, const OID * oid, int *isclass);
468 #endif
469 extern int heap_attrinfo_start (THREAD_ENTRY * thread_p, const OID * class_oid, int requested_num_attrs,
470  const ATTR_ID * attrid, HEAP_CACHE_ATTRINFO * attr_info);
471 extern void heap_attrinfo_end (THREAD_ENTRY * thread_p, HEAP_CACHE_ATTRINFO * attr_info);
472 extern int heap_attrinfo_clear_dbvalues (HEAP_CACHE_ATTRINFO * attr_info);
473 extern int heap_attrinfo_read_dbvalues (THREAD_ENTRY * thread_p, const OID * inst_oid, RECDES * recdes,
474  HEAP_SCANCACHE * scan_cache, HEAP_CACHE_ATTRINFO * attr_info);
476  HEAP_CACHE_ATTRINFO * attr_info);
477 extern int heap_attrinfo_delete_lob (THREAD_ENTRY * thread_p, RECDES * recdes, HEAP_CACHE_ATTRINFO * attr_info);
478 extern DB_VALUE *heap_attrinfo_access (ATTR_ID attrid, HEAP_CACHE_ATTRINFO * attr_info);
479 extern int heap_attrinfo_set (const OID * inst_oid, ATTR_ID attrid, DB_VALUE * attr_val,
480  HEAP_CACHE_ATTRINFO * attr_info);
482  RECDES * old_recdes, record_descriptor * new_recdes);
484  RECDES * old_recdes, record_descriptor * new_recdes);
485 
486 extern DB_VALUE *heap_attrinfo_generate_key (THREAD_ENTRY * thread_p, int n_atts, int *att_ids, int *atts_prefix_length,
487  HEAP_CACHE_ATTRINFO * attr_info, RECDES * recdes, DB_VALUE * dbvalue,
488  char *buf, FUNCTION_INDEX_INFO * func_index_info,
489  TP_DOMAIN * midxkey_domain);
490 extern int heap_attrinfo_start_with_index (THREAD_ENTRY * thread_p, OID * class_oid, RECDES * class_recdes,
491  HEAP_CACHE_ATTRINFO * attr_info, HEAP_IDX_ELEMENTS_INFO * idx_info);
492 extern int heap_attrinfo_start_with_btid (THREAD_ENTRY * thread_p, OID * class_oid, BTID * btid,
493  HEAP_CACHE_ATTRINFO * attr_info);
494 
495 #if defined (ENABLE_UNUSED_FUNCTION)
496 extern DB_VALUE *heap_attrvalue_get_index (int value_index, ATTR_ID * attrid, int *n_btids, BTID ** btids,
497  HEAP_CACHE_ATTRINFO * idx_attrinfo);
498 #endif
499 extern HEAP_ATTRVALUE *heap_attrvalue_locate (ATTR_ID attrid, HEAP_CACHE_ATTRINFO * attr_info);
501 extern DB_VALUE *heap_attrvalue_get_key (THREAD_ENTRY * thread_p, int btid_index, HEAP_CACHE_ATTRINFO * idx_attrinfo,
502  RECDES * recdes, BTID * btid, DB_VALUE * db_value, char *buf,
503  FUNC_PRED_UNPACK_INFO * func_indx_preds, TP_DOMAIN ** key_domain);
504 
505 extern BTID *heap_indexinfo_get_btid (int btid_index, HEAP_CACHE_ATTRINFO * attrinfo);
506 extern int heap_indexinfo_get_num_attrs (int btid_index, HEAP_CACHE_ATTRINFO * attrinfo);
507 extern int heap_indexinfo_get_attrids (int btid_index, HEAP_CACHE_ATTRINFO * attrinfo, ATTR_ID * attrids);
508 extern int heap_indexinfo_get_attrs_prefix_length (int btid_index, HEAP_CACHE_ATTRINFO * attrinfo,
509  int *attrs_prefix_length, int len_attrs_prefix_length);
510 extern int heap_get_index_with_name (THREAD_ENTRY * thread_p, OID * class_oid, const char *index_name, BTID * btid);
511 extern int heap_get_indexinfo_of_btid (THREAD_ENTRY * thread_p, const OID * class_oid, const BTID * btid,
512  BTREE_TYPE * type, int *num_attrs, ATTR_ID ** attr_ids,
513  int **attrs_prefix_length, char **btnamepp, int *func_index_col_id);
514 extern int heap_get_referenced_by (THREAD_ENTRY * thread_p, OID * class_oid, const OID * obj_oid, RECDES * obj,
515  int *max_oid_cnt, OID ** oid_list);
516 
517 extern int heap_prefetch (THREAD_ENTRY * thread_p, OID * class_oid, const OID * oid, LC_COPYAREA_DESC * prefetch);
521 
522 extern int heap_chnguess_get (THREAD_ENTRY * thread_p, const OID * oid, int tran_index);
523 extern int heap_chnguess_put (THREAD_ENTRY * thread_p, const OID * oid, int tran_index, int chn);
524 extern void heap_chnguess_clear (THREAD_ENTRY * thread_p, int tran_index);
525 
526 /* Misc */
527 extern int xheap_get_class_num_objects_pages (THREAD_ENTRY * thread_p, const HFID * hfid, int approximation, int *nobjs,
528  int *npages);
529 
530 extern int xheap_has_instance (THREAD_ENTRY * thread_p, const HFID * hfid, OID * class_oid, int has_visible_instance);
531 
532 extern int heap_init_func_pred_unpack_info (THREAD_ENTRY * thread_p, HEAP_CACHE_ATTRINFO * attr_info,
533  const OID * class_oid, FUNC_PRED_UNPACK_INFO ** func_indx_preds);
534 
535 extern void heap_free_func_pred_unpack_info (THREAD_ENTRY * thread_p, int n_indexes,
536  FUNC_PRED_UNPACK_INFO * func_indx_preds, int *attr_info_started);
537 
538 /* auto-increment */
539 extern int heap_set_autoincrement_value (THREAD_ENTRY * thread_p, HEAP_CACHE_ATTRINFO * attr_info,
540  HEAP_SCANCACHE * scan_cache, int *is_set);
541 
542 extern void heap_dump (THREAD_ENTRY * thread_p, FILE * fp, HFID * hfid, bool dump_records);
543 extern void heap_attrinfo_dump (THREAD_ENTRY * thread_p, FILE * fp, HEAP_CACHE_ATTRINFO * attr_info, bool dump_schema);
544 #if defined (CUBRID_DEBUG)
545 extern void heap_chnguess_dump (FILE * fp);
546 #endif /* CUBRID_DEBUG */
547 extern int heap_dump_capacity (THREAD_ENTRY * thread_p, FILE * fp, const HFID * hfid);
548 
549 /* partition-support */
550 extern OR_CLASSREP *heap_classrepr_get (THREAD_ENTRY * thread_p, const OID * class_oid, RECDES * class_recdes,
551  REPR_ID reprid, int *idx_incache);
552 extern int heap_classrepr_free (OR_CLASSREP * classrep, int *idx_incache);
553 extern REPR_ID heap_get_class_repr_id (THREAD_ENTRY * thread_p, OID * class_oid);
554 extern int heap_classrepr_find_index_id (OR_CLASSREP * classrepr, const BTID * btid);
555 extern int heap_attrinfo_set_uninitialized_global (THREAD_ENTRY * thread_p, OID * inst_oid, RECDES * recdes,
556  HEAP_CACHE_ATTRINFO * attr_info);
557 
558 /* Recovery functions */
559 extern int heap_rv_redo_newpage (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
560 extern int heap_rv_redo_newpage_reuse_oid (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
561 extern int heap_rv_undoredo_pagehdr (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
562 extern void heap_rv_dump_statistics (FILE * fp, int ignore_length, void *data);
563 extern void heap_rv_dump_chain (FILE * fp, int ignore_length, void *data);
564 extern int heap_rv_undo_insert (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
565 extern int heap_rv_redo_insert (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
566 extern int heap_rv_mvcc_redo_insert (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
567 extern int heap_rv_undo_delete (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
568 extern int heap_rv_redo_delete (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
569 extern int heap_rv_mvcc_undo_delete (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
570 extern int heap_rv_mvcc_undo_delete_overflow (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
571 extern int heap_rv_mvcc_redo_delete_home (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
572 extern int heap_rv_mvcc_redo_delete_overflow (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
573 extern int heap_rv_mvcc_redo_delete_newhome (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
574 extern int heap_rv_redo_mark_reusable_slot (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
575 extern int heap_rv_undo_update (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
576 extern int heap_rv_redo_update (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
577 extern int heap_rv_undoredo_update (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
578 extern int heap_rv_redo_reuse_page (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
579 extern int heap_rv_redo_reuse_page_reuse_oid (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
580 extern void heap_rv_dump_reuse_page (FILE * fp, int ignore_length, void *data);
581 extern int heap_rv_mark_deleted_on_undo (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
582 extern int heap_rv_mark_deleted_on_postpone (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
583 
584 extern int heap_get_class_info (THREAD_ENTRY * thread_p, const OID * class_oid, HFID * hfid_out,
585  FILE_TYPE * ftype_out, char **classname_out);
586 extern int heap_cache_class_info (THREAD_ENTRY * thread_p, const OID * class_oid, HFID * hfid,
587  FILE_TYPE ftype, const char *classname_in);
588 extern int heap_compact_pages (THREAD_ENTRY * thread_p, OID * class_oid);
589 
590 extern void heap_classrepr_dump_all (THREAD_ENTRY * thread_p, FILE * fp, OID * class_oid);
591 
592 extern int heap_get_btid_from_index_name (THREAD_ENTRY * thread_p, const OID * p_class_oid, const char *index_name,
593  BTID * p_found_btid);
594 
595 extern int heap_object_upgrade_domain (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * upd_scancache,
596  HEAP_CACHE_ATTRINFO * attr_info, OID * oid, const ATTR_ID att_id);
597 
598 extern int heap_header_capacity_start_scan (THREAD_ENTRY * thread_p, int show_type, DB_VALUE ** arg_values, int arg_cnt,
599  void **ptr);
600 extern SCAN_CODE heap_header_next_scan (THREAD_ENTRY * thread_p, int cursor, DB_VALUE ** out_values, int out_cnt,
601  void *ptr);
602 extern SCAN_CODE heap_capacity_next_scan (THREAD_ENTRY * thread_p, int cursor, DB_VALUE ** out_values, int out_cnt,
603  void *ptr);
604 extern int heap_header_capacity_end_scan (THREAD_ENTRY * thread_p, void **ptr);
605 
606 extern SCAN_CODE heap_page_prev (THREAD_ENTRY * thread_p, const OID * class_oid, const HFID * hfid, VPID * prev_vpid,
607  DB_VALUE ** cache_pageinfo);
608 extern SCAN_CODE heap_page_next (THREAD_ENTRY * thread_p, const OID * class_oid, const HFID * hfid, VPID * next_vpid,
609  DB_VALUE ** cache_pageinfo);
610 extern int heap_vpid_next (THREAD_ENTRY * thread_p, const HFID * hfid, PAGE_PTR pgptr, VPID * next_vpid);
611 extern int heap_vpid_prev (THREAD_ENTRY * thread_p, const HFID * hfid, PAGE_PTR pgptr, VPID * prev_vpid);
612 extern SCAN_CODE heap_get_mvcc_header (THREAD_ENTRY * thread_p, HEAP_GET_CONTEXT * context,
613  MVCC_REC_HEADER * mvcc_header);
614 extern int heap_get_mvcc_rec_header_from_overflow (PAGE_PTR ovf_page, MVCC_REC_HEADER * mvcc_header,
615  RECDES * peek_recdes);
616 extern int heap_set_mvcc_rec_header_on_overflow (PAGE_PTR ovf_page, MVCC_REC_HEADER * mvcc_header);
617 extern int heap_rv_redo_update_and_update_chain (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
618 
619 extern bool heap_is_big_length (int length);
620 extern int heap_get_class_oid_from_page (THREAD_ENTRY * thread_p, PAGE_PTR page_p, OID * class_oid);
621 extern bool heap_attrinfo_check_unique_index (THREAD_ENTRY * thread_p, HEAP_CACHE_ATTRINFO * attr_info,
622  ATTR_ID * att_id, int n_att_id);
623 extern int heap_scancache_quick_start_root_hfid (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * scan_cache);
624 extern int heap_scancache_quick_start_with_class_oid (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * scan_cache,
625  OID * class_oid);
626 extern int heap_scancache_quick_start_with_class_hfid (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * scan_cache,
627  const HFID * hfid);
629  OID * class_oid);
630 extern void heap_create_insert_context (HEAP_OPERATION_CONTEXT * context, HFID * hfid_p, OID * class_oid_p,
631  RECDES * recdes_p, HEAP_SCANCACHE * scancache_p);
632 extern void heap_create_delete_context (HEAP_OPERATION_CONTEXT * context, HFID * hfid_p, OID * oid_p, OID * class_oid_p,
633  HEAP_SCANCACHE * scancache_p);
634 extern void heap_create_update_context (HEAP_OPERATION_CONTEXT * context, HFID * hfid_p, OID * oid_p, OID * class_oid_p,
635  RECDES * recdes_p, HEAP_SCANCACHE * scancache_p, UPDATE_INPLACE_STYLE in_place);
636 extern int heap_insert_logical (THREAD_ENTRY * thread_p, HEAP_OPERATION_CONTEXT * context, PGBUF_WATCHER * home_hint_p);
637 extern int heap_delete_logical (THREAD_ENTRY * thread_p, HEAP_OPERATION_CONTEXT * context);
638 extern int heap_update_logical (THREAD_ENTRY * thread_p, HEAP_OPERATION_CONTEXT * context);
639 
640 extern int heap_initialize_hfid_table (void);
641 extern void heap_finalize_hfid_table (void);
642 extern int heap_delete_hfid_from_cache (THREAD_ENTRY * thread_p, OID * class_oid);
643 
644 extern void heap_page_set_vacuum_status_none (THREAD_ENTRY * thread_p, PAGE_PTR heap_page);
645 extern MVCCID heap_page_get_max_mvccid (THREAD_ENTRY * thread_p, PAGE_PTR heap_page);
647 extern bool heap_remove_page_on_vacuum (THREAD_ENTRY * thread_p, PAGE_PTR * page_ptr, HFID * hfid);
648 
649 extern int heap_rv_nop (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
650 extern int heap_rv_update_chain_after_mvcc_op (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
651 extern INT16 heap_rv_remove_flags_from_offset (INT16 offset);
652 
653 extern void heap_stats_update (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, const HFID * hfid, int prev_freespace);
654 extern bool heap_should_try_update_stat (const int current_freespace, const int prev_freespace);
655 extern int heap_rv_mvcc_redo_redistribute (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
656 extern int heap_vacuum_all_objects (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * upd_scancache, MVCCID threshold_mvccid);
657 extern SCAN_CODE heap_get_visible_version (THREAD_ENTRY * thread_p, const OID * oid, OID * class_oid, RECDES * recdes,
658  HEAP_SCANCACHE * scan_cache, int ispeeking, int old_chn);
659 extern SCAN_CODE heap_scan_get_visible_version (THREAD_ENTRY * thread_p, const OID * oid, OID * class_oid,
660  RECDES * recdes, HEAP_SCANCACHE * scan_cache, int ispeeking,
661  int old_chn);
662 extern SCAN_CODE heap_get_last_version (THREAD_ENTRY * thread_p, HEAP_GET_CONTEXT * context);
663 extern void heap_clean_get_context (THREAD_ENTRY * thread_p, HEAP_GET_CONTEXT * context);
664 extern void heap_init_get_context (THREAD_ENTRY * thread_p, HEAP_GET_CONTEXT * context, const OID * oid,
665  OID * class_oid, RECDES * recdes, HEAP_SCANCACHE * scan_cache, int ispeeking,
666  int old_chn);
667 extern int heap_prepare_object_page (THREAD_ENTRY * thread_p, const OID * oid, PGBUF_WATCHER * page_watcher_p,
668  PGBUF_LATCH_MODE latch_mode);
669 extern SCAN_CODE heap_prepare_get_context (THREAD_ENTRY * thread_p, HEAP_GET_CONTEXT * context, bool is_heap_scan,
670  NON_EXISTENT_HANDLING non_ex_handling_type);
673  bool is_heap_scan);
674 extern SCAN_CODE heap_get_class_record (THREAD_ENTRY * thread_p, const OID * class_oid, RECDES * recdes_p,
675  HEAP_SCANCACHE * scan_cache, int ispeeking);
676 extern int heap_rv_undo_ovf_update (THREAD_ENTRY * thread_p, LOG_RCV * rcv);
677 extern int heap_get_best_space_num_stats_entries (void);
678 
679 extern int heap_get_hfid_from_vfid (THREAD_ENTRY * thread_p, const VFID * vfid, HFID * hfid);
680 extern int heap_scan_cache_allocate_area (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * scan_cache_p, int size);
681 extern bool heap_is_page_header (THREAD_ENTRY * thread_p, PAGE_PTR page);
682 
683 extern int heap_alloc_new_page (THREAD_ENTRY * thread_p, HFID * hfid, OID class_oid, PGBUF_WATCHER * home_hint_p,
684  VPID * new_page_vpid);
685 
686 extern int heap_nonheader_page_capacity ();
687 
688 extern int heap_rv_postpone_append_pages_to_heap (THREAD_ENTRY * thread_p, LOG_RCV * recv);
689 extern void heap_rv_dump_append_pages_to_heap (FILE * fp, int length, void *data);
690 // *INDENT-OFF*
691 extern void heap_log_postpone_heap_append_pages (THREAD_ENTRY * thread_p, const HFID * hfid, const OID * class_oid,
692  const std::vector<VPID> &heap_pages_array);
693 // *INDENT-ON*
694 #endif /* _HEAP_FILE_H_ */
char * PAGE_PTR
int heap_attrinfo_clear_dbvalues(HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:10022
enum mvcc_satisfies_delete_result MVCC_SATISFIES_DELETE_RESULT
Definition: mvcc.h:224
int heap_delete_hfid_from_cache(THREAD_ENTRY *thread_p, OID *class_oid)
Definition: heap_file.c:23262
int heap_attrinfo_set_uninitialized_global(THREAD_ENTRY *thread_p, OID *inst_oid, RECDES *recdes, HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:16711
int heap_indexinfo_get_attrs_prefix_length(int btid_index, HEAP_CACHE_ATTRINFO *attrinfo, int *attrs_prefix_length, int len_attrs_prefix_length)
Definition: heap_file.c:13054
SCAN_CODE heap_get_record_data_when_all_ready(THREAD_ENTRY *thread_p, HEAP_GET_CONTEXT *context)
Definition: heap_file.c:7707
void heap_classrepr_dump_all(THREAD_ENTRY *thread_p, FILE *fp, OID *class_oid)
Definition: heap_file.c:16874
int heap_attrinfo_start_with_btid(THREAD_ENTRY *thread_p, OID *class_oid, BTID *btid, HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:12237
int heap_attrinfo_start_with_index(THREAD_ENTRY *thread_p, OID *class_oid, RECDES *class_recdes, HEAP_CACHE_ATTRINFO *attr_info, HEAP_IDX_ELEMENTS_INFO *idx_info)
Definition: heap_file.c:11997
void heap_attrinfo_dump(THREAD_ENTRY *thread_p, FILE *fp, HEAP_CACHE_ATTRINFO *attr_info, bool dump_schema)
Definition: heap_file.c:10540
DB_VALUE * heap_attrinfo_access(ATTR_ID attrid, HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:10665
HEAP_SCANCACHE * scan_cache_p
Definition: heap_file.h:287
int heap_manager_finalize(void)
Definition: heap_file.c:5111
void heap_create_insert_context(HEAP_OPERATION_CONTEXT *context, HFID *hfid_p, OID *class_oid_p, RECDES *recdes_p, HEAP_SCANCACHE *scancache_p)
Definition: heap_file.c:22324
int heap_classrepr_find_index_id(OR_CLASSREP *classrepr, const BTID *btid)
Definition: heap_file.c:12193
bool heap_does_exist(THREAD_ENTRY *thread_p, OID *class_oid, const OID *oid)
Definition: heap_file.c:8714
SCAN_CODE
DISK_ISVALID heap_check_all_heaps(THREAD_ENTRY *thread_p)
Definition: heap_file.c:13996
int heap_get_indexinfo_of_btid(THREAD_ENTRY *thread_p, const OID *class_oid, const BTID *btid, BTREE_TYPE *type, int *num_attrs, ATTR_ID **attr_ids, int **attrs_prefix_length, char **btnamepp, int *func_index_col_id)
Definition: heap_file.c:13134
bool heap_should_try_update_stat(const int current_freespace, const int prev_freespace)
Definition: heap_file.c:23916
bool is_redistribute_insert_with_delid
Definition: heap_file.h:314
int heap_rv_nop(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:23862
bool cache_last_fix_page
Definition: heap_file.h:148
int heap_rv_redo_update_and_update_chain(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:18918
HEAP_HFID_TABLE_ENTRY * next
Definition: heap_file.h:202
OR_CLASSREP * heap_classrepr_get(THREAD_ENTRY *thread_p, const OID *class_oid, RECDES *class_recdes, REPR_ID reprid, int *idx_incache)
Definition: heap_file.c:2299
FILE_TYPE file_type
Definition: heap_file.h:152
SCAN_CODE heap_attrinfo_transform_to_disk(THREAD_ENTRY *thread_p, HEAP_CACHE_ATTRINFO *attr_info, RECDES *old_recdes, record_descriptor *new_recdes)
Definition: heap_file.c:11527
PGBUF_WATCHER overflow_page_watcher
Definition: heap_file.h:301
int heap_get_class_supers(THREAD_ENTRY *thread_p, const OID *class_oid, OID **super_oids, int *count)
Definition: heap_file.c:11153
HEAP_OPERATION_TYPE
Definition: heap_file.h:254
BTREE_TYPE
int heap_get_class_name_alloc_if_diff(THREAD_ENTRY *thread_p, const OID *class_oid, char *guess_classname, char **class_name_out)
Definition: heap_file.c:9351
OR_ATTRIBUTE * heap_locate_last_attrepr(ATTR_ID attrid, HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:10637
FILE_TYPE
Definition: file_manager.h:38
int heap_rv_mark_deleted_on_postpone(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:5877
SCAN_CODE heap_get_mvcc_header(THREAD_ENTRY *thread_p, HEAP_GET_CONTEXT *context, MVCC_REC_HEADER *mvcc_header)
Definition: heap_file.c:7620
int heap_chnguess_put(THREAD_ENTRY *thread_p, const OID *oid, int tran_index, int chn)
Definition: heap_file.c:15306
int heap_scanrange_start(THREAD_ENTRY *thread_p, HEAP_SCANRANGE *scan_range, const HFID *hfid, const OID *class_oid, MVCC_SNAPSHOT *mvcc_snapshot)
Definition: heap_file.c:8203
int heap_rv_update_chain_after_mvcc_op(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:23881
int heap_get_class_partitions(THREAD_ENTRY *thread_p, const OID *class_oid, OR_PARTITION **parts, int *parts_count)
Definition: heap_file.c:11016
SCAN_CODE heap_scanrange_next(THREAD_ENTRY *thread_p, OID *next_oid, RECDES *recdes, HEAP_SCANRANGE *scan_range, int ispeeking)
Definition: heap_file.c:8481
SCAN_CODE heap_next(THREAD_ENTRY *thread_p, const HFID *hfid, OID *class_oid, OID *next_oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, int ispeeking)
Definition: heap_file.c:18622
multi_index_unique_stats * m_index_stats
Definition: heap_file.h:151
int heap_attrinfo_read_dbvalues_without_oid(THREAD_ENTRY *thread_p, RECDES *recdes, HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:10401
int heap_vpid_next(THREAD_ENTRY *thread_p, const HFID *hfid, PAGE_PTR pgptr, VPID *next_vpid)
Definition: heap_file.c:4983
PGBUF_WATCHER home_page_watcher
Definition: heap_file.h:378
void heap_init_get_context(THREAD_ENTRY *thread_p, HEAP_GET_CONTEXT *context, const OID *oid, OID *class_oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, int ispeeking, int old_chn)
Definition: heap_file.c:24697
Definition: lock_free.h:63
int heap_prefetch(THREAD_ENTRY *thread_p, OID *class_oid, const OID *oid, LC_COPYAREA_DESC *prefetch)
Definition: heap_file.c:13512
void heap_rv_dump_statistics(FILE *fp, int ignore_length, void *data)
Definition: heap_file.c:15533
const char * classname
Definition: heap_file.h:128
int heap_get_hfid_from_vfid(THREAD_ENTRY *thread_p, const VFID *vfid, HFID *hfid)
Definition: heap_file.c:24843
int heap_header_capacity_start_scan(THREAD_ENTRY *thread_p, int show_type, DB_VALUE **arg_values, int arg_cnt, void **ptr)
Definition: heap_file.c:17661
PGBUF_WATCHER * overflow_page_watcher_p
Definition: heap_file.h:307
SCAN_CODE heap_get_visible_version_internal(THREAD_ENTRY *thread_p, HEAP_GET_CONTEXT *context, bool is_heap_scan)
Definition: heap_file.c:24333
FILE_TYPE ftype
Definition: heap_file.h:206
SCAN_CODE heap_header_next_scan(THREAD_ENTRY *thread_p, int cursor, DB_VALUE **out_values, int out_cnt, void *ptr)
Definition: heap_file.c:17780
HEAP_ATTRVALUE * heap_attrvalue_locate(ATTR_ID attrid, HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:10590
int heap_rv_redo_update(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:16236
int heap_estimate_num_objects(THREAD_ENTRY *thread_p, const HFID *hfid)
Definition: heap_file.c:9060
int heap_attrinfo_set(const OID *inst_oid, ATTR_ID attrid, DB_VALUE *attr_val, HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:11239
int heap_chnguess_get(THREAD_ENTRY *thread_p, const OID *oid, int tran_index)
Definition: heap_file.c:15255
SNAPSHOT_TYPE
Definition: heap_file.h:328
int heap_rv_mvcc_redo_delete_overflow(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:16069
REPR_ID heap_get_class_repr_id(THREAD_ENTRY *thread_p, OID *class_oid)
Definition: heap_file.c:16476
LF_FREELIST hfid_hash_freelist
Definition: heap_file.h:190
void heap_clear_partition_info(THREAD_ENTRY *thread_p, OR_PARTITION *parts, int parts_count)
Definition: heap_file.c:11126
int heap_get_class_name(THREAD_ENTRY *thread_p, const OID *class_oid, char **class_name)
Definition: heap_file.c:9328
int heap_attrinfo_delete_lob(THREAD_ENTRY *thread_p, RECDES *recdes, HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:10464
int heap_scancache_end_when_scan_will_resume(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *scan_cache)
Definition: heap_file.c:7210
#define MAX_ALIGNMENT
Definition: memory_alloc.h:70
void heap_rv_dump_reuse_page(FILE *fp, int ignore_length, void *data)
Definition: heap_file.c:16382
HEAP_SCANCACHE_NODE_LIST * partition_list
Definition: heap_file.h:155
PGBUF_WATCHER fwd_page_watcher
Definition: heap_file.h:379
void heap_chnguess_clear(THREAD_ENTRY *thread_p, int tran_index)
Definition: heap_file.c:15416
int heap_assign_address(THREAD_ENTRY *thread_p, const HFID *hfid, OID *class_oid, OID *oid, int expected_length)
Definition: heap_file.c:5914
void heap_create_update_context(HEAP_OPERATION_CONTEXT *context, HFID *hfid_p, OID *oid_p, OID *class_oid_p, RECDES *recdes_p, HEAP_SCANCACHE *scancache_p, UPDATE_INPLACE_STYLE in_place)
Definition: heap_file.c:22378
void heap_clean_get_context(THREAD_ENTRY *thread_p, HEAP_GET_CONTEXT *context)
Definition: heap_file.c:24657
void THREAD_ENTRY
HEAP_SCANCACHE_NODE node
Definition: heap_file.h:144
int heap_rv_redo_reuse_page_reuse_oid(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:16335
DISK_ISVALID heap_check_heap_file(THREAD_ENTRY *thread_p, HFID *hfid)
Definition: heap_file.c:13941
int heap_header_capacity_end_scan(THREAD_ENTRY *thread_p, void **ptr)
Definition: heap_file.c:18181
int ATTR_ID
Definition: heap_file.h:198
bool heap_attrinfo_check_unique_index(THREAD_ENTRY *thread_p, HEAP_CACHE_ATTRINFO *attr_info, ATTR_ID *att_id, int n_att_id)
Definition: heap_file.c:18957
LOCK
LF_HASH_TABLE hfid_hash
Definition: heap_file.h:188
SCAN_CODE heap_get_visible_version(THREAD_ENTRY *thread_p, const OID *oid, OID *class_oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, int ispeeking, int old_chn)
Definition: heap_file.c:24272
PGBUF_WATCHER home_page_watcher
Definition: heap_file.h:300
int heap_scancache_quick_start_root_hfid(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *scan_cache)
Definition: heap_file.c:19255
void heap_attrinfo_end(THREAD_ENTRY *thread_p, HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:9979
int heap_rv_redo_insert(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:15569
int heap_scan_cache_allocate_area(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *scan_cache_p, int size)
Definition: heap_file.c:24744
VFID * heap_ovf_find_vfid(THREAD_ENTRY *thread_p, const HFID *hfid, VFID *ovf_vfid, bool create, PGBUF_LATCH_CONDITION latch_cond)
Definition: heap_file.c:6353
PGBUF_WATCHER * forward_page_watcher_p
Definition: heap_file.h:309
NON_EXISTENT_HANDLING
int heap_classrepr_restart_cache(void)
Definition: heap_file.c:1849
int heap_scancache_quick_start_with_class_oid(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *scan_cache, OID *class_oid)
Definition: heap_file.c:19282
TDE_ALGORITHM
Definition: tde.h:71
void heap_scanrange_end(THREAD_ENTRY *thread_p, HEAP_SCANRANGE *scan_range)
Definition: heap_file.c:8238
int heap_get_class_oid_from_page(THREAD_ENTRY *thread_p, PAGE_PTR page_p, OID *class_oid)
Definition: heap_file.c:18824
SCAN_CODE heap_prepare_get_context(THREAD_ENTRY *thread_p, HEAP_GET_CONTEXT *context, bool is_heap_scan, NON_EXISTENT_HANDLING non_ex_handling_type)
Definition: heap_file.c:7385
int heap_vacuum_all_objects(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *upd_scancache, MVCCID threshold_mvccid)
Definition: heap_file.c:23283
PGBUF_LATCH_MODE
Definition: page_buffer.h:176
int heap_rv_postpone_append_pages_to_heap(THREAD_ENTRY *thread_p, LOG_RCV *recv)
Definition: heap_file.c:25049
int heap_scancache_end(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *scan_cache)
Definition: heap_file.c:7195
void heap_stats_update(THREAD_ENTRY *thread_p, PAGE_PTR pgptr, const HFID *hfid, int prev_freespace)
Definition: heap_file.c:2936
SCAN_CODE heap_prev_record_info(THREAD_ENTRY *thread_p, const HFID *hfid, OID *class_oid, OID *next_oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, int ispeeking, DB_VALUE **cache_recordinfo)
Definition: heap_file.c:18697
int heap_rv_redo_mark_reusable_slot(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:16147
PGBUF_LATCH_CONDITION
Definition: page_buffer.h:185
void heap_rv_dump_append_pages_to_heap(FILE *fp, int length, void *data)
Definition: heap_file.c:25270
void heap_create_delete_context(HEAP_OPERATION_CONTEXT *context, HFID *hfid_p, OID *oid_p, OID *class_oid_p, HEAP_SCANCACHE *scancache_p)
Definition: heap_file.c:22351
const OID * heap_ovf_delete(THREAD_ENTRY *thread_p, const HFID *hfid, const OID *ovf_oid, VFID *ovf_vfid_p)
Definition: heap_file.c:6521
SCAN_CODE heap_get_class_oid(THREAD_ENTRY *thread_p, const OID *oid, OID *class_oid)
Definition: heap_file.c:9285
DB_VALUE * heap_attrvalue_get_key(THREAD_ENTRY *thread_p, int btid_index, HEAP_CACHE_ATTRINFO *idx_attrinfo, RECDES *recdes, BTID *btid, DB_VALUE *db_value, char *buf, FUNC_PRED_UNPACK_INFO *func_indx_preds, TP_DOMAIN **key_domain)
Definition: heap_file.c:12802
int heap_scancache_quick_start_modify(HEAP_SCANCACHE *scan_cache)
Definition: heap_file.c:7056
int heap_estimate(THREAD_ENTRY *thread_p, const HFID *hfid, int *npages, int *nobjs, int *avg_length)
Definition: heap_file.c:9005
int heap_init_func_pred_unpack_info(THREAD_ENTRY *thread_p, HEAP_CACHE_ATTRINFO *attr_info, const OID *class_oid, FUNC_PRED_UNPACK_INFO **func_indx_preds)
Definition: heap_file.c:17493
MVCCID heap_page_get_max_mvccid(THREAD_ENTRY *thread_p, PAGE_PTR heap_page)
Definition: heap_file.c:23798
xasl_unpack_info * unpack_info
Definition: heap_file.h:230
void heap_log_postpone_heap_append_pages(THREAD_ENTRY *thread_p, const HFID *hfid, const OID *class_oid, const std::vector< VPID > &heap_pages_array)
Definition: heap_file.c:25440
int heap_rv_redo_reuse_page(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:16283
int heap_get_btid_from_index_name(THREAD_ENTRY *thread_p, const OID *p_class_oid, const char *index_name, BTID *p_found_btid)
Definition: heap_file.c:16938
update_inplace_style
Definition: heap_file.h:262
int heap_classrepr_free(OR_CLASSREP *classrep, int *idx_incache)
Definition: heap_file.c:1893
int xheap_get_class_num_objects_pages(THREAD_ENTRY *thread_p, const HFID *hfid, int approximation, int *nobjs, int *npages)
Definition: heap_file.c:16396
int heap_manager_initialize(void)
Definition: heap_file.c:5070
INT16 heap_rv_remove_flags_from_offset(INT16 offset)
Definition: heap_file.c:23901
int heap_alloc_new_page(THREAD_ENTRY *thread_p, HFID *hfid, OID class_oid, PGBUF_WATCHER *home_hint_p, VPID *new_page_vpid)
Definition: heap_file.c:24994
RECDES * recdes_p
Definition: heap_file.h:374
int heap_rv_mvcc_redo_delete_newhome(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:16112
UINT64 MVCCID
bool heap_is_object_not_null(THREAD_ENTRY *thread_p, OID *class_oid, const OID *oid)
Definition: heap_file.c:8848
int heap_prepare_object_page(THREAD_ENTRY *thread_p, const OID *oid, PGBUF_WATCHER *page_watcher_p, PGBUF_LATCH_MODE latch_mode)
Definition: heap_file.c:24609
int xheap_has_instance(THREAD_ENTRY *thread_p, const HFID *hfid, OID *class_oid, int has_visible_instance)
Definition: heap_file.c:16429
int heap_update_logical(THREAD_ENTRY *thread_p, HEAP_OPERATION_CONTEXT *context)
Definition: heap_file.c:22771
HEAP_HFID_TABLE_ENTRY * stack
Definition: heap_file.h:201
HEAP_SCANCACHE scan_cache
Definition: heap_file.h:182
int heap_get_best_space_num_stats_entries(void)
Definition: heap_file.c:24829
SCAN_CODE heap_capacity_next_scan(THREAD_ENTRY *thread_p, int cursor, DB_VALUE **out_values, int out_cnt, void *ptr)
Definition: heap_file.c:18014
bool heap_remove_page_on_vacuum(THREAD_ENTRY *thread_p, PAGE_PTR *page_ptr, HFID *hfid)
Definition: heap_file.c:4643
PGBUF_WATCHER page_watcher
Definition: heap_file.h:149
int heap_get_class_tde_algorithm(THREAD_ENTRY *thread_p, const OID *class_oid, TDE_ALGORITHM *tde_algo)
Definition: heap_file.c:10737
int heap_scancache_quick_start_with_class_hfid(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *scan_cache, const HFID *hfid)
Definition: heap_file.c:19308
DISK_ISVALID heap_check_all_pages(THREAD_ENTRY *thread_p, HFID *hfid)
Definition: heap_file.c:13775
int count(int &result, const cub_regex_object &reg, const std::string &src, const int position, const INTL_CODESET codeset)
int heap_get_num_objects(THREAD_ENTRY *thread_p, const HFID *hfid, int *npages, int *nobjs, int *avg_length)
Definition: heap_file.c:8935
HEAP_SCANCACHE_NODE node
Definition: heap_file.h:134
int heap_scancache_start(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *scan_cache, const HFID *hfid, const OID *class_oid, int cache_last_fix_page, int is_indexscan, MVCC_SNAPSHOT *mvcc_snapshot)
Definition: heap_file.c:6833
SCAN_CODE heap_page_prev(THREAD_ENTRY *thread_p, const OID *class_oid, const HFID *hfid, VPID *prev_vpid, DB_VALUE **cache_pageinfo)
Definition: heap_file.c:18372
SCAN_CODE heap_get_last_version(THREAD_ENTRY *thread_p, HEAP_GET_CONTEXT *context)
Definition: heap_file.c:24546
int heap_attrinfo_start(THREAD_ENTRY *thread_p, const OID *class_oid, int requested_num_attrs, const ATTR_ID *attrid, HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:9427
int mvcc_header_size_lookup[8]
int heap_get_referenced_by(THREAD_ENTRY *thread_p, OID *class_oid, const OID *obj_oid, RECDES *obj, int *max_oid_cnt, OID **oid_list)
Definition: heap_file.c:13303
bool heap_is_big_length(int length)
Definition: heap_file.c:1302
SCAN_CODE heap_scanrange_to_prior(THREAD_ENTRY *thread_p, HEAP_SCANRANGE *scan_range, OID *last_oid)
Definition: heap_file.c:8375
MVCC_SATISFIES_DELETE_RESULT satisfies_delete_result
Definition: heap_file.h:113
PGBUF_WATCHER forward_page_watcher
Definition: heap_file.h:303
void heap_scancache_end_modify(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *scan_cache)
Definition: heap_file.c:7230
struct func_pred * func_pred
Definition: heap_file.h:229
void heap_finalize_hfid_table(void)
Definition: heap_file.c:23242
SCAN_CODE heap_next_record_info(THREAD_ENTRY *thread_p, const HFID *hfid, OID *class_oid, OID *next_oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, int ispeeking, DB_VALUE **cache_recordinfo)
Definition: heap_file.c:18648
std::atomic< char * > classname
Definition: heap_file.h:208
SCAN_CODE heap_get_class_record(THREAD_ENTRY *thread_p, const OID *class_oid, RECDES *recdes_p, HEAP_SCANCACHE *scan_cache, int ispeeking)
Definition: heap_file.c:24780
int heap_indexinfo_get_num_attrs(int btid_index, HEAP_CACHE_ATTRINFO *attrinfo)
Definition: heap_file.c:13010
int heap_vpid_prev(THREAD_ENTRY *thread_p, const HFID *hfid, PAGE_PTR pgptr, VPID *prev_vpid)
Definition: heap_file.c:5028
int heap_set_mvcc_rec_header_on_overflow(PAGE_PTR ovf_page, MVCC_REC_HEADER *mvcc_header)
Definition: heap_file.c:18740
BTID * heap_indexinfo_get_btid(int btid_index, HEAP_CACHE_ATTRINFO *attrinfo)
Definition: heap_file.c:12991
MVCC_SNAPSHOT * mvcc_snapshot
Definition: heap_file.h:154
PGBUF_WATCHER * home_page_watcher_p
Definition: heap_file.h:306
int xheap_reclaim_addresses(THREAD_ENTRY *thread_p, const HFID *hfid)
Definition: heap_file.c:6122
int heap_scancache_quick_start_modify_with_class_oid(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *scan_cache, OID *class_oid)
Definition: heap_file.c:19331
int heap_object_upgrade_domain(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *upd_scancache, HEAP_CACHE_ATTRINFO *attr_info, OID *oid, const ATTR_ID att_id)
Definition: heap_file.c:17011
int heap_rv_mvcc_undo_delete_overflow(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:15934
PGBUF_WATCHER * header_page_watcher_p
Definition: heap_file.h:308
HFID hfid
Definition: heap_file.h:205
cubmem::single_block_allocator * m_area
Definition: heap_file.h:172
PGBUF_WATCHER header_page_watcher
Definition: heap_file.h:302
void heap_page_set_vacuum_status_none(THREAD_ENTRY *thread_p, PAGE_PTR heap_page)
Definition: heap_file.c:23755
HEAP_PAGE_VACUUM_STATUS
Definition: heap_file.h:358
bool heap_is_page_header(THREAD_ENTRY *thread_p, PAGE_PTR page)
Definition: heap_file.c:24869
int heap_set_autoincrement_value(THREAD_ENTRY *thread_p, HEAP_CACHE_ATTRINFO *attr_info, HEAP_SCANCACHE *scan_cache, int *is_set)
Definition: heap_file.c:16507
int heap_classrepr_decache(THREAD_ENTRY *thread_p, const OID *class_oid)
Definition: heap_file.c:1818
int heap_rv_undoredo_pagehdr(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:15495
SCAN_CODE heap_page_next(THREAD_ENTRY *thread_p, const OID *class_oid, const HFID *hfid, VPID *next_vpid, DB_VALUE **cache_pageinfo)
Definition: heap_file.c:18305
SCAN_CODE heap_last(THREAD_ENTRY *thread_p, const HFID *hfid, OID *class_oid, OID *oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, int ispeeking)
Definition: heap_file.c:8125
int REPR_ID
int heap_cache_class_info(THREAD_ENTRY *thread_p, const OID *class_oid, HFID *hfid, FILE_TYPE ftype, const char *classname_in)
Definition: heap_file.c:23392
HEAP_OPERATION_TYPE type
Definition: heap_file.h:279
int heap_rv_mvcc_redo_redistribute(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:24048
struct func_pred * expr
Definition: heap_file.h:223
int heap_rv_undoredo_update(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:16247
OID class_oid
Definition: heap_file.h:200
int heap_insert_logical(THREAD_ENTRY *thread_p, HEAP_OPERATION_CONTEXT *context, PGBUF_WATCHER *home_hint_p)
Definition: heap_file.c:22426
int heap_rv_mvcc_redo_delete_home(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:16029
int debug_initpattern
Definition: heap_file.h:143
#define IO_MAX_PAGE_SIZE
int heap_compact_pages(THREAD_ENTRY *thread_p, OID *class_oid)
Definition: heap_file.c:16754
HEAP_PAGE_VACUUM_STATUS heap_page_get_vacuum_status(THREAD_ENTRY *thread_p, PAGE_PTR heap_page)
Definition: heap_file.c:23830
HEAP_SCANCACHE_NODE_LIST * next
Definition: heap_file.h:135
SCAN_CODE heap_first(THREAD_ENTRY *thread_p, const HFID *hfid, OID *class_oid, OID *oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, int ispeeking)
Definition: heap_file.c:8097
int heap_get_class_info(THREAD_ENTRY *thread_p, const OID *class_oid, HFID *hfid_out, FILE_TYPE *ftype_out, char **classname_out)
Definition: heap_file.c:16733
int heap_indexinfo_get_attrids(int btid_index, HEAP_CACHE_ATTRINFO *attrinfo, ATTR_ID *attrids)
Definition: heap_file.c:13030
int heap_rv_undo_delete(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:16164
HEAP_SCANCACHE * scan_cache
Definition: heap_file.h:375
void heap_free_func_pred_unpack_info(THREAD_ENTRY *thread_p, int n_indexes, FUNC_PRED_UNPACK_INFO *func_indx_preds, int *attr_info_started)
Definition: heap_file.c:17621
int heap_rv_mvcc_undo_delete(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:15881
int heap_rv_redo_delete(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:15807
int heap_scancache_quick_start(HEAP_SCANCACHE *scan_cache)
Definition: heap_file.c:7040
void heap_dump(THREAD_ENTRY *thread_p, FILE *fp, HFID *hfid, bool dump_records)
Definition: heap_file.c:14113
SCAN_CODE heap_scanrange_to_following(THREAD_ENTRY *thread_p, HEAP_SCANRANGE *scan_range, OID *start_oid)
Definition: heap_file.c:8265
int heap_initialize_hfid_table(void)
Definition: heap_file.c:23185
enum update_inplace_style UPDATE_INPLACE_STYLE
Definition: heap_file.h:268
int heap_rv_mvcc_redo_insert(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:15690
int heap_dump_capacity(THREAD_ENTRY *thread_p, FILE *fp, const HFID *hfid)
Definition: heap_file.c:14281
PGBUF_LATCH_MODE latch_mode
Definition: heap_file.h:385
int heap_rv_undo_insert(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:15784
void heap_flush(THREAD_ENTRY *thread_p, const OID *oid)
Definition: heap_file.c:5974
SCAN_CODE heap_attrinfo_transform_to_disk_except_lob(THREAD_ENTRY *thread_p, HEAP_CACHE_ATTRINFO *attr_info, RECDES *old_recdes, record_descriptor *new_recdes)
Definition: heap_file.c:11547
SCAN_CODE heap_scan_get_visible_version(THREAD_ENTRY *thread_p, const OID *oid, OID *class_oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, int ispeeking, int old_chn)
Definition: heap_file.c:24309
void heap_rv_dump_chain(FILE *fp, int ignore_length, void *data)
Definition: heap_file.c:15550
int heap_rv_undo_ovf_update(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:24812
int heap_scancache_start_modify(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *scan_cache, const HFID *hfid, const OID *class_oid, int op_type, MVCC_SNAPSHOT *mvcc_snapshot)
Definition: heap_file.c:6867
int heap_nonheader_page_capacity()
Definition: heap_file.c:25032
const OID * oid_p
Definition: heap_file.h:371
int heap_get_mvcc_rec_header_from_overflow(PAGE_PTR ovf_page, MVCC_REC_HEADER *mvcc_header, RECDES *peek_recdes)
Definition: heap_file.c:18714
PERF_UTIME_TRACKER * time_track
Definition: heap_file.h:322
UPDATE_INPLACE_STYLE update_in_place
Definition: heap_file.h:280
int heap_get_index_with_name(THREAD_ENTRY *thread_p, OID *class_oid, const char *index_name, BTID *btid)
Definition: heap_file.c:13092
int heap_rv_undo_update(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:16199
DISK_ISVALID
Definition: disk_manager.h:53
int heap_delete_logical(THREAD_ENTRY *thread_p, HEAP_OPERATION_CONTEXT *context)
Definition: heap_file.c:22606
UINT64 del_id
Definition: heap_file.h:203
SCAN_CODE heap_prev(THREAD_ENTRY *thread_p, const HFID *hfid, OID *class_oid, OID *prev_oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, int ispeeking)
Definition: heap_file.c:18671
int heap_rv_redo_newpage_reuse_oid(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
int heap_rv_mark_deleted_on_undo(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:5859
DB_VALUE * heap_attrinfo_generate_key(THREAD_ENTRY *thread_p, int n_atts, int *att_ids, int *atts_prefix_length, HEAP_CACHE_ATTRINFO *attr_info, RECDES *recdes, DB_VALUE *dbvalue, char *buf, FUNCTION_INDEX_INFO *func_index_info, TP_DOMAIN *midxkey_domain)
Definition: heap_file.c:12672
int heap_attrinfo_read_dbvalues(THREAD_ENTRY *thread_p, const OID *inst_oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, HEAP_CACHE_ATTRINFO *attr_info)
Definition: heap_file.c:10337
LF_ENTRY_DESCRIPTOR hfid_hash_descriptor
Definition: heap_file.h:189
int heap_rv_redo_newpage(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
Definition: heap_file.c:15453