Index: ext/pdo/php_pdo_driver.h =================================================================== RCS file: /repository/php-src/ext/pdo/php_pdo_driver.h,v retrieving revision 1.66.2.4 diff -u -p -d -r1.66.2.4 php_pdo_driver.h --- ext/pdo/php_pdo_driver.h 25 Oct 2005 16:02:33 -0000 1.66.2.4 +++ ext/pdo/php_pdo_driver.h 27 Oct 2005 15:57:23 -0000 @@ -193,6 +193,16 @@ static inline long pdo_attr_lval(zval *o } return defval; } +static inline char *pdo_attr_strval(zval *options, enum pdo_attribute_type option_name, char *defval TSRMLS_DC) +{ + zval **v; + + if (options && SUCCESS == zend_hash_index_find(Z_ARRVAL_P(options), option_name, (void**)&v)) { + convert_to_string_ex(v); + return estrndup(Z_STRVAL_PP(v), Z_STRLEN_PP(v)); + } + return defval ? estrdup(defval) : NULL; +} /* }}} */ /* This structure is registered with PDO when a PDO driver extension is Index: ext/pdo_mysql/mysql_driver.c =================================================================== RCS file: /repository/php-src/ext/pdo_mysql/mysql_driver.c,v retrieving revision 1.59.2.3 diff -u -p -d -r1.59.2.3 mysql_driver.c --- ext/pdo_mysql/mysql_driver.c 5 Oct 2005 22:14:52 -0000 1.59.2.3 +++ ext/pdo_mysql/mysql_driver.c 27 Oct 2005 15:57:23 -0000 @@ -420,12 +420,50 @@ static int pdo_mysql_handle_factory(pdo_ /* handle MySQL options */ if (driver_options) { long connect_timeout = pdo_attr_lval(driver_options, PDO_ATTR_TIMEOUT, 30 TSRMLS_CC); + long local_infile = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_LOCAL_INFILE, 0 TSRMLS_CC); + char *init_cmd = NULL, *default_file = NULL, *default_group = NULL; + H->buffered = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_USE_BUFFERED_QUERY, 0 TSRMLS_CC); if (mysql_options(H->server, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&connect_timeout)) { pdo_mysql_error(dbh); goto cleanup; } + + if (mysql_options(H->server, MYSQL_OPT_LOCAL_INFILE, (const char *)&local_infile)) { + pdo_mysql_error(dbh); + goto cleanup; + } + + init_cmd = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_INIT_COMMAND, NULL TSRMLS_CC); + if (init_cmd) { + if (mysql_options(H->server, MYSQL_INIT_COMMAND, (const char *)init_cmd)) { + efree(init_cmd); + pdo_mysql_error(dbh); + goto cleanup; + } + efree(init_cmd); + } + + default_file = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_READ_DEFAULT_FILE, NULL TSRMLS_CC); + if (default_file) { + if (mysql_options(H->server, MYSQL_READ_DEFAULT_FILE, (const char *)default_file)) { + efree(default_file); + pdo_mysql_error(dbh); + goto cleanup; + } + efree(default_file); + } + + default_group= pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_READ_DEFAULT_GROUP, NULL TSRMLS_CC); + if (default_group) { + if (mysql_options(H->server, MYSQL_READ_DEFAULT_GROUP, (const char *)default_group)) { + efree(default_group); + pdo_mysql_error(dbh); + goto cleanup; + } + efree(default_group); + } } dbname = vars[1].optval; Index: ext/pdo_mysql/pdo_mysql.c =================================================================== RCS file: /repository/php-src/ext/pdo_mysql/pdo_mysql.c,v retrieving revision 1.8.2.4 diff -u -p -d -r1.8.2.4 pdo_mysql.c --- ext/pdo_mysql/pdo_mysql.c 1 Oct 2005 19:19:36 -0000 1.8.2.4 +++ ext/pdo_mysql/pdo_mysql.c 27 Oct 2005 15:57:23 -0000 @@ -76,6 +76,10 @@ ZEND_GET_MODULE(pdo_mysql) PHP_MINIT_FUNCTION(pdo_mysql) { REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_USE_BUFFERED_QUERY", (long)PDO_MYSQL_ATTR_USE_BUFFERED_QUERY); + REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_LOCAL_INFILE", (long)PDO_MYSQL_ATTR_LOCAL_INFILE); + REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_INIT_COMMAND", (long)PDO_MYSQL_ATTR_INIT_COMMAND); + REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_FILE", (long)PDO_MYSQL_ATTR_READ_DEFAULT_FILE); + REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_GROUP", (long)PDO_MYSQL_ATTR_READ_DEFAULT_GROUP); return php_pdo_register_driver(&pdo_mysql_driver); } Index: ext/pdo_mysql/php_pdo_mysql_int.h =================================================================== RCS file: /repository/php-src/ext/pdo_mysql/php_pdo_mysql_int.h,v retrieving revision 1.16 diff -u -p -d -r1.16 php_pdo_mysql_int.h --- ext/pdo_mysql/php_pdo_mysql_int.h 20 Jul 2005 16:22:09 -0000 1.16 +++ ext/pdo_mysql/php_pdo_mysql_int.h 27 Oct 2005 15:57:23 -0000 @@ -78,5 +78,9 @@ extern struct pdo_stmt_methods mysql_stm enum { PDO_MYSQL_ATTR_USE_BUFFERED_QUERY = PDO_ATTR_DRIVER_SPECIFIC, + PDO_MYSQL_ATTR_LOCAL_INFILE, + PDO_MYSQL_ATTR_INIT_COMMAND, + PDO_MYSQL_ATTR_READ_DEFAULT_FILE, + PDO_MYSQL_ATTR_READ_DEFAULT_GROUP, }; #endif