]> granicus.if.org Git - php/commitdiff
Add PDO::MYSQL_ATTR_COMPRESS connection flag
authorJohannes Schlüter <johannes@php.net>
Tue, 14 Oct 2008 19:00:11 +0000 (19:00 +0000)
committerJohannes Schlüter <johannes@php.net>
Tue, 14 Oct 2008 19:00:11 +0000 (19:00 +0000)
ext/pdo_mysql/mysql_driver.c
ext/pdo_mysql/pdo_mysql.c
ext/pdo_mysql/php_pdo_mysql_int.h
ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt

index cbdfbe9642a44637efa20b5c0dc289494c3010ab..19357365d3ed06fa778425dd057c223c20bccc04 100755 (executable)
@@ -623,6 +623,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
                long local_infile = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_LOCAL_INFILE, 0 TSRMLS_CC);
 #ifndef PDO_USE_MYSQLND
                char *init_cmd = NULL, *default_file = NULL, *default_group = NULL;
+               long compress = 0;
 #endif
                H->buffered = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_USE_BUFFERED_QUERY, 1 TSRMLS_CC);
 
@@ -692,6 +693,14 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
                        }
                        efree(default_group);
                }
+
+               compress = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_COMPRESS, 0 TSRMLS_CC);
+               if (compress) {
+                       if (mysql_options(H->server, MYSQL_OPT_COMPRESS, 0)) {
+                               pdo_mysql_error(dbh);
+                               goto cleanup;
+                       }
+               }
 #endif
        }
 
index 0c2acb654d43ad53f9c30f30b25c9ba4a71328b8..2d68e4f4f8bb58cd6fc001bdeb65264583f236f8 100755 (executable)
@@ -80,6 +80,7 @@ static PHP_MINIT_FUNCTION(pdo_mysql)
        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);
+       REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_COMPRESS", (long)PDO_MYSQL_ATTR_COMPRESS);
 #endif
        REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_DIRECT_QUERY", (long)PDO_MYSQL_ATTR_DIRECT_QUERY);
 
index 3ed96c90299d20f1a56371c829c00e2393f68b79..46b7237b8848432654627ffe64a8e7051fdb3c95 100755 (executable)
@@ -158,6 +158,7 @@ enum {
        PDO_MYSQL_ATTR_READ_DEFAULT_FILE,
        PDO_MYSQL_ATTR_READ_DEFAULT_GROUP,
        PDO_MYSQL_ATTR_MAX_BUFFER_SIZE,
+       PDO_MYSQL_ATTR_COMPRESS,
 #endif
        PDO_MYSQL_ATTR_DIRECT_QUERY,
 };
index cfecaf74c9760d4c2f45ea08bd6acceef123d02c..58f442633b1b65d32378167aa512e40eee4e8b16 100644 (file)
@@ -19,7 +19,7 @@ require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
                $expected['MYSQL_ATTR_INIT_COMMAND']                            = true;
                $expected['MYSQL_ATTR_READ_DEFAULT_FILE']       = true;
                $expected['MYSQL_ATTR_READ_DEFAULT_GROUP']      = true;
-
+               $expected['MYSQL_ATTR_COMPRESS']                        = true;
        }
 
        /*
@@ -75,4 +75,4 @@ require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
 
        print "done!";
 --EXPECT--
-done!
\ No newline at end of file
+done!