diff options
author | unknown <konstantin@mysql.com> | 2005-11-03 14:20:13 +0300 |
---|---|---|
committer | unknown <konstantin@mysql.com> | 2005-11-03 14:20:13 +0300 |
commit | 3fa0dd23e0b6df54f8c94085963264c17c3cd715 (patch) | |
tree | 639d3dad03adaaad1f20eb9859a38a80c26f6b13 /sql/handler.h | |
parent | e2220f476680d60a5f35b9dcef6920862d578f80 (diff) | |
download | mariadb-git-3fa0dd23e0b6df54f8c94085963264c17c3cd715.tar.gz |
A fix and a test case for Bug#14210 "Simple query with > operator on
large table gives server crash": make sure that when a MyISAM temporary
table is created for a cursor, it's created in its memory root,
not the memory root of the current query.
mysql-test/r/sp.result:
Test results fixed: a test case for Bug#14210
mysql-test/t/sp.test:
A test case for Bug#14210 "Simple query with > operator on large table
gives server crash"
sql/handler.cc:
- rewrite get_new_handler to accept a memory root and use it for
sql/handler.h:
- get_new_handler declaration changed
sql/opt_range.cc:
- get_new_handler declaration changed
sql/sql_base.cc:
- get_new_handler declaration changed
sql/sql_select.cc:
- the actual fix for Bug#14210. In create_myisam_from_heap we should
create the new table handler in TABLE::mem_root, not in THD::mem_root:
the latter is freed shortly after cursor is open.
- adjust create_tmp_table to explicitly supply &table->mem_root
to get_new_handler when creating a handler for a new temporary table
sql/sql_table.cc:
- get_new_handler declaration changed
sql/table.cc:
- get_new_handler declaration changed
sql/unireg.cc:
- get_new_handler declaration changed
tests/mysql_client_test.c:
A test case for Bug#14210 "Simple query with > operator on large table
gives server crash": a C API test case is worth adding because of different
memory allocation/freeing patterns in handling of C API and SP cursors
Diffstat (limited to 'sql/handler.h')
-rw-r--r-- | sql/handler.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sql/handler.h b/sql/handler.h index af80f021e75..e16c428954c 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -874,7 +874,7 @@ extern ulong total_ha, total_ha_2pc; /* lookups */ enum db_type ha_resolve_by_name(const char *name, uint namelen); const char *ha_get_storage_engine(enum db_type db_type); -handler *get_new_handler(TABLE *table, enum db_type db_type); +handler *get_new_handler(TABLE *table, MEM_ROOT *alloc, enum db_type db_type); enum db_type ha_checktype(THD *thd, enum db_type database_type, bool no_substitute, bool report_error); bool ha_check_storage_engine_flag(enum db_type db_type, uint32 flag); |