Added support for key_block_size to MyISAM.
Simplify interface to 'new Key' to make it easier to add new key options.
mysqld option --new is used to define where key options are printed.
(In 5.3 we should move all key options to after key part definition to avoid problem with reserved names)
Fixed some compiler warnings and a memory leak in ssl
include/my_base.h:
Added flag to check if block size for key was secified
include/my_sys.h:
Added new support function to round up to a power of two
include/myisam.h:
Rename block_size -> block_size_index to avoid confusion with 'block_size'
include/violite.h:
Added function to free memory after new_VioSSLAcceptorFd
(Will rename all vio_ssl functions in a future changeset)
mysql-test/mysql-test-run.pl:
Don't print port number info when we use --extern
mysql-test/r/myisam.result:
Added test for key_block_size
mysql-test/t/myisam.test:
Added test for key_block_size
mysys/mf_keycache.c:
Simplify code
mysys/my_bit.c:
Added new support function to round up to a power of two
sql/ha_myisam.cc:
Tell MyISAM to use the specified key_block_size
MyISAM also updates the global key_block_size from the used values.
sql/handler.cc:
Added 'default_key_create_info' to be used as 'dummy' argument to 'new Key'
sql/handler.h:
Added KEY_CREATE_INFO, to be used as for general options for KEY's
sql/item_func.h:
Removed compiler warning
sql/lex.h:
Added new symbol
sql/mysqld.cc:
Fixed memory leak in ssl (new_VioSSLAcceptorFd)
sql/sql_class.h:
Change 'new Key' to use KEY_CREATE_INFO instead of 'algoritm', parser, key_page_size.
This makes it easier to add new key options in the future.
sql/sql_lex.h:
Added key create options
sql/sql_parse.cc:
Use new interface to 'new Key'
sql/sql_show.cc:
Added support for key_block_size
If --new is used, key options are printed after the key part definition.
sql/sql_table.cc:
Use new interface to 'new Key'
Add support for key_block_size
sql/sql_yacc.yy:
Add support for key_block_size
Allow key options before and after key_parts (In future they should be always after the key_part defintion)
Use new interface to 'new Key'
sql/structs.h:
Added block_size to keys
sql/table.cc:
Remmeber and read key_block_size for table and key level
sql/table.h:
Added default key_block_size for table
sql/unireg.cc:
Remember key_block_size for key
storage/myisam/ft_eval.c:
Set block_length to 0 to get default key page size
storage/myisam/ft_test1.c:
Set block_length to 0 to get default key page size
storage/myisam/mi_check.c:
block_size -> block_size_index
storage/myisam/mi_create.c:
Added support for block size per key.
Block size is rounded up to next power of two and enforced between MIN and MAX KEY_BLOCK_LENGTH.
Align start of key block to start at an even offset of max_key_block_length to ensure key cache works good if all key pages are of same size.
storage/myisam/mi_open.c:
block_size -> block_size_index
storage/myisam/mi_page.c:
block_size -> block_size_index
storage/myisam/mi_test1.c:
Set block_length to 0 to get default key page size
storage/myisam/mi_test2.c:
Set block_length to 0 to get default key page size
storage/myisam/mi_test3.c:
Set block_length to 0 to get default key page size
storage/myisam/myisamdef.h:
block_size -> block_size_index to avoid confusion with 'block_size' in MySQL
Added block_size as argument to MI_BLOCK_SIZE
Added missing prototypes to get rid of compiler warnings
storage/myisam/myisampack.c:
Removed compiler warning
block_size -> block_size_index
vio/viosslfactories.c:
Fixed memory leak in ssl (new_VioSSLAcceptorFd)
mysql-test/r/myisam-system.result:
New BitKeeper file ``mysql-test/r/myisam-system.result''
mysql-test/t/myisam-system.test:
New BitKeeper file ``mysql-test/t/myisam-system.test''
Added support for key_block_size to MyISAM.
Simplify interface to 'new Key' to make it easier to add new key options.
mysqld option --new is used to define where key options are printed.
(In 5.3 we should move all key options to after key part definition to avoid problem with reserved names)
Fixed some compiler warnings and a memory leak in ssl
into mysql.com:/home/hf/work/mysql-5.1.18518
include/my_global.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
The problem is that now server works properly only with the
row-based replication
config/ac-macros/ha_ndbcluster.m4:
WITH_NDB_BINLOG instead of HAVE_NDB_BINLOG in config.h
config/ac-macros/replication.m4:
WITH_ROW_BASED_REPLICATION instead of HAVE_ROW_BASED_REPLICATION in
config.h
sql/log.cc:
some #ifdef HAVE_ROW_BASED_REPLICATION added
sql/mysqld.cc:
some #ifdef HAVE_ROW_BASED_REPLICATION added
sql/set_var.cc:
some #ifdef HAVE_ROW_BASED_REPLICATION added
sql/sql_base.cc:
some #ifdef HAVE_ROW_BASED_REPLICATION added
sql/sql_class.cc:
some #ifdef HAVE_ROW_BASED_REPLICATION added
sql/sql_class.h:
some #ifdef HAVE_ROW_BASED_REPLICATION added
sql/sql_parse.cc:
some #ifdef HAVE_ROW_BASED_REPLICATION added
into mysql.com:/home/emurphy/src/mysql/bk-clean/mysql-5.1-merge
sql/handler.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_class.h:
Auto merged
into c-870ae253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/wl2826
sql/ha_ndbcluster.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
into c-870ae253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/wl2826
configure.in:
Auto merged
dbug/dbug.c:
Auto merged
include/my_sys.h:
Auto merged
sql/ha_heap.cc:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/partition_info.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
BUILD/SETUP.sh:
manual merge
BUILD/compile-pentium-debug-max:
manual merge
sql/ha_ndbcluster.cc:
manual merge
sql/ha_ndbcluster.h:
manual merge
sql/ha_partition.cc:
manual merge
sql/ha_partition.h:
manual merge
sql/handler.h:
manual merge
sql/share/errmsg.txt:
manual merge
sql/sql_table.cc:
manual merge
sql/unireg.cc:
manual merge
into mysql.com:/opt/local/work/mysql-5.1-merge
mysql-test/r/ps.result:
Auto merged
mysql-test/t/ps.test:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/set_var.cc:
Manual merge.
sql/set_var.h:
Manual merge.
sql/share/errmsg.txt:
Manual merge.
limit.
mysql-test/r/ps.result:
Post-merge fixes.
mysql-test/t/ps.test:
Post-merge fixes.
sql/share/errmsg.txt:
Add a new error message for max_prepared_stmt_count limit,
we can do it in 5.0
sql/sql_class.cc:
Post-merge fixes.
sql/sql_class.h:
Post-merge fixes.
sql/sql_prepare.cc:
Post-merge fixes.
Moved things into ft_global.h, my_handler.h and myisamchk.h to allow MyISAM and Maria to share code and defines
Rename of not properly renamed functions in MyISAM and my_handler.c
Renamed some MI_ defines to HA_ to allow MyISAM and Maria to share
Added maria variables to mysqld.cc and set_var.cc
Fixed compiler warnings
BitKeeper/etc/ignore:
added storage/maria/*.MAI
BUILD/SETUP.sh:
Compile maria by default
BitKeeper/triggers/post-commit:
No public maria emails.
Mark changesets emails with 'maria'
configure.in:
Add maria
include/ft_global.h:
Move defines needed by maria and MyISAM here
include/keycache.h:
Add support for default key_cache if cache not found
include/my_base.h:
Add invalidator_by_filename
include/my_handler.h:
Remove duplicate header files
Add defines that are typical for handlers (MyISAM and Maria)
include/myisam.h:
Move things to my_handler.h to allow Maria and MyISAM to share things
(Some things needed to be shared to allow sharing of HA_CHECK structure)
libmysqld/Makefile.am:
Added ha_maria.cc
mysys/mf_keycaches.c:
Added default value for multi_key_cache_search
mysys/my_handler.c:
mi_compare_text -> ha_compare_text
Removed compiler warnings
sql/ha_myisam.cc:
MI_CHECK -> HA_CHECK
MI_MAX_KEY_LENGTH -> HA_MAX_KEY_LENGTH
sql/ha_myisam.h:
MI_CHECK -> HA_CHECK
MI_MAX_KEY_LENGTH -> HA_MAX_KEY_LENGTH
sql/ha_myisammrg.h:
MI_CHECK -> HA_CHECK
MI_MAX_KEY_LENGTH -> HA_MAX_KEY_LENGTH
sql/handler.h:
Added MARIA
Added inclusion of my_handler.h
sql/item_func.h:
Remove duplicate include
sql/mysql_priv.h:
Added maria variables
sql/mysqld.cc:
Added maria
sql/set_var.cc:
Added maria status variables
sql/set_var.h:
Added maria
sql/sql_class.h:
Added maria status variables
sql/sql_sort.h:
Remove duplicate BUFFPEK struct
storage/Makefile.am:
Added maria
storage/csv/ha_tina.cc:
Removed compiler warning
storage/myisam/Makefile.am:
Added ft_myisam.c
storage/myisam/ft_boolean_search.c:
mi_compare_text -> ha_compare_text
MI_MAX_KEY_BUFF -> HA_MAX_KEY_BUFF
Remove compiler warnings
storage/myisam/ft_nlq_search.c:
mi_compare_text -> ha_compare_text
storage/myisam/ft_parser.c:
mi_compare_text -> ha_compare_text
storage/myisam/ft_static.c:
Move ft_init_search() to ft_myisam.c to make ft_static.c independent of MyISAM
storage/myisam/ft_stopwords.c:
mi_compare_text -> ha_compare_text
storage/myisam/ft_update.c:
mi_compare_text -> ha_compare_text
storage/myisam/fulltext.h:
Move things to ft_global.h to allow to share more things between MyISAM and Maria
storage/myisam/mi_check.c:
MI_CHECK -> HA_CHECK
storage/myisam/mi_create.c:
MI_MAX_POSSIBLE_KEY -> HA_MAX_POSSIBLE_KEY
MI_MAX_KEY_BLOCK_SIZE -> HA_MAX_KEY_BLOCK_SIZE
MI_MAX_KEY_SEG -> HA_MAX_KEY_SEG
MI_MAX_KEY_BUFF -> HA_MAX_KEY_BUFF
storage/myisam/mi_delete.c:
MI_MAX_KEY_BUFF -> HA_MAX_KEY_BUFF
storage/myisam/mi_delete_all.c:
Remove not used variable
storage/myisam/mi_dynrec.c:
_my_calc_total_blob_length -> _mi_calc_total_blob_length
storage/myisam/mi_key.c:
_my_store_blob_length -> _mi_store_blob_length
storage/myisam/mi_log.c:
_my_calc_total_blob_length -> _mi_calc_total_blob_length
storage/myisam/mi_open.c:
MI_MAX_POSSIBLE_KEY -> HA_MAX_POSSIBLE_KEY
MI_MAX_KEY_SEG -> HA_MAX_KEY_SEG
MI_MAX_KEY_BUFF -> HA_MAX_KEY_BUFF
my_n_base_info_read -> mi_n_base_info_read
storage/myisam/mi_packrec.c:
Made read_pack_length static
_my_store_blob_length -> _mi_store_blob_length
Remove not used variable
storage/myisam/mi_range.c:
MI_MAX_KEY_BUFF -> HA_MAX_KEY_BUFF
storage/myisam/mi_search.c:
MI_MAX_KEY_BUFF -> HA_MAX_KEY_BUFF
storage/myisam/mi_test1.c:
MI_MAX_KEY_LENGTH -> HA_MAX_KEY_LENGTH
storage/myisam/mi_test2.c:
Fixed compiler warning
storage/myisam/mi_unique.c:
Fixed compiler warning
mi_compare_text -> ha_compare_text
storage/myisam/mi_update.c:
MI_MAX_KEY_BUFF -> HA_MAX_KEY_BUFF
storage/myisam/mi_write.c:
Rename of defines and functions
storage/myisam/myisamchk.c:
Rename of defines and functions
storage/myisam/myisamdef.h:
Remove tabs
Indentation fixes (Large changes as I did run indent-ex on the file)
Move some things to myisamchk.h
Added missing functions that gave compiler warnings
storage/myisam/myisamlog.c:
Rename of defines and functions
storage/myisam/myisampack.c:
Remove compiler warning
storage/myisam/rt_index.c:
Rename of defines and functions
storage/myisam/sort.c:
Rename of defines, functions and structures
config/ac-macros/ha_maria.m4:
New BitKeeper file ``config/ac-macros/ha_maria.m4''
include/maria.h:
New BitKeeper file ``include/maria.h''
include/myisamchk.h:
New BitKeeper file ``include/myisamchk.h''
libmysqld/ha_maria.cc:
New BitKeeper file ``libmysqld/ha_maria.cc''
mysql-test/include/have_maria.inc:
New BitKeeper file ``mysql-test/include/have_maria.inc''
mysql-test/r/have_maria.require:
New BitKeeper file ``mysql-test/r/have_maria.require''
mysql-test/r/maria.result:
New BitKeeper file ``mysql-test/r/maria.result''
mysql-test/r/ps_maria.result:
New BitKeeper file ``mysql-test/r/ps_maria.result''
mysql-test/t/maria.test:
New BitKeeper file ``mysql-test/t/maria.test''
mysql-test/t/ps_maria.test:
New BitKeeper file ``mysql-test/t/ps_maria.test''
sql/ha_maria.cc:
New BitKeeper file ``sql/ha_maria.cc''
sql/ha_maria.h:
New BitKeeper file ``sql/ha_maria.h''
storage/maria/Makefile.am:
New BitKeeper file ``storage/maria/Makefile.am''
storage/maria/cmakelists.txt:
New BitKeeper file ``storage/maria/cmakelists.txt''
storage/maria/ft_maria.c:
New BitKeeper file ``storage/maria/ft_maria.c''
storage/maria/ma_cache.c:
New BitKeeper file ``storage/maria/ma_cache.c''
storage/maria/ma_changed.c:
New BitKeeper file ``storage/maria/ma_changed.c''
storage/maria/ma_check.c:
New BitKeeper file ``storage/maria/ma_check.c''
storage/maria/ma_checksum.c:
New BitKeeper file ``storage/maria/ma_checksum.c''
storage/maria/ma_close.c:
New BitKeeper file ``storage/maria/ma_close.c''
storage/maria/ma_create.c:
New BitKeeper file ``storage/maria/ma_create.c''
storage/maria/ma_dbug.c:
New BitKeeper file ``storage/maria/ma_dbug.c''
storage/maria/ma_delete.c:
New BitKeeper file ``storage/maria/ma_delete.c''
storage/maria/ma_delete_all.c:
New BitKeeper file ``storage/maria/ma_delete_all.c''
storage/maria/ma_delete_table.c:
New BitKeeper file ``storage/maria/ma_delete_table.c''
storage/maria/ma_dynrec.c:
New BitKeeper file ``storage/maria/ma_dynrec.c''
storage/maria/ma_extra.c:
New BitKeeper file ``storage/maria/ma_extra.c''
storage/maria/ma_ft_boolean_search.c:
New BitKeeper file ``storage/maria/ma_ft_boolean_search.c''
storage/maria/ma_ft_eval.c:
New BitKeeper file ``storage/maria/ma_ft_eval.c''
storage/maria/ma_ft_eval.h:
New BitKeeper file ``storage/maria/ma_ft_eval.h''
storage/maria/ma_ft_nlq_search.c:
New BitKeeper file ``storage/maria/ma_ft_nlq_search.c''
storage/maria/ma_ft_parser.c:
New BitKeeper file ``storage/maria/ma_ft_parser.c''
storage/maria/ma_ft_stem.c:
New BitKeeper file ``storage/maria/ma_ft_stem.c''
storage/maria/ma_ft_test1.c:
New BitKeeper file ``storage/maria/ma_ft_test1.c''
storage/maria/ma_ft_test1.h:
New BitKeeper file ``storage/maria/ma_ft_test1.h''
storage/maria/ma_ft_update.c:
New BitKeeper file ``storage/maria/ma_ft_update.c''
storage/maria/ma_ftdefs.h:
New BitKeeper file ``storage/maria/ma_ftdefs.h''
storage/maria/ma_fulltext.h:
New BitKeeper file ``storage/maria/ma_fulltext.h''
storage/maria/ma_info.c:
New BitKeeper file ``storage/maria/ma_info.c''
storage/maria/ma_init.c:
New BitKeeper file ``storage/maria/ma_init.c''
storage/maria/ma_key.c:
New BitKeeper file ``storage/maria/ma_key.c''
storage/maria/ma_keycache.c:
New BitKeeper file ``storage/maria/ma_keycache.c''
storage/maria/ma_locking.c:
New BitKeeper file ``storage/maria/ma_locking.c''
storage/maria/ma_log.c:
New BitKeeper file ``storage/maria/ma_log.c''
storage/maria/ma_open.c:
New BitKeeper file ``storage/maria/ma_open.c''
storage/maria/ma_packrec.c:
New BitKeeper file ``storage/maria/ma_packrec.c''
storage/maria/ma_page.c:
New BitKeeper file ``storage/maria/ma_page.c''
storage/maria/ma_panic.c:
New BitKeeper file ``storage/maria/ma_panic.c''
storage/maria/ma_preload.c:
New BitKeeper file ``storage/maria/ma_preload.c''
storage/maria/ma_range.c:
New BitKeeper file ``storage/maria/ma_range.c''
storage/maria/ma_rename.c:
New BitKeeper file ``storage/maria/ma_rename.c''
storage/maria/ma_rfirst.c:
New BitKeeper file ``storage/maria/ma_rfirst.c''
storage/maria/ma_rkey.c:
New BitKeeper file ``storage/maria/ma_rkey.c''
storage/maria/ma_rlast.c:
New BitKeeper file ``storage/maria/ma_rlast.c''
storage/maria/ma_rnext.c:
New BitKeeper file ``storage/maria/ma_rnext.c''
storage/maria/ma_rnext_same.c:
New BitKeeper file ``storage/maria/ma_rnext_same.c''
storage/maria/ma_rprev.c:
New BitKeeper file ``storage/maria/ma_rprev.c''
storage/maria/ma_rrnd.c:
New BitKeeper file ``storage/maria/ma_rrnd.c''
storage/maria/ma_rsame.c:
New BitKeeper file ``storage/maria/ma_rsame.c''
storage/maria/ma_rsamepos.c:
New BitKeeper file ``storage/maria/ma_rsamepos.c''
storage/maria/ma_rt_index.c:
New BitKeeper file ``storage/maria/ma_rt_index.c''
storage/maria/ma_rt_index.h:
New BitKeeper file ``storage/maria/ma_rt_index.h''
storage/maria/ma_rt_key.c:
New BitKeeper file ``storage/maria/ma_rt_key.c''
storage/maria/ma_rt_key.h:
New BitKeeper file ``storage/maria/ma_rt_key.h''
storage/maria/ma_rt_mbr.c:
New BitKeeper file ``storage/maria/ma_rt_mbr.c''
storage/maria/ma_rt_mbr.h:
New BitKeeper file ``storage/maria/ma_rt_mbr.h''
storage/maria/ma_rt_split.c:
New BitKeeper file ``storage/maria/ma_rt_split.c''
storage/maria/ma_rt_test.c:
New BitKeeper file ``storage/maria/ma_rt_test.c''
storage/maria/ma_scan.c:
New BitKeeper file ``storage/maria/ma_scan.c''
storage/maria/ma_search.c:
New BitKeeper file ``storage/maria/ma_search.c''
storage/maria/ma_sort.c:
New BitKeeper file ``storage/maria/ma_sort.c''
storage/maria/ma_sp_defs.h:
New BitKeeper file ``storage/maria/ma_sp_defs.h''
storage/maria/ma_sp_key.c:
New BitKeeper file ``storage/maria/ma_sp_key.c''
storage/maria/ma_sp_test.c:
New BitKeeper file ``storage/maria/ma_sp_test.c''
storage/maria/ma_static.c:
New BitKeeper file ``storage/maria/ma_static.c''
storage/maria/ma_statrec.c:
New BitKeeper file ``storage/maria/ma_statrec.c''
storage/maria/ma_test1.c:
New BitKeeper file ``storage/maria/ma_test1.c''
storage/maria/ma_test2.c:
New BitKeeper file ``storage/maria/ma_test2.c''
storage/maria/ma_test3.c:
New BitKeeper file ``storage/maria/ma_test3.c''
storage/maria/ma_test_all.sh:
New BitKeeper file ``storage/maria/ma_test_all.sh''
storage/maria/ma_unique.c:
New BitKeeper file ``storage/maria/ma_unique.c''
storage/maria/ma_update.c:
New BitKeeper file ``storage/maria/ma_update.c''
storage/maria/ma_write.c:
New BitKeeper file ``storage/maria/ma_write.c''
storage/maria/maria_chk.c:
New BitKeeper file ``storage/maria/maria_chk.c''
storage/maria/maria_def.h:
New BitKeeper file ``storage/maria/maria_def.h''
storage/maria/maria_ftdump.c:
New BitKeeper file ``storage/maria/maria_ftdump.c''
storage/maria/maria_log.c:
New BitKeeper file ``storage/maria/maria_log.c''
storage/maria/maria_pack.c:
New BitKeeper file ``storage/maria/maria_pack.c''
storage/maria/maria_rename.sh:
New BitKeeper file ``storage/maria/maria_rename.sh''
storage/maria/test_pack:
New BitKeeper file ``storage/maria/test_pack''
storage/myisam/ft_myisam.c:
New BitKeeper file ``storage/myisam/ft_myisam.c''
into mysql.com:/opt/local/work/mysql-4.1-16365
sql/mysql_priv.h:
Auto merged
sql/sql_class.h:
Auto merged
mysql-test/r/ps.result:
Manual merge
mysql-test/t/ps.test:
Manual merge
too many open statements". The patch adds a new global variable
@@max_prepared_stmt_count. This variable limits the total number
of prepared statements in the server. The default value of
@@max_prepared_stmt_count is 16382. 16382 small statements
(a select against 3 tables with GROUP, ORDER and LIMIT) consume
100MB of RAM. Once this limit has been reached, the server will
refuse to prepare a new statement and return ER_UNKNOWN_ERROR
(unfortunately, we can't add new errors to 4.1 without breaking 5.0). The limit is changeable after startup
and can accept any value from 0 to 1 million. In case
the new value of the limit is less than the current
statement count, no new statements can be added, while the old
still can be used. Additionally, the current count of prepared
statements is now available through a global read-only variable
@@prepared_stmt_count.
mysql-test/r/ps.result:
Test results fixed (a test case for Bug#16365)
mysql-test/t/ps.test:
A test case for Bug#16365 "Prepared Statements: DoS with too many
open statements". Also fix statement leaks in other tests.
sql/mysql_priv.h:
Add declarations for new global variables.
sql/mysqld.cc:
Add definitions of max_prepared_stmt_count, prepared_stmt_count.
sql/set_var.cc:
Implement support for @@prepared_stmt_count and
@@max_prepared_stmt_count. Currently these variables are queried
without acquiring LOCK_prepared_stmt_count due to limitations of
the set_var/sys_var class design. Updates are, however, protected
with a lock.
sql/set_var.h:
New declarations to add support for @@max_prepared_stmt_count.
Implement a new class, where the lock to be used when updating
a variable is a parameter.
sql/sql_class.cc:
Add accounting of the total number of prepared statements in the
server to the methods of Statement_map.
sql/sql_class.h:
Add accounting of the total number of prepared statements in the
server to the methods of Statement_map.
sql/sql_prepare.cc:
Statement_map::insert will now send a message in case of an
error.
too many open statements". The patch adds a new global variable
@@max_prepared_stmt_count. This variable limits the total number
of prepared statements in the server. The default value of
@@max_prepared_stmt_count is 16382. 16382 small statements
(a select against 3 tables with GROUP, ORDER and LIMIT) consume
100MB of RAM. Once this limit has been reached, the server will
refuse to prepare a new statement and return ER_UNKNOWN_ERROR
(unfortunately, we can't add new errors to 4.1 without breaking 5.0). The limit is changeable after startup
and can accept any value from 0 to 1 million. In case
the new value of the limit is less than the current
statement count, no new statements can be added, while the old
still can be used. Additionally, the current count of prepared
statements is now available through a global read-only variable
@@prepared_stmt_count.
into c-4908e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/wl2826
configure.in:
Auto merged
BUILD/SETUP.sh:
Auto merged
include/my_dbug.h:
Auto merged
sql/ha_heap.cc:
Auto merged
sql/ha_myisammrg.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/ha_partition.h:
Auto merged
sql/handler.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/partition_info.h:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/ndb_partition_key.result:
manual merge
mysql-test/t/ndb_partition_key.test:
manual merge
sql/ha_partition.cc:
manual merge
into rurik.mysql.com:/home/igor/dev/mysql-5.1-0
mysql-test/r/ctype_utf8.result:
Auto merged
mysql-test/r/func_gconcat.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
sql/field.cc:
Auto merged
sql/ha_heap.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
storage/myisam/mi_search.c:
Auto merged
storage/ndb/tools/Makefile.am:
Auto merged
strings/ctype-ucs2.c:
Auto merged
tests/mysql_client_test.c:
Auto merged
The GROUP_CONCAT uses its own temporary table. When ROLLUP is present
it creates the second copy of Item_func_group_concat. This copy receives the
same list of arguments that original group_concat does. When the copy is
set up the result_fields of functions from the argument list are reset to the
temporary table of this copy.
As a result of this action data from functions flow directly to the ROLLUP copy
and the original group_concat functions shows wrong result.
Since queries with COUNT(DISTINCT ...) use temporary tables to store
the results the COUNT function they are also affected by this bug.
The idea of the fix is to copy content of the result_field for the function
under GROUP_CONCAT/COUNT from the first temporary table to the second one,
rather than setting result_field to point to the second temporary table.
To achieve this goal force_copy_fields flag is added to Item_func_group_concat
and Item_sum_count_distinct classes. This flag is initialized to 0 and set to 1
into the make_unique() member function of both classes.
To the TMP_TABLE_PARAM structure is modified to include the similar flag as
well.
The create_tmp_table() function passes that flag to create_tmp_field().
When the flag is set the create_tmp_field() function will set result_field
as a source field and will not reset that result field to newly created
field for Item_func_result_field and its descendants. Due to this there
will be created copy func to copy data from old result_field to newly
created field.
mysql-test/t/func_gconcat.test:
Added test for bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
mysql-test/r/func_gconcat.result:
Added test for bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
sql/sql_table.cc:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added 0 as a last parameter to create_tmp_field() to force old behaviour.
sql/sql_select.cc:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the flag 'make_copy_field' to create_tmp_field(), so that for Item_result_field descendants create_tmp_field() sets the item's result field as a source field and deny resetting that result field to a new value.
sql/sql_class.h:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the flag 'force_copy_fields' to the structure TMP_TABLE_PARAM in order to make create_tmp_field() force the creation of 'copy_field' objects.
sql/mysql_priv.h:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the bool parameter 'make_copy_field' to create_tmp_field().
sql/item_sum.cc:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added initialization of the force_copy_fields flag and passing it to create_tmp_table() through TMP_TBLE_PARAM in the Item_func_group_concat and Item_sum_count_distinct member functions.
sql/item_sum.h:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the flag 'force_copy_fields' to the Item_func_group_concat and Item_sum_count_distinct classes.
The GROUP_CONCAT uses its own temporary table. When ROLLUP is present
it creates the second copy of Item_func_group_concat. This copy receives the
same list of arguments that original group_concat does. When the copy is
set up the result_fields of functions from the argument list are reset to the
temporary table of this copy.
As a result of this action data from functions flow directly to the ROLLUP copy
and the original group_concat functions shows wrong result.
Since queries with COUNT(DISTINCT ...) use temporary tables to store
the results the COUNT function they are also affected by this bug.
The idea of the fix is to copy content of the result_field for the function
under GROUP_CONCAT/COUNT from the first temporary table to the second one,
rather than setting result_field to point to the second temporary table.
To achieve this goal force_copy_fields flag is added to Item_func_group_concat
and Item_sum_count_distinct classes. This flag is initialized to 0 and set to 1
into the make_unique() member function of both classes.
To the TMP_TABLE_PARAM structure is modified to include the similar flag as
well.
The create_tmp_table() function passes that flag to create_tmp_field().
When the flag is set the create_tmp_field() function will set result_field
as a source field and will not reset that result field to newly created
field for Item_func_result_field and its descendants. Due to this there
will be created copy func to copy data from old result_field to newly
created field.
into c-8808e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/wl2826
configure.in:
Auto merged
dbug/dbug.c:
Auto merged
include/my_sys.h:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/ha_partition.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
sql/unireg.cc:
Auto merged
sql/ha_heap.cc:
manual merge
sql/ha_myisammrg.cc:
manual merge
sql/ha_partition.cc:
manual merge
sql/handler.h:
manual merge
sql/log.cc:
manual merge
sql/mysqld.cc:
manual merge
sql/share/errmsg.txt:
manual merge
added THD::work_part_info member where we now store modified
partition_info structure.
It allows no solve problem when different parts of the part_info get
into different mem_roots
sql/partition_info.cc:
get_clone implementation
sql/partition_info.h:
get_clone() declared
sql/sql_class.h:
THD::work_part_info added
sql/sql_partition.cc:
thd->work_part_info instead of lex->part_info
sql/sql_table.cc:
thd->work_part_info instad of lex->part_info
sql/unireg.cc:
thd->work_part_info instad of lex->part_info
added THD::work_part_info member where we now store modified
partition_info structure.
It allows no solve problem when different parts of the part_info get
into different mem_roots
sql/log_event.cc:
Fix Windows compile errors.
storage/innobase/btr/btr0sea.c:
Fix AIX compile error (declarations must come before code in traditional C).
sql/sql_class.h:
Fix HPUX compile problem (HP compiler bug).
Local class of member in derived class has no access to protected members,
so make the class global and a friend.
sql/sql_insert.cc:
Fix HPUX compile problem (HP compiler bug).
Local class of member in derived class has no access to protected members,
so make the class global and a friend.