Markus Fischer wrote:
> In such cases the manual has to be changed, not the code.
No problem.
I'll revert and update manual page.
Most PostgreSQL users should enable multibyte support, IMO :)
--
Yasuo Ohgaki
>
> - Markus
>
> On Thu, Apr 25, 2002 at 03:28:41PM +0900, Yasuo Ohgaki wrote :
>
>>Markus Fischer wrote:
>>
>>> Hi,
>>>
>>> I think it reached a common consesus that functions, which
>>> are not supported in a build, should NOT be in the function
>>> table. We're having a similar mess with GD and other
>>> extension. The proper way is to use function_exists() to
>>> check whether it's support or not. What makes those client
>>> encoding functions so special? Even the documentation clearly
>>> states that this function is available since 4.0.3 and
>>> requires PostgresSQL 7.0 or higher.
>>
>>This is the problem.
>>
>>PQclientEncoding/PQsetClientEncoding introduced from 7.0,
>>but I've got report that PHP will complain encoding functions are
>>not defined unless --enable-multibyte is used to build PostgreSQL.
>>
>>Therefore, I have to change manual or code.
>>
>>Since PQclientEncoding/PQsetClientEncording returns static
>>values w/o multibyte support, I've made pg_client_encoding/
>>pg_set_client_encoding always available for better script
>>portability.
>>
>>With this change, documents became correct and we have
>>better portability. I thought the issue previously discussed
>>is whether we should raise error for not supported functions
>>or not.
>>
>>Any comments?
>>I don't mind at all if I'm better to change the manual instead
>>of code.
>>
>>--
>>Yasuo Ohgaki
>>
>>
>>> - Markus
>>>
>>>On Thu, Apr 25, 2002 at 01:42:23AM -0000, Yasuo Ohgaki wrote :
>>>
>>>
>>>>yohgaki Wed Apr 24 21:42:23 2002 EDT
>>>>
>>>>Modified files:
>>>> /php4/ext/pgsql pgsql.c php_pgsql.h
>>>>Log:
>>>>pg_client_encoding/pg_set_client_encoding should be compiled always.
>>>>Recent libpq has PQclientEncoding/PQsetClientEncoding regarless of
>>>>multibyte support enabled or not.
>>>>
>>>>Reported by [EMAIL PROTECTED]
>>>>
>>>># This should be merged, but need a little more testing.
>>>>
>>>>
>>>>Index: php4/ext/pgsql/pgsql.c
>>>>diff -u php4/ext/pgsql/pgsql.c:1.196 php4/ext/pgsql/pgsql.c:1.197
>>>>--- php4/ext/pgsql/pgsql.c:1.196 Wed Apr 24 19:03:48 2002
>>>>+++ php4/ext/pgsql/pgsql.c Wed Apr 24 21:42:21 2002
>>>>@@ -19,7 +19,7 @@
>>>> +----------------------------------------------------------------------+
>>>>*/
>>>>
>>>>-/* $Id: pgsql.c,v 1.196 2002/04/24 23:03:48 yohgaki Exp $ */
>>>>+/* $Id: pgsql.c,v 1.197 2002/04/25 01:42:21 yohgaki Exp $ */
>>>>
>>>>#include <stdlib.h>
>>>>
>>>>@@ -137,10 +137,8 @@
>>>> PHP_FE(pg_escape_string,NULL)
>>>> PHP_FE(pg_escape_bytea, NULL)
>>>>#endif
>>>>-#if HAVE_PQCLIENTENCODING
>>>> PHP_FE(pg_client_encoding, NULL)
>>>> PHP_FE(pg_set_client_encoding, NULL)
>>>>-#endif
>>>> /* misc function */
>>>> PHP_FE(pg_metadata, NULL)
>>>> PHP_FE(pg_convert, NULL)
>>>>@@ -172,10 +170,8 @@
>>>> PHP_FALIAS(pg_lowrite, pg_lo_write, NULL)
>>>> PHP_FALIAS(pg_loimport, pg_lo_import, NULL)
>>>> PHP_FALIAS(pg_loexport, pg_lo_export, NULL)
>>>>-#if HAVE_PQCLIENTENCODING
>>>> PHP_FALIAS(pg_clientencoding, pg_client_encoding,
>>>> NULL)
>>>> PHP_FALIAS(pg_setclientencoding, pg_set_client_encoding, NULL)
>>>>-#endif
>>>> {NULL, NULL, NULL}
>>>>};
>>>>/* }}} */
>>>>@@ -2133,7 +2129,6 @@
>>>>}
>>>>/* }}} */
>>>>
>>>>-#ifdef HAVE_PQCLIENTENCODING
>>>>/* {{{ proto int pg_set_client_encoding([resource connection,] string
>>>>encoding)
>>>> Set client encoding */
>>>>PHP_FUNCTION(pg_set_client_encoding)
>>>>@@ -2159,13 +2154,18 @@
>>>> WRONG_PARAM_COUNT;
>>>> break;
>>>> }
>>>>-
>>>>+
>>>>+#ifdef HAVE_PQCLIENTENCODING
>>>> ZEND_FETCH_RESOURCE2(pgsql, PGconn *, pgsql_link, id, "PostgreSQL
>>>> link", le_link, le_plink);
>>>>
>>>> convert_to_string_ex(encoding);
>>>> Z_LVAL_P(return_value) = PQsetClientEncoding(pgsql,
>>>> Z_STRVAL_PP(encoding));
>>>> Z_TYPE_P(return_value) = IS_LONG;
>>>>-
>>>>+#else
>>>>+ php_error(E_NOTICE, "%s() PHP is compiled with libpq without
>>>>multibyte PQsetClientEncoding"
>>>>+ get_active_function_name(TSRMLS_C));
>>>>+ RETURN_LONG(-1);
>>>>+#endif
>>>>}
>>>>/* }}} */
>>>>
>>>>@@ -2192,6 +2192,7 @@
>>>> break;
>>>> }
>>>>
>>>>+#ifdef HAVE_PQCLIENTENCODING
>>>> ZEND_FETCH_RESOURCE2(pgsql, PGconn *, pgsql_link, id, "PostgreSQL
>>>> link", le_link, le_plink);
>>>>
>>>> /* Just do the same as found in PostgreSQL sources... */
>>>>@@ -2205,9 +2206,13 @@
>>>> Z_STRLEN_P(return_value) = strlen(Z_STRVAL_P(return_value));
>>>> Z_STRVAL_P(return_value) = (char *)
>>>> estrdup(Z_STRVAL_P(return_value));
>>>> Z_TYPE_P(return_value) = IS_STRING;
>>>>+#else
>>>>+ php_error(E_NOTICE, "%s() PHP is compiled with libpq without
>>>>PQclientEncoding"
>>>>+ get_active_function_name(TSRMLS_C));
>>>>+ RETURN_STRING("SQL_ASCII",1);
>>>>+#endif
>>>>}
>>>>/* }}} */
>>>>-#endif
>>>>
>>>>
>>>>#define COPYBUFSIZ 8192
>>>>Index: php4/ext/pgsql/php_pgsql.h
>>>>diff -u php4/ext/pgsql/php_pgsql.h:1.44 php4/ext/pgsql/php_pgsql.h:1.45
>>>>--- php4/ext/pgsql/php_pgsql.h:1.44 Mon Apr 22 23:42:26 2002
>>>>+++ php4/ext/pgsql/php_pgsql.h Wed Apr 24 21:42:23 2002
>>>>@@ -17,7 +17,7 @@
>>>> +----------------------------------------------------------------------+
>>>>*/
>>>>
>>>>-/* $Id: php_pgsql.h,v 1.44 2002/04/23 03:42:26 yohgaki Exp $ */
>>>>+/* $Id: php_pgsql.h,v 1.45 2002/04/25 01:42:23 yohgaki Exp $ */
>>>>
>>>>#ifndef PHP_PGSQL_H
>>>>#define PHP_PGSQL_H
>>>>@@ -114,10 +114,8 @@
>>>>PHP_FUNCTION(pg_untrace);
>>>>
>>>>/* utility functions */
>>>>-#if HAVE_PQCLIENTENCODING
>>>>PHP_FUNCTION(pg_client_encoding);
>>>>PHP_FUNCTION(pg_set_client_encoding);
>>>>-#endif
>>>>#if HAVE_PQESCAPE
>>>>PHP_FUNCTION(pg_escape_string);
>>>>PHP_FUNCTION(pg_escape_bytea);
>>>>
>>>>
>>>>
>>>>--
>>>>PHP CVS Mailing List (http://www.php.net/)
>>>>To unsubscribe, visit: http://www.php.net/unsub.php
>>>
>>>
>>
>
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php