Commit dc462669 authored by unknown's avatar unknown

Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0-maint

into  siva.hindu.god:/usr/home/tim/m/bk/inno/50

parents bf80dbcb 9b762ae3
...@@ -1361,8 +1361,8 @@ ibuf_entry_build( ...@@ -1361,8 +1361,8 @@ ibuf_entry_build(
index tree; NOTE that the original entry index tree; NOTE that the original entry
must be kept because we copy pointers to its must be kept because we copy pointers to its
fields */ fields */
dict_index_t* index, /* in: non-clustered index */
dtuple_t* entry, /* in: entry for a non-clustered index */ dtuple_t* entry, /* in: entry for a non-clustered index */
ibool comp, /* in: flag: TRUE=compact record format */
ulint space, /* in: space id */ ulint space, /* in: space id */
ulint page_no,/* in: index page number where entry should ulint page_no,/* in: index page number where entry should
be inserted */ be inserted */
...@@ -1426,13 +1426,13 @@ ibuf_entry_build( ...@@ -1426,13 +1426,13 @@ ibuf_entry_build(
dfield_set_data(field, buf, 4); dfield_set_data(field, buf, 4);
ut_ad(comp == 0 || comp == 1); ut_ad(index->table->comp <= 1);
/* Store the type info in buf2, and add the fields from entry to /* Store the type info in buf2, and add the fields from entry to
tuple */ tuple */
buf2 = mem_heap_alloc(heap, n_fields buf2 = mem_heap_alloc(heap, n_fields
* DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE * DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE
+ comp); + index->table->comp);
if (comp) { if (index->table->comp) {
*buf2++ = 0; /* write the compact format indicator */ *buf2++ = 0; /* write the compact format indicator */
} }
for (i = 0; i < n_fields; i++) { for (i = 0; i < n_fields; i++) {
...@@ -1445,20 +1445,22 @@ ibuf_entry_build( ...@@ -1445,20 +1445,22 @@ ibuf_entry_build(
dtype_new_store_for_order_and_null_size( dtype_new_store_for_order_and_null_size(
buf2 + i * DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE, buf2 + i * DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE,
dfield_get_type(entry_field)); dfield_get_type(entry_field),
dict_index_get_nth_field(index, i)
->prefix_len);
} }
/* Store the type info in buf2 to field 3 of tuple */ /* Store the type info in buf2 to field 3 of tuple */
field = dtuple_get_nth_field(tuple, 3); field = dtuple_get_nth_field(tuple, 3);
if (comp) { if (index->table->comp) {
buf2--; buf2--;
} }
dfield_set_data(field, buf2, n_fields dfield_set_data(field, buf2, n_fields
* DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE * DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE
+ comp); + index->table->comp);
/* Set all the types in the new tuple binary */ /* Set all the types in the new tuple binary */
dtuple_set_types_binary(tuple, n_fields + 4); dtuple_set_types_binary(tuple, n_fields + 4);
...@@ -2589,8 +2591,7 @@ ibuf_insert_low( ...@@ -2589,8 +2591,7 @@ ibuf_insert_low(
the first fields and the type information for other fields, and which the first fields and the type information for other fields, and which
will be inserted to the insert buffer. */ will be inserted to the insert buffer. */
ibuf_entry = ibuf_entry_build(entry, index->table->comp, ibuf_entry = ibuf_entry_build(index, entry, space, page_no, heap);
space, page_no, heap);
/* Open a cursor to the insert buffer tree to calculate if we can add /* Open a cursor to the insert buffer tree to calculate if we can add
the new entry to it without exceeding the free space limit for the the new entry to it without exceeding the free space limit for the
......
...@@ -366,7 +366,9 @@ dtype_new_store_for_order_and_null_size( ...@@ -366,7 +366,9 @@ dtype_new_store_for_order_and_null_size(
byte* buf, /* in: buffer for byte* buf, /* in: buffer for
DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE
bytes where we store the info */ bytes where we store the info */
dtype_t* type); /* in: type struct */ dtype_t* type, /* in: type struct */
ulint prefix_len);/* in: prefix length to
replace type->len, or 0 */
/************************************************************************** /**************************************************************************
Reads to a type the stored information which determines its alphabetical Reads to a type the stored information which determines its alphabetical
ordering and the storage size of an SQL NULL value. This is the 4.1.x storage ordering and the storage size of an SQL NULL value. This is the 4.1.x storage
......
...@@ -230,11 +230,14 @@ dtype_new_store_for_order_and_null_size( ...@@ -230,11 +230,14 @@ dtype_new_store_for_order_and_null_size(
byte* buf, /* in: buffer for byte* buf, /* in: buffer for
DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE
bytes where we store the info */ bytes where we store the info */
dtype_t* type) /* in: type struct */ dtype_t* type, /* in: type struct */
ulint prefix_len)/* in: prefix length to
replace type->len, or 0 */
{ {
#if 6 != DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE #if 6 != DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE
#error "6 != DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE" #error "6 != DATA_NEW_ORDER_NULL_TYPE_BUF_SIZE"
#endif #endif
ulint len;
buf[0] = (byte)(type->mtype & 0xFFUL); buf[0] = (byte)(type->mtype & 0xFFUL);
...@@ -249,7 +252,9 @@ dtype_new_store_for_order_and_null_size( ...@@ -249,7 +252,9 @@ dtype_new_store_for_order_and_null_size(
buf[1] = (byte)(type->prtype & 0xFFUL); buf[1] = (byte)(type->prtype & 0xFFUL);
mach_write_to_2(buf + 2, type->len & 0xFFFFUL); len = prefix_len ? prefix_len : type->len;
mach_write_to_2(buf + 2, len & 0xFFFFUL);
ut_ad(dtype_get_charset_coll(type->prtype) < 256); ut_ad(dtype_get_charset_coll(type->prtype) < 256);
mach_write_to_2(buf + 4, dtype_get_charset_coll(type->prtype)); mach_write_to_2(buf + 4, dtype_get_charset_coll(type->prtype));
......
...@@ -5969,19 +5969,6 @@ ha_innobase::start_stmt( ...@@ -5969,19 +5969,6 @@ ha_innobase::start_stmt(
prebuilt->select_lock_type = prebuilt->select_lock_type =
prebuilt->stored_select_lock_type; prebuilt->stored_select_lock_type;
} }
if (prebuilt->stored_select_lock_type != LOCK_S
&& prebuilt->stored_select_lock_type != LOCK_X) {
sql_print_error("stored_select_lock_type is %lu inside "
"::start_stmt()!",
prebuilt->stored_select_lock_type);
/* Set the value to LOCK_X: this is just fault
tolerance, we do not know what the correct value
should be! */
prebuilt->select_lock_type = LOCK_X;
}
} }
trx->detailed_error[0] = '\0'; trx->detailed_error[0] = '\0';
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment