Pantek Library
Hosting Provided By
CybrHost
High Speed Hosting

PHP mysqlnd svn commit: r791 - in trunk: mysqlnd tests/ext/mysqli

From: <ahristov(at)mysql.com>
Date: Wed Jul 18 2007 - 18:00:11 EDT


Author: ahristov
Date: 2007-07-19 00:00:11 +0200 (Thu, 19 Jul 2007) New Revision: 791

Modified:

   trunk/mysqlnd/mysqlnd.h
   trunk/mysqlnd/mysqlnd_result.c
   trunk/mysqlnd/mysqlnd_result_meta.c
   trunk/tests/ext/mysqli/045.phpt
   trunk/tests/ext/mysqli/mysqli_stmt_bind_param_references.phpt
   trunk/tests/ext/mysqli/mysqli_stmt_get_result_metadata.phpt
Log:
Test fixes + moving some metadata methods outside of MYSQLND_RES to MYSQLND_RES_METADATA

Modified: trunk/mysqlnd/mysqlnd.h


  • trunk/mysqlnd/mysqlnd.h 2007-07-18 19:37:57 UTC (rev 790) +++ trunk/mysqlnd/mysqlnd.h 2007-07-18 22:00:11 UTC (rev 791) @@ -399,6 +399,8 @@

 struct st_mysqlnd_res_meta_methods {
+ MYSQLND_FIELD * (*fetch_field)(MYSQLND_RES_METADATA * const meta);
+ MYSQLND_FIELD_OFFSET (*field_tell)(const MYSQLND_RES_METADATA * const meta);

 	enum_func_status		(*read_metadata)(MYSQLND_RES_METADATA * const meta, MYSQLND *conn TSRMLS_DC);
 	MYSQLND_RES_METADATA *	(*clone_metadata)(const MYSQLND_RES_METADATA * const meta, zend_bool persistent);
 	void					(*free_metadata)(MYSQLND_RES_METADATA *meta, zend_bool persistent TSRMLS_DC);
@@ -716,7 +718,7 @@
 #define mysqlnd_fetch_lengths(result)	((result)->m.fetch_lengths? (result)->m.fetch_lengths((result)):NULL)
 
 #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_field_tell(result)				(result)->meta? (result)->meta->current_field:0)
 #define mysqlnd_fetch_field(result)				(result)->m.fetch_field((result))
 #define mysqlnd_fetch_field_direct(result,fnr)	((result)->meta? &((result)->meta->fields[(fnr)]):NULL)
 

Modified: trunk/mysqlnd/mysqlnd_result.c


  • trunk/mysqlnd/mysqlnd_result.c 2007-07-18 19:37:57 UTC (rev 790) +++ trunk/mysqlnd/mysqlnd_result.c 2007-07-18 22:00:11 UTC (rev 791) @@ -889,9 +889,7 @@ static MYSQLND_FIELD * MYSQLND_METHOD(mysqlnd_res, fetch_field)(MYSQLND_RES * const result) { - if (!result->meta || result->meta->current_field >= result->field_count) - return NULL; - return &result->meta->fields[result->meta->current_field++];
    + return result->meta? result->meta->m->fetch_field(result->meta):NULL;
    } /* }}} */

@@ -925,7 +923,7 @@
 static MYSQLND_FIELD_OFFSET
 MYSQLND_METHOD(mysqlnd_res, field_tell)(const MYSQLND_RES * const result)  {

-	return result->meta? result->meta->current_field:0;

+ return result->meta? result->meta->m->field_tell(result->meta):0;
 }
 /* }}} */  

Modified: trunk/mysqlnd/mysqlnd_result_meta.c


  • trunk/mysqlnd/mysqlnd_result_meta.c 2007-07-18 19:37:57 UTC (rev 790) +++ trunk/mysqlnd/mysqlnd_result_meta.c 2007-07-18 22:00:11 UTC (rev 791) @@ -315,8 +315,28 @@ } /* }}} */
