MySQL  8.0.19
Source Code Documentation
data0data.h File Reference
#include "univ.i"
#include "data0type.h"
#include "data0types.h"
#include "dict0types.h"
#include "mem0mem.h"
#include "trx0types.h"
#include "ut0bitset.h"
#include <ostream>
#include "data0data.ic"

Go to the source code of this file.

Classes

struct  multi_value_data
 Structure to hold number of multiple values. More...
 
class  Multi_value_logger
 Class to log the multi-value data and read it from the log. More...
 
struct  dfield_t
 Structure for an SQL data field. More...
 
struct  dtuple_t
 Structure for an SQL data tuple of fields (logical record) More...
 
struct  big_rec_field_t
 A slot for a field in a big rec vector. More...
 
struct  big_rec_t
 Storage format for overflow data in a big record, that is, a clustered index record which needs external storage of data fields. More...
 

Macros

#define DTUPLE_EST_ALLOC(n_fields)   (sizeof(dtuple_t) + (n_fields) * sizeof(dfield_t))
 
#define DATA_TUPLE_MAGIC_N   65478679
 Value of dtuple_t::magic_n. More...
 

Functions

UNIV_INLINE dtype_tdfield_get_type (const dfield_t *field)
 Gets pointer to the type struct of SQL data field. More...
 
UNIV_INLINE void * dfield_get_data (const dfield_t *field)
 Gets pointer to the data in a field. More...
 
UNIV_INLINE void dfield_set_type (dfield_t *field, const dtype_t *type)
 Sets the type struct of SQL data field. More...
 
UNIV_INLINE ulint dfield_get_len (const dfield_t *field)
 Gets length of field data. More...
 
UNIV_INLINE void dfield_set_len (dfield_t *field, ulint len)
 Sets length in a field. More...
 
UNIV_INLINE ulint dfield_is_null (const dfield_t *field)
 Determines if a field is SQL NULL. More...
 
UNIV_INLINE ulint dfield_is_ext (const dfield_t *field)
 Determines if a field is externally stored. More...
 
UNIV_INLINE void dfield_set_ext (dfield_t *field)
 Sets the "external storage" flag. More...
 
UNIV_INLINE spatial_status_t dfield_get_spatial_status (const dfield_t *field)
 Gets spatial status for "external storage". More...
 
UNIV_INLINE void dfield_set_spatial_status (dfield_t *field, spatial_status_t spatial_status)
 Sets spatial status for "external storage". More...
 
UNIV_INLINE void dfield_set_data (dfield_t *field, const void *data, ulint len)
 Sets pointer to the data and length in a field. More...
 
UNIV_INLINE void dfield_write_mbr (dfield_t *field, const double *mbr)
 Sets pointer to the data and length in a field. More...
 
UNIV_INLINE void dfield_set_null (dfield_t *field)
 Sets a data field to SQL NULL. More...
 
UNIV_INLINE void data_write_sql_null (byte *data, ulint len)
 Writes an SQL null field full of zeros. More...
 
UNIV_INLINE void dfield_copy_data (dfield_t *field1, const dfield_t *field2)
 Copies the data and len fields. More...
 
UNIV_INLINE void dfield_copy (dfield_t *field1, const dfield_t *field2)
 Copies a data field to another. More...
 
UNIV_INLINE void dfield_dup (dfield_t *field, mem_heap_t *heap)
 Copies the data pointed to by a data field. More...
 
UNIV_INLINE void dfield_multi_value_dup (dfield_t *field, mem_heap_t *heap)
 Copies the data pointed to by a data field. More...
 
UNIV_INLINE bool dfield_is_multi_value (const dfield_t *field)
 Determine if a field is of multi-value type. More...
 
bool dfield_datas_are_binary_equal (const dfield_t *field1, const dfield_t *field2, ulint len)
 Tests if two data fields are equal. More...
 
