diff options
author | unknown <monty@mysql.com> | 2005-01-15 14:09:45 +0200 |
---|---|---|
committer | unknown <monty@mysql.com> | 2005-01-15 14:09:45 +0200 |
commit | 0cbd58c52b3810da467ec04e5d578ce3c845f125 (patch) | |
tree | e8856cd37d5a43bd18c06a8834fbfff83c0f4998 /sql/ha_heap.cc | |
parent | 5168d25f3509cd205b3db8222446b16d34c45781 (diff) | |
parent | 193eae3bece02daa473f0e264d235ea3e407a88d (diff) | |
download | mariadb-git-0cbd58c52b3810da467ec04e5d578ce3c845f125.tar.gz |
Merge with 4.1
BitKeeper/etc/ignore:
auto-union
Build-tools/Do-compile:
Auto merged
client/mysqladmin.cc:
Auto merged
heap/hp_create.c:
Auto merged
heap/hp_write.c:
Auto merged
include/my_sys.h:
Auto merged
innobase/data/data0type.c:
Auto merged
innobase/include/row0mysql.h:
Auto merged
innobase/os/os0file.c:
Auto merged
innobase/rem/rem0cmp.c:
Auto merged
innobase/row/row0sel.c:
Auto merged
innobase/srv/srv0start.c:
Auto merged
mysql-test/r/ctype_latin1_de.result:
Auto merged
mysql-test/r/ctype_tis620.result:
Auto merged
mysql-test/r/ctype_ucs.result:
Auto merged
mysql-test/r/ctype_ujis.result:
Auto merged
mysql-test/r/ctype_utf8.result:
Auto merged
mysql-test/r/func_gconcat.result:
Auto merged
mysql-test/r/func_sapdb.result:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/r/type_float.result.es:
Auto merged
mysql-test/r/type_float.result:
Auto merged
mysql-test/r/type_timestamp.result:
Auto merged
mysql-test/t/ctype_ucs.test:
Auto merged
mysql-test/t/func_sapdb.test:
Auto merged
mysql-test/t/show_check.test:
Auto merged
mysql-test/t/type_float.test:
Auto merged
mysql-test/t/type_timestamp.test:
Auto merged
mysys/mf_iocache.c:
Auto merged
ndb/src/kernel/vm/Configuration.cpp:
Auto merged
scripts/mysql_install_db.sh:
Auto merged
sql/field.cc:
Auto merged
sql/ha_berkeley.cc:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/item_sum.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
strings/ctype-big5.c:
Auto merged
strings/ctype-bin.c:
Auto merged
strings/ctype-czech.c:
Auto merged
strings/ctype-gbk.c:
Auto merged
strings/ctype-latin1.c:
Auto merged
strings/ctype-mb.c:
Auto merged
strings/ctype-simple.c:
Auto merged
strings/ctype-sjis.c:
Auto merged
strings/ctype-tis620.c:
Auto merged
strings/ctype-uca.c:
Auto merged
strings/ctype-ucs2.c:
Auto merged
strings/ctype-utf8.c:
Auto merged
strings/ctype-win1250ch.c:
Auto merged
configure.in:
Use local values
mysql-test/r/ps_1general.result:
Update results
mysql-test/t/func_gconcat.test:
no changes
mysql-test/t/ps_1general.test:
Use local code
ndb/src/common/util/version.c:
Use local code
sql/filesort.cc:
Empty line changes
sql/ha_heap.cc:
Merge
sql/item_timefunc.cc:
Keep local code
sql/mysql_priv.h:
Update to 5.0
sql/sql_show.cc:
Hand merge
support-files/mysql.spec.sh:
No changes
Diffstat (limited to 'sql/ha_heap.cc')
-rw-r--r-- | sql/ha_heap.cc | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/sql/ha_heap.cc b/sql/ha_heap.cc index b5742699d7e..02d81882e7a 100644 --- a/sql/ha_heap.cc +++ b/sql/ha_heap.cc @@ -471,12 +471,24 @@ int ha_heap::create(const char *name, TABLE *table_arg, KEY_PART_INFO *key_part= pos->key_part; KEY_PART_INFO *key_part_end= key_part + pos->key_parts; - mem_per_row+= (pos->key_length + (sizeof(char*) * 2)); - keydef[key].keysegs= (uint) pos->key_parts; keydef[key].flag= (pos->flags & (HA_NOSAME | HA_NULL_ARE_EQUAL)); keydef[key].seg= seg; - keydef[key].algorithm= ((pos->algorithm == HA_KEY_ALG_UNDEF) ? + + switch (pos->algorithm) { + case HA_KEY_ALG_UNDEF: + case HA_KEY_ALG_HASH: + keydef[key].algorithm= HA_KEY_ALG_HASH; + mem_per_row+= sizeof(char*) * 2; // = sizeof(HASH_INFO) + break; + case HA_KEY_ALG_BTREE: + keydef[key].algorithm= HA_KEY_ALG_BTREE; + mem_per_row+=sizeof(TREE_ELEMENT)+pos->key_length+sizeof(char*); + break; + default: + DBUG_ASSERT(0); // cannot happen + } + keydef[key].algorithm= ((pos->algorithm == HA_KEY_ALG_UNDEF) ? HA_KEY_ALG_HASH : pos->algorithm); for (; key_part != key_part_end; key_part++, seg++) @@ -525,8 +537,10 @@ int ha_heap::create(const char *name, TABLE *table_arg, hp_create_info.auto_key_type= auto_key_type; hp_create_info.auto_increment= (create_info->auto_increment_value ? create_info->auto_increment_value - 1 : 0); + hp_create_info.max_table_size=current_thd->variables.max_heap_table_size; + max_rows = (ha_rows) (hp_create_info.max_table_size / mem_per_row); error= heap_create(fn_format(buff,name,"","",4+2), - keys,keydef, share->reclength, + keys, keydef, share->reclength, (ulong) ((share->max_rows < max_rows && share->max_rows) ? share->max_rows : max_rows), |