List:Commits« Previous MessageNext Message »
From:ahristov Date:July 6 2007 8:00am
Subject:PHP mysqlnd svn commit: r659 - in trunk: php4/ext/mysql php5/ext/mysql php6/ext/mysql php6/ext/mysqli tests/ext/mysql
View as plain text  
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/mysqlahristov6 Jul