mirror of
https://github.com/MariaDB/server.git
synced 2026-05-16 03:47:17 +02:00
Merge 10.2 into 10.3
This commit is contained in:
commit
6373ec3ec7
36 changed files with 2729 additions and 358 deletions
|
|
@ -1,7 +1,7 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1994, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, 2019, MariaDB Corporation.
|
||||
Copyright (c) 1994, 2019, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
|
|
@ -784,18 +784,6 @@ btr_rec_copy_externally_stored_field(
|
|||
ulint* len,
|
||||
mem_heap_t* heap);
|
||||
|
||||
/*******************************************************************//**
|
||||
Flags the data tuple fields that are marked as extern storage in the
|
||||
update vector. We use this function to remember which fields we must
|
||||
mark as extern storage in a record inserted for an update.
|
||||
@return number of flagged external columns */
|
||||
ulint
|
||||
btr_push_update_extern_fields(
|
||||
/*==========================*/
|
||||
dtuple_t* tuple, /*!< in/out: data tuple */
|
||||
const upd_t* update, /*!< in: update vector */
|
||||
mem_heap_t* heap) /*!< in: memory heap */
|
||||
MY_ATTRIBUTE((nonnull));
|
||||
/***********************************************************//**
|
||||
Sets a secondary index record's delete mark to the given value. This
|
||||
function is only used by the insert buffer merge mechanism. */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*****************************************************************************
|
||||
Copyright (c) 1994, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2013, 2019, MariaDB Corporation.
|
||||
Copyright (c) 1994, 2019, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2013, 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
|
|
@ -857,6 +857,22 @@ page_rec_is_last(
|
|||
const page_t* page) /*!< in: page */
|
||||
MY_ATTRIBUTE((warn_unused_result));
|
||||
|
||||
/************************************************************//**
|
||||
true if distance between the records (measured in number of times we have to
|
||||
move to the next record) is at most the specified value
|
||||
@param[in] left_rec lefter record
|
||||
@param[in] right_rec righter record
|
||||
@param[in] val specified value to compare
|
||||
@return true if the distance is smaller than the value */
|
||||
UNIV_INLINE
|
||||
bool
|
||||
page_rec_distance_is_at_most(
|
||||
/*=========================*/
|
||||
const rec_t* left_rec,
|
||||
const rec_t* right_rec,
|
||||
ulint val)
|
||||
MY_ATTRIBUTE((warn_unused_result));
|
||||
|
||||
/************************************************************//**
|
||||
true if the record is the second last user record on a page.
|
||||
@return true if the second last user record */
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1994, 2015, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2016, 2019, MariaDB Corporation.
|
||||
Copyright (c) 1994, 2019, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2016, 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
|
|
@ -358,6 +358,26 @@ page_rec_is_last(
|
|||
return(page_rec_get_next_const(rec) == page_get_supremum_rec(page));
|
||||
}
|
||||
|
||||
/************************************************************//**
|
||||
true if distance between the records (measured in number of times we have to
|
||||
move to the next record) is at most the specified value */
|
||||
UNIV_INLINE
|
||||
bool
|
||||
page_rec_distance_is_at_most(
|
||||
/*=========================*/
|
||||
const rec_t* left_rec,
|
||||
const rec_t* right_rec,
|
||||
ulint val)
|
||||
{
|
||||
for (ulint i = 0; i <= val; i++) {
|
||||
if (left_rec == right_rec) {
|
||||
return (true);
|
||||
}
|
||||
left_rec = page_rec_get_next_const(left_rec);
|
||||
}
|
||||
return (false);
|
||||
}
|
||||
|
||||
/************************************************************//**
|
||||
true if the record is the second last user record on a page.
|
||||
@return true if the second last user record */
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1994, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, MariaDB Corporation.
|
||||
Copyright (c) 2017, 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
|
|
@ -80,7 +80,7 @@ cmp_dfield_dfield(
|
|||
|
||||
/** Compare a GIS data tuple to a physical record.
|
||||
@param[in] dtuple data tuple
|
||||
@param[in] rec B-tree record
|
||||
@param[in] rec R-tree record
|
||||
@param[in] offsets rec_get_offsets(rec)
|
||||
@param[in] mode compare mode
|
||||
@retval negative if dtuple is less than rec */
|
||||
|
|
@ -190,43 +190,23 @@ cmp_rec_rec_simple(
|
|||
duplicate key value if applicable,
|
||||
or NULL */
|
||||
MY_ATTRIBUTE((nonnull(1,2,3,4), warn_unused_result));
|
||||
/** Compare two B-tree records.
|
||||
@param[in] rec1 B-tree record
|
||||
@param[in] rec2 B-tree record
|
||||
@param[in] offsets1 rec_get_offsets(rec1, index)
|
||||
@param[in] offsets2 rec_get_offsets(rec2, index)
|
||||
@param[in] index B-tree index
|
||||
@param[in] nulls_unequal true if this is for index cardinality
|
||||
statistics estimation, and innodb_stats_method=nulls_unequal
|
||||
or innodb_stats_method=nulls_ignored
|
||||
@param[out] matched_fields number of completely matched fields
|
||||
within the first field not completely matched
|
||||
@return the comparison result
|
||||
@retval 0 if rec1 is equal to rec2
|
||||
@retval negative if rec1 is less than rec2
|
||||
@retval positive if rec2 is greater than rec2 */
|
||||
int
|
||||
cmp_rec_rec_with_match(
|
||||
const rec_t* rec1,
|
||||
const rec_t* rec2,
|
||||
const offset_t* offsets1,
|
||||
const offset_t* offsets2,
|
||||
const dict_index_t* index,
|
||||
bool nulls_unequal,
|
||||
ulint* matched_fields);
|
||||
|
||||
/** Compare two B-tree records.
|
||||
/** Compare two B-tree or R-tree records.
|
||||
Only the common first fields are compared, and externally stored field
|
||||
are treated as equal.
|
||||
@param[in] rec1 B-tree record
|
||||
@param[in] rec2 B-tree record
|
||||
@param[in] rec1 record (possibly not on an index page)
|
||||
@param[in] rec2 B-tree or R-tree record in an index page
|
||||
@param[in] offsets1 rec_get_offsets(rec1, index)
|
||||
@param[in] offsets2 rec_get_offsets(rec2, index)
|
||||
@param[in] nulls_unequal true if this is for index cardinality
|
||||
statistics estimation with
|
||||
innodb_stats_method=nulls_unequal
|
||||
or innodb_stats_method=nulls_ignored
|
||||
@param[out] matched_fields number of completely matched fields
|
||||
within the first field not completely matched
|
||||
@return positive, 0, negative if rec1 is greater, equal, less, than rec2,
|
||||
respectively */
|
||||
UNIV_INLINE
|
||||
@retval 0 if rec1 is equal to rec2
|
||||
@retval negative if rec1 is less than rec2
|
||||
@retval positive if rec1 is greater than rec2 */
|
||||
int
|
||||
cmp_rec_rec(
|
||||
const rec_t* rec1,
|
||||
|
|
@ -234,7 +214,9 @@ cmp_rec_rec(
|
|||
const offset_t* offsets1,
|
||||
const offset_t* offsets2,
|
||||
const dict_index_t* index,
|
||||
ulint* matched_fields = NULL);
|
||||
bool nulls_unequal = false,
|
||||
ulint* matched_fields = NULL)
|
||||
MY_ATTRIBUTE((nonnull(1,2,3,4,5)));
|
||||
|
||||
/** Compare two data fields.
|
||||
@param[in] dfield1 data field
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1994, 2014, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
|
|
@ -52,40 +53,6 @@ cmp_dfield_dfield(
|
|||
dfield_get_len(dfield2)));
|
||||
}
|
||||
|
||||
/** Compare two B-tree records.
|
||||
Only the common first fields are compared, and externally stored field
|
||||
are treated as equal.
|
||||
@param[in] rec1 B-tree record
|
||||
@param[in] rec2 B-tree record
|
||||
@param[in] offsets1 rec_get_offsets(rec1, index)
|
||||
@param[in] offsets2 rec_get_offsets(rec2, index)
|
||||
@param[out] matched_fields number of completely matched fields
|
||||
within the first field not completely matched
|
||||
@return positive, 0, negative if rec1 is greater, equal, less, than rec2,
|
||||
respectively */
|
||||
UNIV_INLINE
|
||||
int
|
||||
cmp_rec_rec(
|
||||
const rec_t* rec1,
|
||||
const rec_t* rec2,
|
||||
const offset_t* offsets1,
|
||||
const offset_t* offsets2,
|
||||
const dict_index_t* index,
|
||||
ulint* matched_fields)
|
||||
{
|
||||
ulint match_f;
|
||||
int ret;
|
||||
|
||||
ret = cmp_rec_rec_with_match(
|
||||
rec1, rec2, offsets1, offsets2, index, false, &match_f);
|
||||
|
||||
if (matched_fields != NULL) {
|
||||
*matched_fields = match_f;
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/** Compare two data fields.
|
||||
@param[in] dfield1 data field
|
||||
@param[in] dfield2 data field
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1994, 2015, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, 2019, MariaDB Corporation.
|
||||
Copyright (c) 1994, 2019, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
|
|
@ -1410,6 +1410,7 @@ rec_get_converted_size(
|
|||
|
||||
data_size = dtuple_get_data_size(dtuple, 0);
|
||||
|
||||
ut_ad(n_ext == dtuple_get_n_ext(dtuple));
|
||||
extra_size = rec_get_converted_extra_size(
|
||||
data_size, dtuple_get_n_fields(dtuple), n_ext);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2016, 2017, MariaDB Corporation.
|
||||
Copyright (c) 2016, 2020, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
|
|
@ -207,8 +207,6 @@ row_rec_to_index_entry_low(
|
|||
const rec_t* rec, /*!< in: record in the index */
|
||||
const dict_index_t* index, /*!< in: index */
|
||||
const offset_t* offsets,/*!< in: rec_get_offsets(rec, index) */
|
||||
ulint* n_ext, /*!< out: number of externally
|
||||
stored columns */
|
||||
mem_heap_t* heap) /*!< in: memory heap from which
|
||||
the memory needed is allocated */
|
||||
MY_ATTRIBUTE((warn_unused_result));
|
||||
|
|
@ -222,8 +220,6 @@ row_rec_to_index_entry(
|
|||
const rec_t* rec, /*!< in: record in the index */
|
||||
const dict_index_t* index, /*!< in: index */
|
||||
const offset_t* offsets,/*!< in/out: rec_get_offsets(rec) */
|
||||
ulint* n_ext, /*!< out: number of externally
|
||||
stored columns */
|
||||
mem_heap_t* heap) /*!< in: memory heap from which
|
||||
the memory needed is allocated */
|
||||
MY_ATTRIBUTE((warn_unused_result));
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1994, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2013, 2019, MariaDB Corporation.
|
||||
Copyright (c) 2013, 2020, MariaDB Corporation.
|
||||
Copyright (c) 2008, Google Inc.
|
||||
|
||||
Portions of this file contain modifications contributed and copyrighted by
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue