Re: query output in psql PROMPT
От | strk |
---|---|
Тема | Re: query output in psql PROMPT |
Дата | |
Msg-id | 20050114171938.GA14149@freek.keybit.net обсуждение исходный текст |
Ответ на | Re: query output in psql PROMPT (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-patches |
On Fri, Jan 14, 2005 at 12:06:32PM -0500, Tom Lane wrote: > strk <strk@keybit.net> writes: > > A simple patch allow query output in psql PROMPT strings: > > Why is this a good idea? Having a query implicitly executed during > every prompt will have a ton of bad side effects, for instance > prematurely freezing the query snapshot in SERIALIZABLE transactions. The only purpose for having made the patch is having current_schema() printed on the prompt (for the first question). I know the code is very dirty, is there a chance to current_schema() as a variable if that won't change transaction status ? --strk; > > The syntax you propose is downright bizarre --- what if I needed a dot > in the query text? > > > + cmdend = strcspn(cmd, "."); > > + cmd[cmdend] = '\0'; > > + if (cmd) > > + { > > + res = PSQLexec(cmd, false); > > + } > > What's the if for? cmd can't be NULL (you already dumped core if it > is). > > > + if (res && PQntuples(res) ) > > + { > > + memcpy(buf, PQgetvalue(res, 0, 0), MAX_PROMPT_SIZE-1); > > + PQclear(res); > > + } > > Leaks memory on query failure. > > > + if (strlen(buf) > 0 && buf[strlen(buf) - 1] == '\n') > > + buf[strlen(buf) - 1] = '\0'; > > Uses undefined contents of buf on query failure. > > > + p += cmdend + 1; > > Falls off the end of the prompt if there was no terminating dot, causing > subsequent iterations of the loop to continue reading undefined memory. > > regards, tom lane -- For standing up against patentability of software, Thank You, Poland! Read the intervention: http://kwiki.ffii.org/ConsPolon041221En Send your thanks: thankyoupoland.info Read/do more: http://www.noepatents.org/
В списке pgsql-patches по дате отправления: