Re: [HACKERS] Enhancing PGSQL to be compatible with Informix SQL

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Rod Chamberlin <rod(at)querix(dot)com>
Cc: pgsql-hackers(at)postgreSQL(dot)org
Subject: Re: [HACKERS] Enhancing PGSQL to be compatible with Informix SQL
Date: 2000-01-06 16:08:43
Message-ID: 200001061608.LAA13338@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> I am currently looking into the possibility of extending the current
> postgres SQL implementation to be compatible with Informix's SQL
> implementation.
>
> The changes required seem relatively straightforward, with one notable
> exception.

I am very familiar wit Informix.

>
> Requirements:
> 1/ Datetime type specifiers (should have no impact)
> o informix uses datetime specifiers of the form
> DATETIME YEAR TO HOUR. (which is just the year,
> month, day and hour portion of a datetime).

I have to admit I usually find this very confusing with Informix.

> 2/ Interval type specifiers (ditto)
> o informix uses interval specifiers of the form
> INTERVAL DAY TO HOUR. (which is just the
> day and hour portion of an interval).

This I can usually understand, though I think we can do this too clearer
than Informix.

> 3/ Money type specifiers
> o informix has money type specifiers that are akin
> to decimal speicifiers

We have a MONEY type now, and are looking to invisibly use DECIMAL for
this instead.

> 4/ Informix outer join syntax
> o informix uses outer joins of the form
> SELECT * FROM a, outer b where a.nr = b.nr
> This will require some post-processing to determine
> the actual join conditions.

Believe it or not, I am hoping to get this into 7.0. The ANSI syntax
requires a lot of optimizer changes, because it basically allows user
specification of the join order. In talking to Thomas, we hoped to
implement OUTER as a flag on the table that we could easily implement in
7.0. Let's see how it goes.

> 5/ serial data type
> o Serial type must return inserted key value

How does Informix return the value?

> o Unfortunately (and this is the big bad hit)
> informix's serial datatype does serial number
> generation on a zero inserted valued.
> The modification required to do this may have
> impact on existing programs.

Yes, I have been thrown off by this. We don't allow a zero to
auto-number. You have to use nextval('sequence_name') in the query to
supply the sequence value, not a zero. I can see this as a pain, but
the developers think the 0 replace with nextval() thing is strange and
non-intuitive. The current behavior fits in the DEFAULT column
activation in a logical way. I don't think I can get people to make
this change. The 0 replacement is a behind the scenes thing, while
DEFAULT and nextval() calls are logically consistent.

> I'd be interested if anyone can see any conceptual difficulties i've
> missed in these definitions, and welcome any concepts on the
> implementation.

I agree Informix compatibility is a good thing.

--
Bruce Momjian | http://www.op.net/~candle
maillist(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2000-01-06 16:11:32 Re: [HACKERS] Enhancing PGSQL to be compatible with Informix SQL
Previous Message Brian E Gallew 2000-01-06 16:08:00 Re: [HACKERS] Enhancing PGSQL to be compatible with Informix SQL