@@ -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
@@ -434,7 +446,7 @@ typedef struct
434
446
<term><literal>long <parameter>count</parameter></literal></term>
435
447
<listitem>
436
448
<para>
437
- maximum number of rows to process or return,
449
+ maximum number of rows to return,
438
450
or <literal>0</> for no limit
439
451
</para>
440
452
</listitem>
@@ -611,15 +623,12 @@ typedef struct
611
623
<title>Notes</title>
612
624
613
625
<para>
614
- The functions <function>SPI_execute</function>,
615
- <function>SPI_exec</function>,
616
- <function>SPI_execute_plan</function>, and
617
- <function>SPI_execp</function> change both
626
+ All SPI query-execution functions set both
618
627
<varname>SPI_processed</varname> and
619
628
<varname>SPI_tuptable</varname> (just the pointer, not the contents
620
629
of the structure). Save these two global variables into local
621
630
procedure variables if you need to access the result table of
622
- <function>SPI_execute</function> or a related function
631
+ <function>SPI_execute</function> or another query-execution function
623
632
across later calls.
624
633
</para>
625
634
</refsect1>
@@ -674,7 +683,7 @@ int SPI_exec(const char * <parameter>command</parameter>, long <parameter>count<
674
683
<term><literal>long <parameter>count</parameter></literal></term>
675
684
<listitem>
676
685
<para>
677
- maximum number of rows to process or return,
686
+ maximum number of rows to return,
678
687
or <literal>0</> for no limit
679
688
</para>
680
689
</listitem>
@@ -813,7 +822,7 @@ int SPI_execute_with_args(const char *<parameter>command</parameter>,
813
822
<term><literal>long <parameter>count</parameter></literal></term>
814
823
<listitem>
815
824
<para>
816
- maximum number of rows to process or return,
825
+ maximum number of rows to return,
817
826
or <literal>0</> for no limit
818
827
</para>
819
828
</listitem>
@@ -1457,7 +1466,7 @@ int SPI_execute_plan(SPIPlanPtr <parameter>plan</parameter>, Datum * <parameter>
1457
1466
<term><literal>long <parameter>count</parameter></literal></term>
1458
1467
<listitem>
1459
1468
<para>
1460
- maximum number of rows to process or return,
1469
+ maximum number of rows to return,
1461
1470
or <literal>0</> for no limit
1462
1471
</para>
1463
1472
</listitem>
@@ -1575,7 +1584,7 @@ int SPI_execute_plan_with_paramlist(SPIPlanPtr <parameter>plan</parameter>,
1575
1584
<term><literal>long <parameter>count</parameter></literal></term>
1576
1585
<listitem>
1577
1586
<para>
1578
- maximum number of rows to process or return,
1587
+ maximum number of rows to return,
1579
1588
or <literal>0</> for no limit
1580
1589
</para>
1581
1590
</listitem>
@@ -1676,7 +1685,7 @@ int SPI_execp(SPIPlanPtr <parameter>plan</parameter>, Datum * <parameter>values<
1676
1685
<term><literal>long <parameter>count</parameter></literal></term>
1677
1686
<listitem>
1678
1687
<para>
1679
- maximum number of rows to process or return,
1688
+ maximum number of rows to return,
1680
1689
or <literal>0</> for no limit
1681
1690
</para>
1682
1691
</listitem>
0 commit comments