    module Database.HDBC.PostgreSQL.ConnectionImpl where

    import qualified Database.HDBC.Types as Types
    import Database.HDBC.ColTypes as ColTypes

    data Connection =
        Connection {
                    Connection -> IO ()
    disconnect :: IO (),
                    Connection -> IO ()
    begin :: IO (),
                    Connection -> IO ()
    commit :: IO (),
                    Connection -> IO ()
    rollback :: IO (),
                    Connection -> String -> IO ()
    runRaw :: String -> IO (),
                    Connection -> String -> [SqlValue] -> IO Integer
    run :: String -> [Types.SqlValue] -> IO Integer,
                    Connection -> String -> IO Statement
    prepare :: String -> IO Types.Statement,
                    Connection -> IO Connection
    clone :: IO Connection,
                    Connection -> String
    hdbcDriverName :: String,
                    Connection -> String
    hdbcClientVer :: String,
                    Connection -> String
    proxiedClientName :: String,
                    Connection -> String
    proxiedClientVer :: String,
                    Connection -> String
    dbServerVer :: String,
                    Connection -> Bool
    dbTransactionSupport :: Bool,
                    Connection -> IO [String]
    getTables :: IO [String],
                    Connection -> String -> IO [(String, SqlColDesc)]
    describeTable :: String -> IO [(String, ColTypes.SqlColDesc)]
                   }

    instance Types.IConnection Connection where
      disconnect :: Connection -> IO ()
    disconnect = Connection -> IO ()
    disconnect
      commit :: Connection -> IO ()
    commit = Connection -> IO ()
    commit
      rollback :: Connection -> IO ()
    rollback = Connection -> IO ()
    rollback
      runRaw :: Connection -> String -> IO ()
    runRaw = Connection -> String -> IO ()
    runRaw
      run :: Connection -> String -> [SqlValue] -> IO Integer
    run = Connection -> String -> [SqlValue] -> IO Integer
    run
      prepare :: Connection -> String -> IO Statement
    prepare = Connection -> String -> IO Statement
    prepare
      clone :: Connection -> IO Connection
    clone = Connection -> IO Connection
    clone
      hdbcDriverName :: Connection -> String
    hdbcDriverName = Connection -> String
    hdbcDriverName
      hdbcClientVer :: Connection -> String
    hdbcClientVer = Connection -> String
    hdbcClientVer
      proxiedClientName :: Connection -> String
    proxiedClientName = Connection -> String
    proxiedClientName
      proxiedClientVer :: Connection -> String
    proxiedClientVer = Connection -> String
    proxiedClientVer
      dbServerVer :: Connection -> String
    dbServerVer = Connection -> String
    dbServerVer
      dbTransactionSupport :: Connection -> Bool
    dbTransactionSupport = Connection -> Bool
    dbTransactionSupport
      getTables :: Connection -> IO [String]
    getTables = Connection -> IO [String]
    getTables
      describeTable :: Connection -> String -> IO [(String, SqlColDesc)]
    describeTable = Connection -> String -> IO [(String, SqlColDesc)]
    describeTable