mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Enable warnings by default for single value list inserts also when the client protocol is >= 4.1
tests/client_test.c: test for timestamp bug (BR #819) sql/sql_insert.cc: Enable warnings by default for single value list protocol mysql-test/t/warnings.test: Updated test for single value list insert warning mysql-test/r/warnings.result: Updated warnings results
This commit is contained in:
@@ -92,7 +92,7 @@ To build the latest Windows source package from the current
|
|||||||
BitKeeper source tree, use the following instructions. Please
|
BitKeeper source tree, use the following instructions. Please
|
||||||
note that this procedure must be performed on a system
|
note that this procedure must be performed on a system
|
||||||
running a Unix or Unix-like operating system. (The procedure
|
running a Unix or Unix-like operating system. (The procedure
|
||||||
is know to work well on Linux, for example.
|
is know to work well on Linux), for example.
|
||||||
|
|
||||||
- Clone the BitKeeper source tree for MySQL (version 4.1
|
- Clone the BitKeeper source tree for MySQL (version 4.1
|
||||||
or above, as desired). For more information how to clone
|
or above, as desired). For more information how to clone
|
||||||
|
@@ -90,6 +90,9 @@ Warning 1263 Data truncated for column 'b' at row 2
|
|||||||
Warning 1263 Data truncated for column 'b' at row 3
|
Warning 1263 Data truncated for column 'b' at row 3
|
||||||
Warning 1261 Data truncated, NULL supplied to NOT NULL column 'a' at row 4
|
Warning 1261 Data truncated, NULL supplied to NOT NULL column 'a' at row 4
|
||||||
Warning 1263 Data truncated for column 'b' at row 4
|
Warning 1263 Data truncated for column 'b' at row 4
|
||||||
|
insert into t2(b) values('mysqlab');
|
||||||
|
Warnings:
|
||||||
|
Warning 1263 Data truncated for column 'b' at row 1
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
create table t1(a char(10));
|
create table t1(a char(10));
|
||||||
alter table t1 add b char;
|
alter table t1 add b char;
|
||||||
|
@@ -51,6 +51,7 @@ update t1 set c='mysql ab' where c='test';
|
|||||||
update t1 set d=c;
|
update t1 set d=c;
|
||||||
create table t2(a tinyint NOT NULL, b char(3));
|
create table t2(a tinyint NOT NULL, b char(3));
|
||||||
insert into t2 select b,c from t1;
|
insert into t2 select b,c from t1;
|
||||||
|
insert into t2(b) values('mysqlab');
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -231,7 +231,9 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list,
|
|||||||
info.update_fields=&update_fields;
|
info.update_fields=&update_fields;
|
||||||
info.update_values=&update_values;
|
info.update_values=&update_values;
|
||||||
// Don't count warnings for simple inserts
|
// Don't count warnings for simple inserts
|
||||||
if (values_list.elements > 1 || (thd->options & OPTION_WARNINGS))
|
if ((thd->client_capabilities & CLIENT_PROTOCOL_41) ||
|
||||||
|
values_list.elements > 1 ||
|
||||||
|
(thd->options & OPTION_WARNINGS))
|
||||||
thd->count_cuted_fields = 1;
|
thd->count_cuted_fields = 1;
|
||||||
thd->cuted_fields = 0L;
|
thd->cuted_fields = 0L;
|
||||||
table->next_number_field=table->found_next_number_field;
|
table->next_number_field=table->found_next_number_field;
|
||||||
|
@@ -176,7 +176,7 @@ static void client_connect()
|
|||||||
int rc;
|
int rc;
|
||||||
myheader_r("client_connect");
|
myheader_r("client_connect");
|
||||||
|
|
||||||
fprintf(stdout, "\n Establishing a connection ...");
|
fprintf(stdout, "\n Establishing a connection to '%s' ...", opt_host);
|
||||||
|
|
||||||
if (!(mysql = mysql_init(NULL)))
|
if (!(mysql = mysql_init(NULL)))
|
||||||
{
|
{
|
||||||
@@ -7161,6 +7161,11 @@ static void test_mem_overun()
|
|||||||
rc = mysql_real_query(mysql, buffer, length);
|
rc = mysql_real_query(mysql, buffer, length);
|
||||||
myquery(rc);
|
myquery(rc);
|
||||||
|
|
||||||
|
rc = mysql_query(mysql,"select * from t_mem_overun");
|
||||||
|
myquery(rc);
|
||||||
|
|
||||||
|
myassert(1 == my_process_result(mysql));
|
||||||
|
|
||||||
stmt = mysql_prepare(mysql, "select * from t_mem_overun",30);
|
stmt = mysql_prepare(mysql, "select * from t_mem_overun",30);
|
||||||
mystmt_init(stmt);
|
mystmt_init(stmt);
|
||||||
|
|
||||||
@@ -7456,6 +7461,83 @@ static void test_sqlmode()
|
|||||||
mysql_stmt_close(stmt);
|
mysql_stmt_close(stmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
test for timestamp handling
|
||||||
|
*/
|
||||||
|
static void test_ts()
|
||||||
|
{
|
||||||
|
MYSQL_STMT *stmt;
|
||||||
|
MYSQL_BIND bind[2];
|
||||||
|
MYSQL_TIME ts;
|
||||||
|
char strts[30];
|
||||||
|
long length;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
myheader("test_ts");
|
||||||
|
|
||||||
|
rc = mysql_query(mysql,"DROP TABLE IF EXISTS test_ts");
|
||||||
|
myquery(rc);
|
||||||
|
|
||||||
|
rc= mysql_query(mysql,"CREATE TABLE test_ts(a TIMESTAMP)");
|
||||||
|
myquery(rc);
|
||||||
|
|
||||||
|
rc = mysql_commit(mysql);
|
||||||
|
myquery(rc);
|
||||||
|
|
||||||
|
stmt = mysql_prepare(mysql,"INSERT INTO test_ts VALUES(?),(?)",40);
|
||||||
|
mystmt_init(stmt);
|
||||||
|
|
||||||
|
ts.year= 2003;
|
||||||
|
ts.month= 07;
|
||||||
|
ts.day= 12;
|
||||||
|
ts.hour= 21;
|
||||||
|
ts.minute= 07;
|
||||||
|
ts.second= 46;
|
||||||
|
length= (long)(strmov(strts,"2003-07-12 21:07:46") - strts);
|
||||||
|
|
||||||
|
bind[0].buffer_type= MYSQL_TYPE_STRING;
|
||||||
|
bind[0].buffer= (char *)strts;
|
||||||
|
bind[0].buffer_length= sizeof(strts);
|
||||||
|
bind[0].is_null= 0;
|
||||||
|
bind[0].length= &length;
|
||||||
|
|
||||||
|
bind[1].buffer_type= MYSQL_TYPE_TIMESTAMP;
|
||||||
|
bind[1].buffer= (char *)&ts;
|
||||||
|
bind[1].buffer_length= sizeof(ts);
|
||||||
|
bind[1].is_null= 0;
|
||||||
|
bind[1].length= 0;
|
||||||
|
|
||||||
|
rc = mysql_bind_param(stmt, bind);
|
||||||
|
mystmt(stmt,rc);
|
||||||
|
|
||||||
|
rc = mysql_execute(stmt);
|
||||||
|
mystmt(stmt,rc);
|
||||||
|
|
||||||
|
mysql_stmt_close(stmt);
|
||||||
|
|
||||||
|
verify_col_data("test_ts","a","2003-07-12 21:07:46");
|
||||||
|
|
||||||
|
stmt = mysql_prepare(mysql,"SELECT a FROM test_ts WHERE a >= ?",50);
|
||||||
|
mystmt_init(stmt);
|
||||||
|
|
||||||
|
rc = mysql_bind_param(stmt, bind);
|
||||||
|
mystmt(stmt,rc);
|
||||||
|
|
||||||
|
rc = mysql_execute(stmt);
|
||||||
|
mystmt(stmt,rc);
|
||||||
|
|
||||||
|
rc = mysql_fetch(stmt);
|
||||||
|
mystmt(stmt,rc);
|
||||||
|
|
||||||
|
rc = mysql_fetch(stmt);
|
||||||
|
mystmt(stmt,rc);
|
||||||
|
|
||||||
|
rc = mysql_fetch(stmt);
|
||||||
|
myassert(rc == MYSQL_NO_DATA);
|
||||||
|
|
||||||
|
mysql_stmt_close(stmt);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Read and parse arguments and MySQL options from my.cnf
|
Read and parse arguments and MySQL options from my.cnf
|
||||||
@@ -7703,6 +7785,7 @@ int main(int argc, char **argv)
|
|||||||
test_fetch_offset(); /* to test mysql_fetch_column with offset */
|
test_fetch_offset(); /* to test mysql_fetch_column with offset */
|
||||||
test_fetch_column(); /* to test mysql_fetch_column */
|
test_fetch_column(); /* to test mysql_fetch_column */
|
||||||
test_sqlmode(); /* test for SQL_MODE */
|
test_sqlmode(); /* test for SQL_MODE */
|
||||||
|
test_ts(); /* test for timestamp BR#819 */
|
||||||
|
|
||||||
end_time= time((time_t *)0);
|
end_time= time((time_t *)0);
|
||||||
total_time+= difftime(end_time, start_time);
|
total_time+= difftime(end_time, start_time);
|
||||||
|
Reference in New Issue
Block a user