summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2005-05-03 19:18:16 +0000
committerTom Lane2005-05-03 19:18:16 +0000
commit4afab9639a524d3818f7d207fc10e0b29d5d6ede (patch)
tree646e04f47698760e6c935d469b21f278e5f13d6a
parent298e077bc4ee507b17720bca29406042c4e6bcf3 (diff)
Alter the signature for encoding conversion functions to declare the
output area as INTERNAL not CSTRING. This is to prevent people from calling the functions by hand. This is a permanent solution for the back branches but I hope it is just a stopgap for HEAD.
-rw-r--r--doc/src/sgml/ref/create_conversion.sgml14
-rw-r--r--src/backend/commands/conversioncmds.c4
-rw-r--r--src/backend/utils/mb/conversion_procs/Makefile4
3 files changed, 12 insertions, 10 deletions
diff --git a/doc/src/sgml/ref/create_conversion.sgml b/doc/src/sgml/ref/create_conversion.sgml
index 371b5185dca..a815d3d735a 100644
--- a/doc/src/sgml/ref/create_conversion.sgml
+++ b/doc/src/sgml/ref/create_conversion.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/create_conversion.sgml,v 1.14 2003/11/29 19:51:38 pgsql Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/create_conversion.sgml,v 1.14.4.1 2005/05/03 19:18:15 tgl Exp $ -->
<refentry id="SQL-CREATECONVERSION">
<refmeta>
@@ -8,7 +8,7 @@
<refnamediv>
<refname>CREATE CONVERSION</refname>
- <refpurpose>define a new conversion</refpurpose>
+ <refpurpose>define a new encoding conversion</refpurpose>
</refnamediv>
<indexterm zone="sql-createconversion">
@@ -26,10 +26,12 @@ CREATE [DEFAULT] CONVERSION <replaceable>name</replaceable>
<title>Description</title>
<para>
- <command>CREATE CONVERSION</command> defines a new encoding
- conversion. Conversion names may be used in the <function>convert</function> function
+ <command>CREATE CONVERSION</command> defines a new conversion between
+ character set encodings. Conversion names may be used in the
+ <function>convert</function> function
to specify a particular encoding conversion. Also, conversions that
- are marked <literal>DEFAULT</> can be used for automatic encoding conversion between
+ are marked <literal>DEFAULT</> can be used for automatic encoding
+ conversion between
client and server. For this purpose, two conversions, from encoding A to
B <emphasis>and</emphasis> from encoding B to A, must be defined.
</para>
@@ -109,7 +111,7 @@ conv_proc(
integer, -- source encoding ID
integer, -- destination encoding ID
cstring, -- source string (null terminated C string)
- cstring, -- destination string (null terminated C string)
+ internal, -- destination (fill with a null terminated C string)
integer -- source string length
) RETURNS void;
</programlisting>
diff --git a/src/backend/commands/conversioncmds.c b/src/backend/commands/conversioncmds.c
index 2f87caf3a8e..17f0859cce2 100644
--- a/src/backend/commands/conversioncmds.c
+++ b/src/backend/commands/conversioncmds.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/commands/conversioncmds.c,v 1.16 2004/12/31 21:59:41 pgsql Exp $
+ * $PostgreSQL: pgsql/src/backend/commands/conversioncmds.c,v 1.16.4.1 2005/05/03 19:18:15 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -46,7 +46,7 @@ CreateConversionCommand(CreateConversionStmt *stmt)
const char *from_encoding_name = stmt->for_encoding_name;
const char *to_encoding_name = stmt->to_encoding_name;
List *func_name = stmt->func_name;
- static Oid funcargs[] = {INT4OID, INT4OID, CSTRINGOID, CSTRINGOID, INT4OID};
+ static Oid funcargs[] = {INT4OID, INT4OID, CSTRINGOID, INTERNALOID, INT4OID};
/* Convert list of names to a name and namespace */
namespaceId = QualifiedNameGetCreationNamespace(stmt->conversion_name,
diff --git a/src/backend/utils/mb/conversion_procs/Makefile b/src/backend/utils/mb/conversion_procs/Makefile
index 1b879dc132d..76541febe87 100644
--- a/src/backend/utils/mb/conversion_procs/Makefile
+++ b/src/backend/utils/mb/conversion_procs/Makefile
@@ -4,7 +4,7 @@
# Makefile for utils/mb/conversion_procs
#
# IDENTIFICATION
-# $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/Makefile,v 1.11 2004/01/21 19:22:19 tgl Exp $
+# $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/Makefile,v 1.11.4.1 2005/05/03 19:18:16 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -157,7 +157,7 @@ ifeq ($(enable_shared), yes)
func=$$1; shift; \
obj=$$1; shift; \
echo "-- $$se --> $$de"; \
- echo "CREATE OR REPLACE FUNCTION $$func (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$$"libdir"/$$obj', '$$func' LANGUAGE 'c' STRICT;"; \
+ echo "CREATE OR REPLACE FUNCTION $$func (INTEGER, INTEGER, CSTRING, INTERNAL, INTEGER) RETURNS VOID AS '$$"libdir"/$$obj', '$$func' LANGUAGE 'c' STRICT;"; \
echo "DROP CONVERSION pg_catalog.$$name;"; \
echo "CREATE DEFAULT CONVERSION pg_catalog.$$name FOR '$$se' TO '$$de' FROM $$func;"; \
done > $@