Skip to content

Commit cd510d6

Browse files
author
Bernhard Stöcker
committed
Qt 5.12.12
1 parent ba863e3 commit cd510d6

File tree

3 files changed

+29
-35
lines changed

3 files changed

+29
-35
lines changed

mysql/mysql.pro

+3-12
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,9 @@ TARGET = qsqlmysql
33
HEADERS += $$PWD/qsql_mysql_p.h
44
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
55

6-
#QMAKE_USE += mysql
6+
QMAKE_USE += mysql
77

88
OTHER_FILES += mysql.json
9-
load(qt_build_config)
10-
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
11-
include($$PWD/../qsqldriverbase.pri)
12-
139

14-
contains(QT_ARCH, i386) {
15-
INCLUDEPATH += $$PWD/../../mysql-connector-c-6.1.11-win32\include
16-
LIBS += -L$$PWD/../../mysql-connector-c-6.1.11-win32\lib -llibmysql
17-
} else {
18-
INCLUDEPATH += $$PWD/../../mysql-connector-c-6.1.11-winx64\include
19-
LIBS += -L$$PWD/../../mysql-connector-c-6.1.11-winx64\lib -llibmysql
20-
}
10+
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
11+
include(../qsqldriverbase.pri)

mysql/qsql_mysql.cpp

+17-22
Original file line numberDiff line numberDiff line change
@@ -234,14 +234,14 @@ class QMYSQLResultPrivate: public QSqlResultPrivate
234234
struct QMyField
235235
{
236236
QMyField()
237-
: outField(0), nullIndicator(false), bufLength(0ul),
238-
myField(0), type(QVariant::Invalid)
237+
: outField(0), myField(Q_NULLPTR), bufLength(0ul),
238+
type(QVariant::Invalid), nullIndicator(false)
239239
{}
240240
char *outField;
241-
my_bool nullIndicator;
241+
const MYSQL_FIELD *myField;
242242
ulong bufLength;
243-
MYSQL_FIELD *myField;
244243
QVariant::Type type;
244+
my_bool nullIndicator;
245245
};
246246

247247
QVector<QMyField> fields;
@@ -378,12 +378,10 @@ static bool qIsInteger(int t)
378378

379379
void QMYSQLResultPrivate::bindBlobs()
380380
{
381-
int i;
382-
MYSQL_FIELD *fieldInfo;
383381
MYSQL_BIND *bind;
384382

385-
for(i = 0; i < fields.count(); ++i) {
386-
fieldInfo = fields.at(i).myField;
383+
for (int i = 0; i < fields.count(); ++i) {
384+
const MYSQL_FIELD *fieldInfo = fields.at(i).myField;
387385
if (qIsBlob(inBinds[i].buffer_type) && meta && fieldInfo) {
388386
bind = &inBinds[i];
389387
bind->buffer_length = fieldInfo->max_length;
@@ -396,8 +394,6 @@ void QMYSQLResultPrivate::bindBlobs()
396394

397395
bool QMYSQLResultPrivate::bindInValues()
398396
{
399-
MYSQL_BIND *bind;
400-
char *field;
401397
int i = 0;
402398

403399
if (!meta)
@@ -410,35 +406,34 @@ bool QMYSQLResultPrivate::bindInValues()
410406
inBinds = new MYSQL_BIND[fields.size()];
411407
memset(inBinds, 0, fields.size() * sizeof(MYSQL_BIND));
412408

413-
MYSQL_FIELD *fieldInfo;
409+
const MYSQL_FIELD *fieldInfo;
414410

415411
while((fieldInfo = mysql_fetch_field(meta))) {
412+
MYSQL_BIND *bind = &inBinds[i];
413+
416414
QMyField &f = fields[i];
417415
f.myField = fieldInfo;
418-
416+
bind->buffer_length = f.bufLength = fieldInfo->length + 1;
417+
bind->buffer_type = fieldInfo->type;
419418
f.type = qDecodeMYSQLType(fieldInfo->type, fieldInfo->flags);
420419
if (qIsBlob(fieldInfo->type)) {
421420
// the size of a blob-field is available as soon as we call
422421
// mysql_stmt_store_result()
423422
// after mysql_stmt_exec() in QMYSQLResult::exec()
424-
fieldInfo->length = 0;
423+
bind->buffer_length = f.bufLength = 0;
425424
hasBlobs = true;
426425
} else if (qIsInteger(f.type)) {
427-
fieldInfo->length = 8;
426+
bind->buffer_length = f.bufLength = 8;
428427
} else {
429-
fieldInfo->type = MYSQL_TYPE_STRING;
428+
bind->buffer_type = MYSQL_TYPE_STRING;
430429
}
431-
bind = &inBinds[i];
432-
field = new char[fieldInfo->length + 1];
433-
memset(field, 0, fieldInfo->length + 1);
434430

435-
bind->buffer_type = fieldInfo->type;
436-
bind->buffer = field;
437-
bind->buffer_length = f.bufLength = fieldInfo->length + 1;
438431
bind->is_null = &f.nullIndicator;
439432
bind->length = &f.bufLength;
440433
bind->is_unsigned = fieldInfo->flags & UNSIGNED_FLAG ? 1 : 0;
441-
f.outField=field;
434+
435+
char *field = new char[bind->buffer_length + 1]{};
436+
bind->buffer = f.outField = field;
442437

443438
++i;
444439
}

sqldrivers.pro

+9-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,12 @@ sqldrivers_standalone {
55
load(qt_configure)
66
}
77

8-
SUBDIRS += mysql
8+
qtConfig(sql-psql) : SUBDIRS += psql
9+
qtConfig(sql-mysql) : SUBDIRS += mysql
10+
qtConfig(sql-odbc) : SUBDIRS += odbc
11+
qtConfig(sql-tds) : SUBDIRS += tds
12+
qtConfig(sql-oci) : SUBDIRS += oci
13+
qtConfig(sql-db2) : SUBDIRS += db2
14+
qtConfig(sql-sqlite) : SUBDIRS += sqlite
15+
qtConfig(sql-sqlite2) : SUBDIRS += sqlite2
16+
qtConfig(sql-ibase) : SUBDIRS += ibase

0 commit comments

Comments
 (0)