summaryrefslogtreecommitdiffstats
path: root/tcl8.6/pkgs/tdbcmysql1.0.6/library/tdbcmysql.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tcl8.6/pkgs/tdbcmysql1.0.6/library/tdbcmysql.tcl')
-rw-r--r--tcl8.6/pkgs/tdbcmysql1.0.6/library/tdbcmysql.tcl193
1 files changed, 0 insertions, 193 deletions
diff --git a/tcl8.6/pkgs/tdbcmysql1.0.6/library/tdbcmysql.tcl b/tcl8.6/pkgs/tdbcmysql1.0.6/library/tdbcmysql.tcl
deleted file mode 100644
index caa334c..0000000
--- a/tcl8.6/pkgs/tdbcmysql1.0.6/library/tdbcmysql.tcl
+++ /dev/null
@@ -1,193 +0,0 @@
-# tdbcmysql.tcl --
-#
-# Class definitions and Tcl-level methods for the tdbc::mysql bridge.
-#
-# Copyright (c) 2008 by Kevin B. Kenny
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: tdbcmysql.tcl,v 1.47 2008/02/27 02:08:27 kennykb Exp $
-#
-#------------------------------------------------------------------------------
-
-package require tdbc
-
-::namespace eval ::tdbc::mysql {
-
- namespace export connection datasources drivers
-
-}
-
-#------------------------------------------------------------------------------
-#
-# tdbc::mysql::connection --
-#
-# Class representing a connection to a database through MYSQL.
-#
-#-------------------------------------------------------------------------------
-
-::oo::class create ::tdbc::mysql::connection {
-
- superclass ::tdbc::connection
-
- # The constructor is written in C. It takes alternating keywords
- # and values pairs as its argumenta. (See the manual page for the
- # available options.)
-
- variable foreignKeysStatement
-
- # The 'statementCreate' method delegates to the constructor of the
- # statement class
-
- forward statementCreate ::tdbc::mysql::statement create
-
- # The 'columns' method returns a dictionary describing the tables
- # in the database
-
- method columns {table {pattern %}} {
-
- # To return correct lengths of CHARACTER and BINARY columns,
- # we need to know the maximum lengths of characters in each
- # collation. We cache this information only once, on the first
- # call to 'columns'.
-
- if {[my NeedCollationInfo]} {
- my SetCollationInfo {*}[my allrows -as lists {
- SELECT coll.id, cs.maxlen
- FROM INFORMATION_SCHEMA.COLLATIONS coll,
- INFORMATION_SCHEMA.CHARACTER_SETS cs
- WHERE cs.CHARACTER_SET_NAME = coll.CHARACTER_SET_NAME
- ORDER BY coll.id DESC
- }]
- }
-
- return [my Columns $table $pattern]
- }
-
- # 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 "CALL $rest"
- } else {
- my prepare \\{:$varName=$rest\\}
- }
- }
-
- # The 'init', 'begintransaction', 'commit, 'rollback', 'tables'
- # 'NeedCollationInfo', 'SetCollationInfo', and 'Columns' methods
- # are implemented in C.
-
- # The 'BuildForeignKeysStatements' method builds a SQL statement to
- # retrieve the foreign keys from a database. (It executes once the
- # first time the 'foreignKeys' method is executed, and retains the
- # prepared statements for reuse.) It is slightly nonstandard because
- # MYSQL doesn't name the PRIMARY constraints uniquely.
-
- method BuildForeignKeysStatement {} {
-
- foreach {exists1 clause1} {
- 0 {}
- 1 { AND fkc.REFERENCED_TABLE_NAME = :primary}
- } {
- foreach {exists2 clause2} {
- 0 {}
- 1 { AND fkc.TABLE_NAME = :foreign}
- } {
- set stmt [my prepare "
- SELECT rc.CONSTRAINT_SCHEMA AS \"foreignConstraintSchema\",
- rc.CONSTRAINT_NAME AS \"foreignConstraintName\",
- rc.UPDATE_RULE AS \"updateAction\",
- rc.DELETE_RULE AS \"deleteAction\",
- fkc.REFERENCED_TABLE_SCHEMA AS \"primarySchema\",
- fkc.REFERENCED_TABLE_NAME AS \"primaryTable\",
- fkc.REFERENCED_COLUMN_NAME AS \"primaryColumn\",
- fkc.TABLE_SCHEMA AS \"foreignSchema\",
- fkc.TABLE_NAME AS \"foreignTable\",
- fkc.COLUMN_NAME AS \"foreignColumn\",
- fkc.ORDINAL_POSITION AS \"ordinalPosition\"
- FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
- INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE fkc
- ON fkc.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
- AND fkc.CONSTRAINT_SCHEMA = rc.CONSTRAINT_SCHEMA
- WHERE 1=1
- $clause1
- $clause2
-"]
- dict set foreignKeysStatement $exists1 $exists2 $stmt
- }
- }
- }
-}
-
-#------------------------------------------------------------------------------
-#
-# tdbc::mysql::statement --
-#
-# The class 'tdbc::mysql::statement' models one statement against a
-# database accessed through an MYSQL connection
-#
-#------------------------------------------------------------------------------
-
-::oo::class create ::tdbc::mysql::statement {
-
- superclass ::tdbc::statement
-
- # The 'resultSetCreate' method forwards to the constructor of the
- # result set.
-
- forward resultSetCreate ::tdbc::mysql::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::mysql::resultset --
-#
-# The class 'tdbc::mysql::resultset' models the result set that is
-# produced by executing a statement against an MYSQL database.
-#
-#------------------------------------------------------------------------------
-
-::oo::class create ::tdbc::mysql::resultset {
-
- superclass ::tdbc::resultset
-
- # 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.
-
-}