Skip to content

Commit 31350e8

Browse files
committed
WL#6378 New data dictionary (umbrella).
A. Overview: ------------ This big patch introduces data dictionary (DD) schema in MySQL server. Some of the main benefits of this is, * The .FRM files are gone, and all dictionary changes will now happen in the dictionary schema stored in InnoDB. * Builds a base platform enabling us to improve performance of INFORMATION_SCHEMA queries, which can be implemented as a view. * This patch enables a forthcoming incremental patch that would remove internal dictionary table of InnoDB. Enables, - There by eliminate inconsistencies between .FRM files and InnoDB tables. - Remove file system dependencies (lower-case-table-names). - Single repository of meta data for Server, SE and Plugins. - Eliminate meta data redundancy. * Remove db.opt and rely on dictionary tables. B. Work logs: ------------- The WL#6378 is the umbrella WL tracking all dependent WL's. This patch contains implementation of following dependent WL's, * Worklogs that deal with just DD API framework: WL#6379 - Schema definitions for new DD. This important WL defines the central data dictionary table definitions. WL#6380 - Formulate framework for API for DD. WL#7284 - Implement common code for different DD APIs. WL#6385 - Define and Implement API for Schema. WL#6382 - Define and Implement API for Table objects. WL#6389 - Implementation of common View API. WL#6387 - Define and Implement API for Tablespaces. WL#7630 - Define and Implement API for Table Partition Info WL#8150 - Dictionary object cache. WL#7770 - Develop GUNIT test framework and guidelines for DD API. WL#7771 - Make sure errors are properly handled in DD API. * Worklogs that change server code invoking DD API's: WL#6390 - Use new DD API for handling non-partitioned tables. WL#7836 - Use new DD API for handling partitioned tables. WL#6394 - Bootstrapping the new data dictionary. WL#7784 - Store temporary table meta data in memory. WL#8542 - Server shutdown procedure with new data dictionary WL#7593 - New data dictionary: don't hold LOCK_open while reading table definition. WL#7464 - InnoDB: provide a way to do non-locking reads This is pre-requisite for WL#6599. C. Tips to DD API users: ------------------------ * Refer code in sql/dd/dd_schema.* to quickly learn how to write code using DD API and update dictionary tables. Refer sql/dd/cache/dictionary_client.h to get overview on what is Dictionary_client and Auto_release interface. Interested can refer to sql/dd_table_share.{h,cc} which implements mapping between the TABLE_SHARE and the dd::Table DD object. * Overview of the directory structure and source files introduced by this patch is as following, DD user exposed files:- sql/dd/ - Top level directory containing most of DD code. sql/dd/*.h - Headers that you need to operate on DD. sql/dd/types/ - Contains headers to operate on single dictionary object. sql/dd/dd_*.cc - Contains MySQL server and DD API framework glue code. E.g., Code that updates to DD tables upon table creation/alter table/drop table and so on. sql/dd/cache/ - Contains implementation of DD Object cache. Implementation that is hidden to DD user:- sql/dd/impl/ - Contains implementation of DD API's. sql/dd/impl/cache/ - Contains implementation of DD object cache operations. E.g., dd::cache::Dictionary_client sql/dd/impl/types/ - Contains implementation of DD user object operations. E.g., dd:Table, dd::View etc. sql/dd/impl/tables/ - Contains implementation of DD table operations. E.g., dd::tables::* classes that abstracts operations on a DD table. sql/dd/impl/raw/ - Contains implementation of generic operations on all DD tables. * The code related to .FRM handle is removed. So, the following files are removed, sql/datadict.h sql/datadict.cc sql/discover.h sql/discover.cc sql/unireg.h sql/unireg.cc D. New configuration variables and startup options: --------------------------------------------------- * Introduced a new option "--install-server", behaving like "--bootstrap", but additionally creating the dictionary tables. Note that the --install-server is a temporary workaround until MTR use --initialize. * The existing "--bootstrap" option behaves like before as far as possible, but note that the changes in plugin initialization means that e.g. InnoDB must be able to start, the DD must be able to start, etc., for bootstrap to enter the stage where SQL commands are actually executed. * The mysql_install_db and the mysql_test_run scripts are modified to use the new "--install-server" option. * The cmake script create_initial_db.cmake.in is also changed to use --install-server rather than --bootstrap. * WL#8150 adds server options schema_definition_cache, tablespace_definition_cache and stored_program_definition_cache size. These define the DD object cache size for respective DD objects. E. Upcoming improvements ----------------------- * WL#6599 New Data Dictionary and I_S integration Information schema queries will be execute faster as this WL would make information schema tables as a view on top of DD tables. * WL#7743 New data dictionary: changes to DDL-related parts of SE API - Support atomic/crash-safe DDL. - Support auxiliary columns (InnoDB-specific) - Support auxiliary tables (needed for InnoDB FTS) * WL#6394 - Bootstrapping the new data dictionary. - Improvements in bootstrap procedure supporting removal of InnoDB dictionary. * WL#7896 Use DD API to work with triggers. - Will remove use of .TRN and .TRG files and start using mysql.triggers DD table. * Additional system tables are to be moved from MyISAM WL#7897 Use DD API to work with stored routines - Will remove mysql.proc MyISAM table and use mysql.routines InnoDB dictionary table. WL#7898 Use DD API to work with events. - Will remove mysql.event MyISAM table and use mysql.events InnoDB dictionary table. * WL#6391: Hide DD system tables from user. - Will hide direct access to DD system tables from user. F. Permanent changes in behavior. --------------------------------------------- * Since the .frm files are gone, you will not be able to copy .FRMs/data files and move them around. We will address this when we finish the implementation of new import, based on serialized dictionary information, see WL#7069. * Related to the above is the fact that --innodb-read-only option does not currently work. In 5.7, meta-data would be written to .FRM files and not be affected by the option, but now as meta-data is written to InnoDB tables, we must reconsider the semantics of this option. * The setting of the system variable 'lower_case_table_names' determines the collation of e.g. the 'name' column in the table storing the meta data for tables. This collation is decided once and for all when the dictionary table is created. Thus, we do not support changing 'lower_case_table_names' afterwards. * Character sets and collation tables are populated at initial boot, and for every subsequent startup, unless the server or the dictionary storage engine (InnoDB) is started in read only mode. G. Intermediate limitations in functionality: --------------------------------------------- * Tests on upgrade/downgrade will not work, and will be temporarily disabled. QA will also have to temporarily postpone any upgrade tests, until we have completed the upgrade tool (WL#6392) from 5.7 to 5.8. We are working towards building a intermediate solution for system QA. * Some InnoDB tests related to recovery of TRUNCATE are disabled. But n-test can be run as long as you are not trying to recover TRUNCATE. The tests will be enabled when we push the bundle of WLs(7141/7016/7743), which will move the storing of InnoDB DD to the common data dictionary, and make DDL atomic. Until which recovery after killing the server will also not work. * MySQL Cluster cannot be used with this version of the server. H. Disabled tests: ------------------ Apart from test that are disabled due to above functionality that does not work now. Additionally we have temporarily disabled a few other tests, which might be a bit challenging for bug fixing in trunk in very restricted areas of the code. Refer sql/dd/mtr_readme.txt to see which exact test cases are disabled.
1 parent 246c3ea commit 31350e8

