Commit:    690bbe170d9ed4597629e4e986575fbe0a2cb796
Author:    Stanley Sufficool <ssuffic...@php.net>         Sat, 5 Oct 2013 
09:54:45 -0700
Parents:   ac05cfb49912dd87264573df930d0ead3c3e0cca
Branches:  PHP-5.4

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=690bbe170d9ed4597629e4e986575fbe0a2cb796

Log:
FIX BUG #65219 - USE DB not being sent for FreeTDS version < 0.92
FreeTDS <0.92 does not support DBSETLDBNAME option and therefore
will not work with SQL Azure. Fallback to dbuse command in
letter versions.

Bugs:
https://bugs.php.net/65219

Changed paths:
  M  ext/pdo_dblib/dblib_driver.c


Diff:
diff --git a/ext/pdo_dblib/dblib_driver.c b/ext/pdo_dblib/dblib_driver.c
index 2aaf397..13444b8 100644
--- a/ext/pdo_dblib/dblib_driver.c
+++ b/ext/pdo_dblib/dblib_driver.c
@@ -350,9 +350,10 @@ static int pdo_dblib_handle_factory(pdo_dbh_t *dbh, zval 
*driver_options TSRMLS_
 
        DBSETLAPP(H->login, vars[1].optval);
 
+/* DBSETLDBNAME is only available in FreeTDS 0.92 or above */
 #ifdef DBSETLDBNAME
        if (vars[3].optval) {
-               DBSETLDBNAME(H->login, vars[3].optval);
+               if(FAIL == DBSETLDBNAME(H->login, vars[3].optval)) goto cleanup;
        }
 #endif
 
@@ -362,6 +363,16 @@ static int pdo_dblib_handle_factory(pdo_dbh_t *dbh, zval 
*driver_options TSRMLS_
                goto cleanup;
        }
 
+/*
+ * FreeTDS < 0.92 does not support the DBSETLDBNAME option
+ * Send use database here after login (Will not work with SQL Azure)
+ */
+#ifndef DBSETLDBNAME
+       if (vars[3].optval) {
+               if(FAIL == dbuse(H->link, vars[3].optval)) goto gleanup;
+       }
+#endif
+
 #if PHP_DBLIB_IS_MSSQL
        /* dblib do not return more than this length from text/image */
        DBSETOPT(H->link, DBTEXTLIMIT, "2147483647");
@@ -377,23 +388,6 @@ static int pdo_dblib_handle_factory(pdo_dbh_t *dbh, zval 
*driver_options TSRMLS_
        dbh->max_escaped_char_length = 2;
        dbh->alloc_own_columns = 1;
 
-#if 0
-       /* Cache the supported data types from the servers systypes table */
-       if(dbcmd(H->link, "select usertype, name from systypes order by 
usertype") != FAIL) {
-               if(dbsqlexec(H->link) != FAIL) {
-                       dbresults(H->link);
-                       while (dbnextrow(H->link) == SUCCESS) {
-                               val = dbdata(H->link, 1);                       
                
-                               add_index_string(pdo_dblib_datatypes, *val, 
dbdata(H->link, 2), 1);
-                       }
-               }
-               /* Throw out any remaining resultsets */
-               dbcancel(H-link);
-       }
-#endif
-       
-
-
 cleanup:
        for (i = 0; i < nvars; i++) {
                if (vars[i].freeme) {


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to