} else if (attr == PDO_ATTR_PREFETCH) {
H->prefetch = pdo_oci_sanitize_prefetch(lval);
return 1;
+ } else if (attr == PDO_OCI_ATTR_ACTION) {
+#if (OCI_MAJOR_VERSION >= 10)
+ zend_string *action = zval_get_string(val);
+
+ H->last_err = OCIAttrSet(H->session, OCI_HTYPE_SESSION,
+ (dvoid *) ZSTR_VAL(action), (ub4) ZSTR_LEN(action),
+ OCI_ATTR_ACTION, H->err);
+ if (H->last_err) {
+ oci_drv_error("OCIAttrSet: OCI_ATTR_ACTION");
+ return 0;
+ }
+ return 1;
+#else
+ oci_drv_error("Unsupported attribute type");
+ return 0;
+#endif
+ } else if (attr == PDO_OCI_ATTR_CLIENT_INFO) {
+#if (OCI_MAJOR_VERSION >= 10)
+ zend_string *client_info = zval_get_string(val);
+
+ H->last_err = OCIAttrSet(H->session, OCI_HTYPE_SESSION,
+ (dvoid *) ZSTR_VAL(client_info), (ub4) ZSTR_LEN(client_info),
+ OCI_ATTR_CLIENT_INFO, H->err);
+ if (H->last_err) {
+ oci_drv_error("OCIAttrSet: OCI_ATTR_CLIENT_INFO");
+ return 0;
+ }
+ return 1;
+#else
+ oci_drv_error("Unsupported attribute type");
+ return 0;
+#endif
} else {
return 0;
}
/* Arbitrary assumed row length for prefetch memory limit calcuation */
#define PDO_OCI_PREFETCH_ROWSIZE 1024
+
+
+enum {
+ PDO_OCI_ATTR_ACTION = PDO_ATTR_DRIVER_SPECIFIC,
+ PDO_OCI_ATTR_CLIENT_INFO,
+};
\ No newline at end of file