summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormskold@mysql.com <>2005-04-21 10:26:14 +0200
committermskold@mysql.com <>2005-04-21 10:26:14 +0200
commitb1c8e44eadecc0e98344032d81c7697c0fcaf5e5 (patch)
tree83a1e9e362286201358b569d0879fa9db6c2f99b
parent5ed49fbfefdedc27692a1e1019f430db14540102 (diff)
parente0fe3e75c751059a3e043b2ab447eb2e6b349454 (diff)
downloadmariadb-git-b1c8e44eadecc0e98344032d81c7697c0fcaf5e5.tar.gz
Merge
-rw-r--r--libmysql/libmysql.c1
-rw-r--r--mysql-test/t/ndb_alter_table.test1
-rw-r--r--mysql-test/t/ndb_autodiscover.test1
-rw-r--r--mysql-test/t/ndb_autodiscover2.test1
-rw-r--r--mysql-test/t/ndb_basic.test1
-rw-r--r--mysql-test/t/ndb_blob.test1
-rw-r--r--mysql-test/t/ndb_cache.test1
-rw-r--r--mysql-test/t/ndb_charset.test1
-rw-r--r--mysql-test/t/ndb_index.test1
-rw-r--r--mysql-test/t/ndb_index_ordered.test1
-rw-r--r--mysql-test/t/ndb_index_unique.test1
-rw-r--r--mysql-test/t/ndb_insert.test1
-rw-r--r--mysql-test/t/ndb_limit.test1
-rw-r--r--mysql-test/t/ndb_lock.test1
-rw-r--r--mysql-test/t/ndb_minmax.test1
-rw-r--r--mysql-test/t/ndb_multi.test1
-rw-r--r--mysql-test/t/ndb_replace.test1
-rw-r--r--mysql-test/t/ndb_restore.test1
-rw-r--r--mysql-test/t/ndb_subquery.test1
-rw-r--r--mysql-test/t/ndb_transaction.test1
-rw-r--r--mysql-test/t/ndb_truncate.test1
-rw-r--r--mysql-test/t/ndb_types.test1
-rw-r--r--mysql-test/t/ndb_update.test16
-rw-r--r--ndb/src/kernel/blocks/dbtc/DbtcMain.cpp1
-rw-r--r--ndb/src/ndbapi/TransporterFacade.cpp4
-rw-r--r--sql/ha_ndbcluster.cc39
26 files changed, 63 insertions, 19 deletions
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index dbdaadf86bf..bf797dfd580 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -187,6 +187,7 @@ void STDCALL mysql_server_end()
else
mysql_thread_end();
finish_client_errs();
+ free_charsets();
mysql_client_init= org_my_init_done= 0;
}
diff --git a/mysql-test/t/ndb_alter_table.test b/mysql-test/t/ndb_alter_table.test
index 18c7ff47b18..1e5c31da98e 100644
--- a/mysql-test/t/ndb_alter_table.test
+++ b/mysql-test/t/ndb_alter_table.test
@@ -1,5 +1,6 @@
-- source include/have_ndb.inc
-- source include/have_multi_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
DROP TABLE IF EXISTS t1;
diff --git a/mysql-test/t/ndb_autodiscover.test b/mysql-test/t/ndb_autodiscover.test
index 211d8344471..80f6f3f35d3 100644
--- a/mysql-test/t/ndb_autodiscover.test
+++ b/mysql-test/t/ndb_autodiscover.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
diff --git a/mysql-test/t/ndb_autodiscover2.test b/mysql-test/t/ndb_autodiscover2.test
index 11e1cc204f7..76baa31a2a9 100644
--- a/mysql-test/t/ndb_autodiscover2.test
+++ b/mysql-test/t/ndb_autodiscover2.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
#
# Simple test to show use of discover when the server has been restarted
diff --git a/mysql-test/t/ndb_basic.test b/mysql-test/t/ndb_basic.test
index 5dfc2d5ec58..051a95ca42a 100644
--- a/mysql-test/t/ndb_basic.test
+++ b/mysql-test/t/ndb_basic.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
diff --git a/mysql-test/t/ndb_blob.test b/mysql-test/t/ndb_blob.test
index 96e38bfb58e..b265809b75f 100644
--- a/mysql-test/t/ndb_blob.test
+++ b/mysql-test/t/ndb_blob.test
@@ -1,4 +1,5 @@
--source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
drop table if exists t1;
diff --git a/mysql-test/t/ndb_cache.test b/mysql-test/t/ndb_cache.test
index e899e94e4ac..b61422a58fb 100644
--- a/mysql-test/t/ndb_cache.test
+++ b/mysql-test/t/ndb_cache.test
@@ -1,5 +1,6 @@
-- source include/have_query_cache.inc
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
drop table if exists t1;
diff --git a/mysql-test/t/ndb_charset.test b/mysql-test/t/ndb_charset.test
index 6a191636f1e..becbe9a4d06 100644
--- a/mysql-test/t/ndb_charset.test
+++ b/mysql-test/t/ndb_charset.test
@@ -1,4 +1,5 @@
--source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
drop table if exists t1;
diff --git a/mysql-test/t/ndb_index.test b/mysql-test/t/ndb_index.test
index e65b24a9b20..93085dea587 100644
--- a/mysql-test/t/ndb_index.test
+++ b/mysql-test/t/ndb_index.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
drop table if exists t1;
diff --git a/mysql-test/t/ndb_index_ordered.test b/mysql-test/t/ndb_index_ordered.test
index 2ebf06b78a8..9c9d5d5a84f 100644
--- a/mysql-test/t/ndb_index_ordered.test
+++ b/mysql-test/t/ndb_index_ordered.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
drop table if exists t1, test1, test2;
diff --git a/mysql-test/t/ndb_index_unique.test b/mysql-test/t/ndb_index_unique.test
index 6714f0233cf..d6de013c1e2 100644
--- a/mysql-test/t/ndb_index_unique.test
+++ b/mysql-test/t/ndb_index_unique.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
drop table if exists t1, t2, t3, t4, t5, t6, t7, t8;
diff --git a/mysql-test/t/ndb_insert.test b/mysql-test/t/ndb_insert.test
index 611df3d84e9..f88d33f22f4 100644
--- a/mysql-test/t/ndb_insert.test
+++ b/mysql-test/t/ndb_insert.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
DROP TABLE IF EXISTS t1;
diff --git a/mysql-test/t/ndb_limit.test b/mysql-test/t/ndb_limit.test
index c2d7a0ecfec..0df3b2f7566 100644
--- a/mysql-test/t/ndb_limit.test
+++ b/mysql-test/t/ndb_limit.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
DROP TABLE IF EXISTS t2;
diff --git a/mysql-test/t/ndb_lock.test b/mysql-test/t/ndb_lock.test
index 39a8655b972..b93abbd564b 100644
--- a/mysql-test/t/ndb_lock.test
+++ b/mysql-test/t/ndb_lock.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
diff --git a/mysql-test/t/ndb_minmax.test b/mysql-test/t/ndb_minmax.test
index 3be193ce602..97ea84f98ef 100644
--- a/mysql-test/t/ndb_minmax.test
+++ b/mysql-test/t/ndb_minmax.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
drop table if exists t1, t2;
diff --git a/mysql-test/t/ndb_multi.test b/mysql-test/t/ndb_multi.test
index 27ddd6508e9..24651913a79 100644
--- a/mysql-test/t/ndb_multi.test
+++ b/mysql-test/t/ndb_multi.test
@@ -1,5 +1,6 @@
-- source include/have_ndb.inc
-- source include/have_multi_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
diff --git a/mysql-test/t/ndb_replace.test b/mysql-test/t/ndb_replace.test
index 59454b5a9fa..1c06a9a6633 100644
--- a/mysql-test/t/ndb_replace.test
+++ b/mysql-test/t/ndb_replace.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
#
# Test of REPLACE with NDB
diff --git a/mysql-test/t/ndb_restore.test b/mysql-test/t/ndb_restore.test
index d084461f9be..e3191538a22 100644
--- a/mysql-test/t/ndb_restore.test
+++ b/mysql-test/t/ndb_restore.test
@@ -1,5 +1,6 @@
-- source include/have_ndb.inc
-- source include/ndb_default_cluster.inc
+-- source include/not_embedded.inc
--disable_warnings
use test;
diff --git a/mysql-test/t/ndb_subquery.test b/mysql-test/t/ndb_subquery.test
index cebc1920eaa..9d3a256a263 100644
--- a/mysql-test/t/ndb_subquery.test
+++ b/mysql-test/t/ndb_subquery.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
drop table if exists t1;
diff --git a/mysql-test/t/ndb_transaction.test b/mysql-test/t/ndb_transaction.test
index f8ed22207ea..ae02059786d 100644
--- a/mysql-test/t/ndb_transaction.test
+++ b/mysql-test/t/ndb_transaction.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
diff --git a/mysql-test/t/ndb_truncate.test b/mysql-test/t/ndb_truncate.test
index 63bb8cbefb6..7c0f79bcc59 100644
--- a/mysql-test/t/ndb_truncate.test
+++ b/mysql-test/t/ndb_truncate.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
DROP TABLE IF EXISTS t2;
diff --git a/mysql-test/t/ndb_types.test b/mysql-test/t/ndb_types.test
index 823ca942d57..d4bf4133807 100644
--- a/mysql-test/t/ndb_types.test
+++ b/mysql-test/t/ndb_types.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
DROP TABLE IF EXISTS t1;
diff --git a/mysql-test/t/ndb_update.test b/mysql-test/t/ndb_update.test
index 05b12561ca8..5453e41f937 100644
--- a/mysql-test/t/ndb_update.test
+++ b/mysql-test/t/ndb_update.test
@@ -1,4 +1,5 @@
-- source include/have_ndb.inc
+-- source include/not_embedded.inc
--disable_warnings
DROP TABLE IF EXISTS t1;
@@ -14,11 +15,20 @@ DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
pk1 INT NOT NULL PRIMARY KEY,
b INT NOT NULL,
- c INT NOT NULL
+ c INT NOT NULL UNIQUE
) ENGINE=ndbcluster;
-INSERT INTO t1 VALUES (0, 0, 1),(1,1,2),(2,2,3);
+INSERT INTO t1 VALUES (0, 1, 0),(1,2,1),(2,3,2);
UPDATE t1 set b = c;
select * from t1 order by pk1;
+UPDATE t1 set pk1 = 4 where pk1 = 1;
+select * from t1 order by pk1;
+-- error 1062
+UPDATE t1 set pk1 = 1, c = 2 where pk1 = 4;
+select * from t1 order by pk1;
+UPDATE t1 set pk1 = pk1 + 10;
+select * from t1 order by pk1;
-drop table t1;
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
diff --git a/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp b/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
index 17d55176830..c8260223004 100644
--- a/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
+++ b/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
@@ -1879,7 +1879,6 @@ void Dbtc::execKEYINFO(Signal* signal)
do {
if (cfirstfreeDatabuf == RNIL) {
jam();
- abort();
seizeDatabuferrorLab(signal);
return;
}//if
diff --git a/ndb/src/ndbapi/TransporterFacade.cpp b/ndb/src/ndbapi/TransporterFacade.cpp
index 7f1e68a42d3..e2aa6631841 100644
--- a/ndb/src/ndbapi/TransporterFacade.cpp
+++ b/ndb/src/ndbapi/TransporterFacade.cpp
@@ -160,6 +160,10 @@ setSignalLog(){
} else if(tmp !=0){
if (strcmp(tmp, "-") == 0)
signalLogger.setOutputStream(stdout);
+#ifndef DBUG_OFF
+ else if (strcmp(tmp, "+") == 0)
+ signalLogger.setOutputStream(DBUG_FILE);
+#endif
else
signalLogger.setOutputStream(fopen(tmp, "w"));
apiSignalLog = tmp;
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index 020a76b667e..8cbcbe75146 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -1957,8 +1957,10 @@ int ha_ndbcluster::write_row(byte *record)
m_skip_auto_increment= !auto_increment_column_changed;
}
- if ((res= set_primary_key(op)))
- return res;
+ if ((res= (m_primary_key_update ?
+ set_primary_key_from_old_data(op, record)
+ : set_primary_key(op))))
+ return res;
}
// Set non-key attribute(s)
@@ -2098,7 +2100,7 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data)
{
int read_res, insert_res, delete_res;
- DBUG_PRINT("info", ("primary key update, doing pk read+insert+delete"));
+ DBUG_PRINT("info", ("primary key update, doing pk read+delete+insert"));
// Get all old fields, since we optimize away fields not in query
read_res= complemented_pk_read(old_data, new_data);
if (read_res)
@@ -2106,15 +2108,7 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data)
DBUG_PRINT("info", ("pk read failed"));
DBUG_RETURN(read_res);
}
- // Insert new row
- insert_res= write_row(new_data);
- if (insert_res)
- {
- DBUG_PRINT("info", ("insert failed"));
- DBUG_RETURN(insert_res);
- }
// Delete old row
- DBUG_PRINT("info", ("insert succeded"));
m_primary_key_update= TRUE;
delete_res= delete_row(old_data);
m_primary_key_update= FALSE;
@@ -2122,9 +2116,23 @@ int ha_ndbcluster::update_row(const byte *old_data, byte *new_data)
{
DBUG_PRINT("info", ("delete failed"));
// Undo write_row(new_data)
- DBUG_RETURN(delete_row(new_data));
+ DBUG_RETURN(delete_res);
}
- DBUG_PRINT("info", ("insert+delete succeeded"));
+ // Insert new row
+ DBUG_PRINT("info", ("delete succeded"));
+ insert_res= write_row(new_data);
+ if (insert_res)
+ {
+ DBUG_PRINT("info", ("insert failed"));
+ if (trans->commitStatus() == NdbConnection::Started)
+ {
+ m_primary_key_update= TRUE;
+ insert_res= write_row((byte *)old_data);
+ m_primary_key_update= FALSE;
+ }
+ DBUG_RETURN(insert_res);
+ }
+ DBUG_PRINT("info", ("delete+insert succeeded"));
DBUG_RETURN(0);
}
@@ -2226,8 +2234,9 @@ int ha_ndbcluster::delete_row(const byte *record)
no_uncommitted_rows_update(-1);
- // If deleting from cursor, NoCommit will be handled in next_result
- DBUG_RETURN(0);
+ if (!m_primary_key_update)
+ // If deleting from cursor, NoCommit will be handled in next_result
+ DBUG_RETURN(0);
}
else
{