Re: [QUESTIONS] is Postgres an SQL-based database?

From: sferac(at)bo(dot)nettuno(dot)it
To: "Thomas G(dot) Lockhart" <lockhart(at)alumni(dot)caltech(dot)edu>
Cc: Postgres Hackers List <hackers(at)postgresql(dot)org>
Subject: Re: [QUESTIONS] is Postgres an SQL-based database?
Date: 1998-02-05 14:34:52
Message-ID: Pine.LNX.3.96.980205104240.2024A-100000@nero
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, 4 Feb 1998, Thomas G. Lockhart wrote:

> > Is Postgres an SQL-based database or SQL is only an option?
>
> Yes.
>
> > I'd uploaded 6.3 and I'm palying with it. Congratulations to Developers
> > PostgreSQL is now more SQL92-compliant.
> > But I can't understand one thing; seems that Postgres is SQL-based. (PostgreSQL)
> > ^^^
> > Is there a reason why developers implemnts new functions not SQL-compatible ?
>
> Yes. There is more to SQL and ORDBMS than SQL87/89/92.

I agree with you Tom, PostgreSQL should be more than standard,
but users expect that PostgreSQL at least supports SQL syntax.
I agree with you if you talk about implement functions not supported by SQL
but I can't understand if you write the same function with another syntax.
PostgreSQL has many functions that doesn't follow SQL-standard syntax.
I can understand this:

ROLLBACK [ WORK ] -- SQL-syntax
rollback [transaction|work] -- PostgreSQL-syntax (this is more than standard)

and

ALTER TABLE <class_name> ADD [COLUMN] <attr> <type>; --SQL
alter table <class_name> [*] add column <attr> <type>; --PostgreSQL

In this case [*] show that PostgreSQL is an ORDBMS,
but what about keyword COLUMN? It sould be optional.

but I can't understand things like:

\connect <dbname|-> <user> --PostgreSQL
insted of:
CONNECT TO { DEFAULT | <SQL-server name> --SQL
[ AS <connection name> ]
[ USER <user name> ] }
or

CAST expression AS data-type --PostgreSQL
insted of:
CAST ( expression AS { data-type | domain } ) --SQL

>
> > example:
> > In this release there's a very useful function LENGTH(), thanks to Thomas.
> > but it's not SQL. CHARACTER_LENGTH() or CHAR_LENGTH() this is SQL.
>
> PostgreSQL is an ORDBMS engine with an SQL front end. SQL92, which does not address
> the possibility of type extensibility, tends to define type-specific functions,
> such as you mention, in a heavy and crude manner. We have other types for which
> "length" is an obvious useful quality; why put the type name into the function
> name? And why require two forms of the same function for every type??
>
> The real implementation issue is this: for built-in functions, every function call
> must currently have a unique name. For generic functions such as length, we define
> a second "sql function" with the generic name which then refers to the built-in
> unique function name. For character types, we would need two more of these "sql
> functions" for each character type. That's four function definitions in pg_proc for
> each character type as opposed to the two definitions we currently have.

Ok. That's a good reason. Thanks for your explanation. I understand now.

>
> You raise a good point, however, in that we should provide the SQL92-compatible
> function name where possible (I think you have found one of the few cases where we
> do not). Perhaps we can translate function names in the parser as we do for type
> names? I'll look into it...
Great!
>
> > Maybe there's a reason why somebody needs to invent again the wheel but I cannot
> > understand it.
>
> We are already working with a round wheel (well, at least ovoid), and are trying to
> prevent it from becoming square :)
>
Ok, you are doing an excellent work. Thanks for this great Database.

Ciao, Jose'

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Meskes 1998-02-05 14:50:54 Preprocessor
Previous Message Jan Wieck 1998-02-05 14:32:19 Bugfix for bpchar