summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <kostja@bodhi.(none)>2007-08-06 14:29:56 +0400
committerunknown <kostja@bodhi.(none)>2007-08-06 14:29:56 +0400
commitb78131c49488cc99893ff7a3562e5c3095d3b611 (patch)
treea6b0a80b16d66828463726383472fb114d656cb3
parentaf2d0f87c98df8c856e4ff975f84920e97101363 (diff)
parentc7f2a5e71877a74a3b23f38b8f14705296c6a418 (diff)
downloadmariadb-git-b78131c49488cc99893ff7a3562e5c3095d3b611.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into bodhi.(none):/opt/local/work/mysql-5.0-runtime
-rw-r--r--sql/item.cc2
-rw-r--r--tests/mysql_client_test.c54
2 files changed, 53 insertions, 3 deletions
diff --git a/sql/item.cc b/sql/item.cc
index 2fc58eebe75..e286c5e501c 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -1621,7 +1621,7 @@ void Item_ident_for_show::make_field(Send_field *tmp_field)
tmp_field->type=field->type();
tmp_field->flags= field->table->maybe_null ?
(field->flags & ~NOT_NULL_FLAG) : field->flags;
- tmp_field->decimals= 0;
+ tmp_field->decimals= field->decimals();
}
/**********************************************/
diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c
index 75c86902972..cbeea064ffd 100644
--- a/tests/mysql_client_test.c
+++ b/tests/mysql_client_test.c
@@ -15570,7 +15570,7 @@ static void test_bug27876()
int rc;
MYSQL_RES *result;
- char utf8_func[] =
+ unsigned char utf8_func[] =
{
0xd1, 0x84, 0xd1, 0x83, 0xd0, 0xbd, 0xd0, 0xba,
0xd1, 0x86, 0xd0, 0xb8, 0xd0, 0xb9, 0xd0, 0xba,
@@ -15578,7 +15578,7 @@ static void test_bug27876()
0x00
};
- char utf8_param[] =
+ unsigned char utf8_param[] =
{
0xd0, 0xbf, 0xd0, 0xb0, 0xd1, 0x80, 0xd0, 0xb0,
0xd0, 0xbc, 0xd0, 0xb5, 0xd1, 0x82, 0xd1, 0x8a,
@@ -15735,6 +15735,55 @@ static void test_bug27592()
}
+/**
+ Bug#29306 Truncated data in MS Access with decimal (3,1) columns in a VIEW
+*/
+
+static void test_bug29306()
+{
+ MYSQL_FIELD *field;
+ int rc;
+ MYSQL_RES *res;
+
+ DBUG_ENTER("test_bug29306");
+ myheader("test_bug29306");
+
+ rc= mysql_query(mysql, "DROP TABLE IF EXISTS tab17557");
+ myquery(rc);
+ rc= mysql_query(mysql, "DROP VIEW IF EXISTS view17557");
+ myquery(rc);
+ rc= mysql_query(mysql, "CREATE TABLE tab17557 (dd decimal (3,1))");
+ myquery(rc);
+ rc= mysql_query(mysql, "CREATE VIEW view17557 as SELECT dd FROM tab17557");
+ myquery(rc);
+ rc= mysql_query(mysql, "INSERT INTO tab17557 VALUES (7.6)");
+ myquery(rc);
+
+ /* Checking the view */
+ res= mysql_list_fields(mysql, "view17557", NULL);
+ while ((field= mysql_fetch_field(res)))
+ {
+ if (! opt_silent)
+ {
+ printf("field name %s\n", field->name);
+ printf("field table %s\n", field->table);
+ printf("field decimals %d\n", field->decimals);
+ if (field->decimals < 1)
+ printf("Error! No decimals! \n");
+ printf("\n\n");
+ }
+ DIE_UNLESS(field->decimals == 1);
+ }
+ mysql_free_result(res);
+
+ rc= mysql_query(mysql, "DROP TABLE tab17557");
+ myquery(rc);
+ rc= mysql_query(mysql, "DROP VIEW view17557");
+ myquery(rc);
+
+ DBUG_VOID_RETURN;
+}
+
/*
Read and parse arguments and MySQL options from my.cnf
*/
@@ -16019,6 +16068,7 @@ static struct my_tests_st my_tests[]= {
{ "test_bug28505", test_bug28505 },
{ "test_bug28934", test_bug28934 },
{ "test_bug27592", test_bug27592 },
+ { "test_bug29306", test_bug29306 },
{ 0, 0 }
};