summaryrefslogtreecommitdiff
path: root/heap
diff options
context:
space:
mode:
authorunknown <monty@hundin.mysql.fi>2002-01-16 00:42:52 +0200
committerunknown <monty@hundin.mysql.fi>2002-01-16 00:42:52 +0200
commitf015cbdc7e3427cf0f77012c4ce89f3cf8d5dd5f (patch)
tree890cb295feeab3ebd6413663178be56ec5ed21a2 /heap
parent71a5af5b52642cbe64960275f1994f5a57832ff3 (diff)
downloadmariadb-git-f015cbdc7e3427cf0f77012c4ce89f3cf8d5dd5f.tar.gz
Add support for NULL=NULL in keys (Used in GROUP BY optimization)
Add ISAM to Windows version Fix of test results Fixes for NULL keys in HEAP tables. Docs/manual.texi: Changelog heap/hp_open.c: Add support for NULL=NULL in keys (for GROUP BY) heap/hp_rkey.c: Cleanup heap/hp_write.c: Cleanup include/config-win.h: Add ISAM to Windows version include/my_base.h: Add support for NULL=NULL in keys (for GROUP BY) libmysqld/Makefile.am: Rename of innobase to innodb myisam/mi_write.c: Add support for NULL=NULL in keys (for GROUP BY) BitKeeper/etc/ignore: Added libmysqld/ha_innodb.cc to the ignore list mysql-test/r/group_by.result: Test of NULL keys in HEAP tables mysql-test/r/heap.result: Test of NULL keys in HEAP tables mysql-test/r/null.result: Cleanup mysql-test/r/order_by.result: Fix for result of new ORDER BY optimization mysql-test/t/group_by.test: Test of NULL keys in HEAP tables mysql-test/t/heap.test: Test of NULL keys in HEAP tables mysql-test/t/null.test: Cleanup sql/ha_heap.cc: Add support of NULL keys sql/item_strfunc.h: Fix for BINARY and CAST functions sql/item_timefunc.h: Fix for BINARY and CAST functions sql/sql_parse.cc: Cleanup sql/sql_select.cc: Add support for NULL=NULL in keys (for GROUP BY)
Diffstat (limited to 'heap')
-rw-r--r--heap/hp_open.c3
-rw-r--r--heap/hp_rkey.c2
-rw-r--r--heap/hp_write.c2
3 files changed, 4 insertions, 3 deletions
diff --git a/heap/hp_open.c b/heap/hp_open.c
index 69e02945253..938ab8c4f78 100644
--- a/heap/hp_open.c
+++ b/heap/hp_open.c
@@ -46,7 +46,8 @@ HP_INFO *heap_open(const char *name, int mode, uint keys, HP_KEYDEF *keydef,
for (j=length=0 ; j < keydef[i].keysegs; j++)
{
length+=keydef[i].seg[j].length;
- if (keydef[i].seg[j].null_bit)
+ if (keydef[i].seg[j].null_bit &&
+ !(keydef[i].flag & HA_NULL_ARE_EQUAL))
keydef[i].flag |= HA_NULL_PART_KEY;
}
keydef[i].length=length;
diff --git a/heap/hp_rkey.c b/heap/hp_rkey.c
index 37ebf5c784e..e7a1d81fba6 100644
--- a/heap/hp_rkey.c
+++ b/heap/hp_rkey.c
@@ -20,7 +20,7 @@ int heap_rkey(HP_INFO *info, byte *record, int inx, const byte *key)
{
byte *pos;
HP_SHARE *share=info->s;
- DBUG_ENTER("hp_rkey");
+ DBUG_ENTER("heap_rkey");
DBUG_PRINT("enter",("base: %lx inx: %d",info,inx));
if ((uint) inx >= share->keys)
diff --git a/heap/hp_write.c b/heap/hp_write.c
index a219c8be23a..806f40e5be5 100644
--- a/heap/hp_write.c
+++ b/heap/hp_write.c
@@ -238,7 +238,7 @@ int _hp_write_key(register HP_SHARE *info, HP_KEYDEF *keyinfo,
_hp_movelink(pos,gpos,empty);
}
- /* Check if dupplicated keys */
+ /* Check if duplicated keys */
if ((keyinfo->flag & HA_NOSAME) && pos == gpos &&
(!(keyinfo->flag & HA_NULL_PART_KEY) ||
!hp_if_null_in_key(keyinfo, record)))