@@ -316,20 +316,32 @@ int SPI_execute(const char * <parameter>command</parameter>, bool <parameter>rea
316
316
<para>
317
317
If <parameter>count</parameter> is zero then the command is executed
318
318
for all rows that it applies to. If <parameter>count</parameter>
319
- is greater than 0, then the number of rows for which the command
320
- will be executed is restricted (much like a
321
- <literal>LIMIT</literal> clause). For example:
319
+ is greater than zero, then no more than <parameter>count</parameter> rows
320
+ will be retrieved; execution stops when the count is reached, much like
321
+ adding a <literal>LIMIT</literal> clause to the query. For example,
322
+ <programlisting>
323
+ SPI_execute("SELECT * FROM foo", true, 5);
324
+ </programlisting>
325
+ will retrieve at most 5 rows from the table. Note that such a limit
326
+ is only effective when the command actually returns rows. For example,
322
327
<programlisting>
323
328
SPI_execute("INSERT INTO foo SELECT * FROM bar", false, 5);
324
329
</programlisting>
325
- will allow at most 5 rows to be inserted into the table.
330
+ inserts all rows from <structname>bar</>, ignoring the
331
+ <parameter>count</parameter> parameter. However, with
332
+ <programlisting>
333
+ SPI_execute("INSERT INTO foo SELECT * FROM bar RETURNING *", false, 5);
334
+ </programlisting>
335
+ at most 5 rows would be inserted, since execution would stop after the
336
+ fifth <literal>RETURNING</> result row is retrieved.
326
337
</para>
327
338
328
339
<para>
329
340
You can pass multiple commands in one string;
330
341
<function>SPI_execute</function> returns the
331
342
result for the command executed last. The <parameter>count</parameter>
332
- limit applies to each command separately, but it is not applied to
343
+ limit applies to each command separately (even though only the last
344
+ result will actually be returned). The limit is not applied to any
333
345
hidden commands generated by rules.
334
346
</para>
335
347
@@ -431,7 +443,7 @@ typedef struct
431
443
<term><literal>long <parameter>count</parameter></literal></term>
432
444
<listitem>
433
445
<para>
434
- maximum number of rows to process or return,
446
+ maximum number of rows to return,
435
447
or <literal>0</> for no limit
436
448
</para>
437
449
</listitem>
@@ -608,15 +620,12 @@ typedef struct
608
620
<title>Notes</title>
609
621
610
622
<para>
611
- The functions <function>SPI_execute</function>,
612
- <function>SPI_exec</function>,
613
- <function>SPI_execute_plan</function>, and
614
- <function>SPI_execp</function> change both
623
+ All SPI query-execution functions set both
615
624
<varname>SPI_processed</varname> and
616
625
<varname>SPI_tuptable</varname> (just the pointer, not the contents
617
626
of the structure). Save these two global variables into local
618
627
procedure variables if you need to access the result table of
619
- <function>SPI_execute</function> or a related function
628
+ <function>SPI_execute</function> or another query-execution function
620
629
across later calls.
621
630
</para>
622
631
</refsect1>
@@ -671,7 +680,7 @@ int SPI_exec(const char * <parameter>command</parameter>, long <parameter>count<
671
680
<term><literal>long <parameter>count</parameter></literal></term>
672
681
<listitem>
673
682
<para>
674
- maximum number of rows to process or return,
683
+ maximum number of rows to return,
675
684
or <literal>0</> for no limit
676
685
</para>
677
686
</listitem>
@@ -810,7 +819,7 @@ int SPI_execute_with_args(const char *<parameter>command</parameter>,
810
819
<term><literal>long <parameter>count</parameter></literal></term>
811
820
<listitem>
812
821
<para>
813
- maximum number of rows to process or return,
822
+ maximum number of rows to return,
814
823
or <literal>0</> for no limit
815
824
</para>
816
825
</listitem>
@@ -1454,7 +1463,7 @@ int SPI_execute_plan(SPIPlanPtr <parameter>plan</parameter>, Datum * <parameter>
1454
1463
<term><literal>long <parameter>count</parameter></literal></term>
1455
1464
<listitem>
1456
1465
<para>
1457
- maximum number of rows to process or return,
1466
+ maximum number of rows to return,
1458
1467
or <literal>0</> for no limit
1459
1468
</para>
1460
1469
</listitem>
@@ -1572,7 +1581,7 @@ int SPI_execute_plan_with_paramlist(SPIPlanPtr <parameter>plan</parameter>,
1572
1581
<term><literal>long <parameter>count</parameter></literal></term>
1573
1582
<listitem>
1574
1583
<para>
1575
- maximum number of rows to process or return,
1584
+ maximum number of rows to return,
1576
1585
or <literal>0</> for no limit
1577
1586
</para>
1578
1587
</listitem>
@@ -1673,7 +1682,7 @@ int SPI_execp(SPIPlanPtr <parameter>plan</parameter>, Datum * <parameter>values<
1673
1682
<term><literal>long <parameter>count</parameter></literal></term>
1674
1683
<listitem>
1675
1684
<para>
1676
- maximum number of rows to process or return,
1685
+ maximum number of rows to return,
1677
1686
or <literal>0</> for no limit
1678
1687
</para>
1679
1688
</listitem>
0 commit comments