Skip to content

Commit 1e8eb4a

Browse files
committed
Move mysql_fetch_fields closer to point of use.
1 parent 5e21bf2 commit 1e8eb4a

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

ext/mysql2/result.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,11 @@ static unsigned int msec_char_to_uint(char *msec_char, size_t len)
191191
return (unsigned int)strtoul(msec_char, NULL, 10);
192192
}
193193

194-
static VALUE rb_mysql_result_fetch_row(VALUE self, ID db_timezone, ID app_timezone, int symbolizeKeys, int asArray, int castBool, int cast, MYSQL_FIELD * fields) {
194+
static VALUE rb_mysql_result_fetch_row(VALUE self, ID db_timezone, ID app_timezone, int symbolizeKeys, int asArray, int castBool, int cast) {
195195
VALUE rowVal;
196196
mysql2_result_wrapper * wrapper;
197197
MYSQL_ROW row;
198+
MYSQL_FIELD * fields;
198199
unsigned int i = 0;
199200
unsigned long * fieldLengths;
200201
void * ptr;
@@ -226,6 +227,9 @@ static VALUE rb_mysql_result_fetch_row(VALUE self, ID db_timezone, ID app_timezo
226227
wrapper->fields = rb_ary_new2(wrapper->numberOfFields);
227228
}
228229

230+
/* get the MySQL field types to convert to Ruby field types */
231+
fields = mysql_fetch_fields(wrapper->result);
232+
229233
for (i = 0; i < wrapper->numberOfFields; i++) {
230234
VALUE field = rb_mysql_result_fetch_field(self, i, symbolizeKeys);
231235
if (row[i]) {
@@ -447,7 +451,6 @@ static VALUE rb_mysql_result_each(int argc, VALUE * argv, VALUE self) {
447451
unsigned long i;
448452
const char * errstr;
449453
int symbolizeKeys, asArray, castBool, cacheRows, cast;
450-
MYSQL_FIELD * fields = NULL;
451454

452455
GetMysql2Result(self, wrapper);
453456

@@ -499,10 +502,8 @@ static VALUE rb_mysql_result_each(int argc, VALUE * argv, VALUE self) {
499502
if (!wrapper->streamingComplete) {
500503
VALUE row;
501504

502-
fields = mysql_fetch_fields(wrapper->result);
503-
504505
do {
505-
row = rb_mysql_result_fetch_row(self, db_timezone, app_timezone, symbolizeKeys, asArray, castBool, cast, fields);
506+
row = rb_mysql_result_fetch_row(self, db_timezone, app_timezone, symbolizeKeys, asArray, castBool, cast);
506507
if (row != Qnil) {
507508
wrapper->numberOfRows++;
508509
if (block != Qnil) {
@@ -542,14 +543,13 @@ static VALUE rb_mysql_result_each(int argc, VALUE * argv, VALUE self) {
542543
} else {
543544
unsigned long rowsProcessed = 0;
544545
rowsProcessed = RARRAY_LEN(wrapper->rows);
545-
fields = mysql_fetch_fields(wrapper->result);
546546

547547
for (i = 0; i < wrapper->numberOfRows; i++) {
548548
VALUE row;
549549
if (cacheRows && i < rowsProcessed) {
550550
row = rb_ary_entry(wrapper->rows, i);
551551
} else {
552-
row = rb_mysql_result_fetch_row(self, db_timezone, app_timezone, symbolizeKeys, asArray, castBool, cast, fields);
552+
row = rb_mysql_result_fetch_row(self, db_timezone, app_timezone, symbolizeKeys, asArray, castBool, cast);
553553
if (cacheRows) {
554554
rb_ary_store(wrapper->rows, i, row);
555555
}

0 commit comments

Comments
 (0)