Author: ahristov
Date: 2007-07-06 10:00:27 +0200 (Fri, 06 Jul 2007)
New Revision: 659
Modified:
trunk/php4/ext/mysql/php_mysql.c
trunk/php5/ext/mysql/php_mysql.c
trunk/php6/ext/mysql/php_mysql.c
trunk/php6/ext/mysqli/mysqli_api.c
trunk/tests/ext/mysql/mysql_fetch_field.phpt
Log:
Fix fetch field for > 50000
The server doesn't set BIT type in old protocol but converts to
TINY for BIT(5) I suppose SMALLINT for 9-16, etc.
Modified: trunk/php4/ext/mysql/php_mysql.c
===================================================================
--- trunk/php4/ext/mysql/php_mysql.c 2007-07-05 18:02:14 UTC (rev 658)
+++ trunk/php4/ext/mysql/php_mysql.c 2007-07-06 08:00:27 UTC (rev 659)
@@ -2238,6 +2238,9 @@
case FIELD_TYPE_VAR_STRING:
return "string";
break;
+#if MYSQL_VERSION_ID > 50002 || defined(HAVE_MYSQLND)
+ case MYSQL_TYPE_BIT:
+#endif
#ifdef MYSQL_HAS_TINY
case FIELD_TYPE_TINY:
#endif
Modified: trunk/php5/ext/mysql/php_mysql.c
===================================================================
--- trunk/php5/ext/mysql/php_mysql.c 2007-07-05 18:02:14 UTC (rev 658)
+++ trunk/php5/ext/mysql/php_mysql.c 2007-07-06 08:00:27 UTC (rev 659)
@@ -2251,6 +2251,9 @@
case FIELD_TYPE_VAR_STRING:
return "string";
break;
+#if MYSQL_VERSION_ID > 50002 || defined(HAVE_MYSQLND)
+ case MYSQL_TYPE_BIT:
+#endif
#ifdef MYSQL_HAS_TINY
case FIELD_TYPE_TINY:
#endif
Modified: trunk/php6/ext/mysql/php_mysql.c
===================================================================
--- trunk/php6/ext/mysql/php_mysql.c 2007-07-05 18:02:14 UTC (rev 658)
+++ trunk/php6/ext/mysql/php_mysql.c 2007-07-06 08:00:27 UTC (rev 659)
@@ -2246,6 +2246,9 @@
case FIELD_TYPE_VAR_STRING:
return "string";
break;
+#if MYSQL_VERSION_ID > 50002 || defined(HAVE_MYSQLND)
+ case MYSQL_TYPE_BIT:
+#endif
#ifdef MYSQL_HAS_TINY
case FIELD_TYPE_TINY:
#endif
Modified: trunk/php6/ext/mysqli/mysqli_api.c
===================================================================
--- trunk/php6/ext/mysqli/mysqli_api.c 2007-07-05 18:02:14 UTC (rev 658)
+++ trunk/php6/ext/mysqli/mysqli_api.c 2007-07-06 08:00:27 UTC (rev 659)
@@ -340,7 +340,7 @@
break;
case MYSQL_TYPE_LONGLONG:
-#if MYSQL_VERSION_ID > 50002
+#if MYSQL_VERSION_ID > 50002 || defined(HAVE_MYSQLND)
case MYSQL_TYPE_BIT:
#endif
stmt->result.buf[ofs].type = IS_STRING;
@@ -757,10 +757,19 @@
#if !defined(HAVE_MYSQLND)
#define MYSQL_BINARY_CHARSET_NR 63
+#if MYSQL_VERSION_ID > 50002
+/* We have BIT */
#define IS_BINARY_DATA(f) (((f).type == MYSQL_TYPE_TINY_BLOB || (f).type ==
MYSQL_TYPE_BLOB || \
(f).type == MYSQL_TYPE_MEDIUM_BLOB || (f).type == MYSQL_TYPE_LONG_BLOB || \
(f).type == MYSQL_TYPE_BIT || (f).type == MYSQL_TYPE_VAR_STRING || (f).type ==
MYSQL_TYPE_VARCHAR ||\
(f).type == MYSQL_TYPE_STRING) && (f).charsetnr == MYSQL_BINARY_CHARSET_NR)
+#else
+/* No BIT */
+#define IS_BINARY_DATA(f) (((f).type == MYSQL_TYPE_TINY_BLOB || (f).type ==
MYSQL_TYPE_BLOB || \
+ (f).type == MYSQL_TYPE_MEDIUM_BLOB || (f).type == MYSQL_TYPE_LONG_BLOB || \
+ (f).type == MYSQL_TYPE_VAR_STRING || (f).type == MYSQL_TYPE_VARCHAR ||\
+ (f).type == MYSQL_TYPE_STRING) && (f).charsetnr == MYSQL_BINARY_CHARSET_NR)
+#endif
/* {{{ void mysqli_stmt_fetch_libmysql
Modified: trunk/tests/ext/mysql/mysql_fetch_field.phpt
===================================================================
--- trunk/tests/ext/mysql/mysql_fetch_field.phpt 2007-07-05 18:02:14 UTC (rev 658)
+++ trunk/tests/ext/mysql/mysql_fetch_field.phpt 2007-07-06 08:00:27 UTC (rev 659)
@@ -46,7 +46,7 @@
printf("[007] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp);
$types = array(
- 'BIT' => array(1, (($version < 500) ? 'int' :
'unknown')),
+ 'BIT' => array(1, 'int'),
'TINYINT' => array(1, 'int'),
'BOOL' => array('true', 'int'),
'SMALLINT' => array(32767, 'int'),
| Thread |
|---|
| • PHP mysqlnd svn commit: r659 - in trunk: php4/ext/mysql php5/ext/mysql php6/ext/mysql php6/ext/mysqli tests/ext/mysql | ahristov | 6 Jul |