diff options
author | Tamas Bunth <tamas.bunth@collabora.co.uk> | 2019-07-31 14:20:21 +0200 |
---|---|---|
committer | Tamás Bunth <btomi96@gmail.com> | 2019-08-06 16:25:29 +0200 |
commit | 2459458a0d9bb194a1f0de63b8b4fd591b2c5d5f (patch) | |
tree | 23b78ed89b4987c6fe1ae5764d4421b9f200313e /connectivity | |
parent | e04322c3adcff323c06b043f19c5b300c5b75d1d (diff) |
mysqlc: Add test for textual blob types
Test setting and querying the following data types:
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
Test them using prepared statements.
Change-Id: I43387034ad8c32c3731cde70a22cc8b3dd652b78
Reviewed-on: https://gerrit.libreoffice.org/76749
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tamás Bunth <btomi96@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/76872
Diffstat (limited to 'connectivity')
-rw-r--r-- | connectivity/qa/connectivity/mysql/mysql.cxx | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/connectivity/qa/connectivity/mysql/mysql.cxx b/connectivity/qa/connectivity/mysql/mysql.cxx index a3d88c065219..ce382f8efba7 100644 --- a/connectivity/qa/connectivity/mysql/mysql.cxx +++ b/connectivity/qa/connectivity/mysql/mysql.cxx @@ -54,6 +54,7 @@ public: void testTimestampField(); void testNumericConversionPrepared(); void testPreparedStmtIsAfterLast(); + void testGetStringFromBloColumnb(); CPPUNIT_TEST_SUITE(MysqlTestDriver); CPPUNIT_TEST(testDBConnection); @@ -64,6 +65,7 @@ public: CPPUNIT_TEST(testTimestampField); CPPUNIT_TEST(testNumericConversionPrepared); CPPUNIT_TEST(testPreparedStmtIsAfterLast); + CPPUNIT_TEST(testGetStringFromBloColumnb); CPPUNIT_TEST_SUITE_END(); }; @@ -429,6 +431,49 @@ void MysqlTestDriver::testPreparedStmtIsAfterLast() bool hasData = xResultSet->next(); CPPUNIT_ASSERT(!hasData); // now we are on "AfterLast" CPPUNIT_ASSERT(xResultSet->isAfterLast()); + xStatement->executeUpdate("DROP TABLE IF EXISTS myTestTable"); +} + +void MysqlTestDriver::testGetStringFromBloColumnb() +{ + Reference<XConnection> xConnection = m_xDriver->connect(m_sUrl, m_infos); + if (!xConnection.is()) + CPPUNIT_ASSERT_MESSAGE("cannot connect to data source!", xConnection.is()); + uno::Reference<XStatement> xStatement = xConnection->createStatement(); + CPPUNIT_ASSERT(xStatement.is()); + xStatement->executeUpdate("DROP TABLE IF EXISTS myTestTable"); + + // create test table + xStatement->executeUpdate("CREATE TABLE myTestTable (id INTEGER PRIMARY KEY, tinytexty " + "TINYTEXT, texty TEXT, mediumTexty MEDIUMTEXT, longtexty LONGTEXT)"); + Reference<XPreparedStatement> xPrepared = xConnection->prepareStatement( + OUString{ "INSERT INTO myTestTable VALUES (?, ?, ?, ?, ?)" }); + Reference<XParameters> xParams(xPrepared, UNO_QUERY); + constexpr int ROW_COUNT = 6; + for (int i = 0; i < ROW_COUNT; ++i) + { + xParams->setShort(1, i); + xParams->setString(2, OUString::number(i)); + xParams->setString(3, OUString::number(i)); + xParams->setString(4, OUString::number(i)); + xParams->setString(5, OUString::number(i)); + xPrepared->executeUpdate(); + } + + // query test table + xPrepared = xConnection->prepareStatement( + "SELECT tinytexty, texty, mediumtexty, longtexty from myTestTable where texty LIKE '3'"); + Reference<XResultSet> xResultSet = xPrepared->executeQuery(); + xResultSet->next(); + Reference<XRow> xRow(xResultSet, UNO_QUERY); + + // all the textual blob types should be able to be queried via getString(). + CPPUNIT_ASSERT_EQUAL(OUString("3"), xRow->getString(1)); + CPPUNIT_ASSERT_EQUAL(OUString("3"), xRow->getString(2)); + CPPUNIT_ASSERT_EQUAL(OUString("3"), xRow->getString(3)); + CPPUNIT_ASSERT_EQUAL(OUString("3"), xRow->getString(4)); + + xStatement->executeUpdate("DROP TABLE IF EXISTS myTestTable"); } CPPUNIT_TEST_SUITE_REGISTRATION(MysqlTestDriver); |