[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgis-users
Subject:    Re: [postgis-users] NOTICE:  type "spheroid" is not yet defined
From:       Markus Schaber <schabi () logix-tt ! com>
Date:       2006-11-28 14:38:48
Message-ID: 456C49F8.80704 () logix-tt ! com
[Download RAW message or body]

Hi, Christian,

Christian.Strobl@dlr.de wrote:

> NOTICE:  type "histogram2d" is not yet defined
> DETAIL:  Creating a shell type definition.

> is that anything i have to get worried about?

Short answer:

No, those messages are expected, and no problem.


Long answer:

First, this messages are "NOTICE"s, their level of importance is way
below WARNING and ERROR.

The reason for this is a hen-and-egg problem:

- For creating a type, you need to specify its input/output functions.

- For creating the input / output functions, you need the type for the
parameter declaration.

To solve this problem, PostgreSQL has the concept of a "shell type",
that means you can use a type name in function declarations before the
type has been specified, allowing you to create the input/output
functions first. (But, of course, you've to fully declare the type
before you can actually use it.) As soon as all input/output functions
exist, you can issue the "CREATE TYPE" declaration to convert the shell
type into a real one.

PostgreSQL 8.2 has an explicit syntax "CREATE TYPE foobar;" to create
such an shell type.

Older releases, however, did not have that special syntax. Instead, they
assume that the input/output functions are written in C. Now, when you
declare a function in C, and use unknown types, PostgreSQL accepts it
and creates the "shell type". But as this can easily lead to introduce
new shell types accidentally by making a typo in the function
definition, PostgreSQL issues this NOTICE.

Btw, language implememtations like pljava which want to allow the user
to implement custom types without resorting to C also suffer from this
problem, as there's no possibility to create a shell type in older
PostgreSQL versions, but abusing a C function, as it is described on:
http://wiki.tada.se/wiki/display/pljava/Creating+a+Scalar+UDT+in+Java

HTH,
Markus
-- 
Markus Schaber | Logical Tracking&Tracing International AG
Dipl. Inf.     | Software Development GIS

Fight against software patents in Europe! www.ffii.org
www.nosoftwarepatents.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic