]> granicus.if.org Git - php/commitdiff
add MySQL options and corresponding constants
authorAntony Dovgal <tony2001@php.net>
Thu, 27 Oct 2005 17:33:43 +0000 (17:33 +0000)
committerAntony Dovgal <tony2001@php.net>
Thu, 27 Oct 2005 17:33:43 +0000 (17:33 +0000)
ext/pdo_mysql/mysql_driver.c
ext/pdo_mysql/pdo_mysql.c
ext/pdo_mysql/php_pdo_mysql_int.h

index d97e350298c90b5894fb461a30edf748b42c65cc..6683e5bba65f62065e3e3e88e8c94c44e91bb9a1 100755 (executable)
@@ -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;
index c83fcb42a280f8b99b8b7acc97432114e56be815..7e1ffaa6d7ec3a6114e1e5556a4e7dfdff0e0697 100755 (executable)
@@ -76,6 +76,10 @@ ZEND_GET_MODULE(pdo_mysql)
 PHP_MINIT_FUNCTION(pdo_mysql)
 {
        REGISTER_PDO_CONST_LONG("MYSQL_ATTR_USE_BUFFERED_QUERY", (long)PDO_MYSQL_ATTR_USE_BUFFERED_QUERY);
+       REGISTER_PDO_CONST_LONG("MYSQL_ATTR_LOCAL_INFILE", (long)PDO_MYSQL_ATTR_LOCAL_INFILE);
+       REGISTER_PDO_CONST_LONG("MYSQL_ATTR_INIT_COMMAND", (long)PDO_MYSQL_ATTR_INIT_COMMAND);
+       REGISTER_PDO_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_FILE", (long)PDO_MYSQL_ATTR_READ_DEFAULT_FILE);
+       REGISTER_PDO_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_GROUP", (long)PDO_MYSQL_ATTR_READ_DEFAULT_GROUP);
 
        return php_pdo_register_driver(&pdo_mysql_driver);
 }
index 7879aeb3e580d4e281ddea8c7f985be8bfb87bf5..c54613fa13104623559b8c656e6bea3fb4268612 100755 (executable)
@@ -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