mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
2be4c836e5
We can't rely on keys formed with columns that were added during this ALTER. These columns can be set with non-deterministic values, which can end up with broken or incorrect search. The same applies to the keys that contain reliable columns, but also have bogus ones. Using them can narrow the search, but they're also ignored. Also, added columns shouldn't be considered during the record match. To determine them, table->has_value_set bitmap is used. To fill has_value_set bitmap in the find_key call, extra unpack_row call has been added. For replication case, extra replica columns can be considered for this case. We try to ignore them, too.
42 lines
1.5 KiB
C
42 lines
1.5 KiB
C
/* Copyright (c) 2007, 2013, Oracle and/or its affiliates.
|
|
Copyright (c) 2008, 2013, SkySQL Ab.
|
|
|
|
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 Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
|
|
|
|
#ifndef RPL_RECORD_H
|
|
#define RPL_RECORD_H
|
|
|
|
#include <rpl_reporting.h>
|
|
|
|
struct rpl_group_info;
|
|
struct TABLE;
|
|
typedef struct st_bitmap MY_BITMAP;
|
|
|
|
#if !defined(MYSQL_CLIENT)
|
|
size_t pack_row(TABLE* table, MY_BITMAP const* cols,
|
|
uchar *row_data, const uchar *data);
|
|
#endif
|
|
|
|
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
|
|
int unpack_row(const rpl_group_info *rgi,
|
|
TABLE *table, uint const colcnt,
|
|
uchar const *const row_data, MY_BITMAP const *cols,
|
|
uchar const **const curr_row_end, ulong *const master_reclength,
|
|
uchar const *const row_end);
|
|
|
|
// Fill table's record[0] with default values.
|
|
int prepare_record(TABLE *const table, const uint skip, const bool check);
|
|
#endif
|
|
|
|
#endif
|