Commit 00aa8ed4 authored by Tom Lane's avatar Tom Lane

Adjust plpython to convert \r\n and \r to \n in Python scripts,

per recent discussion concluding that this is the Right Thing.  Add
regression test check for this behavior.  Michael Fuhr
parent 21870595
......@@ -137,3 +137,21 @@ SELECT join_sequences(sequences) FROM sequences
----------------
(0 rows)
SELECT newline_lf();
newline_lf
------------
123
(1 row)
SELECT newline_cr();
newline_cr
------------
123
(1 row)
SELECT newline_crlf();
newline_crlf
--------------
123
(1 row)
......@@ -29,7 +29,7 @@
* MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.58 2004/12/17 02:14:48 tgl Exp $
* $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.59 2005/03/24 17:22:34 tgl Exp $
*
*********************************************************************
*/
......@@ -1206,10 +1206,14 @@ PLy_procedure_munge_source(const char *name, const char *src)
while (*sp != '\0')
{
if (*sp == '\n')
if (*sp == '\r' && *(sp + 1) == '\n')
sp++;
if (*sp == '\n' || *sp == '\r')
{
*mp++ = *sp++;
*mp++ = '\n';
*mp++ = '\t';
sp++;
}
else
*mp++ = *sp++;
......
......@@ -306,3 +306,19 @@ CREATE OR REPLACE FUNCTION write_file(text,text) RETURNS text AS '
open(args[0],"w").write(args[1])
return "Wrote to file: %s" % args[0]
' LANGUAGE plpythonu;
--
-- Universal Newline Support
--
CREATE OR REPLACE FUNCTION newline_lf() RETURNS integer AS
'x = 100\ny = 23\nreturn x + y\n'
LANGUAGE plpythonu;
CREATE OR REPLACE FUNCTION newline_cr() RETURNS integer AS
'x = 100\ry = 23\rreturn x + y\r'
LANGUAGE plpythonu;
CREATE OR REPLACE FUNCTION newline_crlf() RETURNS integer AS
'x = 100\r\ny = 23\r\nreturn x + y\r\n'
LANGUAGE plpythonu;
......@@ -61,3 +61,10 @@ SELECT join_sequences(sequences) FROM sequences
-- error in trigger
--
--
-- Check Universal Newline Support
--
SELECT newline_lf();
SELECT newline_cr();
SELECT newline_crlf();
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment