Re: PL/pgSQL 1.2

Поиск
Список
Период
Сортировка
Искать
От
Marko Tiikkaja
Тема
Re: PL/pgSQL 1.2
Дата
Msg-id
540AC3F7.7090405@joh.to
Ответ на
Re: PL/pgSQL 1.2 (Pavel Stehule)
Список
Дерево обсуждения
PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Kevin Grittner <kgrittn@ymail.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Kevin Grittner <kgrittn@ymail.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Kevin Grittner <kgrittn@ymail.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Kevin Grittner <kgrittn@ymail.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 Heikki Linnakangas <hlinnakangas@vmware.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Heikki Linnakangas <hlinnakangas@vmware.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Andrew Dunstan <andrew@dunslane.net>
Re: PL/pgSQL 2 Heikki Linnakangas <hlinnakangas@vmware.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Kevin Grittner <kgrittn@ymail.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Kevin Grittner <kgrittn@ymail.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 David G Johnston <david.g.johnston@gmail.com>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Andres Freund <andres@2ndquadrant.com>
Re: PL/pgSQL 2 Hannu Krosing <hannu@2ndQuadrant.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Andres Freund <andres@2ndquadrant.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Andres Freund <andres@2ndquadrant.com>
Re: PL/pgSQL 2 Hannu Krosing <hannu@2ndQuadrant.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Steven Lembark <lembark@wrkhors.com>
Re: PL/pgSQL 2 Hannu Krosing <hannu@2ndQuadrant.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Steven Lembark <lembark@wrkhors.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Hannu Krosing <hannu@2ndQuadrant.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Andres Freund <andres@2ndquadrant.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Andres Freund <andres@2ndquadrant.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 David G Johnston <david.g.johnston@gmail.com>
Re: PL/pgSQL 2 Heikki Linnakangas <hlinnakangas@vmware.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Mark Kirkwood <mark.kirkwood@catalyst.net.nz>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Heikki Linnakangas <hlinnakangas@vmware.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 Shaun Thomas <sthomas@optionshouse.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Heikki Linnakangas <hlinnakangas@vmware.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Andres Freund <andres@2ndquadrant.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Heikki Linnakangas <hlinnakangas@vmware.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Heikki Linnakangas <hlinnakangas@vmware.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Tom Lane <tgl@sss.pgh.pa.us>
Re: PL/pgSQL 2 Andres Freund <andres@2ndquadrant.com>
Re: PL/pgSQL 2 Bruce Momjian <bruce@momjian.us>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Bruce Momjian <bruce@momjian.us>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Bruce Momjian <bruce@momjian.us>
Re: PL/pgSQL 2 Andres Freund <andres@2ndquadrant.com>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Tom Lane <tgl@sss.pgh.pa.us>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 David G Johnston <david.g.johnston@gmail.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Tom Lane <tgl@sss.pgh.pa.us>
Re: PL/pgSQL 2 Bruce Momjian <bruce@momjian.us>
Re: PL/pgSQL 2 "Joshua D. Drake" <jd@commandprompt.com>
Re: PL/pgSQL 2 David Johnston <david.g.johnston@gmail.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 "Joshua D. Drake" <jd@commandprompt.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 "Joshua D. Drake" <jd@commandprompt.com>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 Andrew Dunstan <andrew@dunslane.net>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 Szymon Guz <mabewlun@gmail.com>
Re: PL/pgSQL 2 Christopher Browne <cbbrowne@gmail.com>
Re: PL/pgSQL 2 Bruce Momjian <bruce@momjian.us>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 "Joshua D. Drake" <jd@commandprompt.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 "Joshua D. Drake" <jd@commandprompt.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Robert Haas <robertmhaas@gmail.com>
Re: PL/pgSQL 2 David G Johnston <david.g.johnston@gmail.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Stephen Frost <sfrost@snowman.net>
Re: PL/pgSQL 2 "Joshua D. Drake" <jd@commandprompt.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: Allowing implicit 'text' -> xml|json|jsonb (was: PL/pgSQL 2) Craig Ringer <craig@2ndquadrant.com>
Re: Allowing implicit 'text' -> xml|json|jsonb Marko Tiikkaja <marko@joh.to>
Re: Allowing implicit 'text' -> xml|json|jsonb Craig Ringer <craig@2ndquadrant.com>
Re: Allowing implicit 'text' -> xml|json|jsonb Tom Lane <tgl@sss.pgh.pa.us>
Re: Allowing implicit 'text' -> xml|json|jsonb Craig Ringer <craig@2ndquadrant.com>
Re: Allowing implicit 'text' -> xml|json|jsonb Marko Tiikkaja <marko@joh.to>
Re: Allowing implicit 'text' -> xml|json|jsonb (was: PL/pgSQL 2) Merlin Moncure <mmoncure@gmail.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Hannu Krosing <hannu@2ndQuadrant.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Hannu Krosing <hannu@2ndQuadrant.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Marko Tiikkaja <marko@joh.to>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Andres Freund <andres@2ndquadrant.com>
Re: PL/pgSQL 2 Tom Lane <tgl@sss.pgh.pa.us>
Re: PL/pgSQL 2 Neil Tiffin <neilt@neiltiffin.com>
Re: PL/pgSQL 2 Andrew Dunstan <andrew@dunslane.net>
Re: PL/pgSQL 2 Jan Wieck <jan@wi3ck.info>
Re: PL/pgSQL 2 David G Johnston <david.g.johnston@gmail.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 David Johnston <david.g.johnston@gmail.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Ian Barwick <ian@2ndquadrant.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Mark Kirkwood <mark.kirkwood@catalyst.net.nz>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Andrew Dunstan <andrew@dunslane.net>
Re: PL/pgSQL 2 Ryan Pedela <rpedela@datalanche.com>
Re: PL/pgSQL 2 Andrew Dunstan <andrew@dunslane.net>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Andrew Dunstan <andrew@dunslane.net>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Álvaro Hernández Tortosa <aht@nosys.es>
Re: PL/pgSQL 2 Neil Tiffin <neilt@neiltiffin.com>
Re: PL/pgSQL 2 Craig Ringer <craig@2ndquadrant.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Tom Lane <tgl@sss.pgh.pa.us>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Pavel Stehule <pavel.stehule@gmail.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Andres Freund <andres@2ndquadrant.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
Re: PL/pgSQL 2 Steven Lembark <lembark@wrkhors.com>
Re: PL/pgSQL 2 Merlin Moncure <mmoncure@gmail.com>
Re: PL/pgSQL 2 Merlin Moncure <mmoncure@gmail.com>
Re: PL/pgSQL 2 Joel Jacobson <joel@trustly.com>
On 2014-09-06 06:59, Pavel Stehule wrote:
> People can prepare a simple functions like you did:
>
> ...
>
> And then  use it in mass operations:
>
> BEGIN
>    FOR company IN SELECT * FROM company_list()
>    LOOP
>      FOR id IN SELECT * FROM user_list(company)
>      LOOP
>        update_user(id);
>      END LOOP;
>
> Or use it in application same style.

Yes, someone *could* do that, people are dumb.  But that's sort of 
*exactly* why we do it.

We wrap these things into (sometimes) simple-looking function so that 
none of the application developers ever run any SQL.  We define an 
interface between the application and the database, and that interface 
is implemented using PL/PgSQL functions.  Sure, sometimes one function 
will just fire off a single UPDATE .. RETURNING, or a SELECT, but that 
doesn't matter.  The trick is to be consistent everywhere.

>> But further, even if we did follow every single one of the above points
>> perfectly, it wouldn't change the point we're trying to make.  What we're
>> doing is following what the book dedicated an entire chapter to: Defensive
>> Programming.  Enforcing that that UPDATE affected exactly one row?
>> Defensive Programming.
>>
>
> Your strategy is defensive. 100%. But then I don't understand to your
> resistant  to verbosity. It is one basic stone of Ada design
>
> The problem of defensive strategy in stored procedures is possibility to
> block optimizer and result can be terrible slow. On the end, it needs a
> complex clustering solution, complex HA24 solution and higher complexity ~
> less safety.
>
> This is not problem on low load or low data applications.
>
> Banking applications are safe (and I accept, so there it is necessary), but
> they are not famous by speed.

Right.  We deal with money.  In general, I'll take slow over buggy any day.


.marko


В списке pgsql-hackers по дате отправления
От: Amit Kapila
Дата:
Сообщение: Re: Audit of logout
От: Marko Tiikkaja
Дата:
Сообщение: Re: PL/pgSQL 1.2
FAQ