diff options
author | antony@pcg5ppc.xiphis.org <> | 2007-07-23 23:35:43 -0700 |
---|---|---|
committer | antony@pcg5ppc.xiphis.org <> | 2007-07-23 23:35:43 -0700 |
commit | 6b38c5b762361ccf6960f448a34e4f3cf42ebad0 (patch) | |
tree | 08599e66c46ca787fcb363a53ba51081b988fd4e /tests/bug25714.c | |
parent | c04ae188f5b9e45ab5610a044bd00b8dacabfe09 (diff) | |
download | mariadb-git-6b38c5b762361ccf6960f448a34e4f3cf42ebad0.tar.gz |
Bug#25714
"getGeneratedKeys() does not work with FEDERATED table"
mysql_insert() expected the storage engine to update the row data
during the write_row() operation with the value of the new auto-
increment field. The field must be updated when only one row has
been inserted as mysql_insert() would ignore the thd->last_insert.
This patch implements HA_STATUS_AUTO support in ha_federated::info()
and ensures that ha_federated::write_row() does update the row's
auto-increment value.
The test case was written in C as the protocol's 'id' value is
accessible through libmysqlclient and not via SQL statements.
mysql-test-run.pl was extended to enable running the test binary.
Diffstat (limited to 'tests/bug25714.c')
-rw-r--r-- | tests/bug25714.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/bug25714.c b/tests/bug25714.c new file mode 100644 index 00000000000..d163b8ad00e --- /dev/null +++ b/tests/bug25714.c @@ -0,0 +1,68 @@ +/* Copyright (C) 2007 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include <mysql.h> +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <assert.h> + +int main (int argc, char **argv) +{ + MYSQL conn; + int OK; + + const char* query4= "INSERT INTO federated.t1 SET Value=54"; + const char* query5= "INSERT INTO federated.t1 SET Value=55"; + + if (argc != 2) + return -1; + + mysql_init(&conn); + if (!mysql_real_connect( + &conn, + "127.0.0.1", + "root", + "", + "test", + atoi(argv[1]), + NULL, + CLIENT_FOUND_ROWS)) + { + fprintf(stderr, "Failed to connect to database: Error: %s\n", + mysql_error(&conn)); + return 1; + } else { + printf("%s\n", mysql_error(&conn)); + } + + OK = mysql_real_query (&conn, query4, strlen(query4)); + + assert(0 == OK); + + printf("%ld inserted\n", + (long) mysql_insert_id(&conn)); + + OK = mysql_real_query (&conn, query5, strlen(query5)); + + assert(0 == OK); + + printf("%ld inserted\n", + (long) mysql_insert_id(&conn)); + + mysql_close(&conn); + + return 0; +}; |