Reorder calling func with array

This commit is contained in:
steve-chavez
2020-04-21 15:16:21 -05:00
committed by Steve Chavez
parent ef36ec10a1
commit 3af6df743b
2 changed files with 27 additions and 39 deletions
+25 -37
View File
@@ -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
View File
@@ -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