diff options
-rw-r--r-- | src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 1 | ||||
-rw-r--r-- | tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 22 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp index d3e37f11d6..a641935dc5 100644 --- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp +++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp @@ -294,6 +294,7 @@ static QMetaType::Type qDecodeMYSQLType(int mysqltype, uint flags) case FIELD_TYPE_TINY_BLOB : case FIELD_TYPE_MEDIUM_BLOB : case FIELD_TYPE_LONG_BLOB : + case FIELD_TYPE_GEOMETRY : type = (flags & BINARY_FLAG) ? QMetaType::QByteArray : QMetaType::QString; break; default: diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp index 4533284a0f..3aa23c504d 100644 --- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp @@ -238,6 +238,9 @@ private slots: void QTBUG_53969_data() { generic_data("QMYSQL"); } void QTBUG_53969(); + void gisPointDatatype_data() { generic_data("QMYSQL"); } + void gisPointDatatype(); + void sqlite_constraint_data() { generic_data("QSQLITE"); } void sqlite_constraint(); @@ -4080,6 +4083,25 @@ void tst_QSqlQuery::QTBUG_53969() } } +void tst_QSqlQuery::gisPointDatatype() +{ + QFETCH(QString, dbName); + QSqlDatabase db = QSqlDatabase::database(dbName); + CHECK_DATABASE(db); + + QSqlQuery sqlQuery(db); + const auto tableName = qTableName("qtbug72140", __FILE__, db); + tst_Databases::safeDropTable(db, tableName); + QString sqlCommand = QStringLiteral("CREATE TABLE %1 (`lonlat_point` POINT NULL) ENGINE = InnoDB;").arg(tableName); + QVERIFY(sqlQuery.exec(sqlCommand)); + sqlCommand = QStringLiteral("INSERT INTO %1(lonlat_point) VALUES(ST_GeomFromText('POINT(1 1)'));").arg(tableName); + QVERIFY(sqlQuery.exec(sqlCommand)); + sqlCommand = QStringLiteral("SELECT * FROM %1;").arg(tableName); + QVERIFY(sqlQuery.exec(sqlCommand)); + QCOMPARE(sqlQuery.record().field(0).type(), QVariant::Type::ByteArray); + QVERIFY(sqlQuery.next()); +} + void tst_QSqlQuery::oraOCINumber() { QFETCH( QString, dbName ); |