summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/sqldrivers/mysql/qsql_mysql.cpp1
-rw-r--r--tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp22
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 );