<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE></TITLE>
<META content="text/html; charset=us-ascii" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18783"></META></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial>Nicklas,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial>That is odd.  And of course this 
works</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial>SELECT st_astext(geom1) from<BR>(SELECT CAST(NULL As 
geometry) as geom1) a;</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial>All I can say is counting on autocasts is 
evil.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial>My guess what is happening is when you create the virtual 
table -- it automatically autocasts it to an unknown because there is no data 
type where as when fed directly to a function NULL has not been CAST yet so it 
can be CAST to anything and since ST_AsText only accepts geometry, the NULL gets 
cast to a geometry as a result of being fed into ST_AsText.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial>So your fallacy is assuming that NULL and unknown are the same 
thing.  They are NOT.  NULL can be cast to anything and unknown can 
not.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial>Observe this - yap works fine - I rest my case  - in this 
case, PostgreSQL finds the likely data type for the virtual column -- in this 
case it would be a geometry</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial>since NULL can be cast to anything, and all the values in the 
column need to be cast to the same thing</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=796431808-13072009><FONT color=#0000ff 
size=2 face=Arial>SELECT st_astext(geom1) from<BR>(select NULL as geom1 
<BR>UNION ALL <BR>SELECT ST_GeomFromText('LINESTRING(1 2, 3 4)') As geom1<BR>) 
a;</FONT></SPAN></DIV>
<DIV> </DIV>
<DIV><SPAN class=796431808-13072009></SPAN><FONT face=Arial><FONT 
color=#0000ff><FONT size=2>H<SPAN class=796431808-13072009>ope that 
helps,</SPAN></FONT></FONT></FONT></DIV>
<DIV><SPAN class=796431808-13072009></SPAN><SPAN 
class=796431808-13072009></SPAN><FONT face=Arial><FONT color=#0000ff><FONT 
size=2>R<SPAN 
class=796431808-13072009>egina</SPAN></FONT></FONT></FONT><BR></DIV>
<DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>From:</B> 
postgis-devel-bounces@postgis.refractions.net 
[mailto:postgis-devel-bounces@postgis.refractions.net] <B>On Behalf Of 
</B>nicklas.aven@jordogskog.no<BR><B>Sent:</B> Monday, July 13, 2009 4:08 
AM<BR><B>To:</B> postgis-devel@postgis.refractions.net<BR><B>Subject:</B> 
[postgis-devel] why this difference when sub-query<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV>I'm working on the regression-tests for the distance-functions and don't 
really understand the behavior of postgis or the planner or what it is, doing 
it.</DIV>
<DIV> </DIV>
<DIV>if I run:<BR>select st_astext(geom1) from<BR>(select NULL as geom1) 
a;</DIV>
<DIV> </DIV>
<DIV>I get:</DIV>
<DIV><BR>FEIL:  failed to find conversion function from unknown to 
geometry</DIV>
<DIV><BR>********** Error **********</DIV>
<DIV>FEIL: failed to find conversion function from unknown to geometry<BR>SQL 
state: XX000</DIV>
<DIV> </DIV>
<DIV>but if I run:</DIV>
<DIV>select st_astext(NULL)</DIV>
<DIV>or</DIV>
<DIV>select st_astext(NULL) from<BR>(select NULL as geom1) a;</DIV>
<DIV> </DIV>
<DIV>then I just get an empty answer without error-message.</DIV>
<DIV> </DIV>
<DIV>and if I run :</DIV>
<DIV> </DIV>
<DIV>select geom1 from<BR>(select NULL as geom1) a;</DIV>
<DIV> </DIV>
<DIV>I also get just an empty answer.</DIV>
<DIV> </DIV>
<DIV>Why is this conversion-function trigged when I use a sub-query and not 
otherwise and only if I use the NULL-value in a function and not if I just show 
it.</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV></BODY></HTML>