summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2005-10-27 17:34:24 +0000
committerAntony Dovgal <tony2001@php.net>2005-10-27 17:34:24 +0000
commit9ffefbc74eb60b6edbcb6aa40a5d4ea5877da0de (patch)
tree98a1bb7106d9ade0d2a04137cba46e3e6ad31f09
parent7c01510b950a46b53fccc4d58a03cd9d4a2189cd (diff)
downloadphp-git-9ffefbc74eb60b6edbcb6aa40a5d4ea5877da0de.tar.gz
MFH: add MySQL options and corresponding constants
-rwxr-xr-xext/pdo_mysql/mysql_driver.c38
-rwxr-xr-xext/pdo_mysql/pdo_mysql.c4
-rwxr-xr-xext/pdo_mysql/php_pdo_mysql_int.h4
3 files changed, 46 insertions, 0 deletions
diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c
index 93dd241faf..a72ac5c789 100755
--- a/ext/pdo_mysql/mysql_driver.c
+++ b/ext/pdo_mysql/mysql_driver.c
@@ -420,12 +420,50 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
/* 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;
diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c
index 89483033af..ea42eea74c 100755
--- a/ext/pdo_mysql/pdo_mysql.c
+++ b/ext/pdo_mysql/pdo_mysql.c
@@ -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);
}
diff --git a/ext/pdo_mysql/php_pdo_mysql_int.h b/ext/pdo_mysql/php_pdo_mysql_int.h
index 7879aeb3e5..c54613fa13 100755
--- a/ext/pdo_mysql/php_pdo_mysql_int.h
+++ b/ext/pdo_mysql/php_pdo_mysql_int.h
@@ -78,5 +78,9 @@ extern struct pdo_stmt_methods mysql_stmt_methods;
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