diff --git a/Data/MySQL/src/ResultMetadata.cpp b/Data/MySQL/src/ResultMetadata.cpp index 3d631c0d3..9c8cc31a1 100644 --- a/Data/MySQL/src/ResultMetadata.cpp +++ b/Data/MySQL/src/ResultMetadata.cpp @@ -61,6 +61,7 @@ namespace case MYSQL_TYPE_DATE: case MYSQL_TYPE_TIME: case MYSQL_TYPE_DATETIME: + case MYSQL_TYPE_TIMESTAMP: return sizeof(MYSQL_TIME); case MYSQL_TYPE_DECIMAL: @@ -118,6 +119,7 @@ namespace return Poco::Data::MetaColumn::FDT_TIME; case MYSQL_TYPE_DATETIME: + case MYSQL_TYPE_TIMESTAMP: return Poco::Data::MetaColumn::FDT_TIMESTAMP; case MYSQL_TYPE_STRING: diff --git a/Data/MySQL/testsuite/src/MySQLTest.cpp b/Data/MySQL/testsuite/src/MySQLTest.cpp index bdfb68377..93d675d50 100644 --- a/Data/MySQL/testsuite/src/MySQLTest.cpp +++ b/Data/MySQL/testsuite/src/MySQLTest.cpp @@ -422,6 +422,8 @@ void MySQLTest::testDateTime() _pExecutor->date(); recreatePersonTimeTable(); _pExecutor->time(); + recreatePersonTimestampTable(); + _pExecutor->timestamp(); } @@ -769,6 +771,15 @@ void MySQLTest::recreatePersonTimeTable() } +void MySQLTest::recreatePersonTimestampTable() +{ + dropTable("Person"); + try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Birthday TIMESTAMP(6))", now; } + catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail ("recreatePersonTimestampTable()"); } + catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail ("recreatePersonTimestampTable()"); } +} + + void MySQLTest::recreatePersonLongBLOBTable() { dropTable("Person"); diff --git a/Data/MySQL/testsuite/src/MySQLTest.h b/Data/MySQL/testsuite/src/MySQLTest.h index 3d75d7f45..b420e4580 100644 --- a/Data/MySQL/testsuite/src/MySQLTest.h +++ b/Data/MySQL/testsuite/src/MySQLTest.h @@ -119,6 +119,7 @@ private: void recreatePersonDateTimeTable(); void recreatePersonDateTable(); void recreatePersonTimeTable(); + void recreatePersonTimestampTable(); void recreatePersonLongBLOBTable(); void recreatePersonJSONTable(); void recreateStringsTable(); diff --git a/Data/MySQL/testsuite/src/SQLExecutor.cpp b/Data/MySQL/testsuite/src/SQLExecutor.cpp index e8a22b7c1..450ef507c 100644 --- a/Data/MySQL/testsuite/src/SQLExecutor.cpp +++ b/Data/MySQL/testsuite/src/SQLExecutor.cpp @@ -1364,6 +1364,34 @@ void SQLExecutor::time() } +void SQLExecutor::timestamp() +{ + std::string funct = "timestamp()"; + std::string lastName("Bart"); + std::string firstName("Simpson"); + std::string address("Springfield"); + DateTime birthday(1980, 4, 1, 5, 45, 12, 354, 879); + + int count = 0; + try { *_pSession << "INSERT INTO Person VALUES (?,?,?,?)", use(lastName), use(firstName), use(address), use(birthday), now; } + catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail (funct); } + catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail (funct); } + try { *_pSession << "SELECT COUNT(*) FROM Person", into(count), now; } + catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail (funct); } + catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail (funct); } + assertTrue (count == 1); + + DateTime bd; + assertTrue (bd != birthday); + try { *_pSession << "SELECT Birthday FROM Person", into(bd), now; } + catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail (funct); } + catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail (funct); } + assertTrue (bd == birthday); + + std::cout << std::endl << RecordSet(*_pSession, "SELECT * FROM Person"); +} + + void SQLExecutor::blob(unsigned int bigSize) { std::string funct = "blob()"; diff --git a/Data/MySQL/testsuite/src/SQLExecutor.h b/Data/MySQL/testsuite/src/SQLExecutor.h index e11811853..315eb4d12 100644 --- a/Data/MySQL/testsuite/src/SQLExecutor.h +++ b/Data/MySQL/testsuite/src/SQLExecutor.h @@ -83,6 +83,7 @@ public: void dateTime(); void date(); void time(); + void timestamp(); void longBlob(); void json(); void unsignedInts();