@@ -60,7 +60,7 @@ static int _SPI_begin_call(bool execmem);
60
60
static int _SPI_end_call (bool procmem );
61
61
static MemoryContext _SPI_execmem (void );
62
62
static MemoryContext _SPI_procmem (void );
63
- static bool _SPI_checktuples (bool isRetrieveIntoRelation );
63
+ static bool _SPI_checktuples (void );
64
64
65
65
#ifdef SPI_EXECUTOR_STATS
66
66
extern int ShowExecutorStats ;
@@ -774,19 +774,16 @@ _SPI_execute_plan(_SPI_plan * plan, Datum * Values, char *Nulls, int tcount)
774
774
static int
775
775
_SPI_pquery (QueryDesc * queryDesc , EState * state , int tcount )
776
776
{
777
- Query * parseTree ;
778
- Plan * plan ;
779
- int operation ;
777
+ Query * parseTree = queryDesc -> parsetree ;
778
+ Plan * plan = queryDesc -> plantree ;
779
+ int operation = queryDesc -> operation ;
780
+ CommandDest dest = queryDesc -> dest ;
780
781
TupleDesc tupdesc ;
781
782
bool isRetrieveIntoPortal = false;
782
783
bool isRetrieveIntoRelation = false;
783
784
char * intoName = NULL ;
784
785
int res ;
785
786
786
- parseTree = queryDesc -> parsetree ;
787
- plan = queryDesc -> plantree ;
788
- operation = queryDesc -> operation ;
789
-
790
787
switch (operation )
791
788
{
792
789
case CMD_SELECT :
@@ -804,6 +801,7 @@ _SPI_pquery(QueryDesc * queryDesc, EState * state, int tcount)
804
801
{
805
802
res = SPI_OK_SELINTO ;
806
803
isRetrieveIntoRelation = true;
804
+ queryDesc -> dest = None ; /* */
807
805
}
808
806
break ;
809
807
case CMD_INSERT :
@@ -844,7 +842,7 @@ _SPI_pquery(QueryDesc * queryDesc, EState * state, int tcount)
844
842
_SPI_current -> processed = state -> es_processed ;
845
843
if (operation == CMD_SELECT && queryDesc -> dest == SPI )
846
844
{
847
- if (_SPI_checktuples (isRetrieveIntoRelation ))
845
+ if (_SPI_checktuples ())
848
846
elog (FATAL , "SPI_select: # of processed tuples check failed" );
849
847
}
850
848
@@ -858,11 +856,12 @@ _SPI_pquery(QueryDesc * queryDesc, EState * state, int tcount)
858
856
}
859
857
#endif
860
858
861
- if (queryDesc -> dest == SPI )
859
+ if (dest == SPI )
862
860
{
863
861
SPI_processed = _SPI_current -> processed ;
864
862
SPI_tuptable = _SPI_current -> tuptable ;
865
863
}
864
+ queryDesc -> dest = dest ;
866
865
867
866
return (res );
868
867
@@ -898,7 +897,7 @@ _SPI_fetch(FetchStmt * stmt)
898
897
* context */
899
898
900
899
_SPI_current -> processed = state -> es_processed ;
901
- if (_SPI_checktuples (false ))
900
+ if (_SPI_checktuples ())
902
901
elog (FATAL , "SPI_fetch: # of processed tuples check failed" );
903
902
904
903
SPI_processed = _SPI_current -> processed ;
@@ -982,7 +981,7 @@ _SPI_end_call(bool procmem)
982
981
}
983
982
984
983
static bool
985
- _SPI_checktuples (bool isRetrieveIntoRelation )
984
+ _SPI_checktuples ()
986
985
{
987
986
uint32 processed = _SPI_current -> processed ;
988
987
SPITupleTable * tuptable = _SPI_current -> tuptable ;
@@ -993,15 +992,9 @@ _SPI_checktuples(bool isRetrieveIntoRelation)
993
992
if (tuptable != NULL )
994
993
failed = true;
995
994
}
996
- else
997
- /* some tuples were processed */
995
+ else /* some tuples were processed */
998
996
{
999
997
if (tuptable == NULL ) /* spi_printtup was not called */
1000
- {
1001
- if (!isRetrieveIntoRelation )
1002
- failed = true;
1003
- }
1004
- else if (isRetrieveIntoRelation )
1005
998
failed = true;
1006
999
else if (processed != (tuptable -> alloced - tuptable -> free ))
1007
1000
failed = true;
0 commit comments