You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by hu...@apache.org on 2016/05/20 10:21:07 UTC

[3/5] incubator-hawq git commit: HAWQ-744. Add plperl code

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/plperl.control
----------------------------------------------------------------------
diff --git a/src/pl/plperl/plperl.control b/src/pl/plperl/plperl.control
new file mode 100644
index 0000000..6faace1
--- /dev/null
+++ b/src/pl/plperl/plperl.control
@@ -0,0 +1,7 @@
+# plperl extension
+comment = 'PL/Perl procedural language'
+default_version = '1.0'
+module_pathname = '$libdir/plperl'
+relocatable = false
+schema = pg_catalog
+superuser = false

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/plperl.h
----------------------------------------------------------------------
diff --git a/src/pl/plperl/plperl.h b/src/pl/plperl/plperl.h
new file mode 100644
index 0000000..96bc14c
--- /dev/null
+++ b/src/pl/plperl/plperl.h
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*-------------------------------------------------------------------------
+ *
+ * plperl.h
+ *	  Common include file for PL/Perl files
+ *
+ * This should be included _AFTER_ postgres.h and system include files
+ *
+ * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1995, Regents of the University of California
+ *
+ * src/pl/plperl/plperl.h
+ */
+
+#ifndef PL_PERL_H
+#define PL_PERL_H
+
+/* stop perl headers from hijacking stdio and other stuff on Windows */
+#ifdef WIN32
+#define WIN32IO_IS_STDIO
+/*
+ * isnan is defined in both the perl and mingw headers. We don't use it,
+ * so this just clears up the compile warning.
+ */
+#ifdef isnan
+#undef isnan
+#endif
+#endif
+
+/*
+ * Supply a value of PERL_UNUSED_DECL that will satisfy gcc - the one
+ * perl itself supplies doesn't seem to.
+ */
+#if defined(__GNUC__)
+#define PERL_UNUSED_DECL __attribute__ ((unused))
+#endif
+
+/*
+ * Sometimes perl carefully scribbles on our *printf macros.
+ * So we undefine them here and redefine them after it's done its dirty deed.
+ */
+
+#ifdef USE_REPL_SNPRINTF
+#undef snprintf
+#undef vsnprintf
+#endif
+
+#define list_head sys_list_head
+#define list_tail sys_list_tail
+
+/* required for perl API */
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#include "ppport.h"
+
+#undef list_head
+#undef list_tail
+
+
+/* put back our snprintf and vsnprintf */
+#ifdef USE_REPL_SNPRINTF
+#ifdef snprintf
+#undef snprintf
+#endif
+#ifdef vsnprintf
+#undef vsnprintf
+#endif
+#ifdef __GNUC__
+#define vsnprintf(...)  pg_vsnprintf(__VA_ARGS__)
+#define snprintf(...)   pg_snprintf(__VA_ARGS__)
+#else
+#define vsnprintf       pg_vsnprintf
+#define snprintf        pg_snprintf
+#endif /* __GNUC__ */
+#endif /*  USE_REPL_SNPRINTF */
+
+/* perl version and platform portability */
+#define NEED_eval_pv
+#define NEED_newRV_noinc
+#define NEED_sv_2pv_flags
+#include "ppport.h"
+
+/* perl may have a different width of "bool", don't buy it */
+#ifdef bool
+#undef bool
+#endif
+
+/* supply HeUTF8 if it's missing - ppport.h doesn't supply it, unfortunately */
+#ifndef HeUTF8
+#define HeUTF8(he)			   ((HeKLEN(he) == HEf_SVKEY) ?			   \
+								SvUTF8(HeKEY_sv(he)) :				   \
+								(U32)HeKUTF8(he))
+#endif
+
+/* supply GvCV_set if it's missing - ppport.h doesn't supply it, unfortunately */
+#ifndef GvCV_set
+#define GvCV_set(gv, cv)		(GvCV(gv) = cv)
+#endif
+
+/* declare routines from plperl.c for access by .xs files */
+HV		   *plperl_spi_exec(char *, int);
+void		plperl_return_next(SV *);
+SV		   *plperl_spi_query(char *);
+SV		   *plperl_spi_fetchrow(char *);
+SV		   *plperl_spi_prepare(char *, int, SV **);
+HV		   *plperl_spi_exec_prepared(char *, HV *, int, SV **);
+SV		   *plperl_spi_query_prepared(char *, int, SV **);
+void		plperl_spi_freeplan(char *);
+void		plperl_spi_cursor_close(char *);
+char	   *plperl_sv_to_literal(SV *, char *);
+
+
+
+#endif   /* PL_PERL_H */

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/plperl_helpers.h
----------------------------------------------------------------------
diff --git a/src/pl/plperl/plperl_helpers.h b/src/pl/plperl/plperl_helpers.h
new file mode 100644
index 0000000..a0e2cf2
--- /dev/null
+++ b/src/pl/plperl/plperl_helpers.h
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+#ifndef PL_PERL_HELPERS_H
+#define PL_PERL_HELPERS_H
+
+/*
+ * convert from utf8 to database encoding
+ */
+static inline char *
+utf_u2e(const char *utf8_str, size_t len)
+{
+	char	   *ret = (char *) pg_do_encoding_conversion((unsigned char *) utf8_str, len, PG_UTF8, GetDatabaseEncoding());
+
+	if (ret == utf8_str)
+		ret = pstrdup(ret);
+	return ret;
+}
+
+/*
+ * convert from database encoding to utf8
+ */
+static inline char *
+utf_e2u(const char *str)
+{
+	char	   *ret = (char *) pg_do_encoding_conversion((unsigned char *) str, strlen(str), GetDatabaseEncoding(), PG_UTF8);
+
+	if (ret == str)
+		ret = pstrdup(ret);
+	return ret;
+}
+
+
+/*
+ * Convert an SV to a char * in the current database encoding
+ */
+static inline char *
+sv2cstr(SV *sv)
+{
+	char	   *val;
+	STRLEN		len;
+
+	/*
+	 * get a utf8 encoded char * out of perl. *note* it may not be valid utf8!
+	 */
+	val = SvPVutf8(sv, len);
+
+	/*
+	 * we use perls length in the event we had an embedded null byte to ensure
+	 * we error out properly
+	 */
+	return utf_u2e(val, len);
+}
+
+/*
+ * Create a new SV from a string assumed to be in the current database's
+ * encoding.
+ */
+
+static inline SV *
+cstr2sv(const char *str)
+{
+	SV		   *sv;
+	char	   *utf8_str = utf_e2u(str);
+
+	sv = newSVpv(utf8_str, 0);
+	SvUTF8_on(sv);
+
+	pfree(utf8_str);
+
+	return sv;
+}
+
+#endif   /* PL_PERL_HELPERS_H */

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/plperl_opmask.pl
----------------------------------------------------------------------
diff --git a/src/pl/plperl/plperl_opmask.pl b/src/pl/plperl/plperl_opmask.pl
new file mode 100644
index 0000000..3e9ecaa
--- /dev/null
+++ b/src/pl/plperl/plperl_opmask.pl
@@ -0,0 +1,58 @@
+#!perl -w
+
+use strict;
+use warnings;
+
+use Opcode qw(opset opset_to_ops opdesc);
+
+my $plperl_opmask_h   = shift
+	or die "Usage: $0 <output_filename.h>\n";
+
+my $plperl_opmask_tmp = $plperl_opmask_h."tmp";
+END { unlink $plperl_opmask_tmp }
+
+open my $fh, ">", "$plperl_opmask_tmp"
+	or die "Could not write to $plperl_opmask_tmp: $!";
+
+printf $fh "#define PLPERL_SET_OPMASK(opmask) \\\n";
+printf $fh "  memset(opmask, 1, MAXO);\t/* disable all */ \\\n";
+printf $fh "  /* then allow some... */                       \\\n";
+
+my @allowed_ops = (
+	# basic set of opcodes
+	qw[:default :base_math !:base_io sort time],
+	# require is safe because we redirect the opcode
+	# entereval is safe as the opmask is now permanently set
+	# caller is safe because the entire interpreter is locked down
+	qw[require entereval caller],
+	# These are needed for utf8_heavy.pl:
+	# dofile is safe because we redirect the opcode like require above
+	# print is safe because the only writable filehandles are STDOUT & STDERR
+	# prtf (printf) is safe as it's the same as print + sprintf
+	qw[dofile print prtf],
+	# Disallow these opcodes that are in the :base_orig optag
+	# (included in :default) but aren't considered sufficiently safe
+	qw[!dbmopen !setpgrp !setpriority],
+	# custom is not deemed a likely security risk as it can't be generated from
+	# perl so would only be seen if the DBA had chosen to load a module that
+	# used it. Even then it's unlikely to be seen because it's typically
+	# generated by compiler plugins that operate after PL_op_mask checks.
+	# But we err on the side of caution and disable it
+	qw[!custom],
+);
+
+printf $fh "  /* ALLOWED: @allowed_ops */ \\\n";
+
+foreach my $opname (opset_to_ops(opset(@allowed_ops))) {
+	printf $fh qq{  opmask[OP_%-12s] = 0;\t/* %s */ \\\n},
+		uc($opname), opdesc($opname);
+}
+printf $fh "  /* end */ \n";
+
+close $fh
+	or die "Error closing $plperl_opmask_tmp: $!";
+
+rename $plperl_opmask_tmp, $plperl_opmask_h
+	or die "Error renaming $plperl_opmask_tmp to $plperl_opmask_h: $!";
+
+exit 0;

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/plperlu--1.0.sql
----------------------------------------------------------------------
diff --git a/src/pl/plperl/plperlu--1.0.sql b/src/pl/plperl/plperlu--1.0.sql
new file mode 100644
index 0000000..025f795
--- /dev/null
+++ b/src/pl/plperl/plperlu--1.0.sql
@@ -0,0 +1,9 @@
+/* src/pl/plperl/plperlu--1.0.sql */
+
+/*
+ * Currently, all the interesting stuff is done by CREATE LANGUAGE.
+ * Later we will probably "dumb down" that command and put more of the
+ * knowledge into this script.
+ */
+
+CREATE PROCEDURAL LANGUAGE plperlu;

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/plperlu--unpackaged--1.0.sql
----------------------------------------------------------------------
diff --git a/src/pl/plperl/plperlu--unpackaged--1.0.sql b/src/pl/plperl/plperlu--unpackaged--1.0.sql
new file mode 100644
index 0000000..bc62d36
--- /dev/null
+++ b/src/pl/plperl/plperlu--unpackaged--1.0.sql
@@ -0,0 +1,7 @@
+/* src/pl/plperl/plperlu--unpackaged--1.0.sql */
+
+ALTER EXTENSION plperlu ADD PROCEDURAL LANGUAGE plperlu;
+-- ALTER ADD LANGUAGE doesn't pick up the support functions, so we have to.
+ALTER EXTENSION plperlu ADD FUNCTION plperlu_call_handler();
+ALTER EXTENSION plperlu ADD FUNCTION plperlu_inline_handler(internal);
+ALTER EXTENSION plperlu ADD FUNCTION plperlu_validator(oid);

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/plperlu.control
----------------------------------------------------------------------
diff --git a/src/pl/plperl/plperlu.control b/src/pl/plperl/plperlu.control
new file mode 100644
index 0000000..69473ca
--- /dev/null
+++ b/src/pl/plperl/plperlu.control
@@ -0,0 +1,7 @@
+# plperlu extension
+comment = 'PL/PerlU untrusted procedural language'
+default_version = '1.0'
+module_pathname = '$libdir/plperl'
+relocatable = false
+schema = pg_catalog
+superuser = true

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/po/.gitignore
----------------------------------------------------------------------
diff --git a/src/pl/plperl/po/.gitignore b/src/pl/plperl/po/.gitignore
new file mode 100644
index 0000000..621b8ee
--- /dev/null
+++ b/src/pl/plperl/po/.gitignore
@@ -0,0 +1,8 @@
+de.mo
+es.mo
+fr.mo
+it.mo
+ja.mo
+pt_BR.mo
+tr.mo
+

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/po/.p4ignore
----------------------------------------------------------------------
diff --git a/src/pl/plperl/po/.p4ignore b/src/pl/plperl/po/.p4ignore
new file mode 100644
index 0000000..621b8ee
--- /dev/null
+++ b/src/pl/plperl/po/.p4ignore
@@ -0,0 +1,8 @@
+de.mo
+es.mo
+fr.mo
+it.mo
+ja.mo
+pt_BR.mo
+tr.mo
+

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/po/de.po
----------------------------------------------------------------------
diff --git a/src/pl/plperl/po/de.po b/src/pl/plperl/po/de.po
new file mode 100755
index 0000000..4ea354e
--- /dev/null
+++ b/src/pl/plperl/po/de.po
@@ -0,0 +1,105 @@
+# German message translation file for plperl
+# Copyright (C) 2009 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# Peter Eisentraut <pe...@gmx.net>, 2009.
+#
+# pgtranslation Id: plperl.po,v 1.2 2009/02/20 10:39:49 petere Exp $
+#
+# Use these quotes: �%s�
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 8.4\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2009-02-20 09:06+0000\n"
+"PO-Revision-Date: 2009-02-20 12:37+0200\n"
+"Last-Translator: Peter Eisentraut <pe...@gmx.net>\n"
+"Language-Team: German <pe...@gmx.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: plperl.c:202
+msgid ""
+"If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Wenn wahr, dann wird vertrauensw�rdiger und nicht vertrauensw�rdiger Perl-Code im �strict�-Modus kompiliert."
+
+#: plperl.c:606 plperl.c:799
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perl-Hash enth�lt nicht existierende Spalte �%s�"
+
+#: plperl.c:775
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} existiert nicht"
+
+#: plperl.c:779
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} ist keine Hash-Referenz"
+
+#: plperl.c:916 plperl.c:1615
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Perl-Funktionen k�nnen keinen R�ckgabetyp %s haben"
+
+#: plperl.c:928 plperl.c:1662
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "PL/Perl-Funktionen k�nnen Typ %s nicht annehmen"
+
+#: plperl.c:1004
+#, c-format
+msgid "creation of Perl function \"%s\" failed: %s"
+msgstr "Erzeugen der Perl-Funktion �%s� fehlgeschlagen: %s"
+
+#: plperl.c:1134 plperl.c:1192
+#, c-format
+msgid "error from Perl function \"%s\": %s"
+msgstr "Fehler aus Perl-Funktion �%s�: %s"
+
+#: plperl.c:1240
+msgid "set-valued function called in context that cannot accept a set"
+msgstr ""
+"Funktion mit Mengenergebnis in einem Zusammenhang aufgerufen, der keine "
+"Mengenergebnisse verarbeiten kann"
+
+#: plperl.c:1283
+msgid ""
+"set-returning PL/Perl function must return reference to array or use "
+"return_next"
+msgstr "PL/Perl-Funktionen mit Mengenergebnis m�ssen eine Referenz auf ein Array zur�ckgeben oder return_next verwenden"
+
+#: plperl.c:1316
+msgid "composite-returning PL/Perl function must return reference to hash"
+msgstr "PL/Perl-Funktion, die einen zusammengesetzten Typ zur�ckgibt, muss eine Referenz auf ein Hash zur�ckgeben"
+
+#: plperl.c:1325
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr "Funktion, die einen Record zur�ckgibt, in einem Zusammenhang aufgerufen, der Typ record nicht verarbeiten kann"
+
+#: plperl.c:1441
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ge�nderte Zeile im DELETE-Trigger wird ignoriert"
+
+#: plperl.c:1449
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "Ergebnis einer PL/Perl-Triggerfunktion muss undef, �SKIP� oder �MODIFY� sein"
+
+#: plperl.c:1549
+msgid "out of memory"
+msgstr "Speicher aufgebraucht"
+
+#: plperl.c:1606
+msgid "trigger functions can only be called as triggers"
+msgstr "Triggerfunktionen k�nnen nur als Trigger aufgerufen werden"
+
+#: plperl.c:1899
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "return_next kann nur in einer Funktion mit SETOF-R�ckgabetyp verwendet werden"
+
+#: plperl.c:1905
+msgid ""
+"SETOF-composite-returning PL/Perl function must call return_next with "
+"reference to hash"
+msgstr "PL/Perl-Funktion, die SETOF eines zusammengesetzten Typs zur�ckgibt, muss return_next mit einer Referenz auf ein Hash aufrufen"

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/po/es.po
----------------------------------------------------------------------
diff --git a/src/pl/plperl/po/es.po b/src/pl/plperl/po/es.po
new file mode 100755
index 0000000..53c1af2
--- /dev/null
+++ b/src/pl/plperl/po/es.po
@@ -0,0 +1,115 @@
+# Spanish message translation file for plperl
+# This file is put in the public domain.
+# Emanuel Calvo Franco <po...@gmail.com>, 2008.
+# Alvaro Herrera <al...@alvh.no-ip.org>, 2009
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 8.4\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2009-04-09 19:21+0000\n"
+"PO-Revision-Date: 2009-04-09 17:25-0400\n"
+"Last-Translator: �lvaro Herrera <al...@alvh.no-ip.org>\n"
+"Language-Team: PgSQL-es-Ayuda <pg...@postgresql.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: plperl.c:202
+msgid ""
+"If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr ""
+"Si es verdadero, se compilar� c�digo Perl confiable y no confiable en modo "
+"�strict�."
+
+#: plperl.c:606 plperl.c:799
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "el hash de Perl contiene el columna inexistente �%s�"
+
+#: plperl.c:775
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} no existe"
+
+#: plperl.c:779
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} no es una referencia a un hash"
+
+#: plperl.c:916 plperl.c:1615
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "las funciones en PL/Perl no pueden retornar el tipo %s"
+
+#: plperl.c:928 plperl.c:1662
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "funciones de PL/Perl no pueden aceptar el tipo %s"
+
+#: plperl.c:1004
+#, c-format
+msgid "creation of Perl function \"%s\" failed: %s"
+msgstr "la creaci�n de la funci�n Perl �%s� fall�: %s"
+
+#: plperl.c:1134 plperl.c:1192
+#, c-format
+msgid "error from Perl function \"%s\": %s"
+msgstr "error en la funci�n de Perl �%s�: %s"
+
+#: plperl.c:1240
+msgid "set-valued function called in context that cannot accept a set"
+msgstr ""
+"se llam� a una funci�n que retorna un conjunto en un contexto que no puede "
+"aceptarlo"
+
+#: plperl.c:1283
+msgid ""
+"set-returning PL/Perl function must return reference to array or use "
+"return_next"
+msgstr ""
+"una funci�n PL/Perl que retorna un conjunto debe retornar una referencia a un "
+"array o usar return_next"
+
+#: plperl.c:1316
+msgid "composite-returning PL/Perl function must return reference to hash"
+msgstr ""
+"una funci�n Perl que retorna un tipo compuesto debe retornar una referencia "
+"a un hash"
+
+#: plperl.c:1325
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr ""
+"se llam� una funci�n que retorna un registro en un contexto que no puede "
+"aceptarlo"
+
+#: plperl.c:1441
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ignorando la tupla modificada en el disparador DELETE"
+
+#: plperl.c:1449
+msgid ""
+"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr ""
+"el resultado de la funci�n disparadora en PL/Perl debe ser undef, �SKIP� o "
+"�MODIFY�"
+
+#: plperl.c:1549
+msgid "out of memory"
+msgstr "memoria agotada"
+
+#: plperl.c:1606
+msgid "trigger functions can only be called as triggers"
+msgstr "las funciones disparadoras s�lo pueden ser llamadas como disparadores"
+
+#: plperl.c:1899
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "no se puede utilizar return_next en una funci�n sin SETOF"
+
+#: plperl.c:1905
+msgid ""
+"SETOF-composite-returning PL/Perl function must call return_next with "
+"reference to hash"
+msgstr ""
+"una funci�n Perl que retorna SETOF de un tipo compuesto debe invocar "
+"return_next con una referencia a un hash"

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/po/fr.po
----------------------------------------------------------------------
diff --git a/src/pl/plperl/po/fr.po b/src/pl/plperl/po/fr.po
new file mode 100755
index 0000000..3654283
--- /dev/null
+++ b/src/pl/plperl/po/fr.po
@@ -0,0 +1,115 @@
+# translation of plperl.po to fr_fr
+# french message translation file for plperl
+#
+# $PostgreSQL: pgsql/src/pl/plperl/po/fr.po,v 1.1 2009/04/09 19:38:53 petere Exp $
+#
+# Use these quotes: \ufffd %s \ufffd
+# Guillaume Lelarge <gu...@lelarge.info>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 8.4\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2009-04-05 05:22+0000\n"
+"PO-Revision-Date: 2009-04-05 13:39+0100\n"
+"Last-Translator: Guillaume Lelarge <gu...@lelarge.info>\n"
+"Language-Team: French <gu...@lelarge.info>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: plperl.c:202
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr ""
+"Si true, le code Perl de confiance et sans confiance sera compil\ufffd en mode\n"
+"strict."
+
+#: plperl.c:606
+#: plperl.c:799
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Le hachage Perl contient la colonne \ufffd %s \ufffd inexistante"
+
+#: plperl.c:775
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} n'existe pas"
+
+#: plperl.c:779
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} n'est pas une r\ufffdf\ufffdrence de hachage"
+
+#: plperl.c:916
+#: plperl.c:1615
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "Les fonctions PL/perl ne peuvent pas renvoyer le type %s"
+
+#: plperl.c:928
+#: plperl.c:1662
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "Les fonctions PL/perl ne peuvent pas accepter le type %s"
+
+#: plperl.c:1004
+#, c-format
+msgid "creation of Perl function \"%s\" failed: %s"
+msgstr "\ufffdchec de la cr\ufffdation de la fonction Perl \ufffd %s \ufffd : %s"
+
+#: plperl.c:1134
+#: plperl.c:1192
+#, c-format
+msgid "error from Perl function \"%s\": %s"
+msgstr "\ufffdchec dans la fonction Perl \ufffd %s \ufffd : %s"
+
+#: plperl.c:1240
+msgid "set-valued function called in context that cannot accept a set"
+msgstr ""
+"fonction renvoyant un ensemble appel\ufffde dans un contexte qui ne peut pas\n"
+"accepter un ensemble"
+
+#: plperl.c:1283
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr ""
+"la fonction PL/perl renvoyant des ensembles doit renvoyer la r\ufffdf\ufffdrence \ufffd\n"
+"un tableau ou utiliser return_next"
+
+#: plperl.c:1316
+msgid "composite-returning PL/Perl function must return reference to hash"
+msgstr ""
+"la fonction PL/perl renvoyant des valeurs composites doit renvoyer la\n"
+"r\ufffdf\ufffdrence \ufffd un hachage"
+
+#: plperl.c:1325
+msgid "function returning record called in context that cannot accept type record"
+msgstr ""
+"fonction renvoyant le type record appel\ufffde dans un contexte qui ne peut pas\n"
+"accepter le type record"
+
+#: plperl.c:1441
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ignore la ligne modifi\ufffde dans le trigger DELETE"
+
+#: plperl.c:1449
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr ""
+"le r\ufffdsultat de la fonction trigger PL/perl doit \ufffdtre undef, \ufffd SKIP \ufffd ou\n"
+"\ufffd MODIFY \ufffd"
+
+#: plperl.c:1549
+msgid "out of memory"
+msgstr "m\ufffdmoire \ufffdpuis\ufffde"
+
+#: plperl.c:1606
+msgid "trigger functions can only be called as triggers"
+msgstr "les fonctions trigger peuvent seulement \ufffdtre appel\ufffdes par des triggers"
+
+#: plperl.c:1899
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "ne peut pas utiliser return_next dans une fonction non SETOF"
+
+#: plperl.c:1905
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr ""
+"une fonction PL/perl renvoyant des lignes composites doit appeler\n"
+"return_next avec la r\ufffdf\ufffdrence \ufffd un hachage"
+

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/po/it.po
----------------------------------------------------------------------
diff --git a/src/pl/plperl/po/it.po b/src/pl/plperl/po/it.po
new file mode 100755
index 0000000..b84bf11
--- /dev/null
+++ b/src/pl/plperl/po/it.po
@@ -0,0 +1,113 @@
+#
+# Translation of plperl to Italian
+# PostgreSQL Project
+#
+# Associazione Culturale ITPUG - Italian PostgreSQL Users Group
+# http://www.itpug.org/ - info@itpug.org
+#
+# Traduttori:
+#  * Emanuele Zamprogno <em...@itpug.org>
+# 
+# Revisori:
+#  * Gabriele Bartolini <ga...@itpug.org>
+#
+# Copyright (c) 2009, Associazione Culturale ITPUG
+# Distributed under the same license of the PostgreSQL project
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 8.4\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2009-07-11 05:48+0000\n"
+"PO-Revision-Date: 2009-07-18 03:10:24+0200\n"
+"Last-Translator: Gabriele Bartolini <ga...@2ndquadrant.it>\n"
+"Language-Team: Gruppo traduzioni ITPUG <tr...@itpug.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: plperl.c:202
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Se vero, il codice Perl affidabile e non affidabile sar� compilato in modalit� strict"
+
+#: plperl.c:624
+#: plperl.c:817
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "La struttura hash in Perl contiene la colonna inesistente \"%s\""
+
+#: plperl.c:793
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} non esiste"
+
+#: plperl.c:797
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} non � un riferimento ad un hash"
+
+#: plperl.c:934
+#: plperl.c:1633
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "la funzione PL/Perl non pu� ritornare il tipo %s"
+
+#: plperl.c:946
+#: plperl.c:1680
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "la funzione PL/Perl non pu� accettare il tipo %s"
+
+#: plperl.c:1022
+#, c-format
+msgid "creation of Perl function \"%s\" failed: %s"
+msgstr "creazione della funzione Perl \"%s\" fallita: %s"
+
+#: plperl.c:1152
+#: plperl.c:1210
+#, c-format
+msgid "error from Perl function \"%s\": %s"
+msgstr "errore dalla funzione Perl \"%s\": %s"
+
+#: plperl.c:1258
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "la funzione set-valued � stata chiamata all'interno di un contesto che non pu� accettare un set"
+
+#: plperl.c:1301
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "la funzione PL/Perl di tipo \"set-returning\" deve ritornare un riferimento ad un array o usare return_next"
+
+#: plperl.c:1334
+msgid "composite-returning PL/Perl function must return reference to hash"
+msgstr "la funzione PL/Perl \"composite-returning\" deve ritornare un riferimento all'hash"
+
+#: plperl.c:1343
+msgid "function returning record called in context that cannot accept type record"
+msgstr "la funzione che restituisce un record � chiamata all'interno di un contesto che non pu� accettare il tipo record"
+
+#: plperl.c:1459
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ignorata la riga modificata all'interno del trigger DELETE"
+
+#: plperl.c:1467
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "il risultato della funzione trigger PL/Perl deve essere undef, \"SKIP\" oppure \"MODIFY\""
+
+# in teoria non servirebbe tradurre
+#: plperl.c:1567
+msgid "out of memory"
+msgstr "memoria esaurita"
+
+#: plperl.c:1624
+msgid "trigger functions can only be called as triggers"
+msgstr "le funzioni trigger possono solo essere chiamate come trigger"
+
+#: plperl.c:1917
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "non si pu� usare return_next in una funzione non-SETOF"
+
+#: plperl.c:1923
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "la funzione PL/Perl SETOF-composite-returning deve chiamare return_next con riferimento all'hash"
+

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/po/ja.po
----------------------------------------------------------------------
diff --git a/src/pl/plperl/po/ja.po b/src/pl/plperl/po/ja.po
new file mode 100755
index 0000000..5bddc1b
--- /dev/null
+++ b/src/pl/plperl/po/ja.po
@@ -0,0 +1,100 @@
+# LANGUAGE message translation file for plperl
+# Copyright (C) 2009 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# FIRST AUTHOR <EM...@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 8.4\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2009-04-13 07:10+0000\n"
+"PO-Revision-Date: 2009-04-13 22:15+0900\n"
+"Last-Translator: Shigehiro Honda <ho...@postgresql.jp>\n"
+"Language-Team: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: plperl.c:202
+msgid ""
+"If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "\u771f\u306a\u3089\u3070\u4fe1\u983c\u3057\u3001\u4fe1\u983c\u3055\u308c\u306a\u3044Perl\u306e\u30b3\u30fc\u30c9\u306fstrict\u30e2\u30fc\u30c9\u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u307e\u3059\u3002"
+
+#: plperl.c:606 plperl.c:799
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perl\u30cf\u30c3\u30b7\u30e5\u306b\u5b58\u5728\u3057\u306a\u3044\u5217\"%s\"\u304c\u542b\u307e\u308c\u307e\u3059"
+
+#: plperl.c:775
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new}\u306f\u5b58\u5728\u3057\u307e\u305b\u3093"
+
+#: plperl.c:779
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new}\u306f\u30cf\u30c3\u30b7\u30e5\u3078\u306e\u53c2\u7167\u3067\u306f\u3042\u308a\u307e\u305b\u3093"
+
+#: plperl.c:916 plperl.c:1615
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Perl\u95a2\u6570\u306f%s\u578b\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093"
+
+#: plperl.c:928 plperl.c:1662
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "PL/Perl\u95a2\u6570\u306f%s\u578b\u3092\u53d7\u3051\u4ed8\u3051\u3089\u308c\u307e\u305b\u3093"
+
+#: plperl.c:1004
+#, c-format
+msgid "creation of Perl function \"%s\" failed: %s"
+msgstr "Perl\u95a2\u6570\"%s\"\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f: %s"
+
+#: plperl.c:1134 plperl.c:1192
+#, c-format
+msgid "error from Perl function \"%s\": %s"
+msgstr "Perl\u95a2\u6570\"%s\"\u3067\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3059: %s"
+
+#: plperl.c:1240
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "\u3053\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3067\u96c6\u5408\u5024\u306e\u95a2\u6570\u306f\u96c6\u5408\u3092\u53d7\u3051\u4ed8\u3051\u3089\u308c\u307e\u305b\u3093"
+
+#: plperl.c:1283
+msgid ""
+"set-returning PL/Perl function must return reference to array or use "
+"return_next"
+msgstr "\u96c6\u5408\u3092\u8fd4\u3059PL/Perl\u95a2\u6570\u306f\u914d\u5217\u3078\u306e\u53c2\u7167\u3092\u8fd4\u3059\u3001\u307e\u305f\u306f\u3001return_next\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"
+
+#: plperl.c:1316
+msgid "composite-returning PL/Perl function must return reference to hash"
+msgstr "\u8907\u5408\u578b\u3092\u8fd4\u3059PL/Perl\u95a2\u6570\u306f\u30cf\u30c3\u30b7\u30e5\u3078\u306e\u53c2\u7167\u3092\u8fd4\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"
+
+#: plperl.c:1325
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr "\u30ec\u30b3\u30fc\u30c9\u578b\u3092\u53d7\u3051\u4ed8\u3051\u3089\u308c\u306a\u3044\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3067\u30ec\u30b3\u30fc\u30c9\u3092\u8fd4\u3059\u95a2\u6570\u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3057\u305f"
+
+#: plperl.c:1441
+msgid "ignoring modified row in DELETE trigger"
+msgstr "DELETE\u30c8\u30ea\u30ac\u306b\u3066\u5909\u66f4\u3055\u308c\u305f\u884c\u3092\u7121\u8996\u3057\u307e\u3059"
+
+#: plperl.c:1449
+msgid ""
+"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "PL/Perl\u30c8\u30ea\u30ac\u95a2\u6570\u306e\u7d50\u679c\u306f\"SKIP\"\u307e\u305f\u306f\"MODIFY\"\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093"
+
+#: plperl.c:1549
+msgid "out of memory"
+msgstr "\u30e1\u30e2\u30ea\u4e0d\u8db3\u3067\u3059"
+
+#: plperl.c:1606
+msgid "trigger functions can only be called as triggers"
+msgstr "\u30c8\u30ea\u30ac\u30fc\u95a2\u6570\u306f\u30c8\u30ea\u30ac\u30fc\u3068\u3057\u3066\u306e\u307f\u30b3\u30fc\u30eb\u3067\u304d\u307e\u3059"
+
+#: plperl.c:1899
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "SETOF\u95a2\u6570\u4ee5\u5916\u3067\u306freturn_next\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093"
+
+#: plperl.c:1905
+msgid ""
+"SETOF-composite-returning PL/Perl function must call return_next with "
+"reference to hash"
+msgstr "\u8907\u5408\u578b\u306eSETOF\u3092\u8fd4\u3059PL/Perl\u95a2\u6570\u306f\u30cf\u30c3\u30b7\u30e5\u3078\u306e\u53c2\u7167\u3092\u6301\u3064return_next\u3092\u547c\u3073\u51fa\u3055\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093"

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/po/pt_BR.po
----------------------------------------------------------------------
diff --git a/src/pl/plperl/po/pt_BR.po b/src/pl/plperl/po/pt_BR.po
new file mode 100755
index 0000000..2e6a5af
--- /dev/null
+++ b/src/pl/plperl/po/pt_BR.po
@@ -0,0 +1,105 @@
+# Brazilian Portuguese message translation file for plperl
+# Copyright (C) 2009 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# Euler Taveira de Oliveira <eu...@timbira.com>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 8.4\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2009-05-06 19:47-0300\n"
+"PO-Revision-Date: 2009-05-10 01:12-0300\n"
+"Last-Translator: Euler Taveira de Oliveira <eu...@timbira.com>\n"
+"Language-Team: Brazilian Portuguese <pg...@listas.postgresql.org.br>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: plperl.c:202
+msgid ""
+"If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr ""
+"Se verdadeiro, c�digo Perl confi�vel e n�o-confi�vel ser� compilado em modo estrito."
+
+#: plperl.c:606 plperl.c:799
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "hash Perl cont�m coluna inexistente \"%s\""
+
+#: plperl.c:775
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} n�o existe"
+
+#: plperl.c:779
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} n�o � uma refer�ncia hash"
+
+#: plperl.c:916 plperl.c:1615
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "fun��es PL/Perl n�o podem retornar tipo %s"
+
+#: plperl.c:928 plperl.c:1662
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "fun��es PL/Perl n�o podem aceitar tipo %s"
+
+#: plperl.c:1004
+#, c-format
+msgid "creation of Perl function \"%s\" failed: %s"
+msgstr "cria��o da fun��o Perl \"%s\" falhou: %s"
+
+#: plperl.c:1134 plperl.c:1192
+#, c-format
+msgid "error from Perl function \"%s\": %s"
+msgstr "erro da fun��o Perl \"%s\": %s"
+
+#: plperl.c:1240
+msgid "set-valued function called in context that cannot accept a set"
+msgstr ""
+
+#: plperl.c:1283
+msgid ""
+"set-returning PL/Perl function must return reference to array or use "
+"return_next"
+msgstr ""
+"fun�ao PL/Perl que retorna conjunto deve retornar refer�ncia para matriz ou usar return_next"
+
+#: plperl.c:1316
+msgid "composite-returning PL/Perl function must return reference to hash"
+msgstr "fun��o que retorna tipo composto deve retornar refer�ncia a um hash"
+
+#: plperl.c:1325
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr ""
+"fun��o que retorna record foi chamada em um contexto que n�o pode aceitar tipo record"
+
+#: plperl.c:1441
+msgid "ignoring modified row in DELETE trigger"
+msgstr "ignorando registro modificado em gatilho DELETE"
+
+#: plperl.c:1449
+msgid ""
+"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr ""
+"resultado da fun��o de gatilho PL/Perl deve ser undef, \"SKIP\" ou \"MODIFY\""
+
+#: plperl.c:1549
+msgid "out of memory"
+msgstr "sem mem�ria"
+
+#: plperl.c:1606
+msgid "trigger functions can only be called as triggers"
+msgstr "fun��es de gatilho s� podem ser chamadas como gatilhos"
+
+#: plperl.c:1899
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "n�o pode utilizar return_next em uma fun��o que n�o retorna conjunto"
+
+#: plperl.c:1905
+msgid ""
+"SETOF-composite-returning PL/Perl function must call return_next with "
+"reference to hash"
+msgstr ""
+"fun��o PL/Perl que retorna um conjunto de tipo composto deve chamar return_next com refer�ncia a um hash"

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/120ee70b/src/pl/plperl/po/tr.po
----------------------------------------------------------------------
diff --git a/src/pl/plperl/po/tr.po b/src/pl/plperl/po/tr.po
new file mode 100755
index 0000000..3f74ef4
--- /dev/null
+++ b/src/pl/plperl/po/tr.po
@@ -0,0 +1,100 @@
+# LANGUAGE message translation file for plperl
+# Copyright (C) 2009 PostgreSQL Global Development Group
+# This file is distributed under the same license as the PostgreSQL package.
+# FIRST AUTHOR <EM...@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 8.4\n"
+"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
+"POT-Creation-Date: 2009-04-29 07:08+0000\n"
+"PO-Revision-Date: 2009-05-04 22:12+0200\n"
+"Last-Translator: Devrim G�ND�Z <de...@commandprompt.com>\n"
+"Language-Team: Turkish <de...@gunduz.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Turkish\n"
+"X-Poedit-Country: Turkey\n"
+
+#: plperl.c:202
+msgid "If true, trusted and untrusted Perl code will be compiled in strict mode."
+msgstr "Do\u011fru ise, trusted ve untrusted Perl kodlar\u0131 strict modda derlenecektir"
+
+#: plperl.c:606
+#: plperl.c:799
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perl hashi olmayan kolonu i�eriyor: \"%s\""
+
+#: plperl.c:775
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new} mevcut de\u011fil"
+
+#: plperl.c:779
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} hash referans\u0131 de\u011fil"
+
+#: plperl.c:916
+#: plperl.c:1615
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Perl fonksiyonlar\u0131 %s veri tipini d�nd�remezler"
+
+#: plperl.c:928
+#: plperl.c:1662
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "PL/Perl fonksiyonlar\u0131 %s tipini kabul etmez"
+
+#: plperl.c:1004
+#, c-format
+msgid "creation of Perl function \"%s\" failed: %s"
+msgstr " \"%s\" Perl fonksiyonunun yarat\u0131lmas\u0131 ba\u015far\u0131s\u0131z oldu: %s"
+
+#: plperl.c:1134
+#: plperl.c:1192
+#, c-format
+msgid "error from Perl function \"%s\": %s"
+msgstr "Perl fonksiyonunda hata:  \"%s\": %s"
+
+#: plperl.c:1240
+msgid "set-valued function called in context that cannot accept a set"
+msgstr "set de\u011ferini kabul etmedi\u011fi ortamda set de\u011feri alan fonksiyon �a\u011f\u0131r\u0131lm\u0131\u015f"
+
+#: plperl.c:1283
+msgid "set-returning PL/Perl function must return reference to array or use return_next"
+msgstr "se d�nen PL/Perl fonksiyonu return_next kullanmal\u0131 ya da bir diziye referans d�nmelidir"
+
+#: plperl.c:1316
+msgid "composite-returning PL/Perl function must return reference to hash"
+msgstr "composite d�nd�ren PL/Perl fonksiyonu hash'e referans d�nmelidir"
+
+#: plperl.c:1325
+msgid "function returning record called in context that cannot accept type record"
+msgstr "tip kayd\u0131 i�ermeyen alanda �a\u011f\u0131r\u0131lan ve kay\u0131t d�nd�ren fonksiyon"
+
+#: plperl.c:1441
+msgid "ignoring modified row in DELETE trigger"
+msgstr "DELETE trigger\u0131ndaki de\u011fi\u015ftirilmi\u015f sat\u0131r g�zard\u0131 ediliyor"
+
+#: plperl.c:1449
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr "PL/Perl trigger fonksiyonun sonucu undef, \"SKIP\" ya da  \"MODIFY\" olmal\u0131d\u0131r"
+
+#: plperl.c:1549
+msgid "out of memory"
+msgstr "yetersiz bellek"
+
+#: plperl.c:1606
+msgid "trigger functions can only be called as triggers"
+msgstr "trigger fonksiyonlar\u0131 sadece trigger olarak �a\u011f\u0131r\u0131labilirler"
+
+#: plperl.c:1899
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "SETOF olmayan bir fonksiyonda return_next kullan\u0131lamaz"
+
+#: plperl.c:1905
+msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash"
+msgstr "SETOF-composite d�nd�ren PL/Perl fonksiyonlar\u0131 return_next'i hash'e referans olarak �a\u011f\u0131rmal\u0131d\u0131r"
+