Implementing pg_dump_sort.c topological sorting in sql/plpgsql/plperl?

Поиск
Список
Период
Сортировка
От Joel Jacobson
Тема Implementing pg_dump_sort.c topological sorting in sql/plpgsql/plperl?
Дата
Msg-id AANLkTik=_OZi0NShedfGHoUOrY6RAdQT3GWgLcjnVyhO@mail.gmail.com
обсуждение исходный текст
Ответы Re: Implementing pg_dump_sort.c topological sorting in sql/plpgsql/plperl?  (Dimitri Fontaine <dimitri@2ndQuadrant.fr>)
Re: Implementing pg_dump_sort.c topological sorting in sql/plpgsql/plperl?  (David Fetter <david@fetter.org>)
Список pgsql-hackers
Hi hackers,

The project I'm currently working with fsnapshot[1], is written in
plain plpgsql and I need to sort all the oids in their
creatable/droppable order.
This has already been properly implemented in pg_dump_sort.c using
Knuth's algorithm for topological sorting, with some special magic to
find and break dependency loops.

It's not possible to use a plain recursive query to do the trick (due
to 'i' bidirectional dependencies and dependency loops).

I need a general approach, only making use of pg_depend.

The function should take no input arguments and the output argument
should be oid[], containing a list of the oids in a
creatable/droppable or order.
It doesn't matter if it is left-to-right, least number of edges first.
Any valid topological sort will do.

I'm sure it's possible to implement it in plpgsql or plperl, but I
wanted to check first if anyone has already made such a function to
hopefully save some time?

Thanks a lot!

[1] https://github.com/gluefinance/fsnapshot

-- 
Best regards,

Joel Jacobson
Glue Finance


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

Предыдущее
От: Jeff Davis
Дата:
Сообщение: WIP: Range Types
Следующее
От: Dimitri Fontaine
Дата:
Сообщение: Re: Extension upgrade, patch v0: debug help needed