This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: db interface (was Re: Scheme is too complicated)


Craig Brozefsky wrote:

> - More concise syntax for generating SQL than a series of string
>   manipulations.

When you forget a required keyword, you will get the same error like
that from a broken SQL query. Where is the difference?

> - Keywords make it easier to trigger various options in sql, and to
>   setup your query. You don't have to deal with SQLs syntax like makin
>   sure you don't put a comma after the last value in a list, etc...

Do you expect someone knowing about inner joins without knowing SQL?

> - Unified syntax for generating most SQL, would be independent of the
>   backends incompatabilities.  So like in postgresql, I think the
>   outer-join syntax is different than some other DBs.

If so, someone should fix that bug in Postgres.

> - let's us do nice things like the example I previously gave with
>   find-if and remove-if.

You can do nice things only when you do them in Guile. The normal
database situation is, that the database and Guile do not run on the
same system. Furthermore SQL is the only standardized way to access a
database. If you don't want to kill you local network, you have to do as
much as possible in SQL. This leeds to the situation, that you can use
Guiles cleverness only for the query results. So even if you write a
wrapper in Guile, which produces SQL, you will not be able to do more
than SQL lets you doing.

> - Makes interfacing with table and DB metadata easier because instead
>   of an unorganized bunch of string formatting, you have a
>   programmatic interface that can do type checking and other
>   verification using what it knows about the tables, the DB backend
>   and the fields.

>   (select       :fields '(field-list)
>                 :from '(table-list)
>                 :join-type 'inner
>                 :qualifier (= fieldname value))

Why do you think that a query becomes easier when you throw away the
grammatical structure of normal SQL queries?

-- 
/* In the beginning was the Word: */
typedef long SCM;