php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | |
Patch make_resuming_pdo_oci_sessions for PDO OCI Bug #55768Patch version 2011-09-27 08:15 UTC Return to Bug #55768 | Download this patchThis patch renders other patches obsolete Obsolete patches: Patch Revisions: 2011-09-27 08:15 UTC | 2011-09-27 06:01 UTC | 2011-09-26 08:33 UTC | 2011-09-26 08:31 UTC | 2011-09-23 13:30 UTCDeveloper: mikhail.v.gavrilov@gmail.com+ case 28511: /* consider the connection closed */ dbh->is_closed = 1; H->attached = 0; @@ -515,7 +530,25 @@ @@ -515,7 +530,34 @@ } /* }}} */ +static int pdo_oci_check_liveness(pdo_dbh_t *dbh TSRMLS_DC) + /* TODO move attached check to PDO level */ + if (H->attached == 0) return FAILURE; + /* TODO add persistent_timeout check at PDO level */ + + + /* Use OCIPing instead of OCIServerVersion. If OCIPing returns ORA-1010 (invalid OCI operation) + * such as from Pre-10.1 servers, the error is still from the server and we would have + * successfully performed a roundtrip and validated the connection. Use OCIServerVersion for + * Pre-10.2 clients + */ +#if ((OCI_MAJOR_VERSION > 10) || ((OCI_MAJOR_VERSION == 10) && (OCI_MINOR_VERSION >= 2))) /* OCIPing available 10.2 onwards */ + if (OCIPing (H->svc, H->err, OCI_DEFAULT) != OCI_SUCCESS) return FAILURE; + H->last_err = OCIPing (H->svc, H->err, OCI_DEFAULT); +#else + char version[256]; + /* use good old OCIServerVersion() */ + if (OCIServerVersion (H->svc, H->err, (text *)version, sizeof(version), OCI_HTYPE_SVCCTX) != OCI_SUCCESS) return FAILURE; + H->last_err = OCIServerVersion (H->svc, H->err, (text *)version, sizeof(version), OCI_HTYPE_SVCCTX); +#endif + return SUCCESS; + if (H->last_err == OCI_SUCCESS) return SUCCESS; + sb4 error_code = 0; + OCIErrorGet (H->err, (ub4)1, NULL, &error_code, NULL, 0, OCI_HTYPE_ERROR); + if (error_code == 1010) return SUCCESS; + return FAILURE; +} +/* }}} */ + static struct pdo_dbh_methods oci_methods = { oci_handle_closer, oci_handle_preparer, @@ -528,7 +561,7 @@ @@ -528,7 +570,7 @@ NULL, pdo_oci_fetch_error_func, oci_handle_get_attribute, - NULL, /* check_liveness */ + pdo_oci_check_liveness, /* check_liveness */ NULL /* get_driver_methods */ }; @@ -675,6 +708,7 @@ @@ -675,6 +717,7 @@ } /* }}} */ + |
Copyright © 2001-2024 The PHP Group All rights reserved. |
Last updated: Mon Sep 09 17:01:27 2024 UTC |