2222 *
2323 *
2424 * IDENTIFICATION
25- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.147 2000/04/14 01:34:24 tgl Exp $
25+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.147.2.1 2000/09/23 23:36:17 tgl Exp $
2626 *
2727 * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
2828 *
@@ -1456,13 +1456,15 @@ getFuncs(int *numFuncs)
14561456int i_proretset ;
14571457int i_prosrc ;
14581458int i_probin ;
1459+ int i_iscachable ;
14591460int i_usename ;
14601461
14611462/* find all user-defined funcs */
14621463
14631464appendPQExpBuffer (query ,
14641465"SELECT pg_proc.oid, proname, prolang, pronargs, prorettype, "
1465- "proretset, proargtypes, prosrc, probin, usename "
1466+ "proretset, proargtypes, prosrc, probin, usename, "
1467+ "proiscachable "
14661468"from pg_proc, pg_user "
14671469"where pg_proc.oid > '%u'::oid and proowner = usesysid" ,
14681470g_last_builtin_oid );
@@ -1492,6 +1494,7 @@ getFuncs(int *numFuncs)
14921494i_proretset = PQfnumber (res ,"proretset" );
14931495i_prosrc = PQfnumber (res ,"prosrc" );
14941496i_probin = PQfnumber (res ,"probin" );
1497+ i_iscachable = PQfnumber (res ,"proiscachable" );
14951498i_usename = PQfnumber (res ,"usename" );
14961499
14971500for (i = 0 ;i < ntups ;i ++ )
@@ -1507,6 +1510,7 @@ getFuncs(int *numFuncs)
15071510finfo [i ].nargs = atoi (PQgetvalue (res ,i ,i_pronargs ));
15081511finfo [i ].lang = atoi (PQgetvalue (res ,i ,i_prolang ));
15091512finfo [i ].usename = strdup (PQgetvalue (res ,i ,i_usename ));
1513+ finfo [i ].iscachable = (strcmp (PQgetvalue (res ,i ,i_iscachable ),"t" )== 0 );
15101514if (finfo [i ].nargs < 0 || finfo [i ].nargs > FUNC_MAX_ARGS )
15111515{
15121516fprintf (stderr ,"failed sanity check: %s has %d args\n" ,
@@ -2663,11 +2667,18 @@ dumpOneFunc(FILE *fout, FuncInfo *finfo, int i,
26632667 (j > 0 ) ?"," :"" ,
26642668fmtId (typname , false));
26652669}
2666- appendPQExpBuffer (q ," ) RETURNS %s%s AS '%s' LANGUAGE '%s';\n " ,
2670+ appendPQExpBuffer (q ," ) RETURNS %s%s AS '%s' LANGUAGE '%s'" ,
26672671 (finfo [i ].retset ) ?" SETOF " :"" ,
26682672fmtId (findTypeByOid (tinfo ,numTypes ,finfo [i ].prorettype ), false),
26692673func_def ,func_lang );
26702674
2675+ if (finfo [i ].iscachable )/* OR in new attrs here */
2676+ {
2677+ appendPQExpBuffer (q ," WITH (iscachable)" );
2678+ }
2679+
2680+ appendPQExpBuffer (q ,";\n" );
2681+
26712682fputs (q -> data ,fout );
26722683
26732684/*** Dump Function Comments ***/