nowości w postgresie 8.3 - prompt
weszlo do cvs’a, wiec już chyba mogę opisać.
rzecz jest prosta.
od jakiegoś czasu w psql’u można używać zmiennych. przykład:
# \set a 123
# \set b '''depesz'''
# select :a, ':b';
?column? | ?column?
----------+----------
123 | depesz
(1 row)
zastosowanie jest oczywiste - prostsze pisanie sql’i z jakimiś zmiennymi.
minusy są dwa - utrudniona składnia do definiowania zmiennych tekstowych (potrójne apostrofy). i dwa - skoro i tak można tu ustawić tylko w skrypcie sql to funkcjonalność znikoma.
tak było do teraz.
ostatnio pojawił się patch na psql’a (i wszedł do cvs’a) dodający polecenie \prompt.
polecenie to pyta (zadanym tekstem) po czym odpowiedź użytkownika zapisuje do podanej zmiennej.
perfekcyjna sprawa gdy chcemy np. sparametryzować patch-bazodanowy.
przykład:
# \prompt 'Numeryczny identyfikator backupu? ' backup_id
Numeryczny identyfikator backupu? 123
# \echo :backup_id
123
# create table backup_:backup_id as select * from pg_proc;
SELECT
# select count(*) from backup_123;
count
-------
2007
(1 row)
sweet ![]()
February 26th, 2007 at 20:49
i jedna rzecz mniej do wycinania przy przenoszeniu skryptow z Oracle
May 4th, 2007 at 11:56
Widac znowu PG kopuje pomysly z ORACLE. prompt czy bind ale to samo robi. Według mnie postgres sie rozwija ale to jest troszeczke za wolno. Sledze rozwuj MySQLa i PG i wydaje mi sie ze rok moze 2 i PG zostanie w tyle.
June 6th, 2007 at 13:28
Jesli to dziala tak jak w oraclu to istnieje inny, niebagatelny plus. Query plan jest cache’owany, przy wykorzystaniu zmiennych baza nie musi go wykonywac ponownie. Co oczywiscie poprawia wydajnosc, aczkolwiek nie zawsze