UNIV_INLINE bool dfield_data_is_binary_equal (const dfield_t *field, ulint len, const byte *data)
 Tests if dfield data length and content is equal to the given. More...
 
UNIV_INLINE ulint dtuple_get_n_fields (const dtuple_t *tuple)
 Gets number of fields in a data tuple. More...
 
UNIV_INLINE ulint dtuple_get_n_v_fields (const dtuple_t *tuple)
 Gets number of virtual fields in a data tuple. More...
 
UNIV_INLINE dfield_tdtuple_get_nth_field (const dtuple_t *tuple, ulint n)
 Gets nth field of a tuple. More...
 
UNIV_INLINE dfield_tdtuple_get_nth_v_field (const dtuple_t *tuple, ulint n)
 Gets nth virtual field of a tuple. More...
 
UNIV_INLINE ulint dtuple_get_info_bits (const dtuple_t *tuple)
 Gets info bits in a data tuple. More...
 
UNIV_INLINE void dtuple_set_info_bits (dtuple_t *tuple, ulint info_bits)
 Sets info bits in a data tuple. More...
 
UNIV_INLINE ulint dtuple_get_n_fields_cmp (const dtuple_t *tuple)
 Gets number of fields used in record comparisons. More...
 
UNIV_INLINE void dtuple_set_n_fields_cmp (dtuple_t *tuple, ulint n_fields_cmp)
 Gets number of fields used in record comparisons. More...
 
UNIV_INLINE dtuple_tdtuple_create_from_mem (void *buf, ulint buf_size, ulint n_fields, ulint n_v_fields)
 Creates a data tuple from an already allocated chunk of memory. More...
 
UNIV_INLINE dtuple_tdtuple_create (mem_heap_t *heap, ulint n_fields)
 Creates a data tuple to a memory heap. More...
 
UNIV_INLINE void dtuple_init_v_fld (const dtuple_t *vrow)
 Initialize the virtual field data in a dtuple_t. More...
 
UNIV_INLINE void dtuple_dup_v_fld (const dtuple_t *vrow, mem_heap_t *heap)
 Duplicate the virtual field data in a dtuple_t. More...
 
UNIV_INLINE dtuple_tdtuple_create_with_vcol (mem_heap_t *heap, ulint n_fields, ulint n_v_fields)
 Creates a data tuple with possible virtual columns to a memory heap. More...
 
void dtuple_set_n_fields (dtuple_t *tuple, ulint n_fields)
 Sets number of fields used in a tuple. More...
 
UNIV_INLINE void dtuple_copy_v_fields (dtuple_t *d_tuple, const dtuple_t *s_tuple)
 Copies a data tuple's virtaul fields to another. More...
 
UNIV_INLINE dtuple_tdtuple_copy (const dtuple_t *tuple, mem_heap_t *heap)
 Copies a data tuple to another. More...
 
UNIV_INLINE ulint dtuple_get_data_size (const dtuple_t *tuple, ulint comp)
 The following function returns the sum of data lengths of a tuple. More...
 
UNIV_INLINE ulint dtuple_get_n_ext (const dtuple_t *tuple)
 Computes the number of externally stored fields in a data tuple. More...
 
bool dtuple_coll_eq (const dtuple_t *tuple1, const dtuple_t *tuple2)
 Compare two data tuples. More...
 
UNIV_INLINE ulint dtuple_fold (const dtuple_t *tuple, ulint n_fields, ulint n_bytes, ulint fold)
 Compute a hash value of a prefix of an index record. More...
 
UNIV_INLINE void dtuple_set_types_binary (dtuple_t *tuple, ulint n)
 Sets types of fields binary in a tuple. More...
 
UNIV_INLINE bool dtuple_contains_null (const dtuple_t *tuple)
 Checks if a dtuple contains an SQL null value. More...
 
bool dfield_check_typed (const dfield_t *field)
 Checks that a data field is typed. More...
 
bool dtuple_check_typed (const dtuple_t *tuple)
 Checks that a data tuple is typed. More...
 
