diff options
author | unknown <monty@mysql.com> | 2006-06-30 19:15:18 +0300 |
---|---|---|
committer | unknown <monty@mysql.com> | 2006-06-30 19:15:18 +0300 |
commit | 9606675ba20eb309a1f402f92d06e2de8aed22d2 (patch) | |
tree | 15c1c844006e3cdc77167f5ef3986b9d40c16104 | |
parent | b138b55d1d72442482cac6f70450cb6ccf492b4b (diff) | |
parent | e0171231a58d5ada5e5f6e5db83617aab550f21d (diff) | |
download | mariadb-git-9606675ba20eb309a1f402f92d06e2de8aed22d2.tar.gz |
Merge mysql.com:/home/my/mysql-4.1
into mysql.com:/home/my/mysql-5.0
libmysql/libmysql.c:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/t/key.test:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/key.result:
Manual merge
mysql-test/t/mysqldump.test:
Manual merge
(Now we have same code as in 4.1 and 5.1)
sql/ha_ndbcluster.cc:
Manual merge
Change %ll -> llstr()
tests/mysql_client_test.c:
manual merge
-rw-r--r-- | heap/hp_test1.c | 2 | ||||
-rw-r--r-- | libmysql/libmysql.c | 7 | ||||
-rw-r--r-- | mysql-test/mysql-test-run.sh | 20 | ||||
-rw-r--r-- | mysql-test/r/key.result | 10 | ||||
-rw-r--r-- | mysql-test/t/key.test | 1 | ||||
-rw-r--r-- | mysql-test/t/mysqldump.test | 2 | ||||
-rw-r--r-- | sql/ha_ndbcluster.cc | 69 | ||||
-rw-r--r-- | sql/table.cc | 21 | ||||
-rw-r--r-- | tests/mysql_client_test.c | 71 |
9 files changed, 149 insertions, 54 deletions
diff --git a/heap/hp_test1.c b/heap/hp_test1.c index 1efa97842c7..703b39b1e2d 100644 --- a/heap/hp_test1.c +++ b/heap/hp_test1.c @@ -59,7 +59,7 @@ int main(int argc, char **argv) bzero((gptr) flags,sizeof(flags)); printf("- Creating heap-file\n"); - if (heap_create(filename,1,keyinfo,30,(ulong) flag*100000L,101L, + if (heap_create(filename,1,keyinfo,30,(ulong) flag*100000L,10L, &hp_create_info) || !(file= heap_open(filename, 2))) goto err; diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index c1e0703af10..a851d62b108 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -2391,10 +2391,9 @@ static void net_store_datetime(NET *net, MYSQL_TIME *tm) static void store_param_date(NET *net, MYSQL_BIND *param) { - MYSQL_TIME *tm= (MYSQL_TIME *) param->buffer; - tm->hour= tm->minute= tm->second= 0; - tm->second_part= 0; - net_store_datetime(net, tm); + MYSQL_TIME tm= *((MYSQL_TIME *) param->buffer); + tm.hour= tm.minute= tm.second= tm.second_part= 0; + net_store_datetime(net, &tm); } static void store_param_datetime(NET *net, MYSQL_BIND *param) diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index bcdd8294eee..590885b3d46 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -1381,16 +1381,16 @@ start_master() if [ x$DO_DDD = x1 ] then - $ECHO "set args $master_args" > $GDB_MASTER_INIT + $ECHO "set args $master_args" > $GDB_MASTER_INIT$1 manager_launch master ddd -display $DISPLAY --debugger \ - "gdb -x $GDB_MASTER_INIT" $MASTER_MYSQLD + "gdb -x $GDB_MASTER_INIT$1" $MASTER_MYSQLD elif [ x$DO_GDB = x1 ] then if [ x$MANUAL_GDB = x1 ] then - $ECHO "set args $master_args" > $GDB_MASTER_INIT + $ECHO "set args $master_args" > $GDB_MASTER_INIT$1 $ECHO "To start gdb for the master , type in another window:" - $ECHO "cd $CWD ; gdb -x $GDB_MASTER_INIT $MASTER_MYSQLD" + $ECHO "cd $CWD ; gdb -x $GDB_MASTER_INIT$1 $MASTER_MYSQLD" wait_for_master=1500 else ( $ECHO set args $master_args; @@ -1402,9 +1402,9 @@ disa 1 end r EOF - fi ) > $GDB_MASTER_INIT + fi ) > $GDB_MASTER_INIT$1 manager_launch master $XTERM -display $DISPLAY \ - -title "Master" -e gdb -x $GDB_MASTER_INIT $MASTER_MYSQLD + -title "Master" -e gdb -x $GDB_MASTER_INIT$1 $MASTER_MYSQLD fi else manager_launch master $MASTER_MYSQLD $master_args @@ -2088,13 +2088,7 @@ then fi start_manager - -# Do not automagically start daemons if we are in gdb or running only one test -# case - if [ -z "$DO_GDB" ] && [ -z "$DO_DDD" ] - then - mysql_start - fi + mysql_start $ECHO "Loading Standard Test Databases" mysql_loadstd fi diff --git a/mysql-test/r/key.result b/mysql-test/r/key.result index a6f05143b3e..6a362d6b86a 100644 --- a/mysql-test/r/key.result +++ b/mysql-test/r/key.result @@ -336,8 +336,16 @@ UNIQUE i1idx (i1), UNIQUE i2idx (i2)); desc t1; Field Type Null Key Default Extra -i1 int(11) NO UNI +i1 int(11) NO PRI i2 int(11) NO UNI +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i1` int(11) NOT NULL default '0', + `i2` int(11) NOT NULL default '0', + UNIQUE KEY `i1idx` (`i1`), + UNIQUE KEY `i2idx` (`i2`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; create table t1 ( c1 int, diff --git a/mysql-test/t/key.test b/mysql-test/t/key.test index e7072ae29f6..3767f5f885e 100644 --- a/mysql-test/t/key.test +++ b/mysql-test/t/key.test @@ -334,6 +334,7 @@ create table t1 ( UNIQUE i1idx (i1), UNIQUE i2idx (i2)); desc t1; +show create table t1; drop table t1; # diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index 7e4fedb297d..a091242171e 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -610,7 +610,7 @@ drop database db1; # BUG#15328 Segmentation fault occured if my.cnf is invalid for escape sequence # ---exec $MYSQL_MY_PRINT_DEFAULTS --config-file=$MYSQL_TEST_DIR/std_data/bug15328.cnf mysqldump +--exec $MYSQL_MY_PRINT_DEFAULTS --defaults-file=$MYSQL_TEST_DIR/std_data/bug15328.cnf mysqldump # diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index b36099cf25c..c5711d8f0fd 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -2254,9 +2254,10 @@ int ha_ndbcluster::write_row(byte *record) { Ndb *ndb= get_ndb(); Uint64 next_val= (Uint64) table->next_number_field->val_int() + 1; + char buff[22]; DBUG_PRINT("info", - ("Trying to set next auto increment value to %llu", - (ulonglong) next_val)); + ("Trying to set next auto increment value to %s", + llstr(next_val, buff))); if (ndb->setAutoIncrementValue((const NDBTAB *) m_table, next_val, TRUE) == -1) ERR_RETURN(ndb->getNdbError()); @@ -2582,13 +2583,15 @@ void ha_ndbcluster::unpack_record(byte* buf) { // Table with hidden primary key int hidden_no= table->s->fields; + char buff[22]; const NDBTAB *tab= (const NDBTAB *) m_table; const NDBCOL *hidden_col= tab->getColumn(hidden_no); const NdbRecAttr* rec= m_value[hidden_no].rec; DBUG_ASSERT(rec); - DBUG_PRINT("hidden", ("%d: %s \"%llu\"", hidden_no, - hidden_col->getName(), rec->u_64_value())); - } + DBUG_PRINT("hidden", ("%d: %s \"%s\"", hidden_no, + hidden_col->getName(), + llstr(rec->u_64_value(), buff))); + } print_results(); #endif DBUG_VOID_RETURN; @@ -4101,10 +4104,11 @@ static int create_ndb_column(NDBCOL &col, // Set autoincrement if (field->flags & AUTO_INCREMENT_FLAG) { + char buff[22]; col.setAutoIncrement(TRUE); ulonglong value= info->auto_increment_value ? info->auto_increment_value : (ulonglong) 1; - DBUG_PRINT("info", ("Autoincrement key, initial: %llu", value)); + DBUG_PRINT("info", ("Autoincrement key, initial: %s", llstr(value, buff))); col.setAutoIncrementInitialValue(value); } else @@ -5493,8 +5497,9 @@ uint ndb_get_commitcount(THD *thd, char *dbname, char *tabname, if (share->commit_count != 0) { *commit_count= share->commit_count; - DBUG_PRINT("info", ("Getting commit_count: %llu from share", - share->commit_count)); + char buff[22]; + DBUG_PRINT("info", ("Getting commit_count: %s from share", + llstr(share->commit_count, buff))); pthread_mutex_unlock(&share->mutex); free_share(share); DBUG_RETURN(0); @@ -5518,7 +5523,9 @@ uint ndb_get_commitcount(THD *thd, char *dbname, char *tabname, pthread_mutex_lock(&share->mutex); if (share->commit_count_lock == lock) { - DBUG_PRINT("info", ("Setting commit_count to %llu", stat.commit_count)); + char buff[22]; + DBUG_PRINT("info", ("Setting commit_count to %s", + llstr(stat.commit_count, buff))); share->commit_count= stat.commit_count; *commit_count= stat.commit_count; } @@ -5568,13 +5575,12 @@ ndbcluster_cache_retrieval_allowed(THD *thd, char *full_name, uint full_name_len, ulonglong *engine_data) { - DBUG_ENTER("ndbcluster_cache_retrieval_allowed"); - Uint64 commit_count; bool is_autocommit= !(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)); char *dbname= full_name; char *tabname= dbname+strlen(dbname)+1; - + char buff[22], buff2[22]; + DBUG_ENTER("ndbcluster_cache_retrieval_allowed"); DBUG_PRINT("enter", ("dbname: %s, tabname: %s, is_autocommit: %d", dbname, tabname, is_autocommit)); @@ -5590,8 +5596,8 @@ ndbcluster_cache_retrieval_allowed(THD *thd, DBUG_PRINT("exit", ("No, could not retrieve commit_count")); DBUG_RETURN(FALSE); } - DBUG_PRINT("info", ("*engine_data: %llu, commit_count: %llu", - *engine_data, commit_count)); + DBUG_PRINT("info", ("*engine_data: %s, commit_count: %s", + llstr(*engine_data, buff), llstr(commit_count, buff2))); if (commit_count == 0) { *engine_data= 0; /* invalidate */ @@ -5605,7 +5611,8 @@ ndbcluster_cache_retrieval_allowed(THD *thd, DBUG_RETURN(FALSE); } - DBUG_PRINT("exit", ("OK to use cache, engine_data: %llu", *engine_data)); + DBUG_PRINT("exit", ("OK to use cache, engine_data: %s", + llstr(*engine_data, buff))); DBUG_RETURN(TRUE); } @@ -5638,10 +5645,10 @@ ha_ndbcluster::register_query_cache_table(THD *thd, qc_engine_callback *engine_callback, ulonglong *engine_data) { - DBUG_ENTER("ha_ndbcluster::register_query_cache_table"); - + Uint64 commit_count; + char buff[22]; bool is_autocommit= !(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)); - + DBUG_ENTER("ha_ndbcluster::register_query_cache_table"); DBUG_PRINT("enter",("dbname: %s, tabname: %s, is_autocommit: %d", m_dbname, m_tabname, is_autocommit)); @@ -5651,7 +5658,6 @@ ha_ndbcluster::register_query_cache_table(THD *thd, DBUG_RETURN(FALSE); } - Uint64 commit_count; if (ndb_get_commitcount(thd, m_dbname, m_tabname, &commit_count)) { *engine_data= 0; @@ -5660,7 +5666,7 @@ ha_ndbcluster::register_query_cache_table(THD *thd, } *engine_data= commit_count; *engine_callback= ndbcluster_cache_retrieval_allowed; - DBUG_PRINT("exit", ("commit_count: %llu", commit_count)); + DBUG_PRINT("exit", ("commit_count: %s", llstr(commit_count, buff))); DBUG_RETURN(commit_count > 0); } @@ -5841,12 +5847,13 @@ int ndb_get_table_statistics(Ndb* ndb, const char * table, struct Ndb_statistics * ndbstat) { - DBUG_ENTER("ndb_get_table_statistics"); - DBUG_PRINT("enter", ("table: %s", table)); NdbTransaction* pTrans; NdbError error; int retries= 10; int retry_sleep= 30 * 1000; /* 30 milliseconds */ + char buff[22], buff2[22], buff3[22], buff4[22]; + DBUG_ENTER("ndb_get_table_statistics"); + DBUG_PRINT("enter", ("table: %s", table)); do { @@ -5923,10 +5930,13 @@ ndb_get_table_statistics(Ndb* ndb, const char * table, ndbstat->row_size= sum_row_size; ndbstat->fragment_memory= sum_mem; - DBUG_PRINT("exit", ("records: %llu commits: %llu " - "row_size: %llu mem: %llu count: %u", - sum_rows, sum_commits, sum_row_size, - sum_mem, count)); + DBUG_PRINT("exit", ("records: %s commits: %s " + "row_size: %s mem: %s count: %u", + llstr(sum_rows, buff), + llstr(sum_commits, buff2), + llstr(sum_row_size, buff3), + llstr(sum_mem, buff4), + count)); DBUG_RETURN(0); retry: @@ -6461,9 +6471,12 @@ pthread_handler_t ndb_util_thread_func(void *arg __attribute__((unused))) if (ndb_get_table_statistics(ndb, tabname, &stat) == 0) { + char buff[22], buff2[22]; DBUG_PRINT("ndb_util_thread", - ("Table: %s, commit_count: %llu, rows: %llu", - share->table_name, stat.commit_count, stat.row_count)); + ("Table: %s commit_count: %s rows: %s", + share->table_name, + llstr(stat.commit_count, buff), + llstr(stat.row_count, buff2)); } else { diff --git a/sql/table.cc b/sql/table.cc index 9ec9463c33c..cfdb9bd93aa 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -678,6 +678,27 @@ int openfrm(THD *thd, const char *name, const char *alias, uint db_stat, if (outparam->key_info[key].flags & HA_FULLTEXT) outparam->key_info[key].algorithm= HA_KEY_ALG_FULLTEXT; + if (primary_key >= MAX_KEY && (keyinfo->flags & HA_NOSAME)) + { + /* + If the UNIQUE key doesn't have NULL columns and is not a part key + declare this as a primary key. + */ + primary_key=key; + for (i=0 ; i < keyinfo->key_parts ;i++) + { + uint fieldnr= key_part[i].fieldnr; + if (!fieldnr || + outparam->field[fieldnr-1]->null_ptr || + outparam->field[fieldnr-1]->key_length() != + key_part[i].length) + { + primary_key=MAX_KEY; // Can't be used + break; + } + } + } + for (i=0 ; i < keyinfo->key_parts ; key_part++,i++) { if (new_field_pack_flag <= 1) diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 3876de58b0e..0b3928e400b 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -14882,11 +14882,13 @@ static void test_bug17667() printf("success. All queries found intact in the log.\n"); - } else { + } + else + { fprintf(stderr, "Could not find the log file, var/log/master.log, so " - "test_bug17667 is \ninconclusive. Run test from the " - "mysql-test/mysql-test-run* program \nto set up the correct " - "environment for this test.\n\n"); + "test_bug17667 is \ninconclusive. Run test from the " + "mysql-test/mysql-test-run* program \nto set up the correct " + "environment for this test.\n\n"); } if (log_file != NULL) @@ -14896,7 +14898,8 @@ static void test_bug17667() /* - Bug#14169: type of group_concat() result changed to blob if tmp_table was used + Bug#14169: type of group_concat() result changed to blob if tmp_table was + used */ static void test_bug14169() { @@ -14929,7 +14932,62 @@ static void test_bug14169() rc= mysql_query(mysql, "drop table t1"); myquery(rc); -}/* +} + + +/* + Bug#20152: mysql_stmt_execute() writes to MYSQL_TYPE_DATE buffer +*/ + +static void test_bug20152() +{ + MYSQL_BIND bind[1]; + MYSQL_STMT *stmt; + MYSQL_TIME tm; + int rc; + const char *query= "INSERT INTO t1 (f1) VALUES (?)"; + + myheader("test_bug20152"); + + memset(bind, 0, sizeof(bind)); + bind[0].buffer_type= MYSQL_TYPE_DATE; + bind[0].buffer= (void*)&tm; + + tm.year = 2006; + tm.month = 6; + tm.day = 18; + tm.hour = 14; + tm.minute = 9; + tm.second = 42; + + rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1"); + myquery(rc); + rc= mysql_query(mysql, "CREATE TABLE t1 (f1 DATE)"); + myquery(rc); + + stmt= mysql_stmt_init(mysql); + rc= mysql_stmt_prepare(stmt, query, strlen(query)); + check_execute(stmt, rc); + rc= mysql_stmt_bind_param(stmt, bind); + check_execute(stmt, rc); + rc= mysql_stmt_execute(stmt); + check_execute(stmt, rc); + rc= mysql_stmt_close(stmt); + check_execute(stmt, rc); + rc= mysql_query(mysql, "DROP TABLE t1"); + myquery(rc); + + if (tm.hour == 14 && tm.minute == 9 && tm.second == 42) { + if (!opt_silent) + printf("OK!"); + } else { + printf("[14:09:42] != [%02d:%02d:%02d]\n", tm.hour, tm.minute, tm.second); + DIE_UNLESS(0==1); + } +} + + +/* Read and parse arguments and MySQL options from my.cnf */ @@ -15193,6 +15251,7 @@ static struct my_tests_st my_tests[]= { { "test_bug12744", test_bug12744 }, { "test_bug16143", test_bug16143 }, { "test_bug15613", test_bug15613 }, + { "test_bug20152", test_bug20152 }, { "test_bug14169", test_bug14169 }, { "test_bug17667", test_bug17667 }, { 0, 0 } |