mirror of
https://github.com/php/php-src.git
synced 2024-11-30 21:35:36 +08:00
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.
This commit is contained in:
parent
93f3ba66a7
commit
5ce23f39d5
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user