2004-04-14 10:53:21 +02:00
|
|
|
/* Copyright (C) 2003 MySQL 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; either version 2 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
|
|
|
|
|
|
|
#ifndef NDB_LIMITS_H
|
|
|
|
#define NDB_LIMITS_H
|
|
|
|
|
BUG#9626
- Fix valgrind warnings
- Remove static db, schema and table name buffers from Ndb.cpp
mysys/thr_alarm.c:
Initialise sact to zero
ndb/include/kernel/ndb_limits.h:
Set MAX_ATTR_NAME_SIZE to NAME_LEN which is tha maximum in MySQL
ndb/include/kernel/signaldata/GetTabInfo.hpp:
Clean up
ndb/include/ndbapi/Ndb.hpp:
Remove NDB_MAX_INTERNAL_NAME_LENGTH and all char buffers for schema, db and tablename.
Made them dynamic and moved to NdbImpl.hpp
ndb/include/ndbapi/ndbapi_limits.h:
Remove the static length's of attr, db, schema and table name.
ndb/src/common/transporter/Packer.cpp:
Set theSignalId to ~0 when unpacking signal
ndb/src/ndbapi/Ndb.cpp:
Moved schema, database and tablename to NdbImpl.hpp
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
Add NdbIndexImpl::init and NdbEventImpl::init
Init all vars in NdbIndexImpl, NdbEventImpl, NdbTableImpl and NdbIndexImpl
Delete the pseudo column NDB$RANGE_NO
Copy tablename to internal buff in NdbDictInterface to get proper alignment.
Convert length of table name from bytes words, when setting sz of LinearSectionPtr
Set LinearSectionPtr array size to number of LinearSections used - save some stack.
ndb/src/ndbapi/NdbDictionaryImpl.hpp:
Add NdbEventImpl::init and NdbIndexImpl::init
Remove clearNewProperties and copyNewProperties, it's easier to check if all vars are initied if it's done in the same func.
Add buffer for tabname ti NdbDictInterface, memset it to 0 in initializer.
ndb/src/ndbapi/NdbImpl.hpp:
Use BaseString for table, schema and db names.
ndb/src/ndbapi/Ndbinit.cpp:
Move schema and db name to NdbImpl and use BaseString
ndb/src/ndbapi/ndb_cluster_connection.cpp:
Destroy ndb_global_event_buffer_mutex and ndb_print_state_mutex
sql/ha_ndbcluster.cc:
Check if pTrans is not null before calling closeTransaction
Remove NDB_MAX_ATTR_NAME_SIZE
Remove truncation of attr names. When attr name length is same in NDB as in MySQL this will be checked in functin check_column_name
2005-05-18 20:50:29 +02:00
|
|
|
#include <mysql.h>
|
|
|
|
|
2004-04-14 10:53:21 +02:00
|
|
|
#define RNIL 0xffffff00
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Note that actual value = MAX_NODES - 1,
|
|
|
|
* since NodeId = 0 can not be used
|
|
|
|
*/
|
|
|
|
#define MAX_NDB_NODES 49
|
|
|
|
#define MAX_NODES 64
|
2006-01-17 09:25:12 +01:00
|
|
|
#define UNDEF_NODEGROUP 0xFFFF
|
2004-04-14 10:53:21 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* MAX_API_NODES = MAX_NODES - No of NDB Nodes in use
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The maximum number of replicas in the system
|
|
|
|
*/
|
|
|
|
#define MAX_REPLICAS 4
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The maximum number of local checkpoints stored at a time
|
|
|
|
*/
|
|
|
|
#define MAX_LCP_STORED 3
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The maximum number of log execution rounds at system restart
|
|
|
|
*/
|
|
|
|
#define MAX_LOG_EXEC 4
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The maximum number of tuples per page
|
|
|
|
**/
|
|
|
|
#define MAX_TUPLES_PER_PAGE 8191
|
|
|
|
#define MAX_TUPLES_BITS 13 /* 13 bits = 8191 tuples per page */
|
2005-04-10 22:43:17 +02:00
|
|
|
#define MAX_TABLES 20320 /* SchemaFile.hpp */
|
2004-04-14 10:53:21 +02:00
|
|
|
#define MAX_TAB_NAME_SIZE 128
|
BUG#9626
- Fix valgrind warnings
- Remove static db, schema and table name buffers from Ndb.cpp
mysys/thr_alarm.c:
Initialise sact to zero
ndb/include/kernel/ndb_limits.h:
Set MAX_ATTR_NAME_SIZE to NAME_LEN which is tha maximum in MySQL
ndb/include/kernel/signaldata/GetTabInfo.hpp:
Clean up
ndb/include/ndbapi/Ndb.hpp:
Remove NDB_MAX_INTERNAL_NAME_LENGTH and all char buffers for schema, db and tablename.
Made them dynamic and moved to NdbImpl.hpp
ndb/include/ndbapi/ndbapi_limits.h:
Remove the static length's of attr, db, schema and table name.
ndb/src/common/transporter/Packer.cpp:
Set theSignalId to ~0 when unpacking signal
ndb/src/ndbapi/Ndb.cpp:
Moved schema, database and tablename to NdbImpl.hpp
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
Add NdbIndexImpl::init and NdbEventImpl::init
Init all vars in NdbIndexImpl, NdbEventImpl, NdbTableImpl and NdbIndexImpl
Delete the pseudo column NDB$RANGE_NO
Copy tablename to internal buff in NdbDictInterface to get proper alignment.
Convert length of table name from bytes words, when setting sz of LinearSectionPtr
Set LinearSectionPtr array size to number of LinearSections used - save some stack.
ndb/src/ndbapi/NdbDictionaryImpl.hpp:
Add NdbEventImpl::init and NdbIndexImpl::init
Remove clearNewProperties and copyNewProperties, it's easier to check if all vars are initied if it's done in the same func.
Add buffer for tabname ti NdbDictInterface, memset it to 0 in initializer.
ndb/src/ndbapi/NdbImpl.hpp:
Use BaseString for table, schema and db names.
ndb/src/ndbapi/Ndbinit.cpp:
Move schema and db name to NdbImpl and use BaseString
ndb/src/ndbapi/ndb_cluster_connection.cpp:
Destroy ndb_global_event_buffer_mutex and ndb_print_state_mutex
sql/ha_ndbcluster.cc:
Check if pTrans is not null before calling closeTransaction
Remove NDB_MAX_ATTR_NAME_SIZE
Remove truncation of attr names. When attr name length is same in NDB as in MySQL this will be checked in functin check_column_name
2005-05-18 20:50:29 +02:00
|
|
|
#define MAX_ATTR_NAME_SIZE NAME_LEN /* From mysql_com.h */
|
2004-04-14 10:53:21 +02:00
|
|
|
#define MAX_ATTR_DEFAULT_VALUE_SIZE 128
|
|
|
|
#define MAX_ATTRIBUTES_IN_TABLE 128
|
|
|
|
#define MAX_ATTRIBUTES_IN_INDEX 32
|
|
|
|
#define MAX_TUPLE_SIZE_IN_WORDS 2013
|
|
|
|
#define MAX_KEY_SIZE_IN_WORDS 1023
|
|
|
|
#define MAX_FRM_DATA_SIZE 6000
|
2004-12-10 16:15:36 +01:00
|
|
|
#define MAX_NULL_BITS 4096
|
2005-01-10 14:40:54 +01:00
|
|
|
#define MAX_FRAGMENT_DATA_BYTES (4+(2 * 8 * MAX_REPLICAS * MAX_NDB_NODES))
|
2005-07-18 13:31:02 +02:00
|
|
|
#define MAX_NDB_PARTITIONS 1024
|
WL #2604: Partition Management
Optimised version of ADD/DROP/REORGANIZE partitions for
non-NDB storage engines.
New syntax to handle REBUILD/OPTIMIZE/ANALYZE/CHECK/REPAIR partitions
Quite a few bug fixes
include/thr_lock.h:
New method to downgrade locks from TL_WRITE_ONLY
Possibility to upgrade lock while aborting locks
mysql-test/r/ndb_autodiscover.result:
Fix for lowercase and that all NDB tables are now partitioned
mysql-test/r/ndb_bitfield.result:
Fix for lowercase and that all NDB tables are now partitioned
mysql-test/r/ndb_gis.result:
Fix for lowercase and that all NDB tables are now partitioned
mysql-test/r/ndb_partition_key.result:
New test case
mysql-test/r/partition.result:
New test case
mysql-test/r/partition_error.result:
New test case
mysql-test/r/partition_mgm_err.result:
Fix of test case results
mysql-test/t/disabled.def:
partition_03ndb still has bug
mysql-test/t/ndb_partition_key.test:
New test cases for new functionality and bugs
mysql-test/t/partition.test:
New test cases for new functionality and bugs
mysql-test/t/partition_error.test:
New test cases for new functionality and bugs
mysql-test/t/partition_mgm_err.test:
New test cases for new functionality and bugs
mysys/thr_lock.c:
New method to downgrade TL_WRITE_ONLY locks
Possibility to specify if locks are to be upgraded at abort locks
sql/ha_archive.cc:
New handlerton methods
sql/ha_berkeley.cc:
New handlerton methods
sql/ha_blackhole.cc:
New handlerton methods
sql/ha_federated.cc:
New handlerton methods
sql/ha_heap.cc:
New handlerton methods
sql/ha_innodb.cc:
New handlerton methods
sql/ha_myisam.cc:
New handlerton methods
sql/ha_myisammrg.cc:
New handlerton methods
sql/ha_ndbcluster.cc:
New handlerton methods
Moved out packfrm and unpackfrm methods
Adapted many parts to use table_share instead of table->s
Ensured that .ndb file uses filename and not tablename
according to new encoding of names (WL 1324)
All NDB tables are partitioned and set up partition info
Fixed such that tablenames use tablenames and not filenames in NDB
NDB uses auto partitioning for ENGINE=NDB tables
Warning for very large tables
Set RANGE data
Set LIST data
New method to set-up partition info
Set Default number of partitions flag
Set linear hash flag
Set node group array
Set number of fragments
Set max rows
Set tablespace names
New method to get number of partitions of table to use at open table
sql/ha_ndbcluster.h:
Removed partition_flags and alter_table_flags from handler class
A couple of new and changed method headers
sql/ha_ndbcluster_binlog.cc:
Use new method headers
sql/ha_partition.cc:
New handlerton methods
Lots of new function headers
Use #P# as separator between table name and partition name and
#SP# as separator between partition name and subpartition name
Use filename encoding for files both of table name part and of
partition name parts
New method to drop partitions based on partition state
New method to rename partitions based on partition state
New methods to optimize, analyze, check and repair partitions
New methods to optimize, analyze, check and repair table
Helper method to create new partition, open it and external lock
it, not needed to lock it internally since no one else knows about
it yet.
Cleanup method at error for new partitions
New methods to perform bulk of work at ADD/REORGANIZE partitions
(change_partitions, copy_partitions)
sql/ha_partition.h:
New methods and variables
A few dropped ones and a few changed ones
sql/handler.cc:
Handlerton interface changes
New flag to open_table_from_share
sql/handler.h:
New alter_table_flags
New partition flags
New partition states
More states for default handling
Lots of new, dropped and changed interfaces
sql/lex.h:
Added REBUILD and changed name of REORGANISE to REORGANIZE
sql/lock.cc:
Method to downgrade locks
Able to specify if locks upgraded on abort locks
sql/log.cc:
New handlerton methods
sql/mysql_priv.h:
Lots of new interfaces
sql/share/errmsg.txt:
Lots of new, dropped and changed error messages
sql/sql_base.cc:
Adapted to new method headers
New method to abort and upgrade lock
New method to close open tables and downgrade lock
New method to wait for completed table
sql/sql_lex.h:
New flags
sql/sql_partition.cc:
Return int instead of bool in get_partition_id
More defaults handling
Make use of new mem_alloc_error method
More work on function headers
Changes to generate partition syntax to cater for intermediate
partition states
Lots of new code with large comments describing new features for
Partition Management:
ADD/DROP/REORGANIZE/OPTIMIZE/ANALYZE/CHECK/REPAIR partitions
sql/sql_show.cc:
Minors
sql/sql_table.cc:
Moved a couple of methods
New methods to copy create lists and key lists
for use with mysql_prepare_table
New method to write frm file
New handling of handlers with auto partitioning
Fix CREATE TABLE LIKE
Moved code for ADD/DROP/REORGANIZE partitions
Use handlerton method for alter_table_flags
sql/sql_yacc.yy:
More memory alloc error checks
New syntax for REBUILD, ANALYZE, CHECK, OPTIMIZE, REPAIR partitions
sql/table.cc:
Fix length of extra part to be 4 bytes
Partition state introduced in frm file
sql/table.h:
Partition state introduced
sql/unireg.cc:
Partition state introduced
Default partition
storage/csv/ha_tina.cc:
New handlerton methods
storage/example/ha_example.cc:
New handlerton methods
storage/ndb/include/kernel/ndb_limits.h:
RANGE DATA
storage/ndb/include/kernel/signaldata/AlterTable.hpp:
New interfaces in ALTER TABLE towards NDB kernel
storage/ndb/include/kernel/signaldata/DiAddTab.hpp:
New section
storage/ndb/include/kernel/signaldata/DictTabInfo.hpp:
Lots of new parts of table description
storage/ndb/include/kernel/signaldata/LqhFrag.hpp:
tablespace id specified in LQHFRAGREQ
storage/ndb/include/ndbapi/NdbDictionary.hpp:
Lots of new methods in NDB dictionary
storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp:
Lots of new variables in table description
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
Lots of new variables in table description
storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
Lots of new variables in table description
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
New error insertion
storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp:
a few extra jam's
storage/ndb/src/ndbapi/NdbBlob.cpp:
Changes to definition of blob tables
storage/ndb/src/ndbapi/NdbDictionary.cpp:
Lots of new stuff in NDB dictionary
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
Lots of new stuff in NDB dictionary
storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp:
Lots of new stuff in NDB dictionary
storage/ndb/test/ndbapi/test_event.cpp:
removed use of methods no longer in existence
storage/ndb/tools/restore/Restore.cpp:
Renamed variable
2006-01-17 08:40:00 +01:00
|
|
|
#define MAX_RANGE_DATA (131072+MAX_NDB_PARTITIONS) //0.5 MByte of list data
|
2004-04-14 10:53:21 +02:00
|
|
|
|
2006-10-20 16:16:01 +02:00
|
|
|
#define MAX_WORDS_META_FILE 24576
|
|
|
|
|
2004-04-14 10:53:21 +02:00
|
|
|
#define MIN_ATTRBUF ((MAX_ATTRIBUTES_IN_TABLE/24) + 1)
|
|
|
|
/*
|
2004-08-18 11:55:37 +02:00
|
|
|
* Max Number of Records to fetch per SCAN_NEXTREQ in a scan in LQH. The
|
2004-04-14 10:53:21 +02:00
|
|
|
* API can order a multiple of this number of records at a time since
|
|
|
|
* fragments can be scanned in parallel.
|
|
|
|
*/
|
2004-08-17 17:55:47 +02:00
|
|
|
#define MAX_PARALLEL_OP_PER_SCAN 992
|
2004-08-09 17:43:15 +02:00
|
|
|
/*
|
2004-08-18 11:55:37 +02:00
|
|
|
* The default batch size. Configurable parameter.
|
|
|
|
*/
|
|
|
|
#define DEF_BATCH_SIZE 64
|
|
|
|
/*
|
2004-08-09 17:43:15 +02:00
|
|
|
* When calculating the number of records sent from LQH in each batch
|
|
|
|
* one uses SCAN_BATCH_SIZE divided by the expected size of signals
|
|
|
|
* per row. This gives the batch size used for the scan. The NDB API
|
|
|
|
* will receive one batch from each node at a time so there has to be
|
|
|
|
* some care taken also so that the NDB API is not overloaded with
|
|
|
|
* signals.
|
2004-08-18 11:55:37 +02:00
|
|
|
* This parameter is configurable, this is the default value.
|
2004-08-09 17:43:15 +02:00
|
|
|
*/
|
|
|
|
#define SCAN_BATCH_SIZE 32768
|
|
|
|
/*
|
|
|
|
* To protect the NDB API from overload we also define a maximum total
|
|
|
|
* batch size from all nodes. This parameter should most likely be
|
|
|
|
* configurable, or dependent on sendBufferSize.
|
2004-08-18 11:55:37 +02:00
|
|
|
* This parameter is configurable, this is the default value.
|
2004-08-09 17:43:15 +02:00
|
|
|
*/
|
2004-08-11 17:36:31 +02:00
|
|
|
#define MAX_SCAN_BATCH_SIZE 262144
|
2004-04-14 10:53:21 +02:00
|
|
|
/*
|
|
|
|
* Maximum number of Parallel Scan queries on one hash index fragment
|
|
|
|
*/
|
|
|
|
#define MAX_PARALLEL_SCANS_PER_FRAG 12
|
|
|
|
/*
|
|
|
|
* Maximum parallel ordered index scans per primary table fragment.
|
|
|
|
* Implementation limit is (256 minus 12).
|
|
|
|
*/
|
|
|
|
#define MAX_PARALLEL_INDEX_SCANS_PER_FRAG 32
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Computed defines
|
|
|
|
*/
|
|
|
|
#define MAXNROFATTRIBUTESINWORDS (MAX_ATTRIBUTES_IN_TABLE / 32)
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Ordered index constants. Make configurable per index later.
|
|
|
|
*/
|
2004-10-22 11:59:57 +00:00
|
|
|
#define MAX_TTREE_NODE_SIZE 64 /* total words in node */
|
|
|
|
#define MAX_TTREE_PREF_SIZE 4 /* words in min prefix */
|
|
|
|
#define MAX_TTREE_NODE_SLACK 2 /* diff between max and min occupancy */
|
2004-04-14 10:53:21 +02:00
|
|
|
|
2004-06-10 12:04:30 +02:00
|
|
|
/*
|
|
|
|
* Blobs.
|
|
|
|
*/
|
2004-10-22 11:59:57 +00:00
|
|
|
#define NDB_BLOB_HEAD_SIZE 2 /* sizeof(NdbBlob::Head) >> 2 */
|
2004-06-10 12:04:30 +02:00
|
|
|
|
2004-12-12 18:37:36 +01:00
|
|
|
/*
|
|
|
|
* Character sets.
|
|
|
|
*/
|
|
|
|
#define MAX_XFRM_MULTIPLY 8 /* max expansion when normalizing */
|
|
|
|
|
2005-11-07 12:19:28 +01:00
|
|
|
/**
|
|
|
|
* Disk data
|
|
|
|
*/
|
|
|
|
#define MAX_FILES_PER_FILEGROUP 1024
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Page size in global page pool
|
|
|
|
*/
|
|
|
|
#define GLOBAL_PAGE_SIZE 32768
|
|
|
|
#define GLOBAL_PAGE_SIZE_WORDS 8192
|
|
|
|
|
2004-10-28 11:19:51 +00:00
|
|
|
/*
|
|
|
|
* Long signals
|
|
|
|
*/
|
|
|
|
#define NDB_SECTION_SEGMENT_SZ 60
|
|
|
|
|
2006-01-15 20:45:08 +01:00
|
|
|
/*
|
|
|
|
* Restore Buffer in pages
|
|
|
|
* 4M
|
|
|
|
*/
|
|
|
|
#define LCP_RESTORE_BUFFER (4*32)
|
|
|
|
|
2004-04-14 10:53:21 +02:00
|
|
|
#endif
|