Re: [HACKERS] Error message and infinite date and timestamp conversion in XML

2009-04-08 Thread Peter Eisentraut
On Friday 27 March 2009 20:59:23 Tom Lane wrote:
 Done, but I noticed while testing that it's not real consistent:

 regression=# select xmlelement(name foo, 'infinity'::timestamp);
 ERROR:  timestamp out of range
 DETAIL:  XML does not support infinite timestamp values.
 regression=# select xmlelement(name foo,
 xmlattributes('infinity'::timestamp as bar)); xmlelement
 ---
  foo bar=infinity/
 (1 row)

 Should we consider doing something about that, or is it okay as-is?

Fixed.  It was a bug.

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Error message and infinite date and timestamp conversion in XML

2009-03-30 Thread Bernd Helmle
--On Freitag, März 27, 2009 14:59:23 -0400 Tom Lane t...@sss.pgh.pa.us 
wrote:



Should we consider doing something about that, or is it okay as-is?


I'd say yes, but i don't understand why xmlelement() doesn't call 
map_sql_value_to_xml_value() already instead of calling the output function 
directly?


--
 Thanks

   Bernd

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Error message and infinite date and timestamp conversion in XML

2009-03-27 Thread Tom Lane
Bernd Helmle maili...@oopsware.de writes:
 map_sql_value_to_xml_value() currently errors out with a more or less vague 
 error message, when a date or timestamp datatype with an infinite value is 
 converted to XML. This is likely to create some confusion, especially when 
 you have to debug some complex procedures and involved XML conversions. I 
 propose to add the attached DETAIL to this error message, so people will 
 get an idea what's currently going wrong.

Done, but I noticed while testing that it's not real consistent:

regression=# select xmlelement(name foo, 'infinity'::timestamp);
ERROR:  timestamp out of range
DETAIL:  XML does not support infinite timestamp values.
regression=# select xmlelement(name foo, xmlattributes('infinity'::timestamp as 
bar));   
  xmlelement   
---
 foo bar=infinity/
(1 row)

Should we consider doing something about that, or is it okay as-is?

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] Error message and infinite date and timestamp conversion in XML

2009-03-26 Thread Bernd Helmle


map_sql_value_to_xml_value() currently errors out with a more or less vague 
error message, when a date or timestamp datatype with an infinite value is 
converted to XML. This is likely to create some confusion, especially when 
you have to debug some complex procedures and involved XML conversions. I 
propose to add the attached DETAIL to this error message, so people will 
get an idea what's currently going wrong.



--
 Thanks

   Bernd*** a/src/backend/utils/adt/xml.c
--- b/src/backend/utils/adt/xml.c
***
*** 1627,1632  map_sql_value_to_xml_value(Datum value, Oid type)
--- 1627,1633 
  	if (DATE_NOT_FINITE(date))
  		ereport(ERROR,
  (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+  errdetail(XML does not support infinite date values.),
   errmsg(date out of range)));
  	j2date(date + POSTGRES_EPOCH_JDATE,
  		   (tm.tm_year), (tm.tm_mon), (tm.tm_mday));
***
*** 1649,1654  map_sql_value_to_xml_value(Datum value, Oid type)
--- 1650,1656 
  	if (TIMESTAMP_NOT_FINITE(timestamp))
  		ereport(ERROR,
  (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+  errdetail(XML does not support infinite timestamp values.),
   errmsg(timestamp out of range)));
  	else if (timestamp2tm(timestamp, NULL, tm, fsec, NULL, NULL) == 0)
  		EncodeDateTime(tm, fsec, NULL, tzn, USE_XSD_DATES, buf);
***
*** 1675,1680  map_sql_value_to_xml_value(Datum value, Oid type)
--- 1677,1683 
  	if (TIMESTAMP_NOT_FINITE(timestamp))
  		ereport(ERROR,
  (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+  errdetail(XML does not support infinite timestamp values.),
   errmsg(timestamp out of range)));
  	else if (timestamp2tm(timestamp, tz, tm, fsec, tzn, NULL) == 0)
  		EncodeDateTime(tm, fsec, tz, tzn, USE_XSD_DATES, buf);

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers