summaryrefslogtreecommitdiff
path: root/myisam/mi_open.c
diff options
context:
space:
mode:
authormonty@mashka.mysql.fi <>2002-07-24 19:55:08 +0300
committermonty@mashka.mysql.fi <>2002-07-24 19:55:08 +0300
commitc702a1f8fda0814db36801b91c601329225f8030 (patch)
tree31ee919bea7e4456572b62d5ea7302dc58bc0b6a /myisam/mi_open.c
parent00089b8148dfc8b3e4cf2be94ec33fc51665f529 (diff)
downloadmariadb-git-c702a1f8fda0814db36801b91c601329225f8030.tar.gz
Removed wrong implementation of CUBE/ROLLUP
Fixed bugfix of INSERT ... SET db_name.table_name.column_name Changed locking to external-locking Fix client hangup for some invalid SQL queries.
Diffstat (limited to 'myisam/mi_open.c')
-rw-r--r--myisam/mi_open.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/myisam/mi_open.c b/myisam/mi_open.c
index e10d931e6d3..feed8f29df8 100644
--- a/myisam/mi_open.c
+++ b/myisam/mi_open.c
@@ -507,7 +507,8 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
/* Allocate buffer for one record */
/* prerequisites: bzero(info) && info->s=share; are met. */
- if (!mi_fix_rec_buff_for_blob(&info, -1))
+ if (!mi_alloc_rec_buff(&info, -1, &info.rec_buff,
+ &info.alloced_rec_buff_length))
goto err;
bzero(info.rec_buff, info.alloced_rec_buff_length);
@@ -559,6 +560,7 @@ err:
DBUG_RETURN (NULL);
} /* mi_open */
+
gptr mi_get_rec_buff_ptr(MI_INFO *info, byte *buf)
{
if (info->s->options & HA_OPTION_PACK_RECORD && buf)
@@ -567,6 +569,7 @@ gptr mi_get_rec_buff_ptr(MI_INFO *info, byte *buf)
return buf;
}
+
byte *mi_alloc_rec_buff(MI_INFO *info, ulong length, byte **buf, uint *buf_len)
{
uint extra;
@@ -576,23 +579,24 @@ byte *mi_alloc_rec_buff(MI_INFO *info, ulong length, byte **buf, uint *buf_len)
byte *newptr = *buf;
/* to simplify initial init of info->rec_buf in mi_open and mi_extra */
- if (length == (ulong)-1)
- length=max(info->s->base.pack_reclength,info->s->base.max_key_length);
+ if (length == (ulong) -1)
+ length= max(info->s->base.pack_reclength,info->s->base.max_key_length);
extra= ((info->s->options & HA_OPTION_PACK_RECORD) ?
- ALIGN_SIZE(MI_MAX_DYN_BLOCK_HEADER)+MI_SPLIT_LENGTH+
- MI_REC_BUFF_OFFSET : 0);
+ ALIGN_SIZE(MI_MAX_DYN_BLOCK_HEADER)+MI_SPLIT_LENGTH+
+ MI_REC_BUFF_OFFSET : 0);
if (extra && newptr)
newptr-=MI_REC_BUFF_OFFSET;
if (!(newptr=(byte*) my_realloc((gptr)newptr, length+extra+8,
MYF(MY_ALLOW_ZERO_PTR))))
return 0;
- *buf=newptr+(extra ? MI_REC_BUFF_OFFSET : 0);
- *buf_len=length;
+ *buf= newptr+(extra ? MI_REC_BUFF_OFFSET : 0);
+ *buf_len= length;
}
return *buf;
}
+
ulonglong mi_safe_mul(ulonglong a, ulonglong b)
{
ulonglong max_val= ~ (ulonglong) 0; /* my_off_t is unsigned */