bool dtuple_validate (const dtuple_t *tuple)
 Validates the consistency of a tuple which must be complete, i.e, all fields must have been set. More...
 
void dfield_print_also_hex (const dfield_t *dfield)
 Pretty prints a dfield value according to its data type. More...
 
void dtuple_print (FILE *f, const dtuple_t *tuple)
 The following function prints the contents of a tuple. More...
 
void dfield_print (std::ostream &o, const dfield_t *field, ulint n)
 Print the contents of a tuple. More...
 
void dtuple_print (std::ostream &o, const dtuple_t *tuple)
 Print the contents of a tuple. More...
 
std::ostream & operator<< (std::ostream &o, const dtuple_t &tuple)
 Print the contents of a tuple. More...
 
big_rec_tdtuple_convert_big_rec (dict_index_t *index, upd_t *upd, dtuple_t *entry, ulint *n_ext)
 Moves parts of long fields in entry to the big record vector so that the size of tuple drops below the maximum record size allowed in the database. More...
 
void dtuple_convert_back_big_rec (dtuple_t *entry, big_rec_t *vector)
 Puts back to entry the data stored in vector. More...
 
UNIV_INLINE void dtuple_big_rec_free (big_rec_t *vector)
 Frees the memory in a big rec vector. More...
 
bool is_multi_value_clust_and_sec_equal (const byte *clust_field, uint64_t clust_len, const byte *sec_field, uint64_t sec_len, const dict_col_t *col)
 Compare a multi-value clustered index field with a secondary index field, to see if they are equal. More...
 
std::ostream & operator<< (std::ostream &out, const dfield_t &obj)
 Overloading the global output operator to easily print the given dfield_t object into the given output stream. More...
 
std::ostream & operator<< (std::ostream &out, const big_rec_field_t &obj)
 Overloading the global output operator to easily print the given big_rec_field_t object into the given output stream. More...
 
std::ostream & operator<< (std::ostream &out, const big_rec_t &obj)
 Overloading the global output operator to easily print the given big_rec_t object into the given output stream. More...
 

Detailed Description

SQL data field and tuple

Created 5/30/1994 Heikki Tuuri

Macro Definition Documentation

◆ DATA_TUPLE_MAGIC_N

#define DATA_TUPLE_MAGIC_N   65478679

Value of dtuple_t::magic_n.

◆ DTUPLE_EST_ALLOC

#define DTUPLE_EST_ALLOC (   n_fields)    (sizeof(dtuple_t) + (n_fields) * sizeof(dfield_t))

Function Documentation

◆ data_write_sql_null()

UNIV_INLINE void data_write_sql_null ( byte data,
ulint  len 
)

Writes an SQL null field full of zeros.

Parameters
[in]datapointer to a buffer of size len
[in]lenSQL null size in bytes

◆ dfield_check_typed()

bool dfield_check_typed ( const dfield_t field)

Checks that a data field is typed.

Asserts an error if not.

Returns
true if ok
Parameters
fieldin: data field

◆ dfield_copy()

UNIV_INLINE void dfield_copy ( dfield_t field1,
const dfield_t field2 
)

Copies a data field to another.

Parameters
[out]field1field to copy to
[in]field2field to copy from

◆ dfield_copy_data()

UNIV_INLINE void dfield_copy_data ( dfield_t field1,
const dfield_t field2 
)

Copies the data and len fields.

Parameters
[out]field1field to copy to
[in]field2field to copy from

◆ dfield_data_is_binary_equal()

UNIV_INLINE bool dfield_data_is_binary_equal ( const dfield_t field,
ulint  len,
const byte data 
)

Tests if dfield data length and content is equal to the given.

Returns
true if equal
Parameters
fieldin: field
lenin: data length or UNIV_SQL_NULL
datain: data

◆ dfield_datas_are_binary_equal()

bool dfield_datas_are_binary_equal ( const dfield_t field1,
const dfield_t field2,
ulint  len 
)
inline

