mirror of
https://github.com/MariaDB/server.git
synced 2026-05-10 00:54:30 +02:00
MDEV-20950 Reduce size of record offsets
offset_t: this is a type which represents one record offset. It's unsigned short int. a lot of functions: replace ulint with offset_t btr_pcur_restore_position_func(), page_validate(), row_ins_scan_sec_index_for_duplicate(), row_upd_clust_rec_by_insert_inherit_func(), row_vers_impl_x_locked_low(), trx_undo_prev_version_build(): allocate record offsets on the stack instead of waiting for rec_get_offsets() to allocate it from mem_heap_t. So, reducing memory allocations. RECORD_OFFSET, INDEX_OFFSET: now it's less convenient to store pointers in offset_t* array. One pointer occupies now several offset_t. And those constant are start indexes into array to places where to store pointer values REC_OFFS_HEADER_SIZE: adjusted for the new reality REC_OFFS_NORMAL_SIZE: increase size from 100 to 300 which means less heap allocations. And sizeof(offset_t[REC_OFFS_NORMAL_SIZE]) now is 600 bytes which is smaller than previous 800 bytes. REC_OFFS_SEC_INDEX_SIZE: adjusted for the new reality rem0rec.h, rem0rec.ic, rem0rec.cc: various arguments, return values and local variables types were changed to fix numerous integer conversions issues. enum field_type_t: offset types concept was introduces which replaces old offset flags stuff. Like in earlier version, 2 upper bits are used to store offset type. And this enum represents those types. REC_OFFS_SQL_NULL, REC_OFFS_MASK: removed get_type(), set_type(), get_value(), combine(): these are convenience functions to work with offsets and it's types rec_offs_base()[0]: still uses an old scheme with flags REC_OFFS_COMPACT and REC_OFFS_EXTERNAL rec_offs_base()[i]: these have type offset_t now. Two upper bits contains type.
This commit is contained in:
parent
beec9c0e19
commit
f0aa073f2b
66 changed files with 792 additions and 745 deletions
|
|
@ -47,6 +47,7 @@ Created June 2005 by Marko Makela
|
|||
#endif /* !UNIV_INNOCHECKSUM */
|
||||
|
||||
#include "buf0types.h"
|
||||
#include "rem0types.h"
|
||||
|
||||
#ifndef UNIV_INNOCHECKSUM
|
||||
#include "dict0types.h"
|
||||
|
|
@ -287,7 +288,7 @@ page_zip_write_rec(
|
|||
page_zip_des_t* page_zip,/*!< in/out: compressed page */
|
||||
const byte* rec, /*!< in: record being written */
|
||||
dict_index_t* index, /*!< in: the index the record belongs to */
|
||||
const ulint* offsets,/*!< in: rec_get_offsets(rec, index) */
|
||||
const offset_t* offsets,/*!< in: rec_get_offsets(rec, index) */
|
||||
ulint create) /*!< in: nonzero=insert, zero=update */
|
||||
MY_ATTRIBUTE((nonnull));
|
||||
|
||||
|
|
@ -312,7 +313,7 @@ page_zip_write_blob_ptr(
|
|||
const byte* rec, /*!< in/out: record whose data is being
|
||||
written */
|
||||
dict_index_t* index, /*!< in: index of the page */
|
||||
const ulint* offsets,/*!< in: rec_get_offsets(rec, index) */
|
||||
const offset_t* offsets,/*!< in: rec_get_offsets(rec, index) */
|
||||
ulint n, /*!< in: column index */
|
||||
mtr_t* mtr); /*!< in: mini-transaction handle,
|
||||
or NULL if no logging is needed */
|
||||
|
|
@ -346,7 +347,7 @@ page_zip_write_trx_id_and_roll_ptr(
|
|||
/*===============================*/
|
||||
page_zip_des_t* page_zip,/*!< in/out: compressed page */
|
||||
byte* rec, /*!< in/out: record */
|
||||
const ulint* offsets,/*!< in: rec_get_offsets(rec, index) */
|
||||
const offset_t* offsets,/*!< in: rec_get_offsets(rec, index) */
|
||||
ulint trx_id_col,/*!< in: column number of TRX_ID in rec */
|
||||
trx_id_t trx_id, /*!< in: transaction identifier */
|
||||
roll_ptr_t roll_ptr)/*!< in: roll_ptr */
|
||||
|
|
@ -394,7 +395,7 @@ page_zip_dir_delete(
|
|||
page_zip_des_t* page_zip, /*!< in/out: compressed page */
|
||||
byte* rec, /*!< in: deleted record */
|
||||
const dict_index_t* index, /*!< in: index of rec */
|
||||
const ulint* offsets, /*!< in: rec_get_offsets(rec) */
|
||||
const offset_t* offsets, /*!< in: rec_get_offsets(rec) */
|
||||
const byte* free) /*!< in: previous start of
|
||||
the free list */
|
||||
MY_ATTRIBUTE((nonnull(1,2,3,4)));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue