Thread: Port Bug Report: Insertion of line return character inconsistent.

Port Bug Report: Insertion of line return character inconsistent.

From
Unprivileged user
Date:
============================================================================
                        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:
---------


--------------------------------------------------------------------------


>   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