Tests if two data fields are equal.

If len==0, tests the data length and content for equality. If len>0, tests the first len bytes of the content for equality.

Parameters
[in]field1first field to compare
[in]field2second field to compare
[in]lenmaximum prefix to compare, or 0 to compare the whole field length. This works only if !multi_val
Returns
true if both fields are NULL or if they are equal

◆ dfield_dup()

UNIV_INLINE void dfield_dup ( dfield_t field,
mem_heap_t heap 
)

Copies the data pointed to by a data field.

Parameters
[in,out]fielddata field
[in]heapmemory heap where allocated

◆ dfield_get_data()

UNIV_INLINE void* dfield_get_data ( const dfield_t field)

Gets pointer to the data in a field.

Returns
pointer to data
Parameters
fieldin: field

◆ dfield_get_len()

UNIV_INLINE ulint dfield_get_len ( const dfield_t field)

Gets length of field data.

Returns
length of data; UNIV_SQL_NULL if SQL null data
Parameters
fieldin: field

◆ dfield_get_spatial_status()

UNIV_INLINE spatial_status_t dfield_get_spatial_status ( const dfield_t field)

Gets spatial status for "external storage".

Parameters
[in,out]fieldfield

◆ dfield_get_type()

UNIV_INLINE dtype_t* dfield_get_type ( const dfield_t field)

Gets pointer to the type struct of SQL data field.

Returns
pointer to the type struct
Parameters
fieldin: SQL data field

◆ dfield_is_ext()

UNIV_INLINE ulint dfield_is_ext ( const dfield_t field)

Determines if a field is externally stored.

Returns
nonzero if externally stored
Parameters
fieldin: field

◆ dfield_is_multi_value()

UNIV_INLINE bool dfield_is_multi_value ( const dfield_t field)

Determine if a field is of multi-value type.

Parameters
[in]fielddata field
Returns
true if multi-value type field, otherwise false

◆ dfield_is_null()

UNIV_INLINE ulint dfield_is_null ( const dfield_t field)

Determines if a field is SQL NULL.

Returns
nonzero if SQL null data
Parameters
fieldin: field

◆ dfield_multi_value_dup()

UNIV_INLINE void dfield_multi_value_dup ( dfield_t field,
mem_heap_t heap 
)

Copies the data pointed to by a data field.

This function works for multi-value fields only.

Parameters
[in,out]fielddata field
[in]heapmemory heap where allocated

◆ dfield_print()

void dfield_print ( std::ostream &  o,
const dfield_t field,
ulint  n 
)

Print the contents of a tuple.

Parameters
[out]ooutput stream
[in]fieldarray of data fields
[in]nnumber of data fields

◆ dfield_print_also_hex()

void dfield_print_also_hex ( const dfield_t dfield)

Pretty prints a dfield value according to its data type.

Also the hex string is printed if a string contains non-printable characters. in: dfield

◆ dfield_set_data()

UNIV_INLINE void dfield_set_data ( dfield_t field,
const void *  data,
ulint  len 
)

Sets pointer to the data and length in a field.

Parameters
[in]fieldfield
[in]datadata
[in]lenlength or UNIV_SQL_NULL

◆ dfield_set_ext()

UNIV_INLINE void dfield_set_ext ( dfield_t field)

Sets the "external storage" flag.

in/out: field

◆ dfield_set_len()

UNIV_INLINE void dfield_set_len ( dfield_t field,
ulint  len 
)

Sets length in a field.

Parameters
[in]fieldfield
[in]lenlength or UNIV_SQL_NULL

◆ dfield_set_null()

UNIV_INLINE void dfield_set_null ( dfield_t field)

Sets a data field to SQL NULL.

in/out: field

◆ dfield_set_spatial_status()

UNIV_INLINE void dfield_set_spatial_status ( dfield_t field,
spatial_status_t  spatial_status 
)

Sets spatial status for "external storage".

