Re: Invalid YAML output from EXPLAIN
От | Robert Haas |
---|---|
Тема | Re: Invalid YAML output from EXPLAIN |
Дата | |
Msg-id | AANLkTilNAp1wWVfkh_UoaheXoC-jA4Mr6l5lQcoZnod9@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Invalid YAML output from EXPLAIN (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: Invalid YAML output from EXPLAIN
Re: Invalid YAML output from EXPLAIN |
Список | pgsql-bugs |
On Tue, Jun 8, 2010 at 10:47 PM, Robert Haas <robertmhaas@gmail.com> wrote: > On Mon, Jun 7, 2010 at 4:14 AM, Dean Rasheed <dean.a.rasheed@gmail.com> w= rote: >> Testing 9.0 beta, I found that EXPLAINing certain queries in YAML >> format will produce invalid YAML, for example: >> >> explain (format yaml) select * from foo where str_val =3D 'a: b'; >> >> The problem in this case is that a colon followed by whitespace is not >> allowed in an unquoted plain YAML string because a parser would >> interpret it as the start of a map. >> >> So the current code in escape_yaml() is inadequate for producing valid >> YAML. I think it would have to also consider at least the following >> characters as special "-" =A0":" =A0"[" =A0"]" =A0"{" =A0"}" =A0"," =A0"= \"" =A0"'" >> "|" =A0"*" =A0"&". Technically, it would also need to trap empty strings, >> and strings with leading or trailing whitespace. >> >> Making escape_yaml() completely bulletproof with this approach would >> be quite difficult, and (IMO) not worth the effort, especially given >> that an important requirement is that the output be machine readable, >> and in my experience YAML parsers are often far from perfect. >> >> I would therefore argue for simply calling escape_json() to produce >> double quoted output for all string values, and only have numeric >> values unquoted. This is not really any less human readable, and is >> far more machine readable. >> >> Patch attached. > > I've committed a patch which I think will address this issue without > uglifying the output quite so much. =A0Also, I didn't like the idea of > not applying escaping to both the keys and values, even though we > think we'll never have a key that requires escaping. =A0With this > approach, that change isn't needed. Er, I should also say, thanks for the report, and please test. I am definitely not an expert on YAML. --=20 Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise Postgres Company
В списке pgsql-bugs по дате отправления: