mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-17 19:30:00 +08:00
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
This commit is contained in:
parent
291cd954fb
commit
35411a878b
@ -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.58.4.1 2005/03/24 17:22:44 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();
|
||||
|
Loading…
Reference in New Issue
Block a user