summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlenz@mysql.com <>2004-10-07 18:30:55 +0200
committerlenz@mysql.com <>2004-10-07 18:30:55 +0200
commit983bb74cda3ddb87d52e8320df2ef69038fef6ca (patch)
treef6df652d73c9140609fba75bcfd315279a3b4322
parent5037b95f811b22f9f65569bb5b41f56570902a48 (diff)
parent1dd43fab8715c44499421c6c3bb76386f84b5b1c (diff)
downloadmariadb-git-983bb74cda3ddb87d52e8320df2ef69038fef6ca.tar.gz
Merge mysql.com:/space/my/mysql-4.1
into mysql.com:/space/my/mysql-4.1-build
-rw-r--r--mysql-test/r/ndb_alter_table.result2
-rw-r--r--mysql-test/t/ndb_alter_table.test2
-rw-r--r--sql/ha_innodb.cc88
-rw-r--r--sql/ha_ndbcluster.cc3
4 files changed, 56 insertions, 39 deletions
diff --git a/mysql-test/r/ndb_alter_table.result b/mysql-test/r/ndb_alter_table.result
index 28a50504064..ee7c3b28fe2 100644
--- a/mysql-test/r/ndb_alter_table.result
+++ b/mysql-test/r/ndb_alter_table.result
@@ -116,7 +116,9 @@ select * from t1 order by a;
a b
0 1
17 18
+SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
alter table t1 modify column a int not null auto_increment;
+SET SQL_MODE='';
select * from t1 order by a;
a b
0 1
diff --git a/mysql-test/t/ndb_alter_table.test b/mysql-test/t/ndb_alter_table.test
index 1c1ef670af2..22b1a0e476d 100644
--- a/mysql-test/t/ndb_alter_table.test
+++ b/mysql-test/t/ndb_alter_table.test
@@ -95,7 +95,9 @@ CREATE TABLE t1 (
INSERT INTO t1 VALUES (0,1),(17,18);
select * from t1 order by a;
+SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
alter table t1 modify column a int not null auto_increment;
+SET SQL_MODE='';
select * from t1 order by a;
INSERT INTO t1 VALUES (0,19),(20,21);
select * from t1 order by a;
diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc
index 8ddf00a7568..cb35c63357e 100644
--- a/sql/ha_innodb.cc
+++ b/sql/ha_innodb.cc
@@ -20,10 +20,6 @@ NOTE: You can only use noninlined InnoDB functions in this file, because we
have disables the InnoDB inlining in this file. */
/* TODO list for the InnoDB handler in 4.1:
- - Check if the query_id is now right also in prepared and executed stats
- in build_template()
- - Add multi-language char set support to CREATE TABLE and the comparison
- of strings
- Find out what kind of problems the OS X case-insensitivity causes to
table and database names; should we 'normalize' the names like we do
in Windows?
@@ -2130,11 +2126,6 @@ build_template(
templ = prebuilt->mysql_template + n_requested_fields;
field = table->field[i];
- /* TODO: Check if the query_id is now right also in prepared
- and executed SQL statements. Previously, MySQL-4.1 failed to
- update field->query_id so that the formula
- thd->query_id == field->query_id did not work. */
-
if (templ_type == ROW_MYSQL_REC_FIELDS
&& !(fetch_all_in_key
&& dict_index_contains_col_or_prefix(index, i))
@@ -4727,23 +4718,41 @@ ha_innobase::start_stmt(
prepared for an update of a row */
prebuilt->select_lock_type = LOCK_X;
- } else {
- if (thd->lex->sql_command == SQLCOM_SELECT
- && thd->lex->lock_option == TL_READ) {
-
- /* For other than temporary tables, we obtain
- no lock for consistent read (plain SELECT) */
-
- prebuilt->select_lock_type = LOCK_NONE;
- } else {
- /* Not a consistent read: use LOCK_X as the
- select_lock_type value (TODO: how could we know
- whether it should be LOCK_S, LOCK_X, or LOCK_NONE?) */
-
- prebuilt->select_lock_type = LOCK_X;
- }
- }
+ } else {
+ if (trx->isolation_level != TRX_ISO_SERIALIZABLE
+ && thd->lex->sql_command == SQLCOM_SELECT
+ && thd->lex->lock_option == TL_READ) {
+ /* For other than temporary tables, we obtain
+ no lock for consistent read (plain SELECT). */
+
+ prebuilt->select_lock_type = LOCK_NONE;
+ } else {
+ /* Not a consistent read: restore the
+ select_lock_type value. The value of
+ stored_select_lock_type was decided in:
+ 1) ::store_lock(),
+ 2) ::external_lock(), and
+ 3) ::init_table_handle_for_HANDLER(). */
+
+ prebuilt->select_lock_type =
+ prebuilt->stored_select_lock_type;
+ }
+
+ if (prebuilt->stored_select_lock_type != LOCK_S
+ && prebuilt->stored_select_lock_type != LOCK_X) {
+ fprintf(stderr,
+"InnoDB: Error: stored_select_lock_type is %lu inside ::start_stmt()!\n",
+ 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;
+ }
+ }
+
/* Set the MySQL flag to mark that there is an active transaction */
thd->transaction.all.innodb_active_trans = 1;
@@ -5258,14 +5267,14 @@ ha_innobase::get_auto_increment()
}
/***********************************************************************
-This function stores binlog offset and flushes logs */
+This function stores the binlog offset and flushes logs. */
void
innobase_store_binlog_offset_and_flush_log(
-/*=============================*/
- char *binlog_name, /* in: binlog name */
- longlong offset /* in: binlog offset */
-) {
+/*=======================================*/
+ char *binlog_name, /* in: binlog name */
+ longlong offset) /* in: binlog offset */
+{
mtr_t mtr;
assert(binlog_name != NULL);
@@ -5274,7 +5283,7 @@ innobase_store_binlog_offset_and_flush_log(
mtr_start_noninline(&mtr);
/* Update the latest MySQL binlog name and offset info
- in trx sys header */
+ in trx sys header */
trx_sys_update_mysql_binlog_offset(
binlog_name,
@@ -5288,18 +5297,19 @@ innobase_store_binlog_offset_and_flush_log(
log_buffer_flush_to_disk();
}
-char *ha_innobase::get_mysql_bin_log_name()
+char*
+ha_innobase::get_mysql_bin_log_name()
{
- return trx_sys_mysql_bin_log_name;
+ return(trx_sys_mysql_bin_log_name);
}
-ulonglong ha_innobase::get_mysql_bin_log_pos()
+ulonglong
+ha_innobase::get_mysql_bin_log_pos()
{
- /*
- trx... is ib_longlong, which is a typedef for a 64-bit integer (__int64 or
- longlong) so it's ok to cast it to ulonglong.
- */
- return trx_sys_mysql_bin_log_pos;
+ /* trx... is ib_longlong, which is a typedef for a 64-bit integer
+ (__int64 or longlong) so it's ok to cast it to ulonglong. */
+
+ return(trx_sys_mysql_bin_log_pos);
}
extern "C" {
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index 8faa0b33756..bb6ace75f1f 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -2170,6 +2170,9 @@ int ha_ndbcluster::index_read(byte *buf,
break;
}
+ if (m_active_cursor)
+ close_scan();
+
key_range start_key;
start_key.key = key;
start_key.length = key_len;