From: | Ken Williams <ken(at)mathforum(dot)org> |
---|---|
To: | weiping He <laser(at)zhengmai(dot)com(dot)cn> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: does parser still parse those comment out lines? |
Date: | 2003-04-20 14:29:55 |
Message-ID: | 8E1FCA8F-733C-11D7-90B2-003065F6D85A@mathforum.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
I'm not a Pg developer, but that looks like expected behavior to me.
It seems analogous to the following Perl code:
my $string = ' $x = 4; # can't put quotes here either
$y = 2 + $x; ';
eval $string;
Quote-finding happens before comment removal - otherwise you could
never put comment characters inside literal strings (and expect them to
stay there), which would be a real pain.
Seems like the first thing you need to do is make sure everything in
between the first ' and the last ' is a valid string with all its
quotes escaped, and then make sure the string contents make up valid
SQL.
-Ken
On Saturday, April 19, 2003, at 01:10 AM, weiping He wrote:
> see the little test below:
> --------------------8<--------------------------------------
> drop function test();
> create or replace function test() returns integer as '
> begin
> -- raise NOTICE ''can't comment out!'';
> raise notice ''didn''''t comment out'';
> return 1;
> end;' language 'plpgsql';
>
> laser_uni=# \i test17.sql
> psql:test17.sql:1: ERROR: RemoveFunction: function test() does not
> exist
> psql:test17.sql:4: ERROR: parser: parse error at or near "t" at
> character 84
> psql:test17.sql:5: ERROR: parser: parse error at or near "raise" at
> character 1
> psql:test17.sql:6: ERROR: parser: parse error at or near "return" at
> character 1
> psql:test17.sql:7: WARNING: COMMIT: no transaction in progress
> COMMIT
> psql:test17.sql:7: ERROR: parser: parse error at or near "' language
> '"
> at character 1
> -----------------
> 8<------------------------------------------------------
> while change it to:
>
> ------------------------8<---------------------------------------------
> drop function test();
> create or replace function test() returns integer as '
> begin
> -- raise NOTICE ''cant comment out!'';
> raise notice ''didn''''t comment out'';
> return 1;
> end;' language 'plpgsql';
> ------------------------8<---------------------------------------------
> would be OK, so, the parser still parse those commented lines?
> Is it a bug?
>
> regards
>
> Laser
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to
> majordomo(at)postgresql(dot)org
>
From | Date | Subject | |
---|---|---|---|
Next Message | Jeffrey Melloy | 2003-04-20 15:19:59 | Re: 7.3 PDF documentation |
Previous Message | valter m | 2003-04-20 10:18:51 | replication |