Thread: Dollar quoting docs, round 1
Kind people, Please find attached a diff to the SGML docs that attempts to go over the new dollar quoting feature. In eager anticipation of comments & feedback, I remain, Your Humble Servant, D -- David Fetter david@fetter.org http://fetter.org/ phone: +1 510 893 6100 mobile: +1 415 235 3778 Remember to vote!
Attachment
David Fetter wrote: > Kind people, > > Please find attached a diff to the SGML docs that attempts to go over > the new dollar quoting feature. I think we should just use $$ in each case. Otherwise it might look more complicated than before.
On Wed, Apr 28, 2004 at 08:28:58AM +0200, Peter Eisentraut wrote: > David Fetter wrote: > > Kind people, > > > > Please find attached a diff to the SGML docs that attempts to go > > over the new dollar quoting feature. > > I think we should just use $$ in each case. Otherwise it might look > more complicated than before. Peter, I'd be delighted to simplify some of the quotes. They can't all be $$ because of the nesting, so that's out. Also, I believe it is a good idea to give some idea of what is going on with the tags, as I do with similar structures in other languages. For example, when I am writing up a piece of SQL in perl or php, the tag looks like this: $sql = <<SQL ... SQL $sql = <<<SQL ... SQL; Thanks as always for your prompt insights. Cheers, D -- David Fetter david@fetter.org http://fetter.org/ phone: +1 510 893 6100 mobile: +1 415 235 3778 Remember to vote!
Peter Eisentraut wrote: > David Fetter wrote: > > Kind people, > > > > Please find attached a diff to the SGML docs that attempts to go over > > the new dollar quoting feature. > > I think we should just use $$ in each case. Otherwise it might look > more complicated than before. Agreed. I was worried about dollar arguments in functions, e.g. $1: test=> select $$$1$$; ?column? ---------- $1 (1 row) but that seems to be OK. Is our only problem actual $$ in a function body? And there is no way of escaping that, right? They have to choose a different quote characters sequence. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073
David Fetter wrote: > On Wed, Apr 28, 2004 at 08:28:58AM +0200, Peter Eisentraut wrote: > > David Fetter wrote: > > > Kind people, > > > > > > Please find attached a diff to the SGML docs that attempts to go > > > over the new dollar quoting feature. > > > > I think we should just use $$ in each case. Otherwise it might look > > more complicated than before. > > Peter, > > I'd be delighted to simplify some of the quotes. They can't all be $$ > because of the nesting, so that's out. Also, I believe it is a good > idea to give some idea of what is going on with the tags, as I do with > similar structures in other languages. For example, when I am writing > up a piece of SQL in perl or php, the tag looks like this: > > $sql = <<SQL > ... > SQL > > $sql = <<<SQL > ... > SQL; Interesting, but I think most people like to use a tag that identifies what is happening, rather than the content. I think that's why <<END is used frequently, so END appears as the end. Seeing SQL alone on a line seems strange. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073
Bruce Momjian wrote: >David Fetter wrote: > > >>On Wed, Apr 28, 2004 at 08:28:58AM +0200, Peter Eisentraut wrote: >> >> >>>David Fetter wrote: >>> >>> >>>>Kind people, >>>> >>>>Please find attached a diff to the SGML docs that attempts to go >>>>over the new dollar quoting feature. >>>> >>>> >>>I think we should just use $$ in each case. Otherwise it might look >>>more complicated than before. >>> >>> >>Peter, >> >>I'd be delighted to simplify some of the quotes. They can't all be $$ >>because of the nesting, so that's out. Also, I believe it is a good >>idea to give some idea of what is going on with the tags, as I do with >>similar structures in other languages. For example, when I am writing >>up a piece of SQL in perl or php, the tag looks like this: >> >>$sql = <<SQL >>... >>SQL >> >>$sql = <<<SQL >>... >>SQL; >> >> > >Interesting, but I think most people like to use a tag that identifies >what is happening, rather than the content. I think that's why <<END is >used frequently, so END appears as the end. Seeing SQL alone on a line >seems strange. > > > I typically combine these approaches, with a heredoc marker like EOSQL cheers andrew
On Wed, Apr 28, 2004 at 12:30:06PM -0400, Bruce Momjian wrote: > Peter Eisentraut wrote: > > David Fetter wrote: > > > Kind people, > > > > > > Please find attached a diff to the SGML docs that attempts to go over > > > the new dollar quoting feature. > > > > I think we should just use $$ in each case. Otherwise it might look > > more complicated than before. > > Agreed. I was worried about dollar arguments in functions, e.g. $1: > > test=> select $$$1$$; > ?column? > ---------- > $1 > (1 row) > > but that seems to be OK. Is our only problem actual $$ in a > function body? This is a design feature, as I understand it. > And there is no way of escaping that, right? Right. > They have to choose a different quote characters sequence. Yes. Here is a short, but (IMHO) useful example. Incidentally, I have not yet found a way to get it working in versions prior to CVS HEAD. CREATE OR REPLACE FUNCTION has_bad_chars(TEXT) RETURNS BOOLEAN AS $function$ BEGIN RETURN ($1 ~ $q$[\t\r\n\v|\\]$q$); END; $function$ LANGUAGE plpgsql; Cheers, D -- David Fetter david@fetter.org http://fetter.org/ phone: +1 510 893 6100 mobile: +1 415 235 3778 Remember to vote!
Bruce Momjian wrote: >Peter Eisentraut wrote: > > >>David Fetter wrote: >> >> >>>Kind people, >>> >>>Please find attached a diff to the SGML docs that attempts to go over >>>the new dollar quoting feature. >>> >>> >>I think we should just use $$ in each case. Otherwise it might look >>more complicated than before. >> >> > >Agreed. I was worried about dollar arguments in functions, e.g. $1: > > test=> select $$$1$$; > ?column? > ---------- > $1 > (1 row) > >but that seems to be OK. Is our only problem actual $$ in a function >body? And there is no way of escaping that, right? They have to choose >a different quote characters sequence. > > > The string inside $x$ is totally opaque and unescaped. The restriction on markers is that the string mustn't contain $x$, and mustn't end with $x, i.e., the scanners see $x$ and simply accumulate all the characters in the string until they see $x$ again - all 3 scanners (postgres, psql, plpgsql) work the same way on this. Functions with arguments might need to be quoted with something other than plain $$, and in any case if their bodies make use of $$ they certainly will. pg_dump's approach to quoting function bodies is to start with $$ and then generate longer and longer markers until the marker without trailing $ is not found in the string comprising the function body. In most cases it ends up using $_$. I hope that makes things clearer. cheers andrew