Agreed.  I have changed them both to stable.  I think xslt_process()
should be stable because it is unlikely you would want a URL's contents
to change inside a transaction, but likely you would want it to change
between transactions.

---------------------------------------------------------------------------

John Gray wrote:
> Hi,
> 
> I did see the message about the change of the function signatures to
> include IMMUTABLE and thought "Yes, that makes sense" - however, it has
> now occurred to me that:
> 
> 1. xpath_table uses a SELECT query to fetch the data it uses, so should
> presumably be marked STABLE?
> 
> 2. xslt_process is to be considered IMMUTABLE if the stylesheet or
> document are literal values, but if either is a URL then they are fetched
> on evaluation. An optimisation down to one call of xslt_process (using the
> URL contents current at that point) almost certainly conforms with "least
> surprise" for most use cases, but it's not strictly true as a second call
> could return a different result - comments?
> 
> It may be that neither of these has a significant practical impact for
> most users, but I thought it might be worth flagging, now that I've been
> working on contrib/xml2 again[*]
> 
> Regards
> 
> John
> 
> [*] I've written an XML output function that composes the XML document
> structure based on the SQL join hierarchy; I'll post something on hackers
> for comments in the near future. This may or may not have been rendered
> redundant by the SQL/XML work recently added!
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 9: In versions below 8.0, the planner will ignore your desire to
>        choose an index scan if your joining column's datatypes do not
>        match
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: contrib/xml2/pgxml.sql.in
===================================================================
RCS file: /cvsroot/pgsql/contrib/xml2/pgxml.sql.in,v
retrieving revision 1.4
diff -c -c -r1.4 pgxml.sql.in
*** contrib/xml2/pgxml.sql.in   14 Jul 2005 07:12:27 -0000      1.4
--- contrib/xml2/pgxml.sql.in   13 Oct 2005 03:41:32 -0000
***************
*** 44,50 ****
  
  CREATE OR REPLACE FUNCTION xpath_table(text,text,text,text,text) RETURNS 
setof record
        AS 'MODULE_PATHNAME'
!       LANGUAGE 'c' STRICT IMMUTABLE;
  
  -- XSLT functions
  -- Delete from here to the end of the file if you are not compiling with
--- 44,50 ----
  
  CREATE OR REPLACE FUNCTION xpath_table(text,text,text,text,text) RETURNS 
setof record
        AS 'MODULE_PATHNAME'
!       LANGUAGE 'c' STRICT STABLE;
  
  -- XSLT functions
  -- Delete from here to the end of the file if you are not compiling with
***************
*** 52,58 ****
  
  
  CREATE OR REPLACE FUNCTION xslt_process(text,text,text) RETURNS text 
!       AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT IMMUTABLE;
  
  -- the function checks for the correct argument count
  
--- 52,58 ----
  
  
  CREATE OR REPLACE FUNCTION xslt_process(text,text,text) RETURNS text 
!       AS 'MODULE_PATHNAME' LANGUAGE 'c' STRICT STABLE;
  
  -- the function checks for the correct argument count
  
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq

Reply via email to