@@ -104,9 +104,8 @@ exec_plan(char *query_string, char *plan_string)
104104 ParamListInfo paramLI = NULL ;
105105 CachedPlanSource * psrc ;
106106 CachedPlan * cplan ;
107- Portal portal ;
107+ QueryDesc * queryDesc ;
108108 DestReceiver * receiver ;
109- int16 format = 0 ;
110109 int eflags = 0 ;
111110
112111 PG_TRY ();
@@ -134,36 +133,35 @@ exec_plan(char *query_string, char *plan_string)
134133 SetRemoteSubplan (psrc , pstmt );
135134 cplan = GetCachedPlan (psrc , paramLI , false);
136135
137- receiver = CreateDestReceiver (DestNone );
138- portal = CreateNewPortal ();
139- portal -> visible = false;
140- PortalDefineQuery (portal ,
141- NULL ,
142- query_string ,
143- NULL ,
144- NULL ,
145- cplan );
136+ receiver = CreateDestReceiver (DestLog );
137+
146138 PG_TRY ();
147139 {
148- PortalStart (portal , paramLI , eflags , InvalidSnapshot );
149- PortalSetResultFormat (portal , 0 , & format );
150- (void ) PortalRun (portal ,
151- FETCH_ALL ,
152- true,
153- receiver ,
154- receiver ,
155- query_string );
140+ queryDesc = CreateQueryDesc (pstmt ,
141+ query_string ,
142+ GetActiveSnapshot (),
143+ InvalidSnapshot ,
144+ receiver ,
145+ paramLI ,
146+ 0 );
147+ ExecutorStart (queryDesc , eflags );
148+ PushActiveSnapshot (queryDesc -> snapshot );
149+ ExecutorRun (queryDesc , ForwardScanDirection , 0 );
150+ PopActiveSnapshot ();
151+ ExecutorFinish (queryDesc );
152+ ExecutorEnd (queryDesc );
153+ FreeQueryDesc (queryDesc );
156154 }
157155 PG_CATCH ();
158156 {
159157 elog (INFO , "BAD QUERY: '%s'." , query_string );
160- PortalDrop ( portal , false);
158+ ReleaseCachedPlan ( cplan , false);
161159 PG_RE_THROW ();
162160 }
163161 PG_END_TRY ();
164162
165163 receiver -> rDestroy (receiver );
166- PortalDrop ( portal , false);
164+ ReleaseCachedPlan ( cplan , false);
167165
168166 if (EXPLAN_DEBUG_LEVEL > 0 )
169167 elog (INFO , "query execution finished.\n" );
0 commit comments