Re: Access to current database from C-language function

Поиск
Список
Период
Сортировка
От David Fetter
Тема Re: Access to current database from C-language function
Дата
Msg-id 20110801150458.GD7857@fetter.org
обсуждение исходный текст
Ответ на Re: Access to current database from C-language function  (Achim Domma <domma@procoders.net>)
Ответы Re: Access to current database from C-language function  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers
On Mon, Aug 01, 2011 at 01:23:26PM +0200, Achim Domma wrote:
> Am 26.07.2011 um 00:40 schrieb Florian Pflug:
> 
> > On Jul25, 2011, at 22:31 , Achim Domma wrote:
> >> Am 25.07.2011 um 14:48 schrieb Florian Pflug:
> >>> A more low-level API is provided by
> >>> {heap,index}_{beginscan,endscan}, heap_{insert,update,delete}
> >>> and index_insert. However, correct handling of transactions
> >>> using this API isn't easy - for example, to update a row you'd
> >>> first have to find the latest version of that row, then decide
> >>> if you're allowed to update it, and finally create a new
> >>> version.
> >> 
> >> I see the problems with the second approach, but that's
> >> definitively what I would like to do.
> > 
> > You're in for a lot of work, then. I still suggest that you
> > explain your ultimate goals before you embark on your endeavor -
> > people might be able to point our easier ways to achieve those.
> 
> I have tables which store two integer IDs and a floating point rank.
> So the table MyTable might have these columns:
> 
> EntityID -> int PropertyID -> int Rank -> float
> 
> My algorithm needs to retrieve EntityID-Rank-Pairs for some given
> PropertyIDs. So I basically want to execute a "select EntityID, Rank
> from MyTable where PropertyID=123 oder by Rank desc". But I need to
> execute multiple of those statements and I don't want to load all
> the data into memory, but rather iterate over the results step by
> step, stopping at certain thresholds.
> 
> My algorithm is somewhat nested and contains logic which I cannot
> express in SQL,

SQL is Turing-complete, so the chances are excellent that it's
possible to express that algorithm in it. ;)

Look into common table expressions for iteration/recursion, and
windowing functions, commonly used for time series.

http://www.postgresql.org/docs/current/static/queries-with.html
http://www.postgresql.org/docs/current/static/tutorial-window.html

Cheers,
David.
-- 
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david.fetter@gmail.com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: Hot standby and GiST page splits (was Re: WIP: Fast GiST index build)
Следующее
От: Robert Haas
Дата:
Сообщение: Re: Access to current database from C-language function