Mercurial > repos > rliterman > csp2
diff CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/lib/tdbcpostgres1.1.5/tdbcpostgres.tcl @ 68:5028fdace37b
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 16:23:26 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/lib/tdbcpostgres1.1.5/tdbcpostgres.tcl Tue Mar 18 16:23:26 2025 -0400 @@ -0,0 +1,135 @@ +# tdbcpostgres.tcl -- +# +# Class definitions and Tcl-level methods for the tdbc::postgres bridge. +# +# Copyright (c) 2009 by Slawomir Cygan +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +#------------------------------------------------------------------------------ + +package require tdbc + +::namespace eval ::tdbc::mypostgres { + + namespace export connection datasources drivers + +} + +#------------------------------------------------------------------------------ +# +# tdbc::postgres::connection -- +# +# Class representing a connection to a Postgres database. +# +#------------------------------------------------------------------------------- + +::oo::class create ::tdbc::postgres::connection { + + superclass ::tdbc::connection + + # The constructor is written in C. It takes alternating keywords + # and values pairs as its arguments. (See the manual page for the + # available options.) + + # The 'statementCreate' method delegates to the constructor of the + # statement class + + forward statementCreate ::tdbc::postgres::statement create + + + # The 'prepareCall' method gives a portable interface to prepare + # calls to stored procedures. It delegates to 'prepare' to do the + # actual work. + + method preparecall {call} { + regexp {^[[:space:]]*(?:([A-Za-z_][A-Za-z_0-9]*)[[:space:]]*=)?(.*)} \ + $call -> varName rest + if {$varName eq {}} { + my prepare \\{$rest\\} + } else { + my prepare \\{:$varName=$rest\\} + } + } + + # The 'init', 'begintransaction', 'commit, 'rollback', 'tables' + # and 'columns' methods are implemented in C. + +} + +#------------------------------------------------------------------------------ +# +# tdbc::postgres::statement -- +# +# The class 'tdbc::postgres::statement' models one statement against a +# database accessed through a Postgres connection +# +#------------------------------------------------------------------------------ + +::oo::class create ::tdbc::postgres::statement { + + superclass ::tdbc::statement + + # The 'resultSetCreate' method forwards to the constructor of the + # result set. + + forward resultSetCreate ::tdbc::postgres::resultset create + + # Methods implemented in C: + # + # constructor connection SQLCode + # The constructor accepts the handle to the connection and the SQL code + # for the statement to prepare. It creates a subordinate namespace to + # hold the statement's active result sets, and then delegates to the + # 'init' method, written in C, to do the actual work of preparing the + # statement. + # params + # Returns descriptions of the parameters of a statement. + # paramtype paramname ?direction? type ?precision ?scale?? + # Declares the type of a parameter in the statement + +} + +#------------------------------------------------------------------------------ +# +# tdbc::postgres::resultset -- +# +# The class 'tdbc::postgres::resultset' models the result set that is +# produced by executing a statement against a Postgres database. +# +#------------------------------------------------------------------------------ + +::oo::class create ::tdbc::postgres::resultset { + + superclass ::tdbc::resultset + + # The 'nextresults' method is stubbed out; tdbcpostgres does not + # allow a single call to return multiple results. + + method nextresults {} { + while {[my nextdict rubbish]} {} + return 0 + } + + # Methods implemented in C include: + + # constructor statement ?dictionary? + # -- Executes the statement against the database, optionally providing + # a dictionary of substituted parameters (default is to get params + # from variables in the caller's scope). + # columns + # -- Returns a list of the names of the columns in the result. + # nextdict + # -- Stores the next row of the result set in the given variable in + # the caller's scope as a dictionary whose keys are + # column names and whose values are column values, or else + # as a list of cells. + # nextlist + # -- Stores the next row of the result set in the given variable in + # the caller's scope as a list of cells. + # rowcount + # -- Returns a count of rows affected by the statement, or -1 + # if the count of rows has not been determined. + +}