Re: :PgSQL: More Queestions
От | David Wheeler |
---|---|
Тема | Re: :PgSQL: More Queestions |
Дата | |
Msg-id | A95C6280-FD1A-11D6-8943-0003931A964A@wheeler.net обсуждение исходный текст |
Ответы |
Re: :PgSQL: More Queestions
|
Список | pgsql-interfaces |
On Wednesday, November 20, 2002, at 06:53 AM, Tim Bunce wrote: >> But if I change it (as I'm seriously considering, in light of >> PostgreSQL 7.3's support for prepared statements), I'll probably do no >> parsing for comments. > > I think that would be a bad move. Yes, your last post makes very clear why. Thanks. > If it's seen the start of a string ("..." or '...') then it just > keeps copying the string till it finds the same type of quote > character to mark the end of the string. The 'fiddly bit in the > middle' is handling backslashes used to escape quote chars in the > middle of the string: "...\"..." and "...\\" (odd vs even number). Seems rather opaque. Maybe I'm just reflecting my C-newbieness, but why wouldn't this work as well? Borrowing a bit from DBD::ODBC here (but allowing for both kinds of escaping of the quote characters): if (*src == '"' || *src == '\'') { if (!in_literal) { literal_ch = *src; in_literal = 1; } else { if (*src == literal_ch && *(src-1) != '//' && *(src-1)!= literal_ch) { in_literal = 0; } } } > ANSI standard doesn't use backslashes, it uses doubling: "...""..." Yeah, as Rudy pointed out, however, PostgreSQL uses backslashes as well as doubling. > Take a look at dbd_preparse in DBD::Oracle. Will do, when I'm more awake again and find the tuits... > There's also a preparse() in DBI.xs which was destined to become a > standard service offered to drivers - but isn't quite ready yet. Hrm, yes, that could be quite handy, since dbd_preparse() seems to be one of the more complex driver functions... Regards, David -- David Wheeler AIM: dwTheory david@wheeler.net ICQ: 15726394 http://david.wheeler.net/ Yahoo!: dew7e Jabber: Theory@jabber.org
В списке pgsql-interfaces по дате отправления: