Re: Better formatting of functions in pg_dump

Поиск
Список
Период
Сортировка
Искать
От
Heikki Linnakangas
Тема
Re: Better formatting of functions in pg_dump
Дата
Msg-id
486A194E.80803@enterprisedb.com
Ответ на
Список
Дерево обсуждения
Better formatting of functions in pg_dump Greg Sabino Mullane <greg@turnstep.com>
Re: Better formatting of functions in pg_dump Tom Lane <tgl@sss.pgh.pa.us>
Re: Better formatting of functions in pg_dump "Greg Sabino Mullane" <greg@turnstep.com>
Re: Better formatting of functions in pg_dump Tom Lane <tgl@sss.pgh.pa.us>
Re: Better formatting of functions in pg_dump "Heikki Linnakangas" <heikki@enterprisedb.com>
Tom Lane wrote:
> "Greg Sabino Mullane"  writes:
>>> Why the random switching between newline-before and newline-after
>>> styles?  Please be consistent.
> 
>> I thought they were all "after". On second glance, they still seem
>> all after?
> 
> Oh, my mistake, I had failed to see that the patch was getting rid of
> newline-before style in this function.  I think you might have gone
> a bit overboard on adding whitespace, but the previous objection is
> nonsense, sorry.

Yeah, I like idea of moving the "metadata" stuff before the function 
body, but the whitespace is a bit too much. You can fit
"   LANGUAGE plpgsql IMMUTABLE STRICT SECURITY DEFINER COST 100000" in 
on one line without wrapping on a 80 col terminal. And we don't try to 
guarantee any specific width anyway, you can get very long lines if the 
function has a lot of arguments, for example.

I applied this simpler patch that just moves the "metadata" stuff before 
the function body, leaving the whitespace as is (in newline-before style).

-- 
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com
*** src/bin/pg_dump/pg_dump.c
--- src/bin/pg_dump/pg_dump.c
***************
*** 6775,6788 **** dumpFunc(Archive *fout, FuncInfo *finfo)
  	rettypename = getFormattedTypeName(finfo->prorettype, zeroAsOpaque);
  
  	appendPQExpBuffer(q, "CREATE FUNCTION %s ", funcsig);
! 	appendPQExpBuffer(q, "RETURNS %s%s\n    %s\n    LANGUAGE %s",
  					  (proretset[0] == 't') ? "SETOF " : "",
! 					  rettypename,
! 					  asPart->data,
! 					  fmtId(lanname));
! 
  	free(rettypename);
  
  	if (provolatile[0] != PROVOLATILE_VOLATILE)
  	{
  		if (provolatile[0] == PROVOLATILE_IMMUTABLE)
--- 6775,6786 ----
  	rettypename = getFormattedTypeName(finfo->prorettype, zeroAsOpaque);
  
  	appendPQExpBuffer(q, "CREATE FUNCTION %s ", funcsig);
! 	appendPQExpBuffer(q, "RETURNS %s%s",
  					  (proretset[0] == 't') ? "SETOF " : "",
! 					  rettypename);
  	free(rettypename);
  
+ 	appendPQExpBuffer(q, "\n    LANGUAGE %s", fmtId(lanname));
  	if (provolatile[0] != PROVOLATILE_VOLATILE)
  	{
  		if (provolatile[0] == PROVOLATILE_IMMUTABLE)
***************
*** 6850,6856 **** dumpFunc(Archive *fout, FuncInfo *finfo)
  			appendStringLiteralAH(q, pos, fout);
  	}
  
! 	appendPQExpBuffer(q, ";\n");
  
  	ArchiveEntry(fout, finfo->dobj.catId, finfo->dobj.dumpId,
  				 funcsig_tag,
--- 6848,6854 ----
  			appendStringLiteralAH(q, pos, fout);
  	}
  
! 	appendPQExpBuffer(q, "\n    %s;\n", asPart->data);
  
  	ArchiveEntry(fout, finfo->dobj.catId, finfo->dobj.dumpId,
  				 funcsig_tag,
В списке pgsql-patches по дате отправления
От: Simon Riggs
Дата:
От: Heikki Linnakangas
Дата:
FAQ