com php-src: 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.: ext/pdo_dblib/dblib_driver.c
| From: | Stanley Sufficool | Date: | Sat, 05 Oct 2013 16:54:45 +0000 |
| Subject: | com php-src: 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.: ext/pdo_dblib/dblib_driver.c |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-73360@lists.php.net to get a copy of this message | ||
Commit: 690bbe170d9ed4597629e4e986575fbe0a2cb796
Author: Stanley Sufficool <ssufficool@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) {