mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 03:51:50 +01:00
8f07794024
and modify some functions to return const pointers. Add const qualifiers to local variable declarations or casts to remove the const qualifier in those places where write access is needed.
76 lines
2.4 KiB
Text
76 lines
2.4 KiB
Text
/***********************************************************************
|
|
Comparison services for records
|
|
|
|
(c) 1994-1996 Innobase Oy
|
|
|
|
Created 7/1/1994 Heikki Tuuri
|
|
************************************************************************/
|
|
|
|
/*****************************************************************
|
|
This function is used to compare two data fields for which we know the
|
|
data type. */
|
|
UNIV_INLINE
|
|
int
|
|
cmp_data_data(
|
|
/*==========*/
|
|
/* out: 1, 0, -1, if data1 is greater, equal,
|
|
less than data2, respectively */
|
|
ulint mtype, /* in: main type */
|
|
ulint prtype, /* in: precise type */
|
|
const byte* data1, /* in: data field (== a pointer to a memory
|
|
buffer) */
|
|
ulint len1, /* in: data field length or UNIV_SQL_NULL */
|
|
const byte* data2, /* in: data field (== a pointer to a memory
|
|
buffer) */
|
|
ulint len2) /* in: data field length or UNIV_SQL_NULL */
|
|
{
|
|
return(cmp_data_data_slow(mtype, prtype, data1, len1, data2, len2));
|
|
}
|
|
|
|
/*****************************************************************
|
|
This function is used to compare two dfields where at least the first
|
|
has its data type field set. */
|
|
UNIV_INLINE
|
|
int
|
|
cmp_dfield_dfield(
|
|
/*==============*/
|
|
/* out: 1, 0, -1, if dfield1 is greater, equal,
|
|
less than dfield2, respectively */
|
|
const dfield_t* dfield1,/* in: data field; must have type field set */
|
|
const dfield_t* dfield2)/* in: data field */
|
|
{
|
|
const dtype_t* type;
|
|
|
|
ut_ad(dfield_check_typed(dfield1));
|
|
|
|
type = dfield_get_type(dfield1);
|
|
|
|
return(cmp_data_data(type->mtype, type->prtype,
|
|
dfield_get_data((dfield_t*) dfield1),
|
|
dfield_get_len(dfield1),
|
|
dfield_get_data((dfield_t*) dfield2),
|
|
dfield_get_len(dfield2)));
|
|
}
|
|
|
|
/*****************************************************************
|
|
This function is used to compare two physical records. Only the common
|
|
first fields are compared. */
|
|
UNIV_INLINE
|
|
int
|
|
cmp_rec_rec(
|
|
/*========*/
|
|
/* out: 1, 0 , -1 if rec1 is greater, equal,
|
|
less, respectively, than rec2; only the common
|
|
first fields are compared */
|
|
const rec_t* rec1, /* in: physical record */
|
|
const rec_t* rec2, /* in: physical record */
|
|
const ulint* offsets1,/* in: rec_get_offsets(rec1, index) */
|
|
const ulint* offsets2,/* in: rec_get_offsets(rec2, index) */
|
|
dict_index_t* index) /* in: data dictionary index */
|
|
{
|
|
ulint match_f = 0;
|
|
ulint match_b = 0;
|
|
|
|
return(cmp_rec_rec_with_match(rec1, rec2, offsets1, offsets2, index,
|
|
&match_f, &match_b));
|
|
}
|