From 893b57c871b97c9324e3eea77409e487a1e22ae8 Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Tue, 3 May 2005 19:17:59 +0000 Subject: [PATCH] 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. --- doc/src/sgml/ref/create_conversion.sgml | 14 ++++++++------ src/backend/commands/conversioncmds.c | 4 ++-- src/backend/utils/mb/conversion_procs/Makefile | 4 ++-- 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 3b941b80bb1..9bf88807c14 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.15 2005/03/07 04:30:51 momjian Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/create_conversion.sgml,v 1.16 2005/05/03 19:17:59 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 c42580d624b..fb71bf59f92 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.17 2005/04/14 20:03:23 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/conversioncmds.c,v 1.18 2005/05/03 19:17:59 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -45,7 +45,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 18009da163f..72e0e92c425 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.13 2005/03/14 18:31:21 momjian Exp $ +# $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/Makefile,v 1.14 2005/05/03 19:17:59 tgl Exp $ # #------------------------------------------------------------------------- @@ -159,7 +159,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 > $@ -- GitLab