Re: query output in psql PROMPT
От | Tom Lane |
---|---|
Тема | Re: query output in psql PROMPT |
Дата | |
Msg-id | 24426.1105722392@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | query output in psql PROMPT (strk <strk@keybit.net>) |
Ответы |
Re: query output in psql PROMPT
Re: query output in psql PROMPT |
Список | pgsql-patches |
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 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
В списке pgsql-patches по дате отправления: