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 <[email protected]>, 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: [email protected]\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 <[email protected]>\n"
+"Language-Team: German <[email protected]>\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 <[email protected]>, 2008.
+# Alvaro Herrera <[email protected]>, 2009
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 8.4\n"
+"Report-Msgid-Bugs-To: [email protected]\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 <[email protected]>\n"
+"Language-Team: PgSQL-es-Ayuda <[email protected]>\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: � %s �
+# Guillaume Lelarge <[email protected]>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 8.4\n"
+"Report-Msgid-Bugs-To: [email protected]\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 <[email protected]>\n"
+"Language-Team: French <[email protected]>\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� 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 � %s � 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�f�rence 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 "�chec de la cr�ation de la fonction Perl � %s � : %s"
+
+#: plperl.c:1134
+#: plperl.c:1192
+#, c-format
+msgid "error from Perl function \"%s\": %s"
+msgstr "�chec dans la fonction Perl � %s � : %s"
+
+#: plperl.c:1240
+msgid "set-valued function called in context that cannot accept a set"
+msgstr ""
+"fonction renvoyant un ensemble appel�e 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�f�rence 
�\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�f�rence � un hachage"
+
+#: plperl.c:1325
+msgid "function returning record called in context that cannot accept type 
record"
+msgstr ""
+"fonction renvoyant le type record appel�e 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�e dans le trigger DELETE"
+
+#: plperl.c:1449
+msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or 
\"MODIFY\""
+msgstr ""
+"le r�sultat de la fonction trigger PL/perl doit �tre undef, � SKIP � 
ou\n"
+"� MODIFY �"
+
+#: plperl.c:1549
+msgid "out of memory"
+msgstr "m�moire �puis�e"
+
+#: plperl.c:1606
+msgid "trigger functions can only be called as triggers"
+msgstr "les fonctions trigger peuvent seulement �tre appel�es 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�f�rence � 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/ - [email protected]
+#
+# Traduttori:
+#  * Emanuele Zamprogno <[email protected]>
+# 
+# Revisori:
+#  * Gabriele Bartolini <[email protected]>
+#
+# 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: [email protected]\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 <[email protected]>\n"
+"Language-Team: Gruppo traduzioni ITPUG <[email protected]>\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 <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 8.4\n"
+"Report-Msgid-Bugs-To: [email protected]\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 <[email protected]>\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 "真ならば信頼し、信é 
¼ã•れないPerlのコードはstrictモードでコンパイルされます。"
+
+#: plperl.c:606 plperl.c:799
+#, c-format
+msgid "Perl hash contains nonexistent column \"%s\""
+msgstr "Perlハッシュに存在しない列\"%s\"が含まれます"
+
+#: plperl.c:775
+msgid "$_TD->{new} does not exist"
+msgstr "$_TD->{new}は存在しません"
+
+#: plperl.c:779
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new}はハッシュへの参照ではありません"
+
+#: plperl.c:916 plperl.c:1615
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Perl関数は%s型を返すことができません"
+
+#: plperl.c:928 plperl.c:1662
+#, c-format
+msgid "PL/Perl functions cannot accept type %s"
+msgstr "PL/Perl関数は%s型を受け付けられません"
+
+#: plperl.c:1004
+#, c-format
+msgid "creation of Perl function \"%s\" failed: %s"
+msgstr "Perl関数\"%s\"の作成に失敗しました: %s"
+
+#: plperl.c:1134 plperl.c:1192
+#, c-format
+msgid "error from Perl function \"%s\": %s"
+msgstr "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 "集合を返すPL/Perl関数は配列への参ç…
§ã‚’返す、または、return_nextを使用する必要があります"
+
+#: plperl.c:1316
+msgid "composite-returning PL/Perl function must return reference to hash"
+msgstr "複合型を返すPL/Perl関数はハッシュへの参照を返す必
要があります"
+
+#: plperl.c:1325
+msgid ""
+"function returning record called in context that cannot accept type record"
+msgstr 
"レコード型を受け付けられないコンテキストでレコードを返す関数が呼び出されました"
+
+#: plperl.c:1441
+msgid "ignoring modified row in DELETE trigger"
+msgstr "DELETEトリガにて変更された行を無視します"
+
+#: plperl.c:1449
+msgid ""
+"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\""
+msgstr 
"PL/Perlトリガ関数の結果は\"SKIP\"または\"MODIFY\"でなければなりません"
+
+#: plperl.c:1549
+msgid "out of memory"
+msgstr "メモリ不足です"
+
+#: plperl.c:1606
+msgid "trigger functions can only be called as triggers"
+msgstr "トリガー関数はトリガーとしてのみコールできます"
+
+#: plperl.c:1899
+msgid "cannot use return_next in a non-SETOF function"
+msgstr 
"SETOF関数以外ではreturn_nextを使用することはできません"
+
+#: plperl.c:1905
+msgid ""
+"SETOF-composite-returning PL/Perl function must call return_next with "
+"reference to hash"
+msgstr "複合型のSETOFを返すPL/Perl関数はハッシュへの参ç…
§ã‚’持つreturn_nextを呼び出さなければなりません"

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 <[email protected]>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 8.4\n"
+"Report-Msgid-Bugs-To: [email protected]\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 <[email protected]>\n"
+"Language-Team: Brazilian Portuguese <[email protected]>\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 <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PostgreSQL 8.4\n"
+"Report-Msgid-Bugs-To: [email protected]\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 <[email protected]>\n"
+"Language-Team: Turkish <[email protected]>\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ğru ise, trusted ve untrusted Perl kodları 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ğil"
+
+#: plperl.c:779
+msgid "$_TD->{new} is not a hash reference"
+msgstr "$_TD->{new} hash referansı değil"
+
+#: plperl.c:916
+#: plperl.c:1615
+#, c-format
+msgid "PL/Perl functions cannot return type %s"
+msgstr "PL/Perl fonksiyonları %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ı %s tipini kabul etmez"
+
+#: plperl.c:1004
+#, c-format
+msgid "creation of Perl function \"%s\" failed: %s"
+msgstr " \"%s\" Perl fonksiyonunun yaratılması başarısız 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ğerini kabul etmediği ortamda set değeri alan fonksiyon 
çağırılmış"
+
+#: 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ı 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ı içermeyen alanda çağırılan ve kayıt döndüren 
fonksiyon"
+
+#: plperl.c:1441
+msgid "ignoring modified row in DELETE trigger"
+msgstr "DELETE triggerındaki değiştirilmiş satır gözardı 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ıdır"
+
+#: 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ı sadece trigger olarak çağırılabilirler"
+
+#: plperl.c:1899
+msgid "cannot use return_next in a non-SETOF function"
+msgstr "SETOF olmayan bir fonksiyonda return_next kullanılamaz"
+
+#: 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ı return_next'i hash'e 
referans olarak çağırmalıdır"
+


Reply via email to