		else
		{
			resetStringInfo(&sinfo);
			appendStringInfo(&sinfo, "In function: %s", funcname);
			do_text_output_oneline(tstate, sinfo.data);
			
			for (i = 0; i < SPI_processed; i++)
			{
				char		*query;

				resetStringInfo(&sinfo);
				appendStringInfo(&sinfo, "%s:%s:%s:%s:%s",
					SPI_getvalue(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 8),
					SPI_getvalue(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 4),
					SPI_getvalue(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 2),
					SPI_getvalue(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 3),
					SPI_getvalue(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 5));

				do_text_output_oneline(tstate, sinfo.data);
				resetStringInfo(&sinfo);

				query = SPI_getvalue(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 10);
				if (query != NULL)
				{
					bool	isnull;
					char 	*query_line;		/* pointer to begin of processed line */
					int	query_line_caret;
					int	caret;
					bool	is_first_line = true;

					/*
					 * put any query line to separate output line. And append
					 * a curet, when is defined and related to processed rows.
					 */
					caret = SPI_getbinval(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 9, &isnull);
					if (isnull)
						caret = -1;

					query_line = query;
					query_line_caret = caret;

					while (*query != '\0')
					{
						int	   len;

						if (*query == '\n')
						{
							/* now we found end of line */
							*query = '\0';
							if (is_first_line)
							{
								appendStringInfo(&sinfo, "query:%s", query_line);
								is_first_line = false;
							}
							else
								appendStringInfo(&sinfo, "      %s", query_line);

							do_text_output_oneline(tstate, sinfo.data);
							resetStringInfo(&sinfo);

							if (query_line_caret > 0 && caret == 0)
							{
								appendStringInfo(&sinfo, "      %*s",
											query_line_caret, "^");
								do_text_output_oneline(tstate, sinfo.data);
								resetStringInfo(&sinfo);
								query_line_caret = 0;
							}

							/* store caret offset for next line */
							if (caret > 0)
								query_line_caret = caret - 1;

							/* go to next line */
							query_line = query + 1;
						}

						len = pg_mblen(query);
						query += len;

						if (caret > 0)
							caret--;
					}

					/* last line output */
					if (query_line != NULL)
					{
						if (is_first_line)
						{
							appendStringInfo(&sinfo, "query:%s", query_line);
						}
						else
							appendStringInfo(&sinfo, "      %s", query_line);

						do_text_output_oneline(tstate, sinfo.data);
						resetStringInfo(&sinfo);

						if (query_line_caret > 0 && caret == 0)
						{
							appendStringInfo(&sinfo, "      %*s",
										query_line_caret, "^");
							do_text_output_oneline(tstate, sinfo.data);
							resetStringInfo(&sinfo);
						}
					}
				}
			}
		}