+/* {{{ mysqlnd_res_meta::fetch_field */
+static MYSQLND_FIELD *
+MYSQLND_METHOD(mysqlnd_res_meta, fetch_field)(MYSQLND_RES_METADATA * const meta)
+{

+ if (meta->current_field >= meta->field_count)
+ return NULL;
+ return &meta->fields[meta->current_field++];
+} +/* }}} */ +/* {{{ mysqlnd_res::field_tell */ +static MYSQLND_FIELD_OFFSET +MYSQLND_METHOD(mysqlnd_res_meta, field_tell)(const MYSQLND_RES_METADATA * const meta) +{
+ return meta->current_field;
+} +/* }}} */

+
+
 MYSQLND_CLASS_METHODS_START(mysqlnd_res_meta)

+ MYSQLND_METHOD(mysqlnd_res_meta, fetch_field),
+ MYSQLND_METHOD(mysqlnd_res_meta, field_tell),
MYSQLND_METHOD(mysqlnd_res_meta, read_metadata), MYSQLND_METHOD(mysqlnd_res_meta, clone_metadata), MYSQLND_METHOD(mysqlnd_res_meta, free),

Modified: trunk/tests/ext/mysqli/045.phpt


  • trunk/tests/ext/mysqli/045.phpt 2007-07-18 19:37:57 UTC (rev 790) +++ trunk/tests/ext/mysqli/045.phpt 2007-07-18 22:00:11 UTC (rev 791) @@ -31,6 +31,11 @@ mysqli_bind_result($stmt, $c1, $c2); mysqli_fetch($stmt); mysqli_stmt_close($stmt);
    + if (ini_get("unicode.semantics") && mysqli_get_server_version($link) < 50000) {
    + /* variables are binary */
    + settype($c1, "unicode");
    + settype($c2, "unicode");
    + }
    $test = array ($c1,$c2);
Do you need help?X

         var_dump($test);
@@ -53,4 +58,4 @@

   [1]=>
   unicode(%d) "%s"
 }
-done!
\ No newline at end of file
+done!

Modified: trunk/tests/ext/mysqli/mysqli_stmt_bind_param_references.phpt


  • trunk/tests/ext/mysqli/mysqli_stmt_bind_param_references.phpt 2007-07-18 19:37:57 UTC (rev 790) +++ trunk/tests/ext/mysqli/mysqli_stmt_bind_param_references.phpt 2007-07-18 22:00:11 UTC (rev 791) @@ -50,8 +50,9 @@
 		return true;
 	}

