FAQ
I've fixed the "mysql / mysqlnd / mysqli / pdo_mysql" extensions,
mostly minor issues and oversights, I tested in RH9, Mac OSX 10.3.9,
Mac OSX 10.4.0, Mac OSX 10.4.8 and Mac OSX 10.4.10(x86 and ppc) with
mysql 4.1.10, 4.1.13 and 5.0.24.

I've got a diff, now what?

- -- BuildSmart

Search Discussions

  • Derick Rethans at Aug 30, 2007 at 7:17 am

    On Wed, 29 Aug 2007, BuildSmart wrote:

    I've fixed the "mysql / mysqlnd / mysqli / pdo_mysql" extensions,
    mostly minor issues and oversights, I tested in RH9, Mac OSX 10.3.9,
    Mac OSX 10.4.0, Mac OSX 10.4.8 and Mac OSX 10.4.10(x86 and ppc) with
    mysql 4.1.10, 4.1.13 and 5.0.24.

    I've got a diff, now what?
    Put it online and reply with the link to the patch here?

    Derick
  • Jani Taskinen at Aug 30, 2007 at 7:18 am
    Perhaps you could send the diff to the list, or better yet, an url
    pointing to the place you uploaded the diff. And note: it should be
    unified diff. (diff -u)

    --Jani
    On Wed, 2007-08-29 at 21:48 -0400, BuildSmart wrote:
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    I've fixed the "mysql / mysqlnd / mysqli / pdo_mysql" extensions,
    mostly minor issues and oversights, I tested in RH9, Mac OSX 10.3.9,
    Mac OSX 10.4.0, Mac OSX 10.4.8 and Mac OSX 10.4.10(x86 and ppc) with
    mysql 4.1.10, 4.1.13 and 5.0.24.

    I've got a diff, now what?

    - -- BuildSmart

    --
    Make me happy: http://pecl.php.net/wishlist.php/jani
  • BuildSmart at Aug 30, 2007 at 7:13 pm

    On Aug 30, 2007, at 03:18:34, Jani Taskinen wrote:

    Perhaps you could send the diff to the list, or better yet, an url
    pointing to the place you uploaded the diff. And note: it should be
    unified diff. (diff -u)

    --Jani
    ______________________________

    A link to it:
    http://daleenterprise.com/patches/mysql.diff
    ______________________________

    a unified diff:
    diff -ur ext.orig/mysql/php_mysql.c ext/mysql/php_mysql.c
    - --- ext.orig/mysql/php_mysql.c 2007-08-06 11:11:46.000000000 -0400
    +++ ext/mysql/php_mysql.c 2007-08-30 15:00:16.000000000 -0400
    @@ -1977,11 +1977,9 @@
    (f)->type == MYSQL_TYPE_VAR_STRING || (f)->type ==
    MYSQL_TYPE_VARCHAR || \
    (f)->type == MYSQL_TYPE_STRING)&& (f)->charsetnr ==
    MYSQL_BINARY_CHARSET_NR)
    #else
    - -#define IS_BINARY_DATA(f) (((f)->type == MYSQL_TYPE_TINY_BLOB || (f)-
    type == MYSQL_TYPE_BLOB || \
    +#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)
    - -
    + (f)->type == MYSQL_TYPE_VAR_STRING || (f)->type == MYSQL_TYPE_STRING)
    #endif
    /* {{{ php_mysql_fetch_hash
    diff -ur ext.orig/mysqli/mysqli.c ext/mysqli/mysqli.c
    - --- ext.orig/mysqli/mysqli.c 2007-07-24 12:13:25.000000000 -0400
    +++ ext/mysqli/mysqli.c 2007-08-30 15:01:02.000000000 -0400
    @@ -947,11 +947,16 @@
    #define MYSQL_BINARY_CHARSET_NR 63
    +#if MYSQL_VERSION_ID > 50002 || defined(HAVE_MYSQLND)
    #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
    +#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_STRING)
    +#endif
    /* {{{ php_mysqli_fetch_into_hash
    */
    diff -ur ext.orig/mysqli/mysqli_api.c ext/mysqli/mysqli_api.c
    - --- ext.orig/mysqli/mysqli_api.c 2007-07-24 12:13:26.000000000 -0400
    +++ ext/mysqli/mysqli_api.c 2007-08-30 15:01:02.000000000 -0400
    @@ -759,10 +759,9 @@
    (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 || \
    +#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)
    + (f).type == MYSQL_TYPE_VAR_STRING || (f).type == MYSQL_TYPE_STRING)
    #endif

    ______________________________

    - -- Dale
  • Andrey Hristov at Aug 31, 2007 at 1:45 pm
    Hi,
    BuildSmart wrote:
    On Aug 30, 2007, at 03:18:34, Jani Taskinen wrote:

    Perhaps you could send the diff to the list, or better yet, an url
    pointing to the place you uploaded the diff. And note: it should be
    unified diff. (diff -u)
    I don't understand the intention of the changes? What was the problem?

    Greets,
    Andrey

    --Jani
    ______________________________

    A link to it:
    http://daleenterprise.com/patches/mysql.diff
    ______________________________

    a unified diff:
    diff -ur ext.orig/mysql/php_mysql.c ext/mysql/php_mysql.c
    --- ext.orig/mysql/php_mysql.c 2007-08-06 11:11:46.000000000 -0400
    +++ ext/mysql/php_mysql.c 2007-08-30 15:00:16.000000000 -0400
    @@ -1977,11 +1977,9 @@
    (f)->type == MYSQL_TYPE_VAR_STRING || (f)->type ==
    MYSQL_TYPE_VARCHAR || \
    (f)->type == MYSQL_TYPE_STRING)&& (f)->charsetnr ==
    MYSQL_BINARY_CHARSET_NR)
    #else
    -#define IS_BINARY_DATA(f) (((f)->type == MYSQL_TYPE_TINY_BLOB ||
    (f)->type == MYSQL_TYPE_BLOB || \
    +#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)
    -
    + (f)->type == MYSQL_TYPE_VAR_STRING || (f)->type == MYSQL_TYPE_STRING)
    #endif
    /* {{{ php_mysql_fetch_hash
    diff -ur ext.orig/mysqli/mysqli.c ext/mysqli/mysqli.c
    --- ext.orig/mysqli/mysqli.c 2007-07-24 12:13:25.000000000 -0400
    +++ ext/mysqli/mysqli.c 2007-08-30 15:01:02.000000000 -0400
    @@ -947,11 +947,16 @@
    #define MYSQL_BINARY_CHARSET_NR 63
    +#if MYSQL_VERSION_ID > 50002 || defined(HAVE_MYSQLND)
    #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
    +#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_STRING)
    +#endif
    /* {{{ php_mysqli_fetch_into_hash
    */
    diff -ur ext.orig/mysqli/mysqli_api.c ext/mysqli/mysqli_api.c
    --- ext.orig/mysqli/mysqli_api.c 2007-07-24 12:13:26.000000000 -0400
    +++ ext/mysqli/mysqli_api.c 2007-08-30 15:01:02.000000000 -0400
    @@ -759,10 +759,9 @@
    (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 || \
    +#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)
    + (f).type == MYSQL_TYPE_VAR_STRING || (f).type == MYSQL_TYPE_STRING)
    #endif

    ______________________________

    -- Dale
    --PHP Internals - PHP Runtime Development Mailing List
    To unsubscribe, visit: http://www.php.net/unsub.php
  • BuildSmart at Aug 31, 2007 at 2:28 pm

    On Aug 31, 2007, at 09:43:14, Andrey Hristov wrote:

    Hi,
    BuildSmart wrote:
    On Aug 30, 2007, at 03:18:34, Jani Taskinen wrote:

    Perhaps you could send the diff to the list, or better yet, an url
    pointing to the place you uploaded the diff. And note: it should be
    unified diff. (diff -u)
    I don't understand the intention of the changes? What was the problem?
    Compile failures.

    The original #if tests had the same data in #else, obviously the
    original coder had the right intentions but forgot to check the data
    types.

    Things like MYSQL_TYPE_VARCHAR don't exist in 4.1.13 and below, I
    checked the header files for 4.1.10 and 4.1.13 and removed the ones
    that didn't exist.

    I can send you the header files if you wish?

    One of the files didn't check at all and it didn't compensate for the
    mysql version differences so the check was added to correct this.
    Greets,
    Andrey

    --Jani
    ______________________________

    A link to it:
    http://daleenterprise.com/patches/mysql.diff
    ______________________________

    a unified diff:
    diff -ur ext.orig/mysql/php_mysql.c ext/mysql/php_mysql.c
    --- ext.orig/mysql/php_mysql.c 2007-08-06 11:11:46.000000000 -0400
    +++ ext/mysql/php_mysql.c 2007-08-30 15:00:16.000000000 -0400
    @@ -1977,11 +1977,9 @@
    (f)->type == MYSQL_TYPE_VAR_STRING || (f)->type ==
    MYSQL_TYPE_VARCHAR || \
    (f)->type == MYSQL_TYPE_STRING)&& (f)->charsetnr ==
    MYSQL_BINARY_CHARSET_NR)
    #else
    -#define IS_BINARY_DATA(f) (((f)->type == MYSQL_TYPE_TINY_BLOB ||
    (f)->type == MYSQL_TYPE_BLOB || \
    +#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)
    -
    + (f)->type == MYSQL_TYPE_VAR_STRING || (f)->type ==
    MYSQL_TYPE_STRING)
    #endif
    /* {{{ php_mysql_fetch_hash
    diff -ur ext.orig/mysqli/mysqli.c ext/mysqli/mysqli.c
    --- ext.orig/mysqli/mysqli.c 2007-07-24 12:13:25.000000000 -0400
    +++ ext/mysqli/mysqli.c 2007-08-30 15:01:02.000000000 -0400
    @@ -947,11 +947,16 @@
    #define MYSQL_BINARY_CHARSET_NR 63
    +#if MYSQL_VERSION_ID > 50002 || defined(HAVE_MYSQLND)
    #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
    +#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_STRING)
    +#endif
    /* {{{ php_mysqli_fetch_into_hash
    */
    diff -ur ext.orig/mysqli/mysqli_api.c ext/mysqli/mysqli_api.c
    --- ext.orig/mysqli/mysqli_api.c 2007-07-24 12:13:26.000000000
    -0400
    +++ ext/mysqli/mysqli_api.c 2007-08-30 15:01:02.000000000 -0400
    @@ -759,10 +759,9 @@
    (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 || \
    +#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)
    + (f).type == MYSQL_TYPE_VAR_STRING || (f).type ==
    MYSQL_TYPE_STRING)
    #endif

    ______________________________

    -- Dale
    --PHP Internals - PHP Runtime Development Mailing List
    To unsubscribe, visit: http://www.php.net/unsub.php
    - -- BuildSmart
  • Andrey Hristov at Aug 31, 2007 at 6:04 pm
    Hi Dale,
    BuildSmart wrote:
    On Aug 31, 2007, at 09:43:14, Andrey Hristov wrote:

    Hi,
    BuildSmart wrote:
    On Aug 30, 2007, at 03:18:34, Jani Taskinen wrote:

    Perhaps you could send the diff to the list, or better yet, an url
    pointing to the place you uploaded the diff. And note: it should be
    unified diff. (diff -u)
    I don't understand the intention of the changes? What was the problem?
    Compile failures.

    The original #if tests had the same data in #else, obviously the
    original coder had the right intentions but forgot to check the data types.

    Things like MYSQL_TYPE_VARCHAR don't exist in 4.1.13 and below, I
    checked the header files for 4.1.10 and 4.1.13 and removed the ones that
    didn't exist.

    I can send you the header files if you wish?
    Yes, please. I don't have that ancient MySQL 4.1 :)
    I have tested with versions like 4.1.19, 20, 21
    One of the files didn't check at all and it didn't compensate for the
    mysql version differences so the check was added to correct this.
    Greets,
    Andrey
    --Jani
    ______________________________

    A link to it:
    http://daleenterprise.com/patches/mysql.diff
    ______________________________

    a unified diff:
    diff -ur ext.orig/mysql/php_mysql.c ext/mysql/php_mysql.c
    --- ext.orig/mysql/php_mysql.c 2007-08-06 11:11:46.000000000 -0400
    +++ ext/mysql/php_mysql.c 2007-08-30 15:00:16.000000000 -0400
    @@ -1977,11 +1977,9 @@
    (f)->type == MYSQL_TYPE_VAR_STRING || (f)->type ==
    MYSQL_TYPE_VARCHAR || \
    (f)->type == MYSQL_TYPE_STRING)&& (f)->charsetnr ==
    MYSQL_BINARY_CHARSET_NR)
    #else
    -#define IS_BINARY_DATA(f) (((f)->type == MYSQL_TYPE_TINY_BLOB ||
    (f)->type == MYSQL_TYPE_BLOB || \
    +#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)
    -
    + (f)->type == MYSQL_TYPE_VAR_STRING || (f)->type ==
    MYSQL_TYPE_STRING)
    #endif
    /* {{{ php_mysql_fetch_hash
    diff -ur ext.orig/mysqli/mysqli.c ext/mysqli/mysqli.c
    --- ext.orig/mysqli/mysqli.c 2007-07-24 12:13:25.000000000 -0400
    +++ ext/mysqli/mysqli.c 2007-08-30 15:01:02.000000000 -0400
    @@ -947,11 +947,16 @@
    #define MYSQL_BINARY_CHARSET_NR 63
    +#if MYSQL_VERSION_ID > 50002 || defined(HAVE_MYSQLND)
    #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
    +#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_STRING)
    +#endif
    /* {{{ php_mysqli_fetch_into_hash
    */
    diff -ur ext.orig/mysqli/mysqli_api.c ext/mysqli/mysqli_api.c
    --- ext.orig/mysqli/mysqli_api.c 2007-07-24 12:13:26.000000000 -0400
    +++ ext/mysqli/mysqli_api.c 2007-08-30 15:01:02.000000000 -0400
    @@ -759,10 +759,9 @@
    (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 || \
    +#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)
    + (f).type == MYSQL_TYPE_VAR_STRING || (f).type == MYSQL_TYPE_STRING)
    #endif

    ______________________________

    -- Dale
    --PHP Internals - PHP Runtime Development Mailing List
    To unsubscribe, visit: http://www.php.net/unsub.php
    -- BuildSmart
  • BuildSmart at Aug 31, 2007 at 9:04 pm

    On Aug 31, 2007, at 14:02:57, Andrey Hristov wrote:

    Hi Dale,
    BuildSmart wrote:
    On Aug 31, 2007, at 09:43:14, Andrey Hristov wrote:

    Hi,
    BuildSmart wrote:
    On Aug 30, 2007, at 03:18:34, Jani Taskinen wrote:

    Perhaps you could send the diff to the list, or better yet, an url
    pointing to the place you uploaded the diff. And note: it
    should be
    unified diff. (diff -u)
    I don't understand the intention of the changes? What was the
    problem?
    Compile failures.

    The original #if tests had the same data in #else, obviously the
    original coder had the right intentions but forgot to check the
    data types.

    Things like MYSQL_TYPE_VARCHAR don't exist in 4.1.13 and below, I
    checked the header files for 4.1.10 and 4.1.13 and removed the
    ones that
    didn't exist.

    I can send you the header files if you wish?
    Yes, please. I don't have that ancient MySQL 4.1 :)
    I have tested with versions like 4.1.19, 20, 21
    I've only checked the versions that are vendor supplied (for Darwin /
    Mac OS X) 4.1.10, 4.1.13 and 5.0.24 so I couldn't tell you the
    specific version that it comes into play, perhaps a check if they are
    defined might be a direction to go rather than a version check unless
    you can isolate the specific version where these appeared.

    http://daleenterprise.com/patches/mysql_headers.tgz
    One of the files didn't check at all and it didn't compensate for the
    mysql version differences so the check was added to correct this.
    Greets,
    Andrey
    --Jani
    ______________________________

    A link to it:
    http://daleenterprise.com/patches/mysql.diff
    ______________________________

    a unified diff:
    diff -ur ext.orig/mysql/php_mysql.c ext/mysql/php_mysql.c
    --- ext.orig/mysql/php_mysql.c 2007-08-06 11:11:46.000000000
    -0400
    +++ ext/mysql/php_mysql.c 2007-08-30 15:00:16.000000000 -0400
    @@ -1977,11 +1977,9 @@
    (f)->type == MYSQL_TYPE_VAR_STRING || (f)->type ==
    MYSQL_TYPE_VARCHAR || \
    (f)->type == MYSQL_TYPE_STRING)&& (f)->charsetnr ==
    MYSQL_BINARY_CHARSET_NR)
    #else
    -#define IS_BINARY_DATA(f) (((f)->type == MYSQL_TYPE_TINY_BLOB ||
    (f)->type == MYSQL_TYPE_BLOB || \
    +#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)
    -
    + (f)->type == MYSQL_TYPE_VAR_STRING || (f)->type ==
    MYSQL_TYPE_STRING)
    #endif
    /* {{{ php_mysql_fetch_hash
    diff -ur ext.orig/mysqli/mysqli.c ext/mysqli/mysqli.c
    --- ext.orig/mysqli/mysqli.c 2007-07-24 12:13:25.000000000 -0400
    +++ ext/mysqli/mysqli.c 2007-08-30 15:01:02.000000000 -0400
    @@ -947,11 +947,16 @@
    #define MYSQL_BINARY_CHARSET_NR 63
    +#if MYSQL_VERSION_ID > 50002 || defined(HAVE_MYSQLND)
    #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
    +#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_STRING)
    +#endif
    /* {{{ php_mysqli_fetch_into_hash
    */
    diff -ur ext.orig/mysqli/mysqli_api.c ext/mysqli/mysqli_api.c
    --- ext.orig/mysqli/mysqli_api.c 2007-07-24
    12:13:26.000000000 -0400
    +++ ext/mysqli/mysqli_api.c 2007-08-30 15:01:02.000000000 -0400
    @@ -759,10 +759,9 @@
    (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 || \
    +#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)
    + (f).type == MYSQL_TYPE_VAR_STRING || (f).type ==
    MYSQL_TYPE_STRING)
    #endif

    ______________________________

    -- Dale
    --PHP Internals - PHP Runtime Development Mailing List
    To unsubscribe, visit: http://www.php.net/unsub.php
    -- BuildSmart
    - -- Dale

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-internals @
categoriesphp
postedAug 30, '07 at 1:48a
activeAug 31, '07 at 9:04p
posts8
users4
websitephp.net

People

Translate

site design / logo © 2022 Grokbase