Version 7 of PostgreSQL

Updated 2003-01-19 12:54:55

This is a (full ACID) SQL database and it is OpenSource. It comes with binding for many languages, one for Tcl. The database has its home at http://www.postgresql.org


This Tcl binding comes as a (shared and/or static) library and on a Linux-System you can easily build a package from that. You only need to create a directory under, say, /usr/lib/tcl (replace this by a path searched by your local Tcl/Tk installation), place a copy of the library there, and go ahead. Here's an example:

 > cd /usr/lib/tcl8.3
 > mkdir postgresql
 > cp /usr/local/pgsql/lib/libpgtcl.so.2.2 postgresql/libpgtcl.so
 > cd postgresql
 > tclsh
 % pkg_mkIndex /usr/lib/tcl8.3/postgresql *.so
 % exit

This produced a pkgIndex.tcl file with all needed information to use the package. I then use the package with a simple

 package require Pgtcl

in my applications.


I found, that the syntax of the Pgtcl commands are not the Tcl way. So I wrote a little wrapper around the commands provided by the Pgtcl package to make them more tcl-like:

 proc pg {cmd args} {
   switch $cmd {
      connect {pg_connect [lindex $args end]}
      disconnect {pg_disconnect [lindex $args end]}
      execute {pg_exec [lindex $args 0] [lindex $args 1]}
      getrow {pg_result [lindex $args 0] -getTuple [lindex $args 1]}
      clear {pg_result [lindex $args 0] -clear}
      status {pg_result [lindex $args 0] -status}
      rowcount {pg_result [lindex $args 0] -numTuples}
   }
 }

This adds a command pg to Tcl which I like far more than the original one. Instead of saying

 pg_connect "mydb"
 pg_disconnect $myHandle
 pg_result $myResult -clear

I just type

 pg connect "mydb"
 pg disconnect $myHandle
 pg clear $myResult

Please note, that there is no error handling and checking in the command pg and you can easily type in wrong things. It would be best to put this command in it's own namespace and provide for error checking etc. You could even add more funcionality like a loop command for query results like in nstcl


 What: [PostgreSQL]
 Where: http://www.postgresql.org/
        http://www.ids.net/%7Ebjepson/freeODBC/
        http://www.openlinksw.com/
        http://www.demon.co.uk/finder/postgres/
        http://www.ucolick.org/%7Ede/tcl_syb/wisql.html
        ftp://rocker.sch.bme.hu/pub/mirrors/postgreSQL/
        http://www.illustra.com/
        http://aldev.8m.com/
        http://aldev.webjump.com/
        http://www3.bcity.com/aldev/
        ftp://ftp.redhat.com/
        http://www.pgsql.com/
        http://www.askesis.nl/AskesisPostgresIndex.html
        http://members.spree.com/technology/aldev/
        http://field.medicine.adelaide.edu.au/%7Ecolin/libtclpq/
        ftp://field.medicine.adelaide.edu.au/pub/libtclpq/libtclpq.tgz
 Description: PostgreSQL is a derivitive of POSTGRES 4.2, converted to ANSI C.
        POSTGRES is a database management system.  It is compliant with
        ANSI SQL92 and SQL89.  It supports a number of enhancements,
        such as inheritance, declaritive queries, optimization,
        concurrency control, transactions, mult-user support, user defined
        operators, types, functions, and access methods.
        APIs exist for C, C++, Java, Perl4, Perl5, Python, SQL and Tcl.
        Free versions of drivers for ODBC and JDBC are under development.
        A commercial version of PostgreSQL is available via Illustra, Inc.
        The most recent version is 6.4.2-5.
 Updated: 04/1999
 Contact: mailto:[email protected] (PostGres95 mailing list)

Category Database