summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/pgsql/pgsql.c55
-rw-r--r--ext/pgsql/php_pgsql.h2
2 files changed, 57 insertions, 0 deletions
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index 4962ca92bc..da6b87bdb4 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -75,6 +75,8 @@ function_entry pgsql_functions[] = {
PHP_FE(pg_loreadall, NULL)
PHP_FE(pg_loimport, NULL)
PHP_FE(pg_loexport, NULL)
+ PHP_FE(pg_lolseek, NULL)
+ PHP_FE(pg_lotell, NULL)
PHP_FE(pg_put_line, NULL)
PHP_FE(pg_end_copy, NULL)
#if HAVE_PQCLIENTENCODING
@@ -1736,6 +1738,59 @@ PHP_FUNCTION(pg_loexport)
}
/* }}} */
+/* {{{ proto int pg_lolseek(int objoid, int offset, int whence)
+ Seek into a postgres large object*/
+PHP_FUNCTION(pg_lolseek) {
+ val **pgsql_lofp, **seek_offset, **seek_whence;
+ gLofp *pgsql;
+
+ switch(ZEND_NUM_ARGS()) {
+ case 3:
+ if (zend_get_parameters_ex(3, &pgsql_lofp, &seek_offset, &seek_whence)==FAILURE) {
+ RETURN_FALSE;
+ }
+ convert_to_long_ex(seek_offset);
+ convert_to_long_ex(seek_whence);
+ break;
+ default:
+ WRONG_PARAM_COUNT;
+ break;
+ }
+
+ ZEND_FETCH_RESOURCE(pgsql, pgLofp *, pgsql_lofp, -1, "PostgreSQL large object", le_lofp);
+ if (lo_lseek((PGconn *)pgsql->conn, pgsql->lofd, Z_STRVAL_PP(seek_offset), Z_STRVAL_PP(seek_whence))) {
+ RETURN_TRUE;
+ } else {
+ RETURN_FALSE;
+ }
+}
+/* }}} */
+
+/* {{{ proto int pg_tell(int objoid)
+ return current offset into large object */
+PHP_FUNCTION(pg_lotell) {
+ long int offset;
+ zval **pgsql_lofp;
+ pgLofp *pgsql;
+
+ switch(ZEND_NUM_ARGS()) {
+ case 1:
+ if (zend_get_parameters_ex(1, &pgsql_lofp)==FAILURE) {
+ RETURN_FALSE;
+ }
+ break;
+ default:
+ WRONG_PARAM_COUNT;
+ break;
+ }
+
+ END_FETCH_RESOURCE(pgsql, pgLofp *, pgsql_lofp, -1, "PostgreSQL large object", le_lofp);
+
+ ffset = lo_tell((PGconn *)pgsql->conn, pgsql->lofd);
+ ETURN_LONG (offset);
+}
+/* }}} */
+
#if HAVE_PQCLIENTENCODING
/* {{{ proto int pg_set_client_encoding([int connection,] string encoding)
diff --git a/ext/pgsql/php_pgsql.h b/ext/pgsql/php_pgsql.h
index 61796519d7..37071c8395 100644
--- a/ext/pgsql/php_pgsql.h
+++ b/ext/pgsql/php_pgsql.h
@@ -85,6 +85,8 @@ PHP_FUNCTION(pg_lowrite);
PHP_FUNCTION(pg_loreadall);
PHP_FUNCTION(pg_loimport);
PHP_FUNCTION(pg_loexport);
+PHP_FUNCTION(pg_lolseek);
+PHP_FUNCTION(pg_lotell);
PHP_FUNCTION(pg_put_line);
PHP_FUNCTION(pg_end_copy);
#if HAVE_PQCLIENTENCODING