+ // or we will get dups around [28]
+ mysqli_query($link, "ALTER TABLE test DROP PRIMARY KEY");
- $stmt = mysqli_stmt_init($link);
Do you need more help?X
if (!mysqli_stmt_prepare($stmt, "INSERT INTO test(id, label) VALUES (?, ?)")) printf("[001] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
@@ -155,7 +156,7 @@  
 	if (true !== ($tmp = mysqli_stmt_bind_param($stmt, "is", $id_ref, $label_ref)))
 		printf("[027] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp);
-	if (true !== mysqli_stmt_execute($stmt))

+ if (true !== @mysqli_stmt_execute($stmt))
printf("[028] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); findRow(29, $link, $id_ref, $label_ref); @@ -196,4 +197,4 @@ print "done!";

 ?>
 --EXPECTF--
-done!
\ No newline at end of file
+done!

Modified: trunk/tests/ext/mysqli/mysqli_stmt_get_result_metadata.phpt


  • trunk/tests/ext/mysqli/mysqli_stmt_get_result_metadata.phpt 2007-07-18 19:37:57 UTC (rev 790) +++ trunk/tests/ext/mysqli/mysqli_stmt_get_result_metadata.phpt 2007-07-18 22:00:11 UTC (rev 791) @@ -14,190 +14,191 @@
 	if (!mysqli_stmt_prepare($stmt, "SELECT id, label FROM test ORDER BY id ASC LIMIT 3"))
 		printf("[002] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
-		
-    if (!mysqli_stmt_execute($stmt))
-        printf("[003] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
 
-    if (!is_object($res = mysqli_stmt_get_result($stmt)) || 'mysqli_result' != get_class($res)) {
-        printf("[004] Expecting object/mysqli_result got %s/%s, [%d] %s\n",
-            gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
-    }

+ if (!mysqli_stmt_execute($stmt))
+ printf("[003] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
- if (!is_object($res_meta = mysqli_stmt_result_metadata($stmt)) || - 'mysqli_result' != get_class($res_meta)) { - printf("[005] Expecting object/mysqli_result got %s/%s, [%d] %s\n", - gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); - } - - var_dump(mysqli_fetch_assoc($res)); - var_dump(mysqli_fetch_assoc($res_meta)); - - mysqli_free_result($res); - mysqli_free_result($res_meta); - mysqli_stmt_close($stmt); - - // !mysqli_stmt_prepare($stmt, "SELECT id, label, id + 1 as _id, concat(label, '_') _label FROM test as _test ORDER BY id ASC LIMIT 3") || - if (!($stmt = mysqli_stmt_init($link)) ||
Can we help you?X
- !mysqli_stmt_prepare($stmt, "SELECT id , label, id + 1 AS _id, label AS _label, null AS _null, CONCAT(label, '_') _label_concat FROM test _test ORDER BY id ASC LIMIT 3") || - !mysqli_stmt_execute($stmt)) - printf("[006] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); - - if (!is_object($res = mysqli_stmt_get_result($stmt)) || 'mysqli_result' != get_class($res)) { - printf("[007] Expecting object/mysqli_result got %s/%s, [%d] %s\n", - gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); - }
+ if (!is_object($res = mysqli_stmt_get_result($stmt)) || 'mysqli_result' != get_class($res)) {
+ printf("[004] Expecting object/mysqli_result got %s/%s, [%d] %s\n",
+ gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+ }
- if (!is_object($res_meta = mysqli_stmt_result_metadata($stmt)) || - 'mysqli_result' != get_class($res_meta)) { - printf("[008] Expecting object/mysqli_result got %s/%s, [%d] %s\n", - gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt)); - } - - if (($tmp1 = mysqli_num_fields($res)) !== ($tmp2 = mysqli_num_fields($res_meta))) { - printf("[009] %s/%s !== %s/%s\n", gettype($tmp1), $tmp1, gettype($tmp2), $tmp2); - } - - /* - if (($tmp1 = mysqli_field_count($link)) !== ($tmp2 = $res->field_count())) - printf("[010] %s/%s !== %s/%s\n", gettype($tmp1), $tmp1, gettype($tmp2), $tmp2);
+ if (!is_object($res_meta = mysqli_stmt_result_metadata($stmt)) ||
+ 'mysqli_result' != get_class($res_meta)) {
+ printf("[005] Expecting object/mysqli_result got %s/%s, [%d] %s\n",
+ gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+ }
- if (($tmp1 = $res_meta->field_count()) !== $tmp2) - printf("[011] %s/%s !== %s/%s\n", gettype($tmp1), $tmp1, gettype($tmp2), $tmp2); - */ - - if (($tmp1 = mysqli_field_tell($res)) !== ($tmp2 = $res_meta->current_field)) - printf("[012] %s/%s !== %s/%s\n", gettype($tmp1), $tmp1, gettype($tmp2), $tmp2); - - if (0 !== $tmp1) - printf("[013] Expecting int/0 got %s/%s\n", gettype($tmp1), $tmp1); - - $fields = array();
Can't find what you're looking for?X
- while ($info = $res->fetch_field()) - $fields['res'][] = $info; - var_dump($info); - while ($info = $res_meta->fetch_field()) - $fields['meta'][] = $info; - var_dump($info); - $fields['all_res'] = $res->fetch_fields(); - $fields['all_meta'] = $res_meta->fetch_fields(); - - if (count($fields['res']) != count($fields['meta'])) { - printf("[014] stmt_get_result indicates %d fields, stmt_result_metadata indicates %d fields\n", - count($fields['res']), - count($fields['meta'])); - } - - foreach ($fields['res'] as $k => $info) { - printf("%s\n", $info->name); - if ($info->name !== $fields['meta'][$k]->name) - printf("[015 - %d] Expecting name %s/%s got %s/%s\n", - $k, gettype($info->name), $info->name, gettype($fields['meta'][$k]->name), $fields['meta'][$k]->name);
+ var_dump(mysqli_fetch_assoc($res));
+ var_dump(mysqli_fetch_assoc($res_meta));
- if ($info->orgname !== $fields['meta'][$k]->orgname) - printf("[016 - %d] Expecting orgname %s/%s got %s/%s\n", - $k, gettype($info->orgname), $info->orgname, gettype($fields['meta'][$k]->orgname), $fields['meta'][$k]->orgname);
+ mysqli_free_result($res);
+ mysqli_free_result($res_meta);
+ mysqli_stmt_close($stmt);
- if ($info->table !== $fields['meta'][$k]->table) - printf("[017 - %d] Expecting table %s/%s got %s/%s\n", - $k, gettype($info->table), $info->table, gettype($fields['meta'][$k]->table), $fields['meta'][$k]->table);
+ // !mysqli_stmt_prepare($stmt, "SELECT id, label, id + 1 as _id, concat(label, '_') _label FROM test as _test ORDER BY id ASC LIMIT 3") ||
+ if (!($stmt = mysqli_stmt_init($link)) ||
+ !mysqli_stmt_prepare($stmt, "SELECT id , label, id + 1 AS _id, label AS _label, null AS _null, CONCAT(label, '_') _label_concat FROM test _test ORDER BY id ASC LIMIT 3") ||
+ !mysqli_stmt_execute($stmt))
+ printf("[006] [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
- if ($info->orgtable !== $fields['meta'][$k]->orgtable) - printf("[018 - %d] Expecting orgtable %s/%s got %s/%s\n", - $k, gettype($info->orgtable), $info->orgtable, gettype($fields['meta'][$k]->orgtable), $fields['meta'][$k]->orgtable);
+ if (!is_object($res = mysqli_stmt_get_result($stmt)) || 'mysqli_result' != get_class($res)) {
+ printf("[007] Expecting object/mysqli_result got %s/%s, [%d] %s\n",
+ gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+ }
- if ($info->def !== $fields['meta'][$k]->def) - printf("[019 - %d] Expecting def %s/%s got %s/%s\n",
Don't know where to look next?X
- $k, gettype($info->def), $info->def, gettype($fields['meta'][$k]->def), $fields['meta'][$k]->def);
+ if (!is_object($res_meta = mysqli_stmt_result_metadata($stmt)) ||
+ 'mysqli_result' != get_class($res_meta)) {
+ printf("[008] Expecting object/mysqli_result got %s/%s, [%d] %s\n",
+ gettype($res), $res, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+ }
- if ($info->max_length !== $fields['meta'][$k]->max_length) - printf("[020 - %d] Expecting max_length %s/%s got %s/%s\n", - $k, gettype($info->max_length), $info->max_length, gettype($fields['meta'][$k]->max_length), $fields['meta'][$k]->max_length);
+ if (($tmp1 = mysqli_num_fields($res)) !== ($tmp2 = mysqli_num_fields($res_meta))) {
+ printf("[009] %s/%s !== %s/%s\n", gettype($tmp1), $tmp1, gettype($tmp2), $tmp2);
+ }
- if ($info->length !== $fields['meta'][$k]->length) - printf("[021 - %d] Expecting length %s/%s got %s/%s\n", - $k, gettype($info->length), $info->length, gettype($fields['meta'][$k]->length), $fields['meta'][$k]->length);
+ /*
+ if (($tmp1 = mysqli_field_count($link)) !== ($tmp2 = $res->field_count()))
+ printf("[010] %s/%s !== %s/%s\n", gettype($tmp1), $tmp1, gettype($tmp2), $tmp2);
- if ($info->charsetnr !== $fields['meta'][$k]->charsetnr) - printf("[022 - %d] Expecting charsetnr %s/%s got %s/%s\n", - $k, gettype($info->charsetnr), $info->charsetnr, gettype($fields['meta'][$k]->charsetnr), $fields['meta'][$k]->charsetnr);
+ if (($tmp1 = $res_meta->field_count()) !== $tmp2)
+ printf("[011] %s/%s !== %s/%s\n", gettype($tmp1), $tmp1, gettype($tmp2), $tmp2);
+ */
- if ($info->flags !== $fields['meta'][$k]->flags) - printf("[023 - %d] Expecting flags %s/%s got %s/%s\n", - $k, gettype($info->flags), $info->flags, gettype($fields['meta'][$k]->flags), $fields['meta'][$k]->flags);
+ if (($tmp1 = mysqli_field_tell($res)) !== ($tmp2 = $res_meta->current_field))
+ printf("[012] %s/%s !== %s/%s\n", gettype($tmp1), $tmp1, gettype($tmp2), $tmp2);
- if ($info->type !== $fields['meta'][$k]->type) - printf("[024 - %d] Expecting type %s/%s got %s/%s\n", - $k, gettype($info->type), $info->type, gettype($fields['meta'][$k]->type), $fields['meta'][$k]->type);
+ if (0 !== $tmp1)
+ printf("[013] Expecting int/0 got %s/%s\n", gettype($tmp1), $tmp1);
- if ($info->decimals !== $fields['meta'][$k]->decimals) - printf("[025 - %d] Expecting decimals %s/%s got %s/%s\n", - $k, getdecimals($info->decimals), $info->decimals, getdecimals($fields['meta'][$k]->decimals), $fields['meta'][$k]->decimals); -
Confused? Frustrated?X
- if ($fields['all_res'][$k] != $fields['all_meta'][$k]) { - printf("[026 - %d] fetch_fields() seems to have returned different data, dumping\n", $k); - var_export($fields['all_res'][$k]); - var_export($fields['all_meta'][$k]); - } - - } - - $num = count($fields['res']); - for ($i = 0; $i < 100; $i++) { - $pos = mt_rand(-1, $num + 1); - if ($pos > 0 && $pos < $num) { - if (true !== mysqli_field_seek($res, $pos)) - printf("[027] field_seek(res) failed\n"); - if (true !== $res_meta->field_seek($pos)) - printf("[028] field_seek(res__meta) failed\n"); - - $tmp1 = $res->fetch_field(); - $tmp2 = mysqli_fetch_field($res_meta); - if ($tmp1 != $tmp2) { - printf("[029] Field info differs, dumping data\n"); - var_export($tmp1); - var_export($tmp2); - } - - if ($tmp1 != $fields['res'][$pos]) { - printf("[030] Field info differs, dumping data\n"); - var_export($tmp1); - var_export($fields['res'][$pos]); - } - - if ($pos !== ($tmp = mysqli_field_tell($res))) - printf("[031] Expecting %s/%s got %s/%s\n", - gettype($pos), $pos, gettype($tmp), $tmp); - - if ($pos !== ($tmp = mysqli_field_tell($res_meta))) - printf("[032] Expecting %s/%s got %s/%s\n", - gettype($pos), $pos, gettype($tmp), $tmp); - - - } else { - - if (false !== @mysqli_field_seek($res, $pos))
Call Pantek today for Open Source Technical Support at 1-877-546-8934 - 24/7/365X
- printf("[033] field_seek(res) did not fail\n"); - if (false !== @mysqli_field_seek($res_meta, $pos)) - printf("[033] field_seek(res_meta) did not fail\n"); - - } - }
+ $fields = array();
+ while ($info = $res->fetch_field())
+ $fields['res'][] = $info;
+ var_dump($info);
+ while ($info = $res_meta->fetch_field())
+ $fields['meta'][] = $info;
+ var_dump($info);
+ $fields['all_res'] = $res->fetch_fields();
+ $fields['all_meta'] = $res_meta->fetch_fields();
- $res->free_result(); - mysqli_free_result($res_meta); - - var_dump(mysqli_fetch_field($res)); - - mysqli_stmt_close($stmt); - - var_dump(mysqli_fetch_field($res)); - - mysqli_close($link); - - var_dump(mysqli_fetch_field($res)); -

- print "done!\n";
-
+ if (count($fields['res']) != count($fields['meta'])) {
+ printf("[014] stmt_get_result indicates %d fields, stmt_result_metadata indicates %d fields\n",
+ count($fields['res']),
+ count($fields['meta']));
+ }
+

+ foreach ($fields['res'] as $k => $info) {
+ printf("%s\n", $info->name);
+ if ($info->name !== $fields['meta'][$k]->name)
+ printf("[015 - %d] Expecting name %s/%s got %s/%s\n",
+ $k, gettype($info->name), $info->name, gettype($fields['meta'][$k]->name), $fields['meta'][$k]->name);
+
+ if ($info->orgname !== $fields['meta'][$k]->orgname)
+ printf("[016 - %d] Expecting orgname %s/%s got %s/%s\n",
+ $k, gettype($info->orgname), $info->orgname, gettype($fields['meta'][$k]->orgname), $fields['meta'][$k]->orgname);
+
+ if ($info->table !== $fields['meta'][$k]->table)
+ printf("[017 - %d] Expecting table %s/%s got %s/%s\n",
+ $k, gettype($info->table), $info->table, gettype($fields['meta'][$k]->table), $fields['meta'][$k]->table);
+
+ if ($info->orgtable !== $fields['meta'][$k]->orgtable)
+ printf("[018 - %d] Expecting orgtable %s/%s got %s/%s\n",
+ $k, gettype($info->orgtable), $info->orgtable, gettype($fields['meta'][$k]->orgtable), $fields['meta'][$k]->orgtable);
+
+ if ($info->def !== $fields['meta'][$k]->def)
+ printf("[019 - %d] Expecting def %s/%s got %s/%s\n",
+ $k, gettype($info->def), $info->def, gettype($fields['meta'][$k]->def), $fields['meta'][$k]->def);
+/*
+ if ($info->max_length !== $fields['meta'][$k]->max_length)
+ printf("[020 - %d] Expecting max_length %s/%s got %s/%s\n",
+ $k, gettype($info->max_length), $info->max_length, gettype($fields['meta'][$k]->max_length), $fields['meta'][$k]->max_length);
+*/
+ if ($info->length !== $fields['meta'][$k]->length)
+ printf("[021 - %d] Expecting length %s/%s got %s/%s\n",
+ $k, gettype($info->length), $info->length, gettype($fields['meta'][$k]->length), $fields['meta'][$k]->length);
+
+ if ($info->charsetnr !== $fields['meta'][$k]->charsetnr)
+ printf("[022 - %d] Expecting charsetnr %s/%s got %s/%s\n",
+ $k, gettype($info->charsetnr), $info->charsetnr, gettype($fields['meta'][$k]->charsetnr), $fields['meta'][$k]->charsetnr);
+
+ if ($info->flags !== $fields['meta'][$k]->flags)
+ printf("[023 - %d] Expecting flags %s/%s got %s/%s\n",
+ $k, gettype($info->flags), $info->flags, gettype($fields['meta'][$k]->flags), $fields['meta'][$k]->flags);
+
+ if ($info->type !== $fields['meta'][$k]->type)
+ printf("[024 - %d] Expecting type %s/%s got %s/%s\n",
+ $k, gettype($info->type), $info->type, gettype($fields['meta'][$k]->type), $fields['meta'][$k]->type);
+
+ if ($info->decimals !== $fields['meta'][$k]->decimals)
+ printf("[025 - %d] Expecting decimals %s/%s got %s/%s\n",
+ $k, getdecimals($info->decimals), $info->decimals, getdecimals($fields['meta'][$k]->decimals), $fields['meta'][$k]->decimals);
+
+ /* Make them equal for the check */
+ $tmp = $fields['all_res'][$k]->max_length;
+ $fields['all_res'][$k]->max_length = $fields['all_meta'][$k]->max_length;
+
+ if ($fields['all_res'][$k] != $fields['all_meta'][$k]) {
+ printf("[026 - %d] fetch_fields() seems to have returned different data, dumping\n", $k);
+ var_dump($fields['all_res'][$k]);
+ var_dump($fields['all_meta'][$k]);
+ }
+ $fields['all_res'][$k]->max_length = $tmp;
+ }
+
+ $num = count($fields['res']);
+ for ($i = 0; $i < 100; $i++) {
+ $pos = mt_rand(-1, $num + 1);
+ if ($pos > 0 && $pos < $num) {
+ if (true !== mysqli_field_seek($res, $pos))
+ printf("[027] field_seek(res) failed\n");
+ if (true !== $res_meta->field_seek($pos))
+ printf("[028] field_seek(res__meta) failed\n");
+
+ $tmp1 = $res->fetch_field();
+ $tmp2 = mysqli_fetch_field($res_meta);
+ $tmp2->max_length = $tmp1->max_length;
+ if ($tmp1 != $tmp2) {
+ printf("[029] Field info differs, dumping data\n");
+ var_dump($tmp1);
+ var_dump($tmp2);
+ }
+
+ if ($tmp1 != $fields['res'][$pos]) {
+ printf("[030] Field info differs, dumping data\n");
+ var_dump($tmp1);
+ var_dump($fields['res'][$pos]);
+ }
+
+ if ($pos !== ($tmp = mysqli_field_tell($res)))
+ printf("[031] Expecting %s/%s got %s/%s\n",
+ gettype($pos), $pos, gettype($tmp), $tmp);
+
+ if ($pos !== ($tmp = mysqli_field_tell($res_meta)))
+ printf("[032] Expecting %s/%s got %s/%s\n",
+ gettype($pos), $pos, gettype($tmp), $tmp);
+ } else {
+
+ if (false !== @mysqli_field_seek($res, $pos))
+ printf("[033] field_seek(%d) did not fail\n", $pos);
+ if (false !== @mysqli_field_seek($res_meta, $pos))
+ printf("[034] field_seek(%d) did not fail\n", $pos);
+ }
+ }
+
+ $res->free_result();
+ mysqli_free_result($res_meta);
+
+ var_dump(mysqli_fetch_field($res));
+
+ mysqli_stmt_close($stmt);
+
+ var_dump(mysqli_fetch_field($res));
+
+ mysqli_close($link);
+
+ var_dump(mysqli_fetch_field($res));
+
+ print "done!\n";
?> --EXPECTF-- array(2) { @@ -250,4 +251,4 @@ Warning: mysqli_fetch_field(): Couldn't fetch mysqli_result in %s on line %d NULL -done! \ No newline at end of file +done! -- MySQL Code Commits Mailing List For list archives: http://lists.mysql.com/commits To unsubscribe: http://lists.mysql.com/commits?unsub=lists@pantek.com
Received on Wed Jul 18 18:00:19 2007

This archive was generated by hypermail 2.1.8 : Thu Aug 09 2007 - 19:08:43 EDT


Contact Us  Legal Notices  Order Services Online 
Pantek Home  Privacy Policy  IT news  Site Map  Pantek Library