[mapguide-internals] Exception thrown on null values?

Orest Halustchak orest.halustchak at autodesk.com
Fri Feb 29 09:39:18 EST 2008


Trevor makes a valid point that some of the languages that we use can't represent null values for some scalars such as int and double. String is an easy one since you make a convention that an empty string is null. The IsNull() function is the only reliable way to determine if the value is null or not for all cases. If we wanted to change the FDO spec, what behavior would you prefer? Do you want the GetXXX function just to return some value with no exception even if the property value is null? If so, what value should it return? The issue is that whatever value that is returned will be incorrect (except maybe in the string case).

Note that a recent fdo enhancement added a number of new expression functions one of which is NullValue(a, b). This allows you to return a non-null value in all cases by specifying what value to use if the related property is null. E.g. NullValue(ParcelValue, 0.0) or NullValue(Status, -1). This doesn't solve the problem of handling nulls, but is something that some applications might find useful.

Thanks,
Orest.

-----Original Message-----
From: mapguide-internals-bounces at lists.osgeo.org [mailto:mapguide-internals-bounces at lists.osgeo.org] On Behalf Of Zac Spitzer
Sent: Thursday, February 28, 2008 6:59 PM
To: MapGuide Internals Mail List
Subject: Re: [mapguide-internals] Exception thrown on null values?

I really like Trevor's suggestion of oracle null style string handling
of this. MG 2.0
is already much slower than 1.2, any additional over header is going
to be painful.

On Fri, Feb 29, 2008 at 9:59 AM, Jason Birch <Jason.Birch at nanaimo.ca> wrote:
> Oh, just looked at the example a bit closer, and the calling function
>  printFeatureReader() does the IsNull check.
>
>
>  Jason
>
>  -----Original Message-----
>  From: mapguide-internals-bounces at lists.osgeo.org
>
> [mailto:mapguide-internals-bounces at lists.osgeo.org] On Behalf Of Jason
>  Birch
>
>
> Sent: Thursday, February 28, 2008 14:24
>  To: MapGuide Internals Mail List
>  Subject: RE: [mapguide-internals] Exception thrown on null values?
>
>  Ahh.  I guess I can see where that would be a problem.  With PHP, you
>  can just set the variable to NULL, regardless of the "type" :)
>
>  I guess... if this isn't fixable (without changing the FDO spec) could
>  we look at changing the documentation to reflect calling IsNull as a
>  best practice?  For example, the printPropertyValueFromFeatRead()
>  function on this page:
>
>  http://mapguide.osgeo.org/files/mapguide/docs/webapi/d6/ddc/class_mg_fea
>  ture_reader.htm
>
>  Should probably have something like this in it:
>
>  if ($featureReader->IsNull($propertyName))
>  {
>   $val = NULL;
>  }
>  else
>  {
>   switch ($propertyType) {
>  ...
>
>  Hmm.  While I'm at it, the \n's in the source for that example should
>  probably be double-escaped.
>
>  Jason
>
>
>
>  -----Original Message-----
>  From: mapguide-internals-bounces at lists.osgeo.org
>  [mailto:mapguide-internals-bounces at lists.osgeo.org] On Behalf Of Trevor
>  Wekel
>  Sent: Thursday, February 28, 2008 14:02
>  To: MapGuide Internals Mail List
>  Subject: RE: [mapguide-internals] Exception thrown on null values?
>
>  Hi Jason,
>
>  Since we have multiple web tier implementation languages, creating a
>  standard for NULL is tricky.  I'm not aware of constructs in .Net, PHP,
>  and Java for NULL scalar values.  For a string, we could return "" or
>  maybe "<null>".  Not sure what to do with NULL for doubles and integers.
>
>
>
>  -----Original Message-----
>  From: mapguide-internals-bounces at lists.osgeo.org
>  [mailto:mapguide-internals-bounces at lists.osgeo.org] On Behalf Of Jason
>  Birch
>  Sent: Thursday, February 28, 2008 2:48 PM
>  To: MapGuide Internals Mail List
>  Subject: RE: [mapguide-internals] Exception thrown on null values?
>
>  Am I allowed to say "lame"?  :)  NULL is a perfectly valid value for
>  most data types, and throwing an exception in this case adds a lot of
>  additional processing that should not be required.
>
>  I personally feel that this is a case where MapGuide could make
>  application developers lives a lot easier and improve (slightly?) the
>  performance of web-level apps by swallowing the exception and returning
>  NULL.
>
>  Jason
>
>  -----Original Message-----
>  From: mapguide-internals-bounces at lists.osgeo.org
>  [mailto:mapguide-internals-bounces at lists.osgeo.org] On Behalf Of Traian
>  Stanev
>  Sent: Thursday, February 28, 2008 13:31
>  To: 'MapGuide Internals Mail List'
>  Subject: RE: [mapguide-internals] Exception thrown on null values?
>
>  I think this complies with the FDO spec, which requires an exception to
>  be thrown when the value is null and you try to get it anyway. The two
>  solutions are to check for IsNull() before getting it, or to catch the
>  exception. The code *could* in theory return NULL in this case, but...
>
>  Traian
>
>  > -----Original Message-----
>  > From: mapguide-internals-bounces at lists.osgeo.org [mailto:mapguide-
>  > internals-bounces at lists.osgeo.org] On Behalf Of Jason Birch
>  > Sent: Thursday, February 28, 2008 4:29 PM
>  > To: MapGuide Internals Mail List
>  > Subject: [mapguide-internals] Exception thrown on null values?
>  >
>  > Hi,
>  >
>  > I'm seeing a case in MGOS 2.0 where MgFeatureReader->GetString() is
>  > throwing an exception when the value of the string is null.
>  >
>  > Is this expected behaviour?  Has it changed since 1.2?  I believe that
>  > I've seen a similar error in geometry, but don't have a test case for
>  > that yet.
>  >
>  > This is relatively easy to work around with a try/catch and
>  suppressing
>  > the error output if the message includes "null", but it's a bit
>  > annoying.  Is there a better way of dealing with this?
>  >
>  > Jason
>  > _______________________________________________
>  > mapguide-internals mailing list
>  > mapguide-internals at lists.osgeo.org
>  > http://lists.osgeo.org/mailman/listinfo/mapguide-internals
>  _______________________________________________
>  mapguide-internals mailing list
>  mapguide-internals at lists.osgeo.org
>  http://lists.osgeo.org/mailman/listinfo/mapguide-internals
>  _______________________________________________
>  mapguide-internals mailing list
>  mapguide-internals at lists.osgeo.org
>  http://lists.osgeo.org/mailman/listinfo/mapguide-internals
>  _______________________________________________
>  mapguide-internals mailing list
>  mapguide-internals at lists.osgeo.org
>  http://lists.osgeo.org/mailman/listinfo/mapguide-internals
>  _______________________________________________
>  mapguide-internals mailing list
>  mapguide-internals at lists.osgeo.org
>  http://lists.osgeo.org/mailman/listinfo/mapguide-internals
>  _______________________________________________
>  mapguide-internals mailing list
>  mapguide-internals at lists.osgeo.org
>  http://lists.osgeo.org/mailman/listinfo/mapguide-internals
>



--
Zac Spitzer -
http://zacster.blogspot.com (My Blog)
+61 405 847 168
_______________________________________________
mapguide-internals mailing list
mapguide-internals at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapguide-internals


More information about the mapguide-internals mailing list