mirror of
https://github.com/danog/ext-pq.git
synced 2024-11-30 04:19:49 +01:00
prefix internal API; ensure raphf is built first in-tree
This commit is contained in:
parent
5a5758352b
commit
7d95419254
175
config.m4
175
config.m4
@ -1,173 +1,2 @@
|
||||
PHP_ARG_WITH(pq, [whether to enable libpq (PostgreSQL) support],
|
||||
[ --with-pq[=DIR] Include libpq support])
|
||||
|
||||
if test "$PHP_PQ" != "no"; then
|
||||
SEARCH_PATH="/usr/local /usr /opt"
|
||||
if test "$PHP_PQ" != "yes"; then
|
||||
SEARCH_PATH="$PHP_PQ $SEARCH_PATH"
|
||||
fi
|
||||
for i in $SEARCH_PATH; do
|
||||
AC_MSG_CHECKING(for $i/include/libpq-events.h)
|
||||
if test -f "$i/include/libpq-events.h"; then
|
||||
PQ_DIR=$i
|
||||
AC_MSG_RESULT(yep)
|
||||
break
|
||||
fi
|
||||
AC_MSG_RESULT(nope)
|
||||
done
|
||||
|
||||
if test -z "$PQ_DIR"; then
|
||||
AC_MSG_ERROR(could not find include/libpq-events.h)
|
||||
fi
|
||||
PHP_ADD_INCLUDE($PQ_DIR/include)
|
||||
|
||||
ifdef([AC_PROG_EGREP], [
|
||||
AC_PROG_EGREP
|
||||
], [
|
||||
AC_CHECK_PROG(EGREP, egrep, egrep)
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl PQ_CHECK_CONST(name)
|
||||
dnl
|
||||
AC_DEFUN([PQ_CHECK_CONST], [
|
||||
AC_MSG_CHECKING(for $1)
|
||||
if $EGREP -q $1 $PQ_DIR/include/libpq-fe.h; then
|
||||
AC_DEFINE(HAVE_$1, 1, [Have $1])
|
||||
AC_MSG_RESULT(yep)
|
||||
else
|
||||
AC_MSG_RESULT(nope)
|
||||
fi
|
||||
])
|
||||
|
||||
PQ_CHECK_CONST(PGRES_SINGLE_TUPLE)
|
||||
PQ_CHECK_CONST(PGRES_COPY_BOTH)
|
||||
|
||||
|
||||
dnl
|
||||
dnl PQ_CHECK_FUNC(sym, fail-hard)
|
||||
dnl
|
||||
AC_DEFUN([PQ_CHECK_FUNC], [
|
||||
FAIL_HARD=$2
|
||||
|
||||
PHP_CHECK_LIBRARY(pq, $1, [
|
||||
AC_DEFINE([HAVE_]translit($1,a-z,A-Z), 1, Have $1)
|
||||
], [
|
||||
if test -n "$FAIL_HARD"; then
|
||||
if "$FAIL_HARD"; then
|
||||
AC_MSG_ERROR(could not find $PQ_SYM in -lpq)
|
||||
fi
|
||||
fi
|
||||
], [
|
||||
-L$PQ_DIR/$PHP_LIBDIR
|
||||
])
|
||||
])
|
||||
|
||||
PQ_CHECK_FUNC(PQregisterEventProc, true)
|
||||
PHP_ADD_LIBRARY_WITH_PATH(pq, $PQ_DIR/$PHP_LIBDIR, PQ_SHARED_LIBADD)
|
||||
PHP_SUBST(PQ_SHARED_LIBADD)
|
||||
|
||||
PQ_CHECK_FUNC(PQlibVersion)
|
||||
PQ_CHECK_FUNC(PQconninfo)
|
||||
PQ_CHECK_FUNC(PQsetSingleRowMode)
|
||||
|
||||
dnl
|
||||
dnl PQ_HAVE_PHP_EXT(name[, code-if-yes[, code-if-not]])
|
||||
dnl
|
||||
AC_DEFUN([PQ_HAVE_PHP_EXT], [
|
||||
extname=$1
|
||||
haveext=$[PHP_]translit($1,a-z_-,A-Z__)
|
||||
AC_MSG_CHECKING([for ext/$extname support])
|
||||
if test -x "$PHP_EXECUTABLE"; then
|
||||
grepext=`$PHP_EXECUTABLE -m | $EGREP ^$extname\$`
|
||||
if test "$grepext" = "$extname"; then
|
||||
[PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=1
|
||||
AC_MSG_RESULT([yes])
|
||||
$2
|
||||
else
|
||||
[PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=
|
||||
AC_MSG_RESULT([no])
|
||||
$3
|
||||
fi
|
||||
elif test "$haveext" != "no" && test "x$haveext" != "x"; then
|
||||
[PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=1
|
||||
AC_MSG_RESULT([yes])
|
||||
$2
|
||||
else
|
||||
[PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=
|
||||
AC_MSG_RESULT([no])
|
||||
$3
|
||||
fi
|
||||
])
|
||||
|
||||
PQ_SRC="\
|
||||
src/php_pq_module.c\
|
||||
src/php_pq_misc.c\
|
||||
src/php_pq_callback.c\
|
||||
src/php_pq_object.c\
|
||||
src/php_pq_params.c\
|
||||
src/php_pqcancel.c\
|
||||
src/php_pqconn.c\
|
||||
src/php_pqconn_event.c\
|
||||
src/php_pqcopy.c\
|
||||
src/php_pqexc.c\
|
||||
src/php_pqlob.c\
|
||||
src/php_pqres.c\
|
||||
src/php_pqstm.c\
|
||||
src/php_pqtxn.c\
|
||||
src/php_pqtypes.c\
|
||||
src/php_pqcur.c\
|
||||
"
|
||||
PHP_NEW_EXTENSION(pq, $PQ_SRC, $ext_shared)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src)
|
||||
PHP_ADD_INCLUDE($ext_srcdir/src)
|
||||
|
||||
PQ_HAVE_PHP_EXT([raphf], [
|
||||
AC_MSG_CHECKING([for php_raphf.h])
|
||||
PQ_EXT_RAPHF_INCDIR=
|
||||
for i in `echo $INCLUDES | $SED -e's/-I//g'` $abs_srcdir ../raphf; do
|
||||
if test -d $i; then
|
||||
if test -f $i/php_raphf.h; then
|
||||
PQ_EXT_RAPHF_INCDIR=$i
|
||||
break
|
||||
elif test -f $i/ext/raphf/php_raphf.h; then
|
||||
PQ_EXT_RAPHF_INCDIR=$i/ext/raphf
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if test "x$PQ_EXT_RAPHF_INCDIR" = "x"; then
|
||||
AC_MSG_ERROR([not found])
|
||||
else
|
||||
AC_MSG_RESULT([$PQ_EXT_RAPHF_INCDIR])
|
||||
AC_DEFINE([PHP_PQ_HAVE_PHP_RAPHF_H], [1], [Have ext/raphf support])
|
||||
PHP_ADD_INCLUDE([$PQ_EXT_RAPHF_INCDIR])
|
||||
fi
|
||||
], [
|
||||
AC_MSG_ERROR([Please install pecl/raphf and activate extension=raphf.$SHLIB_DL_SUFFIX_NAME in your php.ini])
|
||||
])
|
||||
PHP_ADD_EXTENSION_DEP(pq, raphf, true)
|
||||
PQ_HAVE_PHP_EXT([json], [
|
||||
AC_MSG_CHECKING([for php_json.h])
|
||||
PQ_EXT_JSON_INCDIR=
|
||||
for i in `echo $INCLUDES | $SED -e's/-I//g'` $abs_srcdir ../json ../jsonc ../jsond; do
|
||||
if test -d $i; then
|
||||
if test -f $i/php_json.h; then
|
||||
PQ_EXT_JSON_INCDIR=$i
|
||||
break
|
||||
elif test -f $i/ext/json/php_json.h; then
|
||||
PQ_EXT_JSON_INCDIR=$i/ext/json
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if test "x$PQ_EXT_JSON_INCDIR" = "x"; then
|
||||
AC_MSG_ERROR([not found])
|
||||
else
|
||||
AC_MSG_RESULT([$PQ_EXT_JSON_INCDIR])
|
||||
AC_DEFINE([PHP_PQ_HAVE_PHP_JSON_H], [1], [Have ext/json support])
|
||||
PHP_ADD_INCLUDE([$PQ_EXT_JSON_INCDIR])
|
||||
fi
|
||||
])
|
||||
fi
|
||||
|
||||
dnl phpize stub of config9.m4 for pecl/pq
|
||||
sinclude(config9.m4)
|
||||
|
172
config9.m4
Normal file
172
config9.m4
Normal file
@ -0,0 +1,172 @@
|
||||
PHP_ARG_WITH(pq, [whether to enable libpq (PostgreSQL) support],
|
||||
[ --with-pq[=DIR] Include libpq support])
|
||||
|
||||
if test "$PHP_PQ" != "no"; then
|
||||
SEARCH_PATH="/usr/local /usr /opt"
|
||||
if test "$PHP_PQ" != "yes"; then
|
||||
SEARCH_PATH="$PHP_PQ $SEARCH_PATH"
|
||||
fi
|
||||
for i in $SEARCH_PATH; do
|
||||
AC_MSG_CHECKING(for $i/include/libpq-events.h)
|
||||
if test -f "$i/include/libpq-events.h"; then
|
||||
PQ_DIR=$i
|
||||
AC_MSG_RESULT(yep)
|
||||
break
|
||||
fi
|
||||
AC_MSG_RESULT(nope)
|
||||
done
|
||||
|
||||
if test -z "$PQ_DIR"; then
|
||||
AC_MSG_ERROR(could not find include/libpq-events.h)
|
||||
fi
|
||||
PHP_ADD_INCLUDE($PQ_DIR/include)
|
||||
|
||||
ifdef([AC_PROG_EGREP], [
|
||||
AC_PROG_EGREP
|
||||
], [
|
||||
AC_CHECK_PROG(EGREP, egrep, egrep)
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl PQ_CHECK_CONST(name)
|
||||
dnl
|
||||
AC_DEFUN([PQ_CHECK_CONST], [
|
||||
AC_MSG_CHECKING(for $1)
|
||||
if $EGREP -q $1 $PQ_DIR/include/libpq-fe.h; then
|
||||
AC_DEFINE(HAVE_$1, 1, [Have $1])
|
||||
AC_MSG_RESULT(yep)
|
||||
else
|
||||
AC_MSG_RESULT(nope)
|
||||
fi
|
||||
])
|
||||
|
||||
PQ_CHECK_CONST(PGRES_SINGLE_TUPLE)
|
||||
PQ_CHECK_CONST(PGRES_COPY_BOTH)
|
||||
|
||||
|
||||
dnl
|
||||
dnl PQ_CHECK_FUNC(sym, fail-hard)
|
||||
dnl
|
||||
AC_DEFUN([PQ_CHECK_FUNC], [
|
||||
FAIL_HARD=$2
|
||||
|
||||
PHP_CHECK_LIBRARY(pq, $1, [
|
||||
AC_DEFINE([HAVE_]translit($1,a-z,A-Z), 1, Have $1)
|
||||
], [
|
||||
if test -n "$FAIL_HARD"; then
|
||||
if "$FAIL_HARD"; then
|
||||
AC_MSG_ERROR(could not find $PQ_SYM in -lpq)
|
||||
fi
|
||||
fi
|
||||
], [
|
||||
-L$PQ_DIR/$PHP_LIBDIR
|
||||
])
|
||||
])
|
||||
|
||||
PQ_CHECK_FUNC(PQregisterEventProc, true)
|
||||
PHP_ADD_LIBRARY_WITH_PATH(pq, $PQ_DIR/$PHP_LIBDIR, PQ_SHARED_LIBADD)
|
||||
PHP_SUBST(PQ_SHARED_LIBADD)
|
||||
|
||||
PQ_CHECK_FUNC(PQlibVersion)
|
||||
PQ_CHECK_FUNC(PQconninfo)
|
||||
PQ_CHECK_FUNC(PQsetSingleRowMode)
|
||||
|
||||
dnl
|
||||
dnl PQ_HAVE_PHP_EXT(name[, code-if-yes[, code-if-not]])
|
||||
dnl
|
||||
AC_DEFUN([PQ_HAVE_PHP_EXT], [
|
||||
extname=$1
|
||||
haveext=$[PHP_]translit($1,a-z_-,A-Z__)
|
||||
AC_MSG_CHECKING([for ext/$extname support])
|
||||
if test "$haveext" != "no" && test "x$haveext" != "x"; then
|
||||
[PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=1
|
||||
AC_MSG_RESULT([yes])
|
||||
$2
|
||||
elif test -x "$PHP_EXECUTABLE"; then
|
||||
grepext=`$PHP_EXECUTABLE -m | $EGREP ^$extname\$`
|
||||
if test "$grepext" = "$extname"; then
|
||||
[PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=1
|
||||
AC_MSG_RESULT([yes])
|
||||
$2
|
||||
else
|
||||
[PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=
|
||||
AC_MSG_RESULT([no])
|
||||
$3
|
||||
fi
|
||||
else
|
||||
[PHP_PQ_HAVE_EXT_]translit($1,a-z_-,A-Z__)=
|
||||
AC_MSG_RESULT([no])
|
||||
$3
|
||||
fi
|
||||
])
|
||||
|
||||
PQ_SRC="\
|
||||
src/php_pq_module.c\
|
||||
src/php_pq_misc.c\
|
||||
src/php_pq_callback.c\
|
||||
src/php_pq_object.c\
|
||||
src/php_pq_params.c\
|
||||
src/php_pqcancel.c\
|
||||
src/php_pqconn.c\
|
||||
src/php_pqconn_event.c\
|
||||
src/php_pqcopy.c\
|
||||
src/php_pqexc.c\
|
||||
src/php_pqlob.c\
|
||||
src/php_pqres.c\
|
||||
src/php_pqstm.c\
|
||||
src/php_pqtxn.c\
|
||||
src/php_pqtypes.c\
|
||||
src/php_pqcur.c\
|
||||
"
|
||||
PHP_NEW_EXTENSION(pq, $PQ_SRC, $ext_shared)
|
||||
PHP_ADD_BUILD_DIR($ext_builddir/src)
|
||||
PHP_ADD_INCLUDE($ext_srcdir/src)
|
||||
|
||||
PQ_HAVE_PHP_EXT([raphf], [
|
||||
AC_MSG_CHECKING([for php_raphf.h])
|
||||
PQ_EXT_RAPHF_INCDIR=
|
||||
for i in `echo $INCLUDES | $SED -e's/-I//g'` $abs_srcdir ../raphf; do
|
||||
if test -d $i; then
|
||||
if test -f $i/php_raphf.h; then
|
||||
PQ_EXT_RAPHF_INCDIR=$i
|
||||
break
|
||||
elif test -f $i/ext/raphf/php_raphf.h; then
|
||||
PQ_EXT_RAPHF_INCDIR=$i/ext/raphf
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if test "x$PQ_EXT_RAPHF_INCDIR" = "x"; then
|
||||
AC_MSG_ERROR([not found])
|
||||
else
|
||||
AC_MSG_RESULT([$PQ_EXT_RAPHF_INCDIR])
|
||||
AC_DEFINE([PHP_PQ_HAVE_PHP_RAPHF_H], [1], [Have ext/raphf support])
|
||||
PHP_ADD_INCLUDE([$PQ_EXT_RAPHF_INCDIR])
|
||||
fi
|
||||
], [
|
||||
AC_MSG_ERROR([Please install pecl/raphf and activate extension=raphf.$SHLIB_DL_SUFFIX_NAME in your php.ini])
|
||||
])
|
||||
PHP_ADD_EXTENSION_DEP(pq, raphf, true)
|
||||
PQ_HAVE_PHP_EXT([json], [
|
||||
AC_MSG_CHECKING([for php_json.h])
|
||||
PQ_EXT_JSON_INCDIR=
|
||||
for i in `echo $INCLUDES | $SED -e's/-I//g'` $abs_srcdir ../json ../jsonc ../jsond; do
|
||||
if test -d $i; then
|
||||
if test -f $i/php_json.h; then
|
||||
PQ_EXT_JSON_INCDIR=$i
|
||||
break
|
||||
elif test -f $i/ext/json/php_json.h; then
|
||||
PQ_EXT_JSON_INCDIR=$i/ext/json
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if test "x$PQ_EXT_JSON_INCDIR" = "x"; then
|
||||
AC_MSG_ERROR([not found])
|
||||
else
|
||||
AC_MSG_RESULT([$PQ_EXT_JSON_INCDIR])
|
||||
AC_DEFINE([PHP_PQ_HAVE_PHP_JSON_H], [1], [Have ext/json support])
|
||||
PHP_ADD_INCLUDE([$PQ_EXT_JSON_INCDIR])
|
||||
fi
|
||||
])
|
||||
fi
|
@ -49,6 +49,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
|
||||
<file role="doc" name="CREDITS" />
|
||||
<file role="doc" name="LICENSE" />
|
||||
<file role="src" name="config.m4" />
|
||||
<file role="src" name="config9.m4" />
|
||||
<file role="src" name="php_pq.h" />
|
||||
<file role="src" name="php_pq_type.awk" />
|
||||
<file role="src" name="php_pq_type.h" />
|
||||
|
@ -25,7 +25,7 @@
|
||||
#include "php_pq.h"
|
||||
#include "php_pq_misc.h"
|
||||
|
||||
char *rtrim(char *e)
|
||||
char *php_pq_rtrim(char *e)
|
||||
{
|
||||
size_t l = strlen(e);
|
||||
|
||||
@ -35,7 +35,7 @@ char *rtrim(char *e)
|
||||
return e;
|
||||
}
|
||||
|
||||
const char *strmode(long mode)
|
||||
const char *php_pq_strmode(long mode)
|
||||
{
|
||||
switch (mode & (INV_READ|INV_WRITE)) {
|
||||
case INV_READ|INV_WRITE:
|
||||
@ -49,7 +49,7 @@ const char *strmode(long mode)
|
||||
}
|
||||
}
|
||||
|
||||
int compare_index(const void *lptr, const void *rptr TSRMLS_DC)
|
||||
int php_pq_compare_index(const void *lptr, const void *rptr TSRMLS_DC)
|
||||
{
|
||||
const Bucket *l = *(const Bucket **) lptr;
|
||||
const Bucket *r = *(const Bucket **) rptr;
|
||||
|
@ -28,13 +28,13 @@ typedef int STATUS; /* SUCCESS/FAILURE */
|
||||
#endif
|
||||
|
||||
/* trim LF from EOL */
|
||||
char *rtrim(char *e);
|
||||
char *php_pq_rtrim(char *e);
|
||||
|
||||
/* R, W, RW */
|
||||
const char *strmode(long mode);
|
||||
const char *php_pq_strmode(long mode);
|
||||
|
||||
/* compare array index */
|
||||
int compare_index(const void *lptr, const void *rptr TSRMLS_DC);
|
||||
int php_pq_compare_index(const void *lptr, const void *rptr TSRMLS_DC);
|
||||
|
||||
#define PHP_PQerrorMessage(c) rtrim(PQerrorMessage((c)))
|
||||
#define PHP_PQresultErrorMessage(r) rtrim(PQresultErrorMessage((r)))
|
||||
|
@ -258,12 +258,12 @@ static PHP_METHOD(pqlob, __construct) {
|
||||
}
|
||||
|
||||
if (loid == InvalidOid) {
|
||||
throw_exce(EX_RUNTIME TSRMLS_CC, "Failed to create large object with mode '%s' (%s)", strmode(mode), PHP_PQerrorMessage(txn_obj->intern->conn->intern->conn));
|
||||
throw_exce(EX_RUNTIME TSRMLS_CC, "Failed to create large object with mode '%s' (%s)", php_pq_strmode(mode), PHP_PQerrorMessage(txn_obj->intern->conn->intern->conn));
|
||||
} else {
|
||||
int lofd = lo_open(txn_obj->intern->conn->intern->conn, loid, mode);
|
||||
|
||||
if (lofd < 0) {
|
||||
throw_exce(EX_RUNTIME TSRMLS_CC, "Failed to open large object with oid=%u with mode '%s' (%s)", loid, strmode(mode), PHP_PQerrorMessage(txn_obj->intern->conn->intern->conn));
|
||||
throw_exce(EX_RUNTIME TSRMLS_CC, "Failed to open large object with oid=%u with mode '%s' (%s)", loid, php_pq_strmode(mode), PHP_PQerrorMessage(txn_obj->intern->conn->intern->conn));
|
||||
} else {
|
||||
obj->intern = ecalloc(1, sizeof(*obj->intern));
|
||||
obj->intern->lofd = lofd;
|
||||
|
@ -700,7 +700,7 @@ static PHP_METHOD(pqres, bind) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to bind column %s@%d", col.name, col.num);
|
||||
RETVAL_FALSE;
|
||||
} else {
|
||||
zend_hash_sort(&obj->intern->bound, zend_qsort, compare_index, 0 TSRMLS_CC);
|
||||
zend_hash_sort(&obj->intern->bound, zend_qsort, php_pq_compare_index, 0 TSRMLS_CC);
|
||||
RETVAL_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -183,7 +183,7 @@ static PHP_METHOD(pqstm, bind) {
|
||||
SEPARATE_ZVAL_TO_MAKE_IS_REF(param_ref);
|
||||
Z_ADDREF_PP(param_ref);
|
||||
zend_hash_index_update(&obj->intern->bound, param_no, (void *) param_ref, sizeof(zval *), NULL);
|
||||
zend_hash_sort(&obj->intern->bound, zend_qsort, compare_index, 0 TSRMLS_CC);
|
||||
zend_hash_sort(&obj->intern->bound, zend_qsort, php_pq_compare_index, 0 TSRMLS_CC);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -704,7 +704,7 @@ static PHP_METHOD(pqtxn, openLOB) {
|
||||
int lofd = lo_open(obj->intern->conn->intern->conn, loid, mode);
|
||||
|
||||
if (lofd < 0) {
|
||||
throw_exce(EX_RUNTIME TSRMLS_CC, "Failed to open large object with oid=%u with mode '%s' (%s)", loid, strmode(mode), PHP_PQerrorMessage(obj->intern->conn->intern->conn));
|
||||
throw_exce(EX_RUNTIME TSRMLS_CC, "Failed to open large object with oid=%u with mode '%s' (%s)", loid, php_pq_strmode(mode), PHP_PQerrorMessage(obj->intern->conn->intern->conn));
|
||||
} else {
|
||||
php_pqlob_t *lob = ecalloc(1, sizeof(*lob));
|
||||
|
||||
@ -743,12 +743,12 @@ static PHP_METHOD(pqtxn, createLOB) {
|
||||
Oid loid = lo_creat(obj->intern->conn->intern->conn, mode);
|
||||
|
||||
if (loid == InvalidOid) {
|
||||
throw_exce(EX_RUNTIME TSRMLS_CC, "Failed to create large object with mode '%s' (%s)", strmode(mode), PHP_PQerrorMessage(obj->intern->conn->intern->conn));
|
||||
throw_exce(EX_RUNTIME TSRMLS_CC, "Failed to create large object with mode '%s' (%s)", php_pq_strmode(mode), PHP_PQerrorMessage(obj->intern->conn->intern->conn));
|
||||
} else {
|
||||
int lofd = lo_open(obj->intern->conn->intern->conn, loid, mode);
|
||||
|
||||
if (lofd < 0) {
|
||||
throw_exce(EX_RUNTIME TSRMLS_CC, "Failed to open large object with oid=%u with mode '%s': %s", loid, strmode(mode), PHP_PQerrorMessage(obj->intern->conn->intern->conn));
|
||||
throw_exce(EX_RUNTIME TSRMLS_CC, "Failed to open large object with oid=%u with mode '%s': %s", loid, php_pq_strmode(mode), PHP_PQerrorMessage(obj->intern->conn->intern->conn));
|
||||
} else {
|
||||
php_pqlob_t *lob = ecalloc(1, sizeof(*lob));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user