Re: Minor point about contrib/xml2 functions "IMMUTABLE" marking

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: Minor point about contrib/xml2 functions "IMMUTABLE" marking
Дата
Msg-id 200510130346.j9D3kVA11440@candle.pha.pa.us
обсуждение исходный текст
Ответ на Minor point about contrib/xml2 functions "IMMUTABLE" marking  (John Gray <jgray@azuli.co.uk>)
Ответы Re: Minor point about contrib/xml2 functions "IMMUTABLE"  (Neil Conway <neilc@samurai.com>)
Список pgsql-hackers
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


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Neil Conway
Дата:
Сообщение: Re: [COMMITTERS] pgsql: Do all accesses to shared buffer
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [COMMITTERS] pgsql: Do all accesses to shared buffer headers through