Analogue to SQL Server UniqueIdentifier?

Started by jerry.evans@chordiaabout 18 years ago8 messagesgeneral
Jump to latest
#1jerry.evans@chordia
jerry.evans@chordia.co.uk

Hi

My porting experiment has encountered the SQL Server UniqueIdentifier problem. I can see one or two suggestions about this have been made over the years but I'd like to try and stay close to the original. So:

I'm wondering if I can use a combination of a domain 'hack' for syntatic compatibillity and an externally implemented function to handle generation.

More specifically, given a table defined thus:

CREATE TABLE jazz(
UUID UniqueIdentifier DEFAULT newIdentifier(),
rootname VARCHAR(255),
data_source VARCHAR(1024),
date_created DATETIME DEFAULT GETDATE())

1. Can I handle the UniqueIdentifier datatype via a domain that aliases UniqueIdentifier to char(X) (for example) ? This seems to work fine for the DATETIME datatype.
2. Implement newIdentifier() in some extension DLL that simply calls CoCreateGUID() ?

or does uuid-ossp do this for me?

Thx.

Jerry.

#2Bill Moran
wmoran@potentialtech.com
In reply to: jerry.evans@chordia (#1)
Re: Analogue to SQL Server UniqueIdentifier?

In response to "jerry.evans@chordia" <jerry.evans@chordia.co.uk>:

Hi

My porting experiment has encountered the SQL Server UniqueIdentifier problem. I can see one or two suggestions about this have been made over the years but I'd like to try and stay close to the original. So:

I'm wondering if I can use a combination of a domain 'hack' for syntatic compatibillity and an externally implemented function to handle generation.

More specifically, given a table defined thus:

CREATE TABLE jazz(
UUID UniqueIdentifier DEFAULT newIdentifier(),
rootname VARCHAR(255),
data_source VARCHAR(1024),
date_created DATETIME DEFAULT GETDATE())

1. Can I handle the UniqueIdentifier datatype via a domain that aliases UniqueIdentifier to char(X) (for example) ? This seems to work fine for the DATETIME datatype.
2. Implement newIdentifier() in some extension DLL that simply calls CoCreateGUID() ?

or does uuid-ossp do this for me?

I'm no expert on this topic, but since nobody else has responded ...

I'm unsure why you would do anything other than install uuid-ossp.
Anything else is going to be a hack, and uuid-ossp was created specifically
to address this requirement.

Unless, of course, I've misunderstood your question.

--
Bill Moran
http://www.potentialtech.com

#3Dave Page
dpage@pgadmin.org
In reply to: Bill Moran (#2)
Re: Analogue to SQL Server UniqueIdentifier?

On Feb 18, 2008 4:52 PM, Bill Moran <wmoran@potentialtech.com> wrote:

In response to "jerry.evans@chordia" <jerry.evans@chordia.co.uk>:

Hi

My porting experiment has encountered the SQL Server UniqueIdentifier problem. I can see one or two suggestions about this have been made over the years but I'd like to try and stay close to the original. So:

I'm wondering if I can use a combination of a domain 'hack' for syntatic compatibillity and an externally implemented function to handle generation.

More specifically, given a table defined thus:

CREATE TABLE jazz(
UUID UniqueIdentifier DEFAULT newIdentifier(),
rootname VARCHAR(255),
data_source VARCHAR(1024),
date_created DATETIME DEFAULT GETDATE())

1. Can I handle the UniqueIdentifier datatype via a domain that aliases UniqueIdentifier to char(X) (for example) ? This seems to work fine for the DATETIME datatype.
2. Implement newIdentifier() in some extension DLL that simply calls CoCreateGUID() ?

or does uuid-ossp do this for me?

I'm no expert on this topic, but since nobody else has responded ...

I'm unsure why you would do anything other than install uuid-ossp.
Anything else is going to be a hack, and uuid-ossp was created specifically
to address this requirement.

Lack of support for Windows, which it sounds like the OP might be running?

--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com
The Oracle-compatible database company

#4jerry.evans@chordia
jerry.evans@chordia.co.uk
In reply to: jerry.evans@chordia (#1)
Re: Analogue to SQL Server UniqueIdentifier?

Thanks Bill.

I discovered that 8.3 supports a UUID datatype. Thus a CREATE DOMAIN
uniqueidentifier AS uuid works fine for the aliasing. There are no SQL
Server style functions for UUID creation but I can handle this in the client
code. Works a treat.

Jerry

#5Magnus Hagander
magnus@hagander.net
In reply to: Dave Page (#3)
Re: Analogue to SQL Server UniqueIdentifier?

On Mon, Feb 18, 2008 at 05:01:22PM +0000, Dave Page wrote:

On Feb 18, 2008 4:52 PM, Bill Moran <wmoran@potentialtech.com> wrote:

In response to "jerry.evans@chordia" <jerry.evans@chordia.co.uk>:

Hi

My porting experiment has encountered the SQL Server UniqueIdentifier problem. I can see one or two suggestions about this have been made over the years but I'd like to try and stay close to the original. So:

I'm wondering if I can use a combination of a domain 'hack' for syntatic compatibillity and an externally implemented function to handle generation.

More specifically, given a table defined thus:

CREATE TABLE jazz(
UUID UniqueIdentifier DEFAULT newIdentifier(),
rootname VARCHAR(255),
data_source VARCHAR(1024),
date_created DATETIME DEFAULT GETDATE())

1. Can I handle the UniqueIdentifier datatype via a domain that aliases UniqueIdentifier to char(X) (for example) ? This seems to work fine for the DATETIME datatype.
2. Implement newIdentifier() in some extension DLL that simply calls CoCreateGUID() ?

or does uuid-ossp do this for me?

I'm no expert on this topic, but since nobody else has responded ...

I'm unsure why you would do anything other than install uuid-ossp.
Anything else is going to be a hack, and uuid-ossp was created specifically
to address this requirement.

Lack of support for Windows, which it sounds like the OP might be running?

That's something that's been on my agenda for a while. There are certainly
UUID generation functions available on Windows - at least for some of the
cases supported by uuid-ossp. If I were to write the same functions for
that one, where would people prefer that to go - in the uuid-ossp module
even though that's actually not correct (since it wouldn't be using ossp)
or a separate module uuid-win32?

//Magnus

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#5)
Re: Analogue to SQL Server UniqueIdentifier?

Magnus Hagander <magnus@hagander.net> writes:

Lack of support for Windows, which it sounds like the OP might be running?

That's something that's been on my agenda for a while. There are certainly
UUID generation functions available on Windows - at least for some of the
cases supported by uuid-ossp. If I were to write the same functions for
that one, where would people prefer that to go - in the uuid-ossp module
even though that's actually not correct (since it wouldn't be using ossp)
or a separate module uuid-win32?

The latter is *completely* unacceptable. The entire point here is to
not expose any differences at the SQL level.

Why can't ossp be used --- is it impossible to port to Windows?

regards, tom lane

#7Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#6)
Re: Analogue to SQL Server UniqueIdentifier?

On Tue, 2008-02-19 at 11:07 -0500, Tom Lane wrote:

Magnus Hagander <magnus@hagander.net> writes:

Lack of support for Windows, which it sounds like the OP might be running?

That's something that's been on my agenda for a while. There are certainly
UUID generation functions available on Windows - at least for some of the
cases supported by uuid-ossp. If I were to write the same functions for
that one, where would people prefer that to go - in the uuid-ossp module
even though that's actually not correct (since it wouldn't be using ossp)
or a separate module uuid-win32?

The latter is *completely* unacceptable. The entire point here is to
not expose any differences at the SQL level.

Why can't ossp be used --- is it impossible to port to Windows?

I haven't looked into the details - it's possible that it could be
portable to Windows. But that would a Yet Another Dependency to be bale
to build and run pg... So I'd like to avoid it if possible.

//Magnus

#8Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Magnus Hagander (#7)
Re: Analogue to SQL Server UniqueIdentifier?

Magnus Hagander wrote:

On Tue, 2008-02-19 at 11:07 -0500, Tom Lane wrote:

Why can't ossp be used --- is it impossible to port to Windows?

I haven't looked into the details - it's possible that it could be
portable to Windows. But that would a Yet Another Dependency to be bale
to build and run pg... So I'd like to avoid it if possible.

I think it's messy enough to port that it would make sense to create a
separate Windows library with the same interface.

The problem I see with porting it is that the author crammed too many
things in the same package, and we don't have any interest in porting
most of the stuff only to get something that we can get more easily by
hooking into Windows native calls.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.