File tree

814 files changed

+58319
-25434
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

814 files changed

+58319
-25434
lines changed

Diff for: client/mysql_install_db.cc

+7-9
Original file line numberDiff line numberDiff line change
@@ -978,12 +978,10 @@ class Process_writer
978978
errno= 0;
979979
info << "Creating system tables...";
980980

981-
string create_db("CREATE DATABASE mysql;\n");
982981
string use_db("USE mysql;\n");
983982
// ssize_t write() may be declared with attribute warn_unused_result
984-
size_t w1= write(fh, create_db.c_str(), create_db.length());
985-
size_t w2= write(fh, use_db.c_str(), use_db.length());
986-
if (w1 != create_db.length() || w2 != use_db.length())
983+
size_t w= write(fh, use_db.c_str(), use_db.length());
984+
if (w != use_db.length())
987985
{
988986
info << "failed." << endl;
989987
return false;
@@ -1042,17 +1040,17 @@ class Process_writer
10421040
<< endl;
10431041
string create_user_cmd;
10441042
m_user->to_sql(&create_user_cmd);
1045-
w1= write(fh, create_user_cmd.c_str(), create_user_cmd.length());
1046-
if (w1 !=create_user_cmd.length() || errno != 0)
1043+
w= write(fh, create_user_cmd.c_str(), create_user_cmd.length());
1044+
if (w !=create_user_cmd.length() || errno != 0)
10471045
return false;
10481046
info << "Creating default proxy " << m_user->user << "@"
10491047
<< m_user->host
10501048
<< endl;
10511049
Proxy_user proxy_user(m_user->host, m_user->user);
10521050
string create_proxy_cmd;
10531051
proxy_user.to_str(&create_proxy_cmd);
1054-
w1= write(fh, create_proxy_cmd.c_str(), create_proxy_cmd.length());
1055-
if (w1 != create_proxy_cmd.length() || errno != 0)
1052+
w= write(fh, create_proxy_cmd.c_str(), create_proxy_cmd.length());
1053+
if (w != create_proxy_cmd.length() || errno != 0)
10561054
return false;
10571055

10581056
if (!opt_skipsys)
@@ -1656,7 +1654,7 @@ int main(int argc,char *argv[])
16561654
if (opt_def_extra_file != NULL)
16571655
command_line.push_back(string("--defaults-extra-file=")
16581656
.append(opt_def_extra_file));
1659-
command_line.push_back(string("--bootstrap"));
1657+
command_line.push_back(string("--install-server"));
16601658
command_line.push_back(string("--datadir=")
16611659
.append(data_directory.to_str()));
16621660
command_line.push_back(string("--lc-messages-dir=")

Diff for: cmake/install_macros.cmake

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
1+
# Copyright (c) 2009, 2014, 2015 Oracle and/or its affiliates. All rights reserved.
22
#
33
# This program is free software; you can redistribute it and/or modify
44
# it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@ MACRO (INSTALL_DEBUG_SYMBOLS targets)
4444
SET(comp Server)
4545
ELSE()
4646
SET(comp Debuginfo)
47-
ENDIF()
47+
ENDIF()
4848
# No .pdb file for static libraries.
4949
IF(NOT type MATCHES "STATIC_LIBRARY")
5050
INSTALL(FILES ${pdb_location}

Diff for: include/my_base.h

+205-41
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,19 @@ enum ha_rkey_function {
8585
/* Key algorithm types */
8686

8787
enum ha_key_alg {
88-
HA_KEY_ALG_UNDEF= 0, /* Not specified (old file) */
89-
HA_KEY_ALG_BTREE= 1, /* B-tree, default one */
88+
/**
89+
Used for cases when key algorithm which is supported by SE can't be
90+
described by one of other classes from this enum (@sa Federated,
91+
PerfSchema SE, @sa dd::Index::IA_SE_SPECIFIC).
92+
93+
@note Assigned as default value for key algorithm by parser, replaced by
94+
SEs default algorithm for keys in mysql_prepare_create_table().
95+
*/
96+
HA_KEY_ALG_SE_SPECIFIC= 0,
97+
HA_KEY_ALG_BTREE= 1, /* B-tree. */
9098
HA_KEY_ALG_RTREE= 2, /* R-tree, for spatial searches */
91-
HA_KEY_ALG_HASH= 3, /* HASH keys (HEAP tables) */
92-
HA_KEY_ALG_FULLTEXT= 4 /* FULLTEXT (MyISAM tables) */
99+
HA_KEY_ALG_HASH= 3, /* HASH keys (HEAP, NDB). */
100+
HA_KEY_ALG_FULLTEXT= 4 /* FULLTEXT. */
93101
};
94102

95103
/* Storage media types */
@@ -197,7 +205,11 @@ enum ha_extra_function {
197205
*/
198206
HA_EXTRA_EXPORT,
199207
/** Do secondary sort by handler::ref (rowid) after key sort. */
200-
HA_EXTRA_SECONDARY_SORT_ROWID
208+
HA_EXTRA_SECONDARY_SORT_ROWID,
209+
/*
210+
Skip Serializable isolation level on Views on DD tables.
211+
This will make reads on DD Views non blocking */
212+
HA_EXTRA_SKIP_SERIALIZABLE_DD_VIEW
201213
};
202214

203215
/* Compatible option, to be deleted in 6.0 */
@@ -240,34 +252,50 @@ enum ha_base_keytype {
240252

241253
#define HA_MAX_KEYTYPE 31 /* Must be log2-1 */
242254

243-
/* These flags kan be OR:ed to key-flag */
255+
/*
256+
Flags for KEY::flags bitmap.
257+
258+
Also used for similar bitmaps in storage engines (HP_KEYDEF::flag,
259+
MI_KEYDEF::flag, ...).
260+
*/
261+
262+
/** Do not allow duplicate records. */
263+
#define HA_NOSAME 1
264+
/** Pack string key to previous key (optimization supported by MyISAM). */
265+
#define HA_PACK_KEY 2
266+
/**
267+
Auto-increment key.
268+
269+
@note Not used by SQL-layer/ for KEY::flags. Only set by MyISAM and
270+
Heap SEs in MI/HP_KEYDEF::flag.
271+
*/
272+
#define HA_AUTO_KEY 16
273+
/** Packing of all keys to previous key (optimization supported by MyISAM). */
274+
#define HA_BINARY_PACK_KEY 32
275+
/** Full-text key. */
276+
#define HA_FULLTEXT 128
277+
/**
278+
Flag in MI_KEYDEF::flag which marks MyISAM's "uniques".
244279
245-
#define HA_NOSAME 1 /* Set if not dupplicated records */
246-
#define HA_PACK_KEY 2 /* Pack string key to previous key */
247-
#define HA_AUTO_KEY 16
248-
#define HA_BINARY_PACK_KEY 32 /* Packing of all keys to prev key */
249-
#define HA_FULLTEXT 128 /* For full-text search */
250-
#define HA_UNIQUE_CHECK 256 /* Check the key for uniqueness */
251-
#define HA_SPATIAL 1024 /* For spatial search */
252-
#define HA_NULL_ARE_EQUAL 2048 /* NULL in key are cmp as equal */
253-
#define HA_GENERATED_KEY 8192 /* Automaticly generated key */
280+
@note Internal to MyISAM. Current server doesn't use this feature.
281+
*/
282+
#define HA_UNIQUE_CHECK 256
283+
/** Spatial key. */
284+
#define HA_SPATIAL 1024
285+
/**
286+
NULLs in key are compared as equal.
287+
288+
@note Used only for internal temporary tables created by optimizer.
289+
*/
290+
#define HA_NULL_ARE_EQUAL 2048
291+
/** Key was automatically created to support Foreign Key constraint. */
292+
#define HA_GENERATED_KEY 8192
254293

255294
/* The combination of the above can be used for key type comparison. */
256295
#define HA_KEYFLAG_MASK (HA_NOSAME | HA_PACK_KEY | HA_AUTO_KEY | \
257296
HA_BINARY_PACK_KEY | HA_FULLTEXT | HA_UNIQUE_CHECK | \
258297
HA_SPATIAL | HA_NULL_ARE_EQUAL | HA_GENERATED_KEY)
259298

260-
/*
261-
Key contains partial segments.
262-
263-
This flag is internal to the MySQL server by design. It is not supposed
264-
neither to be saved in FRM-files, nor to be passed to storage engines.
265-
It is intended to pass information into internal static sort_keys(KEY *,
266-
KEY *) function.
267-
268-
This flag can be calculated -- it's based on key lengths comparison.
269-
*/
270-
#define HA_KEY_HAS_PART_KEY_SEG 65536
271299
/**
272300
Key was renamed (or is result of renaming a key).
273301
@@ -283,15 +311,36 @@ enum ha_base_keytype {
283311
/** Set if a key is on any virtual generated columns */
284312
#define HA_VIRTUAL_GEN_KEY (1 << 18)
285313

286-
/* Automatic bits in key-flag */
314+
/*
315+
Bits in KEY::flags, MI/HP_KEYDEF::flag which are automatically
316+
calculated based on other flags/members in these structures
317+
(often from info about key parts).
318+
*/
319+
320+
/** Some key part packs space. Internal to MyISAM. */
321+
#define HA_SPACE_PACK_USED 4
322+
/** Some key part has variable length. Internal to MyISAM and Heap engines. */
323+
#define HA_VAR_LENGTH_KEY 8
324+
/** Some key part is nullable. */
325+
#define HA_NULL_PART_KEY 64
326+
/** Internal bit used when sorting records. Internal to MyISAM. */
327+
#define HA_SORT_ALLOWS_SAME 512
328+
/** Key has comment. */
329+
#define HA_USES_COMMENT 4096
330+
/** Fulltext index uses [pre]parser */
331+
#define HA_USES_PARSER 16384
332+
/** Key uses KEY_BLOCK_SIZE option. */
333+
#define HA_USES_BLOCK_SIZE 32768
334+
/**
335+
Key contains partial segments.
336+
337+
@note This flag is internal to SQL-layer by design. It is not supposed to
338+
be used to storage engines. It is intended to pass information into
339+
internal static sort_keys(KEY *, KEY *) function.
287340
288-
#define HA_SPACE_PACK_USED 4 /* Test for if SPACE_PACK used */
289-
#define HA_VAR_LENGTH_KEY 8
290-
#define HA_NULL_PART_KEY 64
291-
#define HA_USES_COMMENT 4096
292-
#define HA_USES_PARSER 16384 /* Fulltext index uses [pre]parser */
293-
#define HA_USES_BLOCK_SIZE ((uint) 32768)
294-
#define HA_SORT_ALLOWS_SAME 512 /* Intern bit when sorting records */
341+
This flag can be calculated -- it's based on key lengths comparison.
342+
*/
343+
#define HA_KEY_HAS_PART_KEY_SEG 65536
295344

296345
/* These flags can be added to key-seg-flag */
297346

@@ -310,19 +359,111 @@ enum ha_base_keytype {
310359
#define HA_END_SPACE_ARE_EQUAL 512
311360
#define HA_BIT_PART 1024
312361

313-
/* optionbits for database */
362+
363+
/*
364+
Flags for HA_CREATE_INFO::table_options and TABLE_SHARE::db_create_options
365+
TABLE_SHARE::db_options_in_use bitmaps.
366+
367+
@note These bitmaps are used for storing information about some table
368+
option values/attributes.
369+
@note HA_CREATE_INFO::table_options and TABLE_SHARE::db_create_options
370+
are basically the same bitmap at the time of table creation and
371+
at the time of table opening/usage correspondingly.
372+
@note TABLE_SHARE::db_options_in_use is normally copy of db_create_options
373+
but can be overriden by SE. E.g. MyISAM does this at handler::open()
374+
and hander::info() time.
375+
376+
Also used for similar bitmaps in MyISAM (MYISAM_SHARE/MI_ISAMINFO::options).
377+
*/
378+
379+
/**
380+
Indicates that storage engine needs to use packed row format.
381+
Set for tables with ROW_FORMAT=DYNAMIC clause, for tables with BLOB fields,
382+
and for tables with VARCHAR columns without ROW_FORMAT=FIXED.
383+
384+
This flag is respected by MyISAM only (it might also decide to use this
385+
optimization for its own reasons). InnoDB relies on HA_CREATE_INFO::row_type
386+
directly instead.
387+
*/
314388
#define HA_OPTION_PACK_RECORD 1
389+
/**
390+
PACK_KEYS=1 option was specified.
391+
392+
PACK_KEYS=# option specifies whether key packing - optimization supported
393+
by MyISAM, should be used.
394+
* PACK_KEYS=1 means all keys should be packed,
395+
* PACK_KEYS=0 (denoted by @sa HA_OPTION_NO_PACK_KEYS flag) means that key
396+
packing should not be used at all.
397+
* Not using this option or using PACK_KEYS=DEFAULT clause (denoted by
398+
absence of both HA_OPTION_PACK_KEYS and HA_OPTION_NO_PACK_KEYS flags)
399+
means that key packing will be used for long string columns.
400+
*/
315401
#define HA_OPTION_PACK_KEYS 2
402+
/**
403+
Flag indicating that table is compressed. Used by MyISAM storage engine to
404+
tell SQL-layer that tables is compressed. Not set or stored by SQL-layer,
405+
406+
MyISAM doesn't respect ROW_FORMAT=COMPRESSED clause and doesn't allow direct
407+
creation of compressed tables. Existing tables can be compressed by external
408+
tool. This tool marks such tables with HA_OPTION_COMPRESS_RECORD flag in
409+
MYISAM_SHARE/MI_ISAMINFO::options. Then storage engine sets this flag in
410+
TABLE_SHARE::db_options_in_use to let SQL-layer know about the fact. It is
411+
never set in HA_CREATE_INFO::table_options/TABLE_SHARE::db_create_options.
412+
*/
316413
#define HA_OPTION_COMPRESS_RECORD 4
317-
#define HA_OPTION_LONG_BLOB_PTR 8 /* new ISAM format */
414+
/**
415+
Unused. Formerly HA_OPTION_LONG_BLOB_PTR - new ISAM format/portable
416+
BLOB pointers.
417+
*/
418+
#define HA_OPTION_UNUSED1 8
419+
/**
420+
Storage engine (MyISAM) internal flag for marking temporary tables.
421+
422+
Used in MYISAM_SHARE/MI_ISAMINFO::options, not used by SQL-layer/
423+
in HA_CREATE_INFO::table_options/TABLE_SHARE::db_create_options.
424+
*/
318425
#define HA_OPTION_TMP_TABLE 16
426+
/**
427+
CHECKSUM=1 option was specified.
428+
429+
This option enables live checksumming for MyISAM tables. Not used by InnoDB.
430+
@sa HA_OPTION_NO_CHECKSUM.
431+
*/
319432
#define HA_OPTION_CHECKSUM 32
433+
/**
434+
DELAY_KEY_WRITE=1 option was specified. This option enables MyISAM optimization
435+
which postpones key updates until table is closed/expelled from the table cache.
436+
437+
@sa HA_OPTION_NO_DELAY_KEY_WRITE.
438+
*/
320439
#define HA_OPTION_DELAY_KEY_WRITE 64
321-
#define HA_OPTION_NO_PACK_KEYS 128 /* Reserved for MySQL */
440+
/**
441+
PACK_KEYS=0 option was specified.
442+
443+
@sa HA_OPTION_PACK_KEYS for further description.
444+
@note Unlike HA_OPTION_PACK_KEYS this flag is SQL-layer only.
445+
*/
446+
#define HA_OPTION_NO_PACK_KEYS 128
447+
/**
448+
Flag specific to table creation/HA_CREATE_INFO::table_options.
449+
Indicates that storage engine instead of creating new table, needs
450+
to discover existing one (which metadata was discovered from SE
451+
earlier).
452+
Not used in TABLE_SHARE::db_create_options/db_options_in_use.
453+
*/
322454
#define HA_OPTION_CREATE_FROM_ENGINE 256
455+
/**
456+
Storage engine (MyISAM) internal flag for marking tables which
457+
rely on SQL-layer because they have keys using fulltext parser plugin.
458+
459+
Used in MYISAM_SHARE/MI_ISAMINFO::options, not used by SQL-layer/
460+
in HA_CREATE_INFO::table_options/TABLE_SHARE::db_create_options.
461+
*/
323462
#define HA_OPTION_RELIES_ON_SQL_LAYER 512
324-
#define HA_OPTION_NULL_FIELDS 1024
325-
#define HA_OPTION_PAGE_CHECKSUM 2048
463+
/** Unused. Formerly HA_OPTION_NULL_FIELDS - reserved for Maria SE. */
464+
#define HA_OPTION_UNUSED2 1024
465+
/** Unused. Formerly HA_OPTION_PAGE_CHECKSUM - reserved for Maria SE. */
466+
#define HA_OPTION_UNUSED3 2048
326467
/** STATS_PERSISTENT=1 has been specified in the SQL command (either CREATE
327468
or ALTER TABLE). Table and index statistics that are collected by the
328469
storage engine and used by the optimizer for query optimization will be
@@ -335,8 +476,31 @@ HA_OPTION_NO_STATS_PERSISTENT is set, this means that the setting is not
335476
explicitly set at table level and the corresponding table will use whatever
336477
is the global server default. */
337478
#define HA_OPTION_NO_STATS_PERSISTENT 8192
338-
#define HA_OPTION_TEMP_COMPRESS_RECORD ((uint) 16384) /* set by isamchk */
339-
#define HA_OPTION_READ_ONLY_DATA ((uint) 32768) /* Set by isamchk */
479+
/**
480+
MyISAM internal flag used by myisamchk external tool.
481+
482+
Not used by SQL-layer/in HA_CREATE_INFO::table_options and
483+
TABLE_SHARE::db_create_options.
484+
*/
485+
#define HA_OPTION_TEMP_COMPRESS_RECORD 16384
486+
/**
487+
MyISAM internal flag which marks table as read-only.
488+
Set by myisampack external tool.
489+
490+
Not used by SQL-layer/in HA_CREATE_INFO::table_options and
491+
TABLE_SHARE::db_create_options.
492+
*/
493+
#define HA_OPTION_READ_ONLY_DATA 32768
494+
/**
495+
CHECKSUM=0 option was specified. Only used by SQL-layer, in
496+
HA_CREATE_INFO::table_options. Not persisted in data-dictionary.
497+
*/
498+
#define HA_OPTION_NO_CHECKSUM (1L << 17)
499+
/**
500+
DELAY_KEY_WRITE=0 option was specified. Only used by SQL-layer, in
501+
HA_CREATE_INFO::table_options. Not persisted in data-dictionary.
502+
*/
503+
#define HA_OPTION_NO_DELAY_KEY_WRITE (1L << 18)
340504

341505
/* Bits in flag to create() */
342506

0 commit comments

Comments
 (0)