Commit 9c6255b4 authored by unknown's avatar unknown
Browse files

Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1-ndb

into mysql.com:/home/jonas/src/mysql-4.1-ndb

parents 2e201e1e e6145414
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ igor@hundin.mysql.fi
igor@rurik.mysql.com
ingo@mysql.com
jan@hundin.mysql.fi
jani@a193-229-222-2.elisa-laajakaista.fi
jani@a80-186-24-72.elisa-laajakaista.fi
jani@a80-186-41-201.elisa-laajakaista.fi
jani@dsl-jkl1657.dial.inet.fi
+15 −3
Original line number Diff line number Diff line
@@ -1585,7 +1585,7 @@ row_create_table_for_mysql(
     "InnoDB: See the Restrictions section of the InnoDB manual.\n"
     "InnoDB: You can drop the orphaned table inside InnoDB by\n"
     "InnoDB: creating an InnoDB table with the same name in another\n"
     "InnoDB: database and moving the .frm file to the current database.\n"
     "InnoDB: database and copying the .frm file to the current database.\n"
     "InnoDB: Then MySQL thinks the table exists, and DROP TABLE will\n"
     "InnoDB: succeed.\n"
     "InnoDB: You can look for further help from\n"
@@ -2546,7 +2546,13 @@ row_drop_table_for_mysql(
								name_or_path,
								is_path,
								FALSE, TRUE)) {
				err = DB_ERROR;
				err = DB_SUCCESS;

				fprintf(stderr,
"InnoDB: We removed now the InnoDB internal data dictionary entry\n"
"InnoDB: of table ");	
				ut_print_name(stderr, trx, name);
				fprintf(stderr, ".\n");

				goto funct_exit;
			}
@@ -2554,6 +2560,12 @@ row_drop_table_for_mysql(
			success = fil_delete_tablespace(space_id);

			if (!success) {
				fprintf(stderr,
"InnoDB: We removed now the InnoDB internal data dictionary entry\n"
"InnoDB: of table ");	
				ut_print_name(stderr, trx, name);
				fprintf(stderr, ".\n");

				ut_print_timestamp(stderr);
				fprintf(stderr,
"  InnoDB: Error: not able to delete tablespace %lu of table ",
@@ -2993,7 +3005,7 @@ row_rename_table_for_mysql(
     "InnoDB: dropped automatically when the queries end.\n"
     "InnoDB: You can drop the orphaned table inside InnoDB by\n"
     "InnoDB: creating an InnoDB table with the same name in another\n"
     "InnoDB: database and moving the .frm file to the current database.\n"
     "InnoDB: database and copying the .frm file to the current database.\n"
     "InnoDB: Then MySQL thinks the table exists, and DROP TABLE will\n"
     "InnoDB: succeed.\n", stderr);
		}
+10 −6
Original line number Diff line number Diff line
@@ -386,10 +386,12 @@ row_build_row_ref(
			dict_index_get_nth_field(clust_index, i)->prefix_len;

		if (clust_col_prefix_len > 0) {
		    	if (len != UNIV_SQL_NULL
			    && len > clust_col_prefix_len) {
		    	if (len != UNIV_SQL_NULL) {

				dfield_set_len(dfield, clust_col_prefix_len);
				dfield_set_len(dfield,
				  dtype_get_at_most_n_mbchars(
					dfield_get_type(dfield),
					clust_col_prefix_len, len, field));
			}
		}
	}
@@ -471,10 +473,12 @@ row_build_row_ref_in_tuple(
			dict_index_get_nth_field(clust_index, i)->prefix_len;

		if (clust_col_prefix_len > 0) {
		    	if (len != UNIV_SQL_NULL
			    && len > clust_col_prefix_len) {
		    	if (len != UNIV_SQL_NULL) {

				dfield_set_len(dfield, clust_col_prefix_len);
				dfield_set_len(dfield,
				  dtype_get_at_most_n_mbchars(
					dfield_get_type(dfield),
					clust_col_prefix_len, len, field));
			}
		}
	}
+20 −13
Original line number Diff line number Diff line
@@ -2024,19 +2024,15 @@ row_sel_convert_mysql_key_to_innobase(

			/* MySQL stores the actual data length to the first 2
			bytes after the optional SQL NULL marker byte. The
			storage format is little-endian. */

			/* There are no key fields > 255 bytes currently in
			MySQL */
			if (key_ptr[data_offset + 1] != 0) {
				ut_print_timestamp(stderr);
				fputs(
"  InnoDB: Error: BLOB or TEXT prefix > 255 bytes in query to table ", stderr);
				ut_print_name(stderr, trx, index->table_name);
				putc('\n', stderr);
			}

			data_len = key_ptr[data_offset];
			storage format is little-endian, that is, the most
			significant byte at a higher address. In UTF-8, MySQL
			seems to reserve field->prefix_len bytes for
			storing this field in the key value buffer, even
			though the actual value only takes data_len bytes
			from the start. */

			data_len = key_ptr[data_offset]
				   + 256 * key_ptr[data_offset + 1];
			data_field_len = data_offset + 2 + field->prefix_len;
			data_offset += 2;
			
@@ -2044,6 +2040,17 @@ row_sel_convert_mysql_key_to_innobase(
					  store the column value like it would
					  be a fixed char field */
		} else if (field->prefix_len > 0) {
			/* Looks like MySQL pads unused end bytes in the
			prefix with space. Therefore, also in UTF-8, it is ok
			to compare with a prefix containing full prefix_len
			bytes, and no need to take at most prefix_len / 3
			UTF-8 characters from the start.
			If the prefix is used as the upper end of a LIKE
			'abc%' query, then MySQL pads the end with chars
			0xff. TODO: in that case does it any harm to compare
			with the full prefix_len bytes. How do characters
			0xff in UTF-8 behave? */

		        data_len = field->prefix_len;
			data_field_len = data_offset + data_len;
		} else {
+1 −1
Original line number Diff line number Diff line
@@ -530,7 +530,7 @@ else
   MYSQLD="$VALGRIND $BASEDIR/bin/mysqld"
 fi
 CLIENT_BINDIR="$BASEDIR/bin"
 TESTS_BINDIR="$BASEDIR/bin"
 TESTS_BINDIR="$BASEDIR/tests"
 MYSQL_TEST="$CLIENT_BINDIR/mysqltest"
 MYSQL_DUMP="$CLIENT_BINDIR/mysqldump"
 MYSQL_BINLOG="$CLIENT_BINDIR/mysqlbinlog"
Loading