Parameters
[in,out]fieldfield
[in]spatial_statusspatial status

◆ dfield_set_type()

UNIV_INLINE void dfield_set_type ( dfield_t field,
const dtype_t type 
)

Sets the type struct of SQL data field.

Parameters
[in]fieldSQL data field
[in]typepointer to data type struct

◆ dfield_write_mbr()

UNIV_INLINE void dfield_write_mbr ( dfield_t field,
const double *  mbr 
)

Sets pointer to the data and length in a field.

Parameters
[in]fieldfield
[in]mbrdata

◆ dtuple_big_rec_free()

UNIV_INLINE void dtuple_big_rec_free ( big_rec_t vector)

Frees the memory in a big rec vector.

in, own: big rec vector; it is freed in this function

◆ dtuple_check_typed()

bool dtuple_check_typed ( const dtuple_t tuple)

Checks that a data tuple is typed.

Asserts an error if not.

Returns
true if ok
Parameters
tuplein: tuple

◆ dtuple_coll_eq()

bool dtuple_coll_eq ( const dtuple_t tuple1,
const dtuple_t tuple2 
)

Compare two data tuples.

Parameters
[in]tuple1first data tuple
[in]tuple2second data tuple
Returns
whether tuple1==tuple2

◆ dtuple_contains_null()

UNIV_INLINE bool dtuple_contains_null ( const dtuple_t tuple)

Checks if a dtuple contains an SQL null value.

Returns
true if some field is SQL null
Parameters
tuplein: dtuple

◆ dtuple_convert_back_big_rec()

void dtuple_convert_back_big_rec ( dtuple_t entry,
big_rec_t vector 
)

Puts back to entry the data stored in vector.

Note that to ensure the fields in entry can accommodate the data, vector must have been created from entry with dtuple_convert_big_rec.

Parameters
[in]entryEntry whose data was put to vector.
[in]vectorBig rec vector; it is freed in this function

◆ dtuple_convert_big_rec()

big_rec_t* dtuple_convert_big_rec ( dict_index_t index,
upd_t upd,
dtuple_t entry,
ulint *  n_ext 
)

Moves parts of long fields in entry to the big record vector so that the size of tuple drops below the maximum record size allowed in the database.

Moves data only from those fields which are not necessary to determine uniquely the insertion place of the tuple in the index.

Parameters
[in,out]indexIndex that owns the record.
[in,out]updUpdate vector.
[in,out]entryIndex entry.
[in,out]n_extNumber of externally stored columns.
Returns
own: created big record vector, NULL if we are not able to shorten the entry enough, i.e., if there are too many fixed-length or short fields in entry or the index is clustered

◆ dtuple_copy()

UNIV_INLINE dtuple_t* dtuple_copy ( const dtuple_t tuple,
mem_heap_t heap 
)

Copies a data tuple to another.

This is a shallow copy; if a deep copy is desired, dfield_dup() will have to be invoked on each field.

Returns
own: copy of tuple
Parameters
tuplein: tuple to copy from
heapin: memory heap where the tuple is created

◆ dtuple_copy_v_fields()

UNIV_INLINE void dtuple_copy_v_fields ( dtuple_t d_tuple,
const dtuple_t s_tuple 
)

Copies a data tuple's virtaul fields to another.

This is a shallow copy;

Parameters
[in,out]d_tupledestination tuple
[in]s_tuplesource tuple

◆ dtuple_create()

UNIV_INLINE dtuple_t* dtuple_create ( mem_heap_t heap,
ulint  n_fields 
)

Creates a data tuple to a memory heap.

The default value for number of fields used in record comparisons for this tuple is n_fields.

Returns
own: created tuple
Parameters
heapin: memory heap where the tuple is created, DTUPLE_EST_ALLOC(n_fields) bytes will be allocated from this heap
n_fieldsin: number of fields

◆ dtuple_create_from_mem()

UNIV_INLINE dtuple_t* dtuple_create_from_mem ( void *  buf,
ulint  buf_size,
ulint  n_fields,
ulint  n_v_fields 
)

Creates a data tuple from an already allocated chunk of memory.

The size of the chunk must be at least DTUPLE_EST_ALLOC(n_fields). The default value for number of fields used in record comparisons for this tuple is n_fields.

Parameters
[in,out]bufbuffer to use
[in]buf_sizebuffer size
[in]n_fieldsnumber of field
[in]n_v_fieldsnumber of fields on virtual columns
Returns
created tuple (inside buf)

◆ dtuple_create_with_vcol()

UNIV_INLINE dtuple_t* dtuple_create_with_vcol ( mem_heap_t heap,
ulint  n_fields,
ulint  n_v_fields 
)

Creates a data tuple with possible virtual columns to a memory heap.

Parameters
[in]heapmemory heap where the tuple is created
[in]n_fieldsnumber of fields
[in]n_v_fieldsnumber of fields on virtual col
Returns
own: created tuple

◆ dtuple_dup_v_fld()

UNIV_INLINE void dtuple_dup_v_fld ( const dtuple_t vrow,
mem_heap_t heap 
)

Duplicate the virtual field data in a dtuple_t.

Parameters
[in,out]vrowdtuple contains the virtual fields
[in]heapheap memory to use

◆ dtuple_fold()

UNIV_INLINE ulint dtuple_fold ( const dtuple_t tuple,
ulint  n_fields,
ulint  n_bytes,
ulint  fold 
)

Compute a hash value of a prefix of an index record.

Parameters
[in]tupleindex record
[in]n_fieldsnumber of fields to include
[in]n_bytesnumber of bytes to fold in the last field
[in]foldfold value of the index identifier
Returns
the folded value

◆ dtuple_get_data_size()

UNIV_INLINE ulint dtuple_get_data_size ( const dtuple_t tuple,
ulint  comp 
)

The following function returns the sum of data lengths of a tuple.

The space occupied by the field structs or the tuple struct is not counted.

Parameters
[in]tupletyped data tuple
[in]compnonzero=ROW_FORMAT=COMPACT
Returns
sum of data lens

◆ dtuple_get_info_bits()

UNIV_INLINE ulint dtuple_get_info_bits ( const dtuple_t tuple)

Gets info bits in a data tuple.

Returns
info bits
Parameters
tuplein: tuple

◆ dtuple_get_n_ext()

UNIV_INLINE ulint dtuple_get_n_ext ( const dtuple_t tuple)

Computes the number of externally stored fields in a data tuple.

Returns
number of fields in: tuple

◆ dtuple_get_n_fields()

UNIV_INLINE ulint dtuple_get_n_fields ( const dtuple_t tuple)

Gets number of fields in a data tuple.

Returns
number of fields
Parameters
tuplein: tuple

◆ dtuple_get_n_fields_cmp()

UNIV_INLINE ulint dtuple_get_n_fields_cmp ( const dtuple_t tuple)

Gets number of fields used in record comparisons.

Returns
number of fields used in comparisons in rem0cmp.*
Parameters
tuplein: tuple

◆ dtuple_get_n_v_fields()

UNIV_INLINE ulint dtuple_get_n_v_fields ( const dtuple_t tuple)

Gets number of virtual fields in a data tuple.

Parameters
[in]tupledtuple to check
Returns
number of fields

◆ dtuple_get_nth_field()

UNIV_INLINE dfield_t* dtuple_get_nth_field ( const dtuple_t tuple,
ulint  n 
)

Gets nth field of a tuple.

Parameters
[in]tupletuple
[in]nindex of field
Returns
nth field

◆ dtuple_get_nth_v_field()

UNIV_INLINE dfield_t* dtuple_get_nth_v_field ( const dtuple_t tuple,
ulint  n 
)

Gets nth virtual field of a tuple.

Parameters
[in]tupletuple
[in]nthe nth field to get
Returns
nth field

◆ dtuple_init_v_fld()

UNIV_INLINE void dtuple_init_v_fld ( const dtuple_t vrow)

Initialize the virtual field data in a dtuple_t.

Parameters
[in,out]vrowdtuple contains the virtual fields

◆ dtuple_print() [1/2]

void dtuple_print ( FILE *  f,
const dtuple_t tuple 
)

The following function prints the contents of a tuple.

Parameters
[in,out]fOutput stream.
[in]tupleTuple to print.

◆ dtuple_print() [2/2]

void dtuple_print ( std::ostream &  o,
const dtuple_t tuple 
)

Print the contents of a tuple.

Parameters
[out]ooutput stream
[in]tupledata tuple

◆ dtuple_set_info_bits()

UNIV_INLINE void dtuple_set_info_bits ( dtuple_t tuple,
ulint  info_bits 
)

Sets info bits in a data tuple.

Parameters
[in]tupletuple
[in]info_bitsinfo bits

◆ dtuple_set_n_fields()

void dtuple_set_n_fields ( dtuple_t tuple,
ulint  n_fields 
)

Sets number of fields used in a tuple.

Normally this is set in dtuple_create, but if you want later to set it smaller, you can use this.

Parameters
[in]tupleTuple.
[in]n_fieldsNumber of fields.

◆ dtuple_set_n_fields_cmp()

UNIV_INLINE void dtuple_set_n_fields_cmp ( dtuple_t tuple,
ulint  n_fields_cmp 
)

Gets number of fields used in record comparisons.

Parameters
[in]tupletuple
[in]n_fields_cmpnumber of fields used in comparisons in rem0cmp

◆ dtuple_set_types_binary()

UNIV_INLINE void dtuple_set_types_binary ( dtuple_t tuple,
ulint  n 
)

Sets types of fields binary in a tuple.

Parameters
[in]tupledata tuple
[in]nnumber of fields to set

◆ dtuple_validate()

bool dtuple_validate ( const dtuple_t tuple)

Validates the consistency of a tuple which must be complete, i.e, all fields must have been set.

Returns
true if ok
Parameters
tuplein: tuple

◆ is_multi_value_clust_and_sec_equal()

bool is_multi_value_clust_and_sec_equal ( const byte clust_field,
uint64_t  clust_len,
const byte sec_field,
uint64_t  sec_len,
const dict_col_t col 
)

Compare a multi-value clustered index field with a secondary index field, to see if they are equal.

If the clustered index field is the array, then equal means it contains the secondary index field

Parameters
[in]clust_fieldclustered index field
[in]clust_lenclustered index field length
[in]sec_fieldsecondary index field
[in]sec_lensecondary index field length
[in]colthe column tied to this field
Returns
true if they are equal, otherwise false

◆ operator<<() [1/4]

std::ostream& operator<< ( std::ostream &  o,
const dtuple_t tuple 
)
inline

Print the contents of a tuple.

Parameters
[out]ooutput stream
[in]tupledata tuple

◆ operator<<() [2/4]

std::ostream& operator<< ( std::ostream &  out,
const big_rec_field_t obj 
)
inline

Overloading the global output operator to easily print the given big_rec_field_t object into the given output stream.

Parameters
[in]outthe output stream
[in]objthe given object to print.
Returns
the output stream.

◆ operator<<() [3/4]

std::ostream& operator<< ( std::ostream &  out,
const big_rec_t obj 
)
inline

Overloading the global output operator to easily print the given big_rec_t object into the given output stream.

Parameters
[in]outthe output stream
[in]objthe given object to print.
Returns
the output stream.

◆ operator<<() [4/4]

std::ostream& operator<< ( std::ostream &  out,
const dfield_t obj 
)
inline

Overloading the global output operator to easily print the given dfield_t object into the given output stream.

Parameters
[in]outthe output stream
[in]objthe given object to print.
Returns
the output stream.