summaryrefslogtreecommitdiff
path: root/ext/pdo_pgsql/pgsql_driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pdo_pgsql/pgsql_driver.c')
-rw-r--r--ext/pdo_pgsql/pgsql_driver.c87
1 files changed, 45 insertions, 42 deletions
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c
index 24a5865c75..48320d3148 100644
--- a/ext/pdo_pgsql/pgsql_driver.c
+++ b/ext/pdo_pgsql/pgsql_driver.c
@@ -380,17 +380,17 @@ static int pdo_pgsql_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value
switch (attr) {
case PDO_ATTR_CLIENT_VERSION:
- ZVAL_STRING(return_value, PG_VERSION, 1);
+ ZVAL_STRING(return_value, PG_VERSION);
break;
case PDO_ATTR_SERVER_VERSION:
if (PQprotocolVersion(H->server) >= 3) { /* PostgreSQL 7.4 or later */
- ZVAL_STRING(return_value, (char*)PQparameterStatus(H->server, "server_version"), 1);
+ ZVAL_STRING(return_value, (char*)PQparameterStatus(H->server, "server_version"));
} else /* emulate above via a query */
{
PGresult *res = PQexec(H->server, "SELECT VERSION()");
if (res && PQresultStatus(res) == PGRES_TUPLES_OK) {
- ZVAL_STRING(return_value, (char *)PQgetvalue(res, 0, 0), 1);
+ ZVAL_STRING(return_value, (char *)PQgetvalue(res, 0, 0));
}
if (res) {
@@ -402,48 +402,51 @@ static int pdo_pgsql_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value
case PDO_ATTR_CONNECTION_STATUS:
switch (PQstatus(H->server)) {
case CONNECTION_STARTED:
- ZVAL_STRINGL(return_value, "Waiting for connection to be made.", sizeof("Waiting for connection to be made.")-1, 1);
+ ZVAL_STRINGL(return_value, "Waiting for connection to be made.", sizeof("Waiting for connection to be made.")-1);
break;
case CONNECTION_MADE:
case CONNECTION_OK:
- ZVAL_STRINGL(return_value, "Connection OK; waiting to send.", sizeof("Connection OK; waiting to send.")-1, 1);
+ ZVAL_STRINGL(return_value, "Connection OK; waiting to send.", sizeof("Connection OK; waiting to send.")-1);
break;
case CONNECTION_AWAITING_RESPONSE:
- ZVAL_STRINGL(return_value, "Waiting for a response from the server.", sizeof("Waiting for a response from the server.")-1, 1);
+ ZVAL_STRINGL(return_value, "Waiting for a response from the server.", sizeof("Waiting for a response from the server.")-1);
break;
case CONNECTION_AUTH_OK:
- ZVAL_STRINGL(return_value, "Received authentication; waiting for backend start-up to finish.", sizeof("Received authentication; waiting for backend start-up to finish.")-1, 1);
+ ZVAL_STRINGL(return_value, "Received authentication; waiting for backend start-up to finish.", sizeof("Received authentication; waiting for backend start-up to finish.")-1);
break;
#ifdef CONNECTION_SSL_STARTUP
case CONNECTION_SSL_STARTUP:
- ZVAL_STRINGL(return_value, "Negotiating SSL encryption.", sizeof("Negotiating SSL encryption.")-1, 1);
+ ZVAL_STRINGL(return_value, "Negotiating SSL encryption.", sizeof("Negotiating SSL encryption.")-1);
break;
#endif
case CONNECTION_SETENV:
- ZVAL_STRINGL(return_value, "Negotiating environment-driven parameter settings.", sizeof("Negotiating environment-driven parameter settings.")-1, 1);
+ ZVAL_STRINGL(return_value, "Negotiating environment-driven parameter settings.", sizeof("Negotiating environment-driven parameter settings.")-1);
break;
case CONNECTION_BAD:
default:
- ZVAL_STRINGL(return_value, "Bad connection.", sizeof("Bad connection.")-1, 1);
+ ZVAL_STRINGL(return_value, "Bad connection.", sizeof("Bad connection.")-1);
break;
}
break;
case PDO_ATTR_SERVER_INFO: {
int spid = PQbackendPID(H->server);
- char *tmp;
- spprintf(&tmp, 0,
- "PID: %d; Client Encoding: %s; Is Superuser: %s; Session Authorization: %s; Date Style: %s",
- spid,
- (char*)PQparameterStatus(H->server, "client_encoding"),
- (char*)PQparameterStatus(H->server, "is_superuser"),
- (char*)PQparameterStatus(H->server, "session_authorization"),
- (char*)PQparameterStatus(H->server, "DateStyle"));
- ZVAL_STRING(return_value, tmp, 0);
+
+
+ zend_string *str_info =
+ strpprintf(0,
+ "PID: %d; Client Encoding: %s; Is Superuser: %s; Session Authorization: %s; Date Style: %s",
+ spid,
+ (char*)PQparameterStatus(H->server, "client_encoding"),
+ (char*)PQparameterStatus(H->server, "is_superuser"),
+ (char*)PQparameterStatus(H->server, "session_authorization"),
+ (char*)PQparameterStatus(H->server, "DateStyle"));
+
+ ZVAL_STR(return_value, str_info);
}
break;
@@ -533,7 +536,7 @@ static PHP_METHOD(PDO, pgsqlCopyFromArray)
RETURN_FALSE;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -564,33 +567,33 @@ static PHP_METHOD(PDO, pgsqlCopyFromArray)
if (status == PGRES_COPY_IN && pgsql_result) {
int command_failed = 0;
int buffer_len = 0;
- zval **tmp;
+ zval *tmp;
HashPosition pos;
PQclear(pgsql_result);
zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(pg_rows), &pos);
- while (zend_hash_get_current_data_ex(Z_ARRVAL_P(pg_rows), (void **) &tmp, &pos) == SUCCESS) {
+ while ((tmp = zend_hash_get_current_data_ex(Z_ARRVAL_P(pg_rows), &pos)) != NULL) {
int query_len;
convert_to_string_ex(tmp);
- if (buffer_len < Z_STRLEN_PP(tmp)) {
- buffer_len = Z_STRLEN_PP(tmp);
+ if (buffer_len < Z_STRLEN_P(tmp)) {
+ buffer_len = Z_STRLEN_P(tmp);
query = erealloc(query, buffer_len + 2); /* room for \n\0 */
}
- memcpy(query, Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp));
- query_len = Z_STRLEN_PP(tmp);
+ memcpy(query, Z_STRVAL_P(tmp), Z_STRLEN_P(tmp));
+ query_len = Z_STRLEN_P(tmp);
if (query[query_len - 1] != '\n') {
query[query_len++] = '\n';
}
query[query_len] = '\0';
if (PQputCopyData(H->server, query, query_len) != 1) {
- efree(query);
- pdo_pgsql_error(dbh, PGRES_FATAL_ERROR, NULL);
+ efree(query);
+ pdo_pgsql_error(dbh, PGRES_FATAL_ERROR, NULL);
PDO_HANDLE_DBH_ERR();
- RETURN_FALSE;
- }
+ RETURN_FALSE;
+ }
zend_hash_move_forward_ex(Z_ARRVAL_P(pg_rows), &pos);
- }
+ }
if (query) {
efree(query);
}
@@ -641,7 +644,7 @@ static PHP_METHOD(PDO, pgsqlCopyFromFile)
}
/* Obtain db Handler */
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -741,7 +744,7 @@ static PHP_METHOD(PDO, pgsqlCopyToFile)
return;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -834,7 +837,7 @@ static PHP_METHOD(PDO, pgsqlCopyToArray)
return;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -899,7 +902,7 @@ static PHP_METHOD(PDO, pgsqlLOBCreate)
pdo_pgsql_db_handle *H;
Oid lfd;
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -907,9 +910,9 @@ static PHP_METHOD(PDO, pgsqlLOBCreate)
lfd = lo_creat(H->server, INV_READ|INV_WRITE);
if (lfd != InvalidOid) {
- char *buf;
- spprintf(&buf, 0, "%lu", (long) lfd);
- RETURN_STRING(buf, 0);
+ zend_string *buf = strpprintf(0, "%lu", (long) lfd);
+
+ RETURN_STR(buf);
}
pdo_pgsql_error(dbh, PGRES_FATAL_ERROR, NULL);
@@ -947,7 +950,7 @@ static PHP_METHOD(PDO, pgsqlLOBOpen)
mode = INV_READ|INV_WRITE;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -990,7 +993,7 @@ static PHP_METHOD(PDO, pgsqlLOBUnlink)
RETURN_FALSE;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -1021,7 +1024,7 @@ static PHP_METHOD(PDO, pgsqlGetNotify)
RETURN_FALSE;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
if (result_type == PDO_FETCH_USE_DEFAULT) {
@@ -1075,7 +1078,7 @@ static PHP_METHOD(PDO, pgsqlGetPid)
pdo_dbh_t *dbh;
pdo_pgsql_db_handle *H;
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
H = (pdo_pgsql_db_handle *)dbh->driver_data;