Re: proposal: row_to_array function

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: proposal: row_to_array function
Дата
Msg-id CAFj8pRD6GG-QucnkexdjkC_ZKruU-BaoMFnEF3k8marV1XD-LQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: proposal: row_to_array function  (Jim Nasby <Jim.Nasby@BlueTreble.com>)
Список pgsql-hackers


2015-01-16 18:42 GMT+01:00 Jim Nasby <Jim.Nasby@bluetreble.com>:
On 1/16/15 11:22 AM, Pavel Stehule wrote:


2015-01-16 18:03 GMT+01:00 Jim Nasby <Jim.Nasby@bluetreble.com <mailto:Jim.Nasby@bluetreble.com>>:

    On 1/16/15 3:45 AM, Pavel Stehule wrote:

        I am returning back to processing records in plpgsql.

        I am thinking so it can be simply processed with transformations to array.

        Now we have similar functions - hstore(row), row_to_json, ... but using of these functions can be a useless step. Any row variable can be transformed to 2D text array.


    How is it useless? Why wouldn't you just use JSON and be done with it?


We can use a FOREACH IN ARRAY iteration in plpgsql (second variant is a implementation FOREACH for jsonb)

so ROW->ARRAY is shorter than ROW->JSON->ARRAY or ROW->HSTORE->ARRAY

I think the real problem here is that we're inventing a bunch of different ways to do the same thing: iterate over a set. Instead of doing that, should we add the idea of an iterator to the type system? That would make sense for arrays, hstore, json and XML.

what do you think? How this can be implemented?


 

    Do you have some use cases you can share?


processing of NEW, OLD variables in triggers

Note that last time I checked you couldn't do something like NEW.variable, and I don't think you could use EXEC to do it either. So there's more needed here than just converting a record to an array.

        There two possible transformations:

        row_to_array --> [[key1, value1],[key2, value2], ...]
        row_to_row_array --> [(key1, value1), (key2, value2), ... ]


    If we're going to go that route, I think it makes more sense to create an actual key/value type (ie: http://pgxn.org/dist/pair/doc/__pair.html <http://pgxn.org/dist/pair/doc/pair.html>) and return an array of that.


ok

    --
    Jim Nasby, Data Architect, Blue Treble Consulting
    Data in Trouble? Get it in Treble! http://BlueTreble.com




--
Jim Nasby, Data Architect, Blue Treble Consulting
Data in Trouble? Get it in Treble! http://BlueTreble.com

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

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: Patch: add recovery_timeout option to control timeout of restore_command nonzero status code
Следующее
От: Jim Nasby
Дата:
Сообщение: Re: proposal: lock_time for pg_stat_database