From a733c671ae2cd0d41fb6542bf78be4ff1dbe2df2 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Tue, 1 Nov 2016 22:34:06 +0100 Subject: deps: updated for KDE 5_16.08 --- deps/qt5/patches/qt5.qtbug-53237.patch | 90 ++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 deps/qt5/patches/qt5.qtbug-53237.patch (limited to 'deps/qt5/patches/qt5.qtbug-53237.patch') diff --git a/deps/qt5/patches/qt5.qtbug-53237.patch b/deps/qt5/patches/qt5.qtbug-53237.patch new file mode 100644 index 0000000..c6d5739 --- /dev/null +++ b/deps/qt5/patches/qt5.qtbug-53237.patch @@ -0,0 +1,90 @@ +From 8e889378115c69508b050a511621ac8e30ec4158 Mon Sep 17 00:00:00 2001 +From: Jesus Fernandez +Date: Mon, 13 Jun 2016 19:09:15 +0200 +Subject: [PATCH] Fix UNSIGNED values in QMYSQL + +The unsigned flag in columns was ignored when creating the list of +bound values in a mysql table. So the result iteration with +QSqlQuery::next stops after the first wrong truncated value. + +[ChangeLog][QtSql] Fixed QSqlQuery::prepare value truncation error when +using UNSIGNED values in a MySQL database. + +Task-number: QTBUG-53969 +Task-number: QTBUG-53237 +Change-Id: I10d977993445f2794f1dd8c88b2e83517ef524f3 +Reviewed-by: Milian Wolff +--- + src/sql/drivers/mysql/qsql_mysql.cpp | 1 + + tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 39 +++++++++++++++++++++++ + 2 files changed, 40 insertions(+) + +diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp +index 96bdcc4..55bf499 100644 +--- a/src/sql/drivers/mysql/qsql_mysql.cpp ++++ b/src/sql/drivers/mysql/qsql_mysql.cpp +@@ -387,6 +387,7 @@ bool QMYSQLResultPrivate::bindInValues() + bind->buffer_length = f.bufLength = fieldInfo->length + 1; + bind->is_null = &f.nullIndicator; + bind->length = &f.bufLength; ++ bind->is_unsigned = fieldInfo->flags & UNSIGNED_FLAG ? 1 : 0; + f.outField=field; + + ++i; +diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +index bd553d5..f1c4333 100644 +--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp ++++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +@@ -233,6 +233,9 @@ private slots: + void QTBUG_36211_data() { generic_data("QPSQL"); } + void QTBUG_36211(); + ++ void QTBUG_53969_data() { generic_data("QMYSQL"); } ++ void QTBUG_53969(); ++ + void sqlite_constraint_data() { generic_data("QSQLITE"); } + void sqlite_constraint(); + +@@ -3652,6 +3655,42 @@ void tst_QSqlQuery::QTBUG_36211() + } + } + ++void tst_QSqlQuery::QTBUG_53969() ++{ ++ QFETCH( QString, dbName ); ++ QVector values = QVector() << 10 << 20 << 127 << 128 << 1, tableValues; ++ QSqlDatabase db = QSqlDatabase::database( dbName ); ++ CHECK_DATABASE( db ); ++ tableValues.reserve(values.size()); ++ if (tst_Databases::getDatabaseType(db) == QSqlDriver::MySqlServer) { ++ const QString tableName(qTableName("bug53969", __FILE__, db)); ++ tst_Databases::safeDropTable( db, tableName ); ++ ++ QSqlQuery q(db); ++ QVERIFY_SQL(q, exec(QString("CREATE TABLE %1 (id INT AUTO_INCREMENT PRIMARY KEY, " ++ "test_number TINYINT(3) UNSIGNED)") ++ .arg(tableName))); ++ ++ QVERIFY_SQL(q, prepare("INSERT INTO " + tableName + " (test_number) VALUES (:value)")); ++ ++ QVector::iterator begin = values.begin(), end = values.end(), it; ++ for (it = begin; it != end; ++it) { ++ q.bindValue(":value", *it); ++ QVERIFY_SQL(q, exec()); ++ } ++ ++ QVERIFY_SQL(q, prepare("SELECT test_number FROM " + tableName)); ++ QVERIFY_SQL(q, exec()); ++ ++ while (q.next()) { ++ bool ok; ++ tableValues.push_back(q.value(0).toUInt(&ok)); ++ QVERIFY(ok); ++ } ++ QCOMPARE(values, tableValues); ++ } ++} ++ + void tst_QSqlQuery::oraOCINumber() + { + QFETCH( QString, dbName ); -- cgit v1.2.3