Re: Custom type literal conversion - Mailing list pgsql-general

From Chris Bandy
Subject Re: Custom type literal conversion
Date
Msg-id CAMDg7Wz6ghkU7rt7HxkqJr6t6Ls_qtoTBSuxK5srfagpHc_YVQ@mail.gmail.com
Whole thread Raw
In response to Re: Custom type literal conversion  (hubert depesz lubaczewski <depesz@gmail.com>)
List pgsql-general
On Wed, Sep 24, 2014 at 8:40 AM, hubert depesz lubaczewski <depesz@gmail.com> wrote:
On Wed, Sep 24, 2014 at 2:45 PM, Chris Bandy <bandy.chris@gmail.com> wrote:
I would like to create a new type for version strings that sorts numerically. The composite type below was quick to write and does not require superuser privileges. However, it doesn't respond to type casts the way I'd like.

Is there a way to implement this type's literal conversion without resorting to a base type?

I think you need to define casts too, but in any way - check if "semver" extension (available on pgxn) doesn't solve your problem.


Casts from what? The following is not sufficient:

=> CREATE CAST (unknown AS myversion) WITH FUNCTION myversion(unknown);
CREATE CAST
=> SELECT '1.0.9+jenkins'::myversion;
ERROR:  malformed record literal: "1.0.9+jenkins"

And cast on "record" isn't valid:

=> CREATE CAST (record AS myversion) WITH FUNCTION myversion(unknown);
ERROR:  source data type record is a pseudo-type

I know about the semver extension, but I'm interested in a solution that does not require extension/superuser access.

Thanks
-- Chris

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Why can't I select un-grouped columns when grouping by a (non-primary) unique key?
Next
From: Oleg Bartunov
Date:
Subject: Re: JSONB spaces in text presentation