Обсуждение: Port Bug Report: Insertion of line return character inconsistent.
============================================================================
POSTGRESQL BUG REPORT TEMPLATE
============================================================================
Your name : John Garrott
Your email address : johnga@primenet.com
Category : unknown
Severity : non-critical
Summary: Insertion of line return character inconsistent.
System Configuration
--------------------
Operating System : Linux2.0.35 ELF
PostgreSQL version : 6.4.2
Compiler used : gcc 2.7.2.3
Hardware:
---------
Linux nadrek 2.0.35 #1 Fri May 21 08:48:00 PDT 1999 i586 unknown
Versions of other tools:
------------------------
GNU Make version 3.76.1
flex version 2.5.4
GNU Bison version 1.25
--------------------------------------------------------------------------
Problem Description:
--------------------
Storing text with included returns seems inconsistent. The return
character at the end of a text string must be escaped. If the lines
are double spaced, the next one cannot be or three extra lines are
generated instead of one.
Example: (Standard C conventions in character representation)
Intended:
"This is a double spaced comment.
This is the second line."
If inserted as "This is a double spaced comment.\n\nThis is the second line."
the stored result is
"This is a double spaced comment.
This is the second line."
If both returns are escaped:
"This is a double spaced comment.\\\n\\\nThis is the second line."
the stored result is
"This is a double spaced comment.
This is the second line."
Finally, if only the first return is escaped, everything is normal:
"This is a double spaced comment.\\\n\nThis is the second line."
The stored result is
"This is a double spaced comment.
This is the second line."
The field the text is stored in is a varchar(2048).
--------------------------------------------------------------------------
Test Case:
----------
--------------------------------------------------------------------------
Solution:
---------
--------------------------------------------------------------------------
Re: [PORTS] Port Bug Report: Insertion of line return character inconsistent.
От
Bruce Momjian
Дата:
> PostgreSQL version : 6.4.2
>
> Compiler used : gcc 2.7.2.3
>
> Hardware:
> ---------
> Linux nadrek 2.0.35 #1 Fri May 21 08:48:00 PDT 1999 i586 unknown
>
>
> Versions of other tools:
> ------------------------
> GNU Make version 3.76.1
> flex version 2.5.4
> GNU Bison version 1.25
>
> --------------------------------------------------------------------------
>
> Problem Description:
> --------------------
> Storing text with included returns seems inconsistent. The return
> character at the end of a text string must be escaped. If the lines
> are double spaced, the next one cannot be or three extra lines are
> generated instead of one.
>
> Example: (Standard C conventions in character representation)
> Intended:
>
> "This is a double spaced comment.
>
> This is the second line."
>
> If inserted as "This is a double spaced comment.\n\nThis is the second line."
> the stored result is
>
> "This is a double spaced comment.
> This is the second line."
>
> If both returns are escaped:
> "This is a double spaced comment.\\\n\\\nThis is the second line."
> the stored result is
>
> "This is a double spaced comment.
>
>
>
> This is the second line."
>
> Finally, if only the first return is escaped, everything is normal:
> "This is a double spaced comment.\\\n\nThis is the second line."
> The stored result is
>
> "This is a double spaced comment.
>
> This is the second line."
I can't reproduce the problem in 6.5:
test=> create table test(x text);
CREATE
test=> insert into test values ('line 1\n\nline2');
INSERT 18985 1
test=> select * from test;
x
-------------
line 1
line2
(1 row)
--
Bruce Momjian | http://www.op.net/~candle
maillist@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026