* [Caml-list] PostgreSQL and Ocaml
@ 2002-10-11 11:04 Alessandro Baretta
2002-10-11 11:24 ` Yang Shouxun
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Alessandro Baretta @ 2002-10-11 11:04 UTC (permalink / raw)
To: Ocaml
I have found an excellent client library to access
PostgreSQL databases from Ocaml applications. This I have
put to use with excellent results in the development of a
web application, together with Netcgi. However, most of the
logic of my program is written and stored in the database as
sql and pl/pgsql stored procedures. While SQL is overall a
very good language to express computations in relational
algebra, it is very weak (pratiquement, c'est nul) in
general algorithms, so for anything more complex than a
query one has to resort to pl/pgSQL, which is as powerful as
an ordinary imperative language with the added bonus of
having SQL constructs for relational algebra. What it lacks
is type safety. After having come in contact with OCaml, I
can hardly live with a language with no type safety.
Now I wonder: has nobody written a PostgreSQL server-side
binding for Ocaml? I have searched Google on the subject,
but found nothing relevant.
If nobody has, would anyone like to join me in the project
of writing an add-in for PostgreSQL supporting Ocaml stored
procedures? I have little experience in this, but it should
not be too difficult: it should be a matter of writing a C
dll which, upon initialization, starts a bytecode compiler
and interpreter, and has callbacks through with which the
server can request the compilation of a text string or the
execution of a bytecode cmo blob. Although I think I might
succeed by myself, I'd still prefer to work in company, if I
have to. :)
Alex
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Caml-list] PostgreSQL and Ocaml
2002-10-11 11:04 [Caml-list] PostgreSQL and Ocaml Alessandro Baretta
@ 2002-10-11 11:24 ` Yang Shouxun
2002-10-11 12:31 ` Alessandro Baretta
2002-10-11 18:53 ` Chris Hecker
2002-10-12 12:05 ` Nicolas Cannasse
2 siblings, 1 reply; 6+ messages in thread
From: Yang Shouxun @ 2002-10-11 11:24 UTC (permalink / raw)
To: caml-list
Alessandro Baretta wrote:
>
> Now I wonder: has nobody written a PostgreSQL server-side binding for
> Ocaml? I have searched Google on the subject, but found nothing relevant.
>
Alain Frisch has written an OCaml binding for PostgreSQL and it's even
packaged in Debian by Stefano. See*
*http://www.eleves.ens.fr:8080/home/frisch/soft .
Not sure that's what you're looking for or not, though.
shouxun
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Caml-list] PostgreSQL and Ocaml
2002-10-11 11:24 ` Yang Shouxun
@ 2002-10-11 12:31 ` Alessandro Baretta
0 siblings, 0 replies; 6+ messages in thread
From: Alessandro Baretta @ 2002-10-11 12:31 UTC (permalink / raw)
To: Yang Shouxun, ocaml
Yang Shouxun wrote:
> Alessandro Baretta wrote:
>
>>
>> Now I wonder: has nobody written a PostgreSQL server-side binding for
>> Ocaml? I have searched Google on the subject, but found nothing relevant.
>>
>
> Alain Frisch has written an OCaml binding for PostgreSQL and it's even
> packaged in Debian by Stefano. See*
> *http://www.eleves.ens.fr:8080/home/frisch/soft .
>
> Not sure that's what you're looking for or not, though.
>
That's an excellent client side library, of which I am very
fond. I want a PL/Ocaml server side language (procedural
language in PG jargon).
Alex
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Caml-list] PostgreSQL and Ocaml
2002-10-11 11:04 [Caml-list] PostgreSQL and Ocaml Alessandro Baretta
2002-10-11 11:24 ` Yang Shouxun
@ 2002-10-11 18:53 ` Chris Hecker
2002-10-13 14:35 ` Alessandro Baretta
2002-10-12 12:05 ` Nicolas Cannasse
2 siblings, 1 reply; 6+ messages in thread
From: Chris Hecker @ 2002-10-11 18:53 UTC (permalink / raw)
To: Alessandro Baretta, Ocaml
>If nobody has, would anyone like to join me in the project of writing an
>add-in for PostgreSQL supporting Ocaml stored procedures? I have little
>experience in this, but it should not be too difficult: it should be a
>matter of writing a C dll which, upon initialization, starts a bytecode
>compiler and interpreter, and has callbacks through with which the server
>can request the compilation of a text string or the execution of a
>bytecode cmo blob.
I have no time to help you with this, but I have a suggestion. I would
write this dll in caml and use the asmdynlink library (which,
unfortunately, is bound rather tightly into the apparently-moribund cdk at
this point, but it still appears to work). I'm planning on using
asymdynlink for some of my game work, and it appears to be just the trick
for using caml as a dynamic scripting language (you can eval strings, load
cmo files, the loaded caml can call native caml code transparently,
etc.). This would allow you to write 90% of the dll in native mode caml,
and still dynaload programs.
There are two main issues I've found that I will probably try to solve:
1. You need to have all the cmi files around, which is annoying and a
logistical nightmare. This is true of the toplevel and the regular
bytecode dynlink library too, and it sucks. The optimal solution would be
to bind in all the cmis as data resources into the program. Slightly less
optimal but still better than nothing would be to use the -pack option, get
a single big .cmi, and use that. I think you'd have to -pack the whole
standard library first, and then link with that because the modules will
now be nested in the pack module.
2. The asmdynlink interpreter is supposedly fairly slow (I haven't done
any timings yet). This is not that big of a deal for what I'm going to use
it for, but if I find it is too slow, there are a couple options. First,
Fabrice has a mostly-finished JIT in the cdk version. It's x86 only I
think, but it might be useful. [As an aside to Fabrice and/or Xavier, why
didn't the JIT generate Cmm code instead of x86, and then link in the
compiler backend from the current platform, and that way it would be
cross-platform? That would work, right?] The other option is to rewrite
the interpreter by porting the C interpreter over the the asmdynlink
environment...that should be fairly easy and should run at the same speed
as the regular bytecode interpreter.
Chris
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Caml-list] PostgreSQL and Ocaml
2002-10-11 11:04 [Caml-list] PostgreSQL and Ocaml Alessandro Baretta
2002-10-11 11:24 ` Yang Shouxun
2002-10-11 18:53 ` Chris Hecker
@ 2002-10-12 12:05 ` Nicolas Cannasse
2 siblings, 0 replies; 6+ messages in thread
From: Nicolas Cannasse @ 2002-10-12 12:05 UTC (permalink / raw)
To: Alessandro Baretta, Ocaml
> I have found an excellent client library to access
> PostgreSQL databases from Ocaml applications. This I have
> put to use with excellent results in the development of a
> web application, together with Netcgi. However, most of the
> logic of my program is written and stored in the database as
> sql and pl/pgsql stored procedures. While SQL is overall a
> very good language to express computations in relational
> algebra, it is very weak (pratiquement, c'est nul) in
> general algorithms, so for anything more complex than a
> query one has to resort to pl/pgSQL, which is as powerful as
> an ordinary imperative language with the added bonus of
> having SQL constructs for relational algebra. What it lacks
> is type safety. After having come in contact with OCaml, I
> can hardly live with a language with no type safety.
Few months ago I investigated the ability to write UDF ( User Defined
Function ) for MySQL under Win32. But it seems like this feature is only
available under *Nix versions of MySQL. The main points are the same. First
you write a C function with specific API in order to access fields and
values in a given row. Then you compile the C into a server-side DLL and
register it under MySQL with a specific SQL command which add a new SQL
keyword binded to your function.
Is there any differences with PortgreSQL ?
If only the API calls differs, should I advise you to consider having an
"opened API" design ( in order to support both PostgreSQL, MySQL, and maybe
other systems... )
> Now I wonder: has nobody written a PostgreSQL server-side
> binding for Ocaml? I have searched Google on the subject,
> but found nothing relevant.
>
> If nobody has, would anyone like to join me in the project
> of writing an add-in for PostgreSQL supporting Ocaml stored
> procedures? I have little experience in this, but it should
> not be too difficult: it should be a matter of writing a C
> dll which, upon initialization, starts a bytecode compiler
> and interpreter, and has callbacks through with which the
> server can request the compilation of a text string or the
> execution of a bytecode cmo blob. Although I think I might
> succeed by myself, I'd still prefer to work in company, if I
> have to. :)
Although I don't have dev time for it, I would agree to share ideas and
point of view with you about this subject.
Regards,
Nicolas Cannasse
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Caml-list] PostgreSQL and Ocaml
2002-10-11 18:53 ` Chris Hecker
@ 2002-10-13 14:35 ` Alessandro Baretta
0 siblings, 0 replies; 6+ messages in thread
From: Alessandro Baretta @ 2002-10-13 14:35 UTC (permalink / raw)
To: Chris Hecker, Ocaml
Chris Hecker wrote:
>
>> If nobody has, would anyone like to join me in the project of writing
>> an add-in for PostgreSQL supporting Ocaml stored procedures? I have
>> little experience in this, but it should not be too difficult: it
>> should be a matter of writing a C dll which, upon initialization,
>> starts a bytecode compiler and interpreter, and has callbacks through
>> with which the server can request the compilation of a text string or
>> the execution of a bytecode cmo blob.
>
>
> I have no time to help you with this, but I have a suggestion. I would
> write this dll in caml and use the asmdynlink library (which,
> unfortunately, is bound rather tightly into the apparently-moribund cdk
> at this point, but it still appears to work). ...
This is an interesting point, but the main nightmare will be
tying in PostgreSQL code into Ocaml. You have to consider
that PostgreSQL is the SQL engine, and necessarily the
embedded-Ocaml interpreter/runtime-system will have to be
able to invoke such portions of the PostgreSQL system as are
necessary to run queries and retrieve recordsets or to open
and use cursors. So, C calls Caml which calls C which...
This reminds me of the autogénération de Caml:
http://caml.inria.fr/pooh.html
Alex
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2002-10-13 14:25 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-11 11:04 [Caml-list] PostgreSQL and Ocaml Alessandro Baretta
2002-10-11 11:24 ` Yang Shouxun
2002-10-11 12:31 ` Alessandro Baretta
2002-10-11 18:53 ` Chris Hecker
2002-10-13 14:35 ` Alessandro Baretta
2002-10-12 12:05 ` Nicolas Cannasse
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox