Re: PL/Python adding support for multi-dimensional arrays

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: PL/Python adding support for multi-dimensional arrays
Дата
Msg-id CAFj8pRBZsJyZ6D5_oxp__EvbqkbNpQSDs2ttesU1dq1VUxj0DA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: PL/Python adding support for multi-dimensional arrays  (Heikki Linnakangas <hlinnaka@iki.fi>)
Ответы Re: PL/Python adding support for multi-dimensional arrays  (Dave Cramer <pg@fastcrypt.com>)
Re: PL/Python adding support for multi-dimensional arrays  (Heikki Linnakangas <hlinnaka@iki.fi>)
Список pgsql-hackers


2016-10-10 12:31 GMT+02:00 Heikki Linnakangas <hlinnaka@iki.fi>:
On 10/01/2016 02:45 AM, Jim Nasby wrote:
On 9/29/16 1:51 PM, Heikki Linnakangas wrote:
Now, back to multi-dimensional arrays. I can see that the Sequence
representation is problematic, with arrays, because if you have a python
list of lists, like [[1, 2]], it's not immediately clear if that's a
one-dimensional array of tuples, or two-dimensional array of integers.
Then again, we do have the type definitions available. So is it really
ambiguous?

[[1,2]] is a list of lists...
In [4]: b=[[1,2]]

In [5]: type(b)
Out[5]: list

In [6]: type(b[0])
Out[6]: list

If you want a list of tuples...
In [7]: c=[(1,2)]

In [8]: type(c)
Out[8]: list

In [9]: type(c[0])
Out[9]: tuple

Hmm, so we would start to treat lists and tuples differently? A Python list would be converted into an array, and a Python tuple would be converted into a composite type. That does make a lot of sense. The only problem is that it's not backwards-compatible. A PL/python function that returns an SQL array of rows, and does that by returning Python list of lists, it would start failing.

is not possible do decision in last moment - on PL/Postgres interface? There the expected type should be known.

Regards

Pavel
 

I think we should bite the bullet and do that anyway. As long as it's clearly documented, and the error message you get contains a clear hint on how to fix it, I don't think it would be too painful to adjust existing application.

We could continue to accept a Python list for a plain composite type, this would only affect arrays of composite types.

I don't use PL/python much myself, so I don't feel qualified to make the call, though. Any 3rd opinions?

- Heikki


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Switch to unnamed POSIX semaphores as our preferred sema code?
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: proposal: psql \setfileref