1212 *by PostgreSQL
1313 *
1414 * IDENTIFICATION
15- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.509 2008/12/19 16 :25:18 petere Exp $
15+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.510 2008/12/31 02 :25:05 tgl Exp $
1616 *
1717 *-------------------------------------------------------------------------
1818 */
@@ -6916,6 +6916,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
69166916char * proallargtypes ;
69176917char * proargmodes ;
69186918char * proargnames ;
6919+ char * proiswindow ;
69196920char * provolatile ;
69206921char * proisstrict ;
69216922char * prosecdef ;
@@ -6956,7 +6957,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
69566957"pg_catalog.pg_get_function_arguments(oid) as funcargs, "
69576958"pg_catalog.pg_get_function_identity_arguments(oid) as funciargs, "
69586959"pg_catalog.pg_get_function_result(oid) as funcresult, "
6959- "provolatile, proisstrict, prosecdef, "
6960+ "proiswindow, provolatile, proisstrict, prosecdef, "
69606961"proconfig, procost, prorows, "
69616962"(SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) as lanname "
69626963"FROM pg_catalog.pg_proc "
@@ -6968,6 +6969,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
69686969appendPQExpBuffer (query ,
69696970"SELECT proretset, prosrc, probin, "
69706971"proallargtypes, proargmodes, proargnames, "
6972+ "false as proiswindow, "
69716973"provolatile, proisstrict, prosecdef, "
69726974"proconfig, procost, prorows, "
69736975"(SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) as lanname "
@@ -6980,6 +6982,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
69806982appendPQExpBuffer (query ,
69816983"SELECT proretset, prosrc, probin, "
69826984"proallargtypes, proargmodes, proargnames, "
6985+ "false as proiswindow, "
69836986"provolatile, proisstrict, prosecdef, "
69846987"null as proconfig, 0 as procost, 0 as prorows, "
69856988"(SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) as lanname "
@@ -6994,6 +6997,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
69946997"null as proallargtypes, "
69956998"null as proargmodes, "
69966999"proargnames, "
7000+ "false as proiswindow, "
69977001"provolatile, proisstrict, prosecdef, "
69987002"null as proconfig, 0 as procost, 0 as prorows, "
69997003"(SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) as lanname "
@@ -7008,6 +7012,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
70087012"null as proallargtypes, "
70097013"null as proargmodes, "
70107014"null as proargnames, "
7015+ "false as proiswindow, "
70117016"provolatile, proisstrict, prosecdef, "
70127017"null as proconfig, 0 as procost, 0 as prorows, "
70137018"(SELECT lanname FROM pg_catalog.pg_language WHERE oid = prolang) as lanname "
@@ -7022,9 +7027,10 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
70227027"null as proallargtypes, "
70237028"null as proargmodes, "
70247029"null as proargnames, "
7030+ "false as proiswindow, "
70257031"case when proiscachable then 'i' else 'v' end as provolatile, "
70267032"proisstrict, "
7027- "'f'::boolean as prosecdef, "
7033+ "false as prosecdef, "
70287034"null as proconfig, 0 as procost, 0 as prorows, "
70297035"(SELECT lanname FROM pg_language WHERE oid = prolang) as lanname "
70307036"FROM pg_proc "
@@ -7038,9 +7044,10 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
70387044"null as proallargtypes, "
70397045"null as proargmodes, "
70407046"null as proargnames, "
7047+ "false as proiswindow, "
70417048"case when proiscachable then 'i' else 'v' end as provolatile, "
7042- "'f'::boolean as proisstrict, "
7043- "'f'::boolean as prosecdef, "
7049+ "false as proisstrict, "
7050+ "false as prosecdef, "
70447051"null as proconfig, 0 as procost, 0 as prorows, "
70457052"(SELECT lanname FROM pg_language WHERE oid = prolang) as lanname "
70467053"FROM pg_proc "
@@ -7077,6 +7084,7 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
70777084proargnames = PQgetvalue (res ,0 ,PQfnumber (res ,"proargnames" ));
70787085funcargs = funciargs = funcresult = NULL ;
70797086}
7087+ proiswindow = PQgetvalue (res ,0 ,PQfnumber (res ,"proiswindow" ));
70807088provolatile = PQgetvalue (res ,0 ,PQfnumber (res ,"provolatile" ));
70817089proisstrict = PQgetvalue (res ,0 ,PQfnumber (res ,"proisstrict" ));
70827090prosecdef = PQgetvalue (res ,0 ,PQfnumber (res ,"prosecdef" ));
@@ -7217,6 +7225,10 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
72177225}
72187226
72197227appendPQExpBuffer (q ,"\n LANGUAGE %s" ,fmtId (lanname ));
7228+
7229+ if (proiswindow [0 ]== 't' )
7230+ appendPQExpBuffer (q ," WINDOW" );
7231+
72207232if (provolatile [0 ]!= PROVOLATILE_VOLATILE )
72217233{
72227234if (provolatile [0 ]== PROVOLATILE_IMMUTABLE )