Index: driver/results.c =================================================================== --- driver/results.c (revision 785) +++ driver/results.c (working copy) @@ -701,14 +701,8 @@ case MYSQL_TYPE_TINY_BLOB: case MYSQL_TYPE_MEDIUM_BLOB: case MYSQL_TYPE_BLOB: - case MYSQL_TYPE_DATE: - case MYSQL_TYPE_DATETIME: - case MYSQL_TYPE_NEWDATE: case MYSQL_TYPE_VAR_STRING: case MYSQL_TYPE_STRING: - case MYSQL_TYPE_TIMESTAMP: - case MYSQL_TYPE_TIME: - case MYSQL_TYPE_YEAR: if (field->charsetnr == 63) { if (FieldIdentifier == SQL_DESC_LITERAL_PREFIX) @@ -720,11 +714,17 @@ CharacterAttributePtr, BufferLength, StringLengthPtr, ""); } - else - return copy_str_data(SQL_HANDLE_STMT, stmt, - CharacterAttributePtr, - BufferLength, StringLengthPtr, "'"); + /* FALLTHROUGH */ + case MYSQL_TYPE_DATE: + case MYSQL_TYPE_DATETIME: + case MYSQL_TYPE_NEWDATE: + case MYSQL_TYPE_TIMESTAMP: + case MYSQL_TYPE_TIME: + case MYSQL_TYPE_YEAR: + return copy_str_data(SQL_HANDLE_STMT, stmt, CharacterAttributePtr, + BufferLength, StringLengthPtr, "'"); + default: return copy_str_data(SQL_HANDLE_STMT, stmt, CharacterAttributePtr, Index: test/my_datetime.c =================================================================== --- test/my_datetime.c (revision 785) +++ test/my_datetime.c (working copy) @@ -892,6 +892,38 @@ } +/** + Bug #31009: Wrong SQL_DESC_LITERAL_PREFIX for date-time types +*/ +DECLARE_TEST(t_bug31009) +{ + SQLCHAR data[20]; + SQLSMALLINT len; + + ok_sql(hstmt, "SELECT CAST('2007-01-13' AS DATE) AS col1"); + + ok_stmt(hstmt, SQLColAttribute(hstmt, 1, SQL_DESC_LITERAL_PREFIX, + data, sizeof(data), &len, NULL)); + is_num(len, 1); + is_str(data, "'", 2); + + ok_stmt(hstmt, SQLColAttribute(hstmt, 1, SQL_DESC_LITERAL_SUFFIX, + data, sizeof(data), &len, NULL)); + is_num(len, 1); + is_str(data, "'", 2); + + ok_stmt(hstmt, SQLFetch(hstmt)); + + ok_stmt(hstmt, SQLGetData(hstmt, 1, SQL_C_CHAR, data, sizeof(data), &len)); + is_num(len, 10); + is_str(data, "2007-01-13", 11); + + expect_stmt(hstmt, SQLFetch(hstmt), SQL_NO_DATA_FOUND); + + return OK; +} + + BEGIN_TESTS ADD_TEST(my_ts) ADD_TEST(t_tstotime) @@ -906,6 +938,7 @@ ADD_TEST(t_datecolumns) ADD_TEST(t_bug14414) ADD_TEST(t_bug30939) + ADD_TEST(t_bug31009) END_TESTS Index: ChangeLog =================================================================== --- ChangeLog (revision 786) +++ ChangeLog (working copy) @@ -3,6 +3,8 @@ Functionality added or changed: Bugs fixed: + * The wrong value was returned for SQL_DESC_LITERAL_PREFIX and + SQL_DESC_LITERAL_SUFFIX for date-time fields. (Bug #31009) * The wrong SQLSTATE was reported when the connection to the server was lost. (Bug #3456) * SQLDescribeCol() incorrectly reported whether auto-increment and