1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Merge branch '10.4' into bb-10.4-mdev16188

This commit is contained in:
Igor Babaev
2019-02-14 22:07:33 -08:00
387 changed files with 24685 additions and 5426 deletions

View File

@ -2,7 +2,7 @@
#define HANDLER_INCLUDED
/*
Copyright (c) 2000, 2016, Oracle and/or its affiliates.
Copyright (c) 2009, 2018, MariaDB
Copyright (c) 2009, 2019, MariaDB
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@ -320,6 +320,11 @@ enum enum_alter_inplace_result {
/* Safe for online backup */
#define HA_CAN_ONLINE_BACKUPS (1ULL << 56)
/** whether every data field explicitly stores length
(holds for InnoDB ROW_FORMAT=REDUNDANT) */
#define HA_EXTENDED_TYPES_CONVERSION (1ULL << 57)
#define HA_LAST_TABLE_FLAG HA_EXTENDED_TYPES_CONVERSION
/* bits in index_flags(index_number) for what you can do with index */
#define HA_READ_NEXT 1 /* TODO really use this flag */
#define HA_READ_PREV 2 /* supports ::index_prev */
@ -625,6 +630,8 @@ typedef ulonglong alter_table_operations;
#define ALTER_KEYS_ONOFF (1ULL << 9)
// Set for FORCE, ENGINE(same engine), by mysql_recreate_table()
#define ALTER_RECREATE (1ULL << 10)
// Set for CONVERT TO
#define ALTER_CONVERT_TO (1ULL << 11)
// Set for ADD FOREIGN KEY
#define ALTER_ADD_FOREIGN_KEY (1ULL << 21)
// Set for DROP FOREIGN KEY
@ -739,6 +746,19 @@ typedef ulonglong alter_table_operations;
*/
#define ALTER_PARTITIONED (1ULL << 59)
/**
Change in index length such that it doesn't require index rebuild.
*/
#define ALTER_COLUMN_INDEX_LENGTH (1ULL << 60)
/**
Change the column length or type such that no rebuild is needed.
Only set if ALTER_COLUMN_EQUAL_PACK_LENGTH does not apply, and
if HA_EXTENDED_TYPES_CONVERSION holds.
@see IS_EQUAL_PACK_LENGTH_EXT
*/
#define ALTER_COLUMN_EQUAL_PACK_LENGTH_EXT (1ULL << 61)
/*
Flags set in partition_flags when altering partitions
*/
@ -991,6 +1011,7 @@ enum enum_schema_tables
SCH_KEY_CACHES,
SCH_KEY_COLUMN_USAGE,
SCH_OPEN_TABLES,
SCH_OPT_TRACE,
SCH_PARAMETERS,
SCH_PARTITIONS,
SCH_PLUGINS,
@ -1209,6 +1230,8 @@ struct handler_iterator {
class handler;
class group_by_handler;
class derived_handler;
class select_handler;
struct Query;
typedef class st_select_lex SELECT_LEX;
typedef struct st_order ORDER;
@ -1527,6 +1550,21 @@ struct handlerton
*/
group_by_handler *(*create_group_by)(THD *thd, Query *query);
/*
Create and return a derived_handler if the storage engine can execute
the derived table 'derived', otherwise return NULL.
In a general case 'derived' may contain tables not from the engine.
If the engine cannot handle or does not want to handle such pushed derived
the function create_group_by has to return NULL.
*/
derived_handler *(*create_derived)(THD *thd, TABLE_LIST *derived);
/*
Create and return a select_handler if the storage engine can execute
the select statement 'select, otherwise return NULL
*/
select_handler *(*create_select) (THD *thd, SELECT_LEX *select);
/*********************************************************************
Table discovery API.
It allows the server to "discover" tables that exist in the storage
@ -3178,7 +3216,11 @@ public:
/**
The cached_table_flags is set at ha_open and ha_external_lock
*/
Table_flags ha_table_flags() const { return cached_table_flags; }
Table_flags ha_table_flags() const
{
DBUG_ASSERT(cached_table_flags < (HA_LAST_TABLE_FLAG << 1));
return cached_table_flags;
}
/**
These functions represent the public interface to *users* of the
handler class, hence they are *not* virtual. For the inheritance