diff options
author | Andrey Hristov <andrey@php.net> | 2009-05-28 11:47:48 +0000 |
---|---|---|
committer | Andrey Hristov <andrey@php.net> | 2009-05-28 11:47:48 +0000 |
commit | 6c4e8fa4f9f804a636c3d5772e15388f441a21c6 (patch) | |
tree | bcba6c85174b29f4317f08cccea00ddb9e3a2268 /ext/mysqlnd/mysqlnd.h | |
parent | 90a8a7f857836f7aad7b871a5b8969b1294f412f (diff) | |
download | php-git-6c4e8fa4f9f804a636c3d5772e15388f441a21c6.tar.gz |
MFH:
Fix a bug with mysqlnd_fetch_field(_direct()). With mysqlnd the optimised
function was called, which however, doesn't respect that during store the
raw data is not unpacked, to be lazy. The data is unpacked to zvals later,
during every row fetch. However, this way max_length won't be calculated
correctly. So, if a mysqlnd_fetch_field(_direct) call comes we need to
unpack everything and then calculate max_length...and that is expensive,
defies our lazy unpacking optimisation.
Diffstat (limited to 'ext/mysqlnd/mysqlnd.h')
-rw-r--r-- | ext/mysqlnd/mysqlnd.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h index 2d9a1985e8..99fedc9ef8 100644 --- a/ext/mysqlnd/mysqlnd.h +++ b/ext/mysqlnd/mysqlnd.h @@ -158,8 +158,8 @@ PHPAPI enum_func_status _mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQ #define mysqlnd_field_seek(result, ofs) (result)->m.seek_field((result), (ofs)) #define mysqlnd_field_tell(result) ((result)->meta? (result)->meta->current_field:0) #define mysqlnd_fetch_field(result) (result)->m.fetch_field((result) TSRMLS_CC) -#define mysqlnd_fetch_field_direct(result,fnr) ((result)->meta? &((result)->meta->fields[(fnr)]):NULL) -#define mysqlnd_fetch_fields(result) ((result)->meta? (result)->meta->fields: NULL) +#define mysqlnd_fetch_field_direct(result,fnr) (result)->m.fetch_field_direct((result), (fnr) TSRMLS_CC) +#define mysqlnd_fetch_fields(result) (result)->m.fetch_fields((result) TSRMLS_CC) /* mysqlnd metadata */ #define mysqlnd_get_client_info() MYSQLND_VERSION |