Browse thread
Idea for another type safe PostgreSQL interface
-
Richard Jones
-
Alex Baretta
- Richard Jones
- jean-claude
-
Alex Baretta
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | jean-claude <caml.4.jean.claude.bourut@n...> |
| Subject: | Re: Idea for another type safe PostgreSQL interface |
Alex Baretta <alex <at> barettadeit.com> writes: > > Richard Jones wrote: > > [I just throwing this idea out there to see if people find it > > interesting, or want to shoot it down ... There're only fragments of > > working code at the moment] > > > > I'm thinking about a type safe interface to PostgreSQL. One such > > interface at the moment is in Xcaml, but it only supports a very small > > subset of SQL, and I like to use complex SQL. It seems that there is > > a way to support the whole of PostgreSQL's language from within OCaml > > programs, in a type safe way. > > Every once in a while we extend the Embedded SQL with a new feature, but > we never planned to support all of PostgreSQL. In fact, what we want to > have is abstraction over the actual DB implementation. > > > The general plan would be to have a camlp4 extension which would use > > Postgres's new "PREPARE" feature to actually prepare the statements, > > and Postgres's other new feature, "Describe Statement", to pull out > > the parameter types and result types from the prepared statement. > > This allows the camlp4 extension to replace the statement string with > > a type safe expression, and allow type inference to find mismatches. > > How a typical program would look is shown at the end of this message. > Back in the pre-internet era, Dec implemented a DBMS (Rdb I think), a C++ compiler and a "compile time" coherency check between C++ and Rdb. Their implementation had the following features -1) C++ compilation would read Rdb schema, -2) There was a strong coupling between database schema and C++ program. -3) Moving from test environment to production lead us to rebuild the code, (That’s silly but I could not find a way around it). We just gave up using it. > I really think XDBS is the the way to go. You define the schema in a > high level language (OO-Entity-Relationship modeling), supporting lower > level refinements (logical, physical and virtual schema refinements) and > compiling to Ocaml and SQL-DDL. This way, the type safety can be > established at compile time without need for a database connection. > Also, the type safety does not depend on a specific implementation of > SQL, which is usually desireable. > > Alex > Nb: I have never worked with PostgreSQL, BUT, with Oracle, Informix, DB2, sybase, mssql, the full name of a table ( databasename.login.table ) only binds to an entry inside a system catalog. If your application uses several logins, then, checking program structures against database schema can not really occur before login time. If the goal is only a sanity check, then using any reference definition can help, but I don't think it will replase the run time check. Regards,