summaryrefslogtreecommitdiff
path: root/myisam
diff options
context:
space:
mode:
authormonty@mysql.com <>2004-03-29 19:21:53 +0300
committermonty@mysql.com <>2004-03-29 19:21:53 +0300
commitdc2f606fb85e0763a448132a147a816de829a8cb (patch)
treef51ea3945f84d672edc962cdfc11eab16f569fc5 /myisam
parent505970b4a76f3d41f338d32d3d4382891ecb0ec3 (diff)
parent3cbab63af1e92677217be8106d5ed696b20521b1 (diff)
downloadmariadb-git-dc2f606fb85e0763a448132a147a816de829a8cb.tar.gz
Merge with 4.0 to get lastest bug fixes
Diffstat (limited to 'myisam')
-rw-r--r--myisam/mi_create.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/myisam/mi_create.c b/myisam/mi_create.c
index 72633966b54..5682862c39a 100644
--- a/myisam/mi_create.c
+++ b/myisam/mi_create.c
@@ -383,7 +383,13 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
my_errno=HA_WRONG_CREATE_OPTION;
goto err;
}
- if ((keydef->flag & (HA_NOSAME | HA_NULL_PART_KEY)) == HA_NOSAME)
+ /*
+ key_segs may be 0 in the case when we only want to be able to
+ add on row into the table. This can happen with some DISTINCT queries
+ in MySQL
+ */
+ if ((keydef->flag & (HA_NOSAME | HA_NULL_PART_KEY)) == HA_NOSAME &&
+ key_segs)
share.state.rec_per_key_part[key_segs-1]=1L;
length+=key_length;
keydef->block_length= MI_BLOCK_SIZE(length,pointer,MI_MAX_KEYPTR_SIZE);