Remove CVS $Id$ keyword
[clsql.git] / db-postgresql / postgresql-api.lisp
index 69719da2ca10760f54916ff8f25211596ee055b1..c0b8a000edd9e2ac75eb61b579cab6758426d5f9 100644 (file)
@@ -4,12 +4,10 @@
 ;;;;
 ;;;; Name:          postgresql.cl
 ;;;; Purpose:       Low-level PostgreSQL interface using UFFI
-;;;; Programmers:   Kevin M. Rosenberg based on 
-;;;;                Original code by Pierre R. Mai 
+;;;; Programmers:   Kevin M. Rosenberg based on
+;;;;                Original code by Pierre R. Mai
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id$
-;;;;
 ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;; and Copyright (c) 1999-2001 by Pierre R. Mai
 ;;;;
@@ -18,7 +16,7 @@
 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
-(in-package #:postgresql)
+(in-package #:pgsql)
 
 
 ;;;; This file implements as little of the FFI bindings to the
@@ -35,7 +33,7 @@
 
 (uffi:def-foreign-type pgsql-oid :unsigned-int)
 
-(uffi:def-enum pgsql-conn-status-type 
+(uffi:def-enum pgsql-conn-status-type
     (:connection-ok
      :connection-bad))
 
@@ -52,6 +50,8 @@
 (uffi:def-foreign-type pgsql-conn :pointer-void)
 (uffi:def-foreign-type pgsql-result :pointer-void)
 
+(uffi:def-type pgsql-conn-ptr :pointer-void)
+
 (uffi:def-enum pgsql-ftype
     ((:bytea 17)
      (:int2 21)
@@ -59,7 +59,7 @@
      (:int8 20)
      (:float4 700)
      (:float8 701)))
-  
+
 ;;(declaim (inline PQsetdbLogin)) ;; causes compile error in LW 4.2.0
 (uffi:def-function ("PQsetdbLogin" PQsetdbLogin)
   ((pghost :cstring)
@@ -69,6 +69,7 @@
    (dbName :cstring)
    (login :cstring)
    (pwd :cstring))
+  :module "postgresql"
   :returning pgsql-conn)
 
 (declaim (inline PQfinish))
   :module "postgresql"
   :returning pgsql-exec-status-type)
 
+; From postgres_ext.h
+
+; #define PG_DIAG_SEVERITY                'S'
+; #define PG_DIAG_SQLSTATE                'C'
+; #define PG_DIAG_MESSAGE_PRIMARY 'M'
+; #define PG_DIAG_MESSAGE_DETAIL  'D'
+; #define PG_DIAG_MESSAGE_HINT    'H'
+; #define PG_DIAG_STATEMENT_POSITION 'P'
+; #define PG_DIAG_INTERNAL_POSITION 'p'
+; #define PG_DIAG_INTERNAL_QUERY  'q'
+; #define PG_DIAG_CONTEXT                 'W'
+; #define PG_DIAG_SOURCE_FILE             'F'
+; #define PG_DIAG_SOURCE_LINE             'L'
+; #define PG_DIAG_SOURCE_FUNCTION 'R'
+(defconstant +PG-DIAG-SEVERITY+ (char-code #\S))
+(defconstant +PG-DIAG-SQLSTATE+ (char-code #\C))
+(defconstant +PG-DIAG-MESSAGE-PRIMARY+ (char-code #\M))
+(defconstant +PG-DIAG-MESSAGE-DETAIL+ (char-code #\D))
+(defconstant +PG-DIAG-MESSAGE-HINT+ (char-code #\H))
+(defconstant +PG-DIAG-STATEMENT-POSITION+ (char-code #\P))
+(defconstant +PG-DIAG-INTERNAL-POSITION+ (char-code #\p))
+(defconstant +PG-DIAG-INTERNAL-QUERY+ (char-code #\q))
+(defconstant +PG-DIAG-CONTEXT+ (char-code #\W))
+(defconstant +PG-DIAG-SOURCE-FILE+ (char-code #\F))
+(defconstant +PG-DIAG-SOURCE-LINE+ (char-code #\L))
+(defconstant +PG-DIAG-SOURCE-FUNCTION+ (char-code #\R))
+
+; PQresultErrorField can return diagnostic information about an error
+(declaim (inline PQresultErrorField))
+(uffi:def-function ("PQresultErrorField" PQresultErrorField)
+    ((res pgsql-result)
+     (field-code :int))
+  :module "postgresql"
+  :returning :cstring)
+
 (declaim (inline PQresultErrorMessage))
 (uffi:def-function ("PQresultErrorMessage" PQresultErrorMessage)
   ((res pgsql-result))
   :returning :cstring)
 
 (declaim (inline PQntuples))
-(uffi:def-function ("PQntuples" PQntuples) 
+(uffi:def-function ("PQntuples" PQntuples)
   ((res pgsql-result))
   :module "postgresql"
   :returning :int)