Reorder calling func with array
This commit is contained in:
committed by
Steve Chavez
parent
ef36ec10a1
commit
3af6df743b
@@ -1179,46 +1179,51 @@ You can also call a function that takes a single parameter of type json by sendi
|
|||||||
|
|
||||||
8
|
8
|
||||||
|
|
||||||
|
.. _s_procs_array:
|
||||||
|
|
||||||
Calling functions with array parameters
|
Calling functions with array parameters
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
You can call a function that takes an array parameter:
|
You can call a function that takes an array parameter:
|
||||||
|
|
||||||
.. code-block:: plpgsql
|
.. code-block:: postgres
|
||||||
|
|
||||||
CREATE FUNCTION native_array_func(arr int[]) RETURNS int[] as $$
|
create function plus_one(arr int[]) returns int[] as $$
|
||||||
SELECT arr;
|
SELECT array_agg(n + 1) FROM unnest($1) AS n;
|
||||||
$$ LANGUAGE SQL;
|
$$ language sql;
|
||||||
|
|
||||||
.. code-block:: http
|
.. code-block:: http
|
||||||
|
|
||||||
POST /rpc/native_array_func HTTP/1.1
|
POST /rpc/plus_one HTTP/1.1
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
{ "arg": [1,2,3] }
|
{"arr": [1,2,3,4]}
|
||||||
|
|
||||||
[1,2,3]
|
.. code-block:: json
|
||||||
|
|
||||||
|
[2,3,4,5]
|
||||||
|
|
||||||
|
For calling the function with GET, you can pass the array as an `array literal <https://www.postgresql.org/docs/11/arrays.html#ARRAYS-INPUT>`_,
|
||||||
|
as in ``{1,2,3,4}``. Note that the curly brackets have to be urlencoded(``{`` is ``%7B`` and ``}`` is ``%7D``).
|
||||||
|
|
||||||
|
.. code-block:: http
|
||||||
|
|
||||||
|
GET /rpc/plus_one?arr=%7B1,2,3,4%7D' HTTP/1.1
|
||||||
|
|
||||||
|
[2,3,4,5]
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
For versions prior to PostgreSQL 10, to pass a PostgreSQL native array you need to quote it as a string:
|
For versions prior to PostgreSQL 10, to pass a PostgreSQL native array on a POST payload, you need to quote it and use an array literal:
|
||||||
|
|
||||||
.. code-block:: http
|
.. code-block:: http
|
||||||
|
|
||||||
POST /rpc/native_array_func HTTP/1.1
|
POST /rpc/plus_one HTTP/1.1
|
||||||
|
|
||||||
{ "arg": "{1,2,3}" }
|
{ "arr": "{1,2,3,4}" }
|
||||||
|
|
||||||
In these versions we recommend using function parameters of type json to accept arrays from the client.
|
In these versions we recommend using function parameters of type json to accept arrays from the client.
|
||||||
|
|
||||||
For calling it with GET, you can pass the array as an `array literal <https://www.postgresql.org/docs/11/arrays.html#ARRAYS-INPUT>`_;
|
|
||||||
as in ``{1,2,3}``. Note that the curly brackets have to be urlencoded(``{`` is ``%7B`` and ``}`` is ``%7D``).
|
|
||||||
|
|
||||||
.. code-block:: http
|
|
||||||
|
|
||||||
GET /rpc/native_array_func?arr=%7B1,2,3%7D' HTTP/1.1
|
|
||||||
|
|
||||||
[1,2,3]
|
|
||||||
|
|
||||||
Scalar functions
|
Scalar functions
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
@@ -1262,24 +1267,7 @@ It's possible to call a function in a bulk way, analoguosly to :ref:`bulk_insert
|
|||||||
|
|
||||||
[ 3, 7 ]
|
[ 3, 7 ]
|
||||||
|
|
||||||
If you have large payloads to process, it's preferrable you instead use a function with an array or json parameter, as this will be more efficient.
|
If you have large payloads to process, it's preferrable you instead use a function with an :ref:`array parameter <s_procs_array>` or json parameter, as this will be more efficient.
|
||||||
|
|
||||||
.. code-block:: postgres
|
|
||||||
|
|
||||||
create function plus_one(arr int[]) returns int[] as $$
|
|
||||||
SELECT array_agg(n + 1) FROM unnest($1) AS n;
|
|
||||||
$$ language sql;
|
|
||||||
|
|
||||||
.. code-block:: http
|
|
||||||
|
|
||||||
POST /rpc/plus_one HTTP/1.1
|
|
||||||
Content-Type: application/json
|
|
||||||
|
|
||||||
{"arr": [1,2,3,4]}
|
|
||||||
|
|
||||||
.. code-block:: json
|
|
||||||
|
|
||||||
[2,3,4,5]
|
|
||||||
|
|
||||||
It's also possible to :ref:`Specify Columns <specify_columns>` on functions calls.
|
It's also possible to :ref:`Specify Columns <specify_columns>` on functions calls.
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -6,11 +6,11 @@ Community Tutorials
|
|||||||
* `Building a Contacts List with PostgREST and Vue.js <https://www.youtube.com/playlist?list=PLseEp7p6EwibFjhfO6LhMx5_SFkVxt_gf>`_ -
|
* `Building a Contacts List with PostgREST and Vue.js <https://www.youtube.com/playlist?list=PLseEp7p6EwibFjhfO6LhMx5_SFkVxt_gf>`_ -
|
||||||
In this video series, DigitalOcean shows how to build and deploy an Nginx + PostgREST(using a managed PostgreSQL database) + Vue.js webapp in an Ubuntu server droplet.
|
In this video series, DigitalOcean shows how to build and deploy an Nginx + PostgREST(using a managed PostgreSQL database) + Vue.js webapp in an Ubuntu server droplet.
|
||||||
|
|
||||||
|
* `PostgREST + Auth0: Create REST API in mintutes and add social login using Auth0 <https://samkhawase.com/blog/postgrest_introduction/>`_ - A step-by-step tutorial to show how to Dockerize and integrate Auth0 to PostgREST service.
|
||||||
|
|
||||||
* `PostgREST + PostGIS API tutorial in 5 minutes <https://gis-ops.com/postgrest-postgis-api-tutorial-in-5-minutes>`_ -
|
* `PostgREST + PostGIS API tutorial in 5 minutes <https://gis-ops.com/postgrest-postgis-api-tutorial-in-5-minutes>`_ -
|
||||||
In this tutorial, GIS • OPS shows how to perform PostGIS calculations through PostgREST :ref:`s_procs` interface.
|
In this tutorial, GIS • OPS shows how to perform PostGIS calculations through PostgREST :ref:`s_procs` interface.
|
||||||
|
|
||||||
* `PostgREST + Auth0: Create REST API in mintutes and add social login using Auth0 <https://samkhawase.com/blog/postgrest_introduction/>`_ - A step-by-step tutorial to show how to Dockerize and integrate Auth0 to PostgREST service.
|
|
||||||
|
|
||||||
.. _eco_example_apps:
|
.. _eco_example_apps:
|
||||||
|
|
||||||
Example Apps
|
Example Apps
|
||||||
|
|||||||
Reference in New Issue
Block a user