pike.git / lib / modules / Sql.pmod / sql_util.pmod

version» Context lines:

pike.git/lib/modules/Sql.pmod/sql_util.pmod:1:   /* -  * $Id: sql_util.pmod,v 1.16 2006/11/27 16:28:39 mast Exp $ +  * $Id: sql_util.pmod,v 1.17 2007/05/03 13:57:35 mast Exp $    *    * Some SQL utility functions.    * They are kept here to avoid circular references.    *    * Henrik Grubbström 1999-07-01    */      #pike __REAL_VERSION__      //! Some SQL utility functions
pike.git/lib/modules/Sql.pmod/sql_util.pmod:163: Inside #if constant (Mysql.mysql.HAVE_MYSQL_FIELD_CHARSETNR)
   row[i] = utf8_to_string(val);    }    }    return row;    }   }      #else      class MySQLBrokenUnicodeWrapper - // This one is used to get bug compatibility when compiled with an old - // MySQL client lib that doesn't have the charsetnr property in the - // field info. It looks at the binary flag instead, which is set for - // binary fields but might also be set for text fields (e.g. with a - // definition like "VARCHAR(255) BINARY"). + // This one is used to get a buggy unicode support when compiled with + // an old MySQL client lib that doesn't have the charsetnr property in + // the field info. It looks at the binary flag instead, which is set + // for binary fields but might also be set for text fields (e.g. with + // a definition like "VARCHAR(255) BINARY").   //   // I.e. the effect of using this one is that text fields with the - // binary flag won't be correctly decoded in unicode decode mode. This - // has to be enabled by defining the environment variable - // PIKE_BROKEN_MYSQL_UNICODE_MODE. With it the unicode decode mode - // will exist even when the client lib is too old to implement it - // correctly. + // binary flag won't be correctly decoded in unicode decode mode. + // + // This has to be enabled either by passing "broken-unicode" as + // charset to Sql.mysql.create or Sql.mysql.set_charset, by calling + // Sql.mysql.set_unicode_decode_mode(-1), or by defining the + // environment variable PIKE_BROKEN_MYSQL_UNICODE_MODE. That will + // cause this buggy variant to be used if and only if the MySQL client + // lib doesn't support the charsetnr property.   {    inherit UnicodeWrapper;       int|array(string) fetch_row()    {    int|array(string) row = master_result->fetch_row();    if (!arrayp(row)) return row;    array(int|mapping(string:mixed)) field_info = fetch_fields();    foreach(row; int i; string|int val) {    if (stringp(val) && field_info[i]->flags &&    !field_info[i]->flags->binary) {    row[i] = utf8_to_string(val);    }    }    return row;    }